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);	
 | ||
| 	}
 | ||
| }
 | ||
|  |