190 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			190 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
|  | 
 | |||
|  | 
 | |||
|  | /************************************************ | |||
|  | // 蒙擎 ?嫦 螃粽薛? | |||
|  | ************************************************/ | |||
|  | function setCustomData_po_ATConcentrateExpSmall(obj, receiveData) | |||
|  | { | |||
|  | 	if (!obj) return; | |||
|  | 	local sizeRate = receiveData.readWord(); | |||
|  | 	local attackBonusRate = receiveData.readDword(); | |||
|  | 	local element = receiveData.readByte(); | |||
|  | 	 | |||
|  | 	local attackInfo = sq_GetCurrentAttackInfo(obj); | |||
|  | 	if (attackInfo) | |||
|  | 		sq_SetCurrentAttackBonusRate(attackInfo, attackBonusRate); | |||
|  | 	if (element != ENUM_ELEMENT_NONE) | |||
|  | 	{ | |||
|  | 		attackInfo.setElement(ENUM_ELEMENT_NONE); | |||
|  | 		attackInfo.setElement(element); | |||
|  | 	} | |||
|  | 
 | |||
|  | 	obj.sq_PlaySound("FM31_HIT"); | |||
|  | 	 | |||
|  | 	local particleCreater = obj.getVar().GetparticleCreaterMap("concentrateParticle", "PassiveObject/Character/Mage/Particle/ATConcentrateSub.ptl", obj); | |||
|  | 	particleCreater.Restart(0); | |||
|  | 	particleCreater.SetPos(obj.getXPos(), obj.getYPos(), obj.getZPos()); | |||
|  | 	sq_AddParticleObject(obj, particleCreater); | |||
|  | } | |||
|  | 
 | |||
|  | function onEndCurrentAni_po_ATConcentrateExpSmall(obj) | |||
|  | { | |||
|  | 	if (!obj) return; | |||
|  | 	if (obj.isMyControlObject()) { | |||
|  | 		sq_SendDestroyPacketPassiveObject(obj); | |||
|  | 	} | |||
|  | } | |||
|  | 
 | |||
|  | function getHitDirection_po_ATConcentrateExpSmall(obj, damager) | |||
|  | { | |||
|  | 	if (!obj) return 0; | |||
|  | 	return sq_GetOppositeDirection(obj.getDirection()); | |||
|  | } | |||
|  | 
 | |||
|  | 
 | |||
|  | /************************************************ | |||
|  | // 赎 ?嫦 螃粽薛? | |||
|  | ************************************************/ | |||
|  | function setCustomData_po_ATConcentrateExpBig(obj, receiveData) | |||
|  | { | |||
|  | 	if (!obj) return; | |||
|  | 	local sizeRate = receiveData.readWord(); | |||
|  | 	local attackBonusRate = receiveData.readDword(); | |||
|  | 	local element = receiveData.readByte(); | |||
|  | 	 | |||
|  | 	local attackInfo = sq_GetCurrentAttackInfo(obj); | |||
|  | 	if (attackInfo) | |||
|  | 		sq_SetCurrentAttackBonusRate(attackInfo, attackBonusRate); | |||
|  | 	 | |||
|  | 	if (element != ENUM_ELEMENT_NONE) | |||
|  | 	{ | |||
|  | 		attackInfo.setElement(ENUM_ELEMENT_NONE); | |||
|  | 		attackInfo.setElement(element); | |||
|  | 	} | |||
|  | 	 | |||
|  | 	obj.sq_PlaySound("HWANG_FENCING_EXP"); | |||
|  | 	 | |||
|  | 	local particleCreater = obj.getVar().GetparticleCreaterMap("concentrateParticle", "PassiveObject/Character/Mage/Particle/ATConcentrateSub.ptl", obj); | |||
|  | 	particleCreater.Restart(0); | |||
|  | 	particleCreater.SetPos(obj.getXPos(), obj.getYPos(), obj.getZPos()); | |||
|  | 	sq_AddParticleObject(obj, particleCreater); | |||
|  | 	 | |||
|  | 	sq_flashScreen(obj, 0, 240, 120, 150, sq_RGB(0,0,0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM); | |||
|  | 	 | |||
|  | 	 | |||
|  | 	local animation = sq_GetCurrentAnimation(obj); | |||
|  | 	if (!animation) return; | |||
|  | 	local size = sizeRate.tofloat() / 100.0; | |||
|  | 	animation.setImageRateFromOriginal(size, size); | |||
|  | 	animation.setAutoLayerWorkAnimationAddSizeRate(size); | |||
|  | 	sq_SetAttackBoundingBoxSizeRate(animation, size, size, size); | |||
|  | } | |||
|  | 
 | |||
|  | function onEndCurrentAni_po_ATConcentrateExpBig(obj) | |||
|  | { | |||
|  | 	if (!obj) return; | |||
|  | 	if (obj.isMyControlObject()) { | |||
|  | 		sq_SendDestroyPacketPassiveObject(obj); | |||
|  | 	} | |||
|  | } | |||
|  | 
 | |||
|  | function getHitDirection_po_ATConcentrateExpBig(obj, damager) | |||
|  | { | |||
|  | 	if (!obj) return 0; | |||
|  | 	return sq_GetOppositeDirection(obj.getDirection()); | |||
|  | } | |||
|  | 
 | |||
|  | 
 | |||
|  | 
 | |||
|  | 
 | |||
|  | 
 | |||
|  | /************************************************ | |||
|  | // 楼撩 葆彻掘 螃粽薛? | |||
|  | ************************************************/ | |||
|  | function setCustomData_po_ATConcentrateBall(obj, receiveData) | |||
|  | { | |||
|  | 	if (!obj) return; | |||
|  | 	obj.sq_SetMoveParticle("Particle/ATConcentrate.ptl", 0.0, 0.0); | |||
|  | 	 | |||
|  | 	 | |||
|  | 	local maxBoundNumber = receiveData.readWord(); | |||
|  | 	local smallExpBonusRate = receiveData.readDword(); | |||
|  | 	local bigExpBonusRate = receiveData.readDword(); | |||
|  | 	local bigExpSizeRate = receiveData.readWord(); | |||
|  | 	local element = receiveData.readByte(); | |||
|  | 
 | |||
|  | 	local var = obj.getVar(); | |||
|  | 	var.clear_vector(); | |||
|  | 	var.push_vector(0); | |||
|  | 	var.push_vector(maxBoundNumber); | |||
|  | 	var.push_vector(smallExpBonusRate);	 | |||
|  | 	var.push_vector(bigExpBonusRate); | |||
|  | 	var.push_vector(bigExpSizeRate); | |||
|  | 	var.push_vector(element); | |||
|  | } | |||
|  | 
 | |||
|  | 
 | |||
|  | function procAppend_po_ATConcentrateBall(obj) | |||
|  | { | |||
|  | 	if (obj.getZPos() <= 0) | |||
|  | 	{ | |||
|  | 		local var = obj.getVar(); | |||
|  | 		local currentBoundNumber = var.get_vector(0); | |||
|  | 		local maxBoundNumber = var.get_vector(1);	 | |||
|  | 	 | |||
|  | 		if (currentBoundNumber + 1 < maxBoundNumber) | |||
|  | 		{ | |||
|  | 			// 夥遴注肾横 萤塭陞阳暧 陛楼紫 高 | |||
|  | 			local jumpVelocity = 320;			 | |||
|  | 			 | |||
|  | 			var.set_vector(0, currentBoundNumber + 1); | |||
|  | 			sq_SetObjectBounding(obj, jumpVelocity); | |||
|  | 			 | |||
|  | 			// 蒙擎 ?嫦 螃粽薛?蒂 当撩?棻. | |||
|  | 			if (obj.isMyControlObject()) | |||
|  | 			{ | |||
|  | 				sq_BinaryStartWrite();				 | |||
|  | 				// 蒙擎 ?嫦擎 ?鼻 100% 饵桧锷煎 ?嫦?. | |||
|  | 				sq_BinaryWriteWord(100); | |||
|  | 				// 蒙擎 ?嫦 奢问溘% | |||
|  | 				sq_BinaryWriteDword(obj.getVar().get_vector(2)); | |||
|  | 				sq_BinaryWriteByte(obj.getVar().get_vector(5)); | |||
|  | 				sq_SendCreatePassiveObjectPacket(obj, 24284, 0, 0, -1, 0, obj.getDirection()); | |||
|  | 				 | |||
|  | 				// ?贼霞翕 | |||
|  | 				sq_SetMyShake(obj, 2, 240); | |||
|  | 			} | |||
|  | 		} | |||
|  | 		else | |||
|  | 		{ | |||
|  | 			// 葆虽虞 赎 ?嫦 螃粽薛?蒂 当撩?坚 模资卫监棻. | |||
|  | 			if (obj.isMyControlObject()) | |||
|  | 			{ | |||
|  | 				local var = obj.getVar(); | |||
|  | 				sq_BinaryStartWrite(); | |||
|  | 				// 赎 ?嫦暧 饵桧锷 | |||
|  | 				sq_BinaryWriteWord(var.get_vector(4)); | |||
|  | 				 | |||
|  | 				// 赎 ?嫦暧 奢问溘 | |||
|  | 				sq_BinaryWriteDword(var.get_vector(3)); | |||
|  | 				sq_BinaryWriteByte(obj.getVar().get_vector(5)); | |||
|  | 				sq_SendCreatePassiveObjectPacket(obj, 24285, 0, 0, -1, 0, obj.getDirection()); | |||
|  | 				 | |||
|  | 				// 螃粽薛?蒂 饷薯?棻. | |||
|  | 				sq_SendDestroyPacketPassiveObject(obj); | |||
|  | 				 | |||
|  | 				// ?贼霞翕 | |||
|  | 				sq_SetMyShake(obj, 5, 240); | |||
|  | 			} | |||
|  | 		} | |||
|  | 	} | |||
|  | } | |||
|  | 
 | |||
|  | function onEndCurrentAni_po_ATConcentrateBall(obj) | |||
|  | { | |||
|  | 	if (!obj) return; | |||
|  | 	if (obj.isMyControlObject()) { | |||
|  | 		sq_SendDestroyPacketPassiveObject(obj); | |||
|  | 	} | |||
|  | } | |||
|  |  |