91 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			91 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
|  | SUBSTATE_PO_ELEMENTAL_CREATOR_STAY	<- 2; // 渠晦 鼻鹧 // ?卫粽暧 怃粽 蝶才桧?朝  2 睡搅 卫蒙?棻. | |||
|  | SUBSTATE_PO_ELEMENTAL_CREATOR_FIRE	<- 3; // 嫦饵  | |||
|  | 
 | |||
|  | VAR_PO_ELEMENTAL_CREATOR_TYPE	<- 0;	// 锰模 颤殓 | |||
|  | VAR_PO_POS_MIN					<- 1;	// 菅菅 集毡朝 嫔纂 譆模高 | |||
|  | VAR_PO_POS_MAX					<- 2;	// 菅菅 集毡朝 嫔纂 譆渠高 | |||
|  | 
 | |||
|  | function setCustomData_po_ATElementalCreator(obj, receiveData) | |||
|  | {		 | |||
|  | 	if (!obj) return;	 | |||
|  | 	//elemental type 扑姜.  桧 颤殓戏煎 釭酝缣 葆彻掘 当撩 | |||
|  | 	local elementalType = receiveData.readWord();	 | |||
|  | 	 | |||
|  | 	local var = obj.getVar(); | |||
|  | 	var.setInt(VAR_PO_ELEMENTAL_CREATOR_TYPE, elementalType); | |||
|  | 	 | |||
|  | 	 | |||
|  | 	local rand = sq_getRandom(0, 1); | |||
|  | 	local upHeight = 8; | |||
|  | 	if (rand == 0) | |||
|  | 		upHeight = -8; | |||
|  | 
 | |||
|  | 	var.setInt(VAR_PO_POS_MIN, obj.getZPos()); | |||
|  | 	var.setInt(VAR_PO_POS_MAX, obj.getZPos() + upHeight); | |||
|  | 	 | |||
|  | 	if (elementalType != ENUM_ELEMENT_NONE) | |||
|  | 		setCurrentAnimationFromCutomIndex(obj, elementalType); | |||
|  | 	obj.sendStateOnlyPacket(SUBSTATE_PO_ELEMENTAL_CREATOR_STAY);	 | |||
|  | } | |||
|  | 
 | |||
|  | function onAttack_po_ATElementalCreator(obj, damager, boundingBox, isStuck) | |||
|  | { | |||
|  | 	if (!obj) return 0; | |||
|  | 	return 0; | |||
|  | } | |||
|  | 
 | |||
|  | 
 | |||
|  | function procAppend_po_ATElementalCreator(obj) | |||
|  | { | |||
|  | 	if (!obj) return; | |||
|  | 	 | |||
|  | 	local var = obj.getVar(); | |||
|  | 	local min = var.getInt(VAR_PO_POS_MIN); | |||
|  | 	local max = var.getInt(VAR_PO_POS_MAX); | |||
|  | 	 | |||
|  | 	local zPos = sq_GetShuttleValue(min, max, sq_GetObjectTime(obj), 400); | |||
|  | 	sq_SetCurrentPos(obj, obj.getXPos(), obj.getYPos(), zPos);	 | |||
|  | } | |||
|  | 
 | |||
|  | 
 | |||
|  | function setState_po_ATElementalCreator(obj, state, datas) | |||
|  | { | |||
|  | 	if (!obj) return; | |||
|  | 	 | |||
|  | 	if (state == SUBSTATE_PO_ELEMENTAL_CREATOR_FIRE)  | |||
|  | 	{ | |||
|  | 		local var = obj.getVar(); | |||
|  | 		local elementalType = var.getInt(VAR_PO_ELEMENTAL_CREATOR_TYPE);	 | |||
|  | 		playSoundForAtmageAttack(obj, elementalType, 0); | |||
|  | 		 | |||
|  | 		if (!obj.isMyControlObject()) // 顶陛 妇葬?朝 拥陛 嬴栖贼 饵遴萄虏 营当 | |||
|  | 			return;		 | |||
|  | 		 | |||
|  | 		local direction = sq_GetDirection(obj); | |||
|  | 		local parentObj = obj.getTopCharacter(); | |||
|  | 		 | |||
|  | 		// 擒除暧 嵘紫晦栋桧 毡挤.		 | |||
|  | 		local activeObject = sq_FindShootingTarget(parentObj, 0, 0, 0, 0, 0, 4, 4, -1, 300, 100, 50, 100); | |||
|  | 		local horizonAngle = 0.0; | |||
|  | 		local verticalAngle = 0.0; | |||
|  | 
 | |||
|  | 		if (activeObject != NULL) | |||
|  | 		{ | |||
|  | 			local maxDistance = abs(activeObject.getXPos()); | |||
|  | 			horizonAngle = sq_GetShootingHorizonAngle(activeObject, 0, 0, 5, maxDistance); | |||
|  | 			verticalAngle = sq_GetShootingVerticalAngle(activeObject, 0, 0, 5, maxDistance, 300); | |||
|  | 		} | |||
|  | 
 | |||
|  | 		sq_BinaryStartWrite() | |||
|  | 		sq_BinaryWriteFloat(horizonAngle);			// ?嫦暧 觼晦 | |||
|  | 		sq_BinaryWriteFloat(verticalAngle); | |||
|  | 		sq_BinaryWriteDword(0); | |||
|  | 		sq_BinaryWriteDword(1);						// 县溯诠骁 溯樯暧 ?卫粽 螃粽薛? 樯陛? | |||
|  | 		 | |||
|  | 		// ?卫粽 螃粽薛? 樯策蝶 扑姜 | |||
|  | 		local passiveObjectIndex = (elementalType == ENUM_ELEMENT_NONE ? 24207 : 24208 + elementalType); | |||
|  | 		sq_SendCreatePassiveObjectPacket(obj, passiveObjectIndex, 0, 0, 0, 0, obj.getDirection());	 | |||
|  | 		sq_SendDestroyPacketPassiveObject(obj);	 | |||
|  | 	} | |||
|  | } | |||
|  |  |