388 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			388 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
|  | 
 | |||
|  | SUB_STATE_FIREPILLAR_0	<- 0 | |||
|  | SUB_STATE_FIREPILLAR_1	<- 1 | |||
|  | SUB_STATE_FIREPILLAR_2	<- 2 | |||
|  | SUB_STATE_FIREPILLAR_3	<- 3 | |||
|  | SUB_STATE_FIREPILLAR_4	<- 4 | |||
|  | 
 | |||
|  | function checkExecutableSkill_FirePillar(obj) | |||
|  | { | |||
|  | 
 | |||
|  | 	if(!obj) return false; | |||
|  | 
 | |||
|  | 	local b_useskill = obj.sq_IsUseSkill(SKILL_FIREPILLAR); | |||
|  | 
 | |||
|  | 	if(b_useskill) | |||
|  | 	{ | |||
|  | 		obj.sq_IsEnterSkillLastKeyUnits(SKILL_FIREPILLAR); | |||
|  | 		obj.sq_IntVectClear(); | |||
|  | 		obj.sq_IntVectPush(SUB_STATE_FIREPILLAR_0); // substate撮? | |||
|  | 		obj.sq_AddSetStatePacket(STATE_FIREPILLAR, STATE_PRIORITY_IGNORE_FORCE, true); | |||
|  | 		return true; | |||
|  | 	}	 | |||
|  | 
 | |||
|  | 	return false; | |||
|  | 
 | |||
|  | } | |||
|  | 
 | |||
|  | function checkCommandEnable_FirePillar(obj) | |||
|  | { | |||
|  | 
 | |||
|  | 	if(!obj) return false; | |||
|  | 
 | |||
|  | 	local state = obj.sq_GetState(); | |||
|  | 	 | |||
|  | 	if(state == STATE_ATTACK) | |||
|  | 	{ | |||
|  | 		return obj.sq_IsCommandEnable(SKILL_FIREPILLAR); // 念瘫潍缣怃朝 ?姜蝶鉴虏 警蜗桧 陛栋?栖棻. 蒙机濠:姜霞热 [2012.04.20] obj.sq_IsCommandEnable(SKILL_BROKENARROW); | |||
|  | 	} | |||
|  | 	 | |||
|  | 
 | |||
|  | 	return true; | |||
|  | 
 | |||
|  | } | |||
|  | 
 | |||
|  | function onSetState_FirePillar(obj, state, datas, isResetTimer) | |||
|  | { | |||
|  | 
 | |||
|  | 	if(!obj) return; | |||
|  | 
 | |||
|  | 	local substate = obj.sq_GetVectorData(datas, 0); | |||
|  | 	obj.setSkillSubState(substate); | |||
|  | 	 | |||
|  | 	obj.getVar("firepillar").clear_vector(); | |||
|  | 	obj.getVar("firepillar").push_vector(0); | |||
|  | 	obj.getVar("firepillar").push_vector(0); | |||
|  | 	obj.getVar("firepillar").push_vector(0); | |||
|  | 	 | |||
|  | 	obj.sq_StopMove(); | |||
|  | 
 | |||
|  | 	local posX = obj.getXPos(); | |||
|  | 	local posY = obj.getYPos(); | |||
|  | 	local posZ = obj.getZPos(); | |||
|  | 
 | |||
|  | 	obj.getVar().clear_vector(); | |||
|  | 	obj.getVar().push_vector(0); | |||
|  | 	obj.getVar().push_vector(0); | |||
|  | 	obj.getVar().push_vector(0); | |||
|  | 
 | |||
|  | 	if(substate == SUB_STATE_FIREPILLAR_0) | |||
|  | 	{ | |||
|  | 		obj.sq_PlaySound("MW_FPILLAR_READY"); | |||
|  | 		obj.sq_SetCurrentAnimation(CUSTOM_ANI_FIREPILLAR1); | |||
|  | 		 | |||
|  | 		addElementalChain_ATMage(obj, ENUM_ELEMENT_FIRE); | |||
|  | 	} | |||
|  | 	else if(substate == SUB_STATE_FIREPILLAR_1) | |||
|  | 	{ | |||
|  | 		obj.sq_SetCurrentAnimation(CUSTOM_ANI_FIREPILLAR2); | |||
|  | 	} | |||
|  | 	else if(substate == SUB_STATE_FIREPILLAR_2) | |||
|  | 	{ | |||
|  | 		obj.sq_PlaySound("MW_FPILLAR"); | |||
|  | 	 | |||
|  | 		if(obj.isMyControlObject()) | |||
|  | 		{ | |||
|  | 			local skillLevel = obj.sq_GetSkillLevel(SKILL_FIREPILLAR); | |||
|  | 			local arriveTime = obj.sq_GetIntData(SKILL_FIREPILLAR, 0); // 0. 模辨给桧 釭陛朝 楼紫 (剪葬梱虽 紫殖?朝 卫除) (1/1000蟾) | |||
|  | 			local attackRate = obj.sq_GetBonusRateWithPassive(SKILL_FIREPILLAR, STATE_FIREPILLAR, 2, 1.0); // 2. 颤问 奢问溘(%) | |||
|  | 			local distance = obj.sq_GetLevelData(SKILL_FIREPILLAR, 1, skillLevel); // 1.釭陛朝 剪葬 | |||
|  | 			local term  = obj.sq_GetIntData(SKILL_FIREPILLAR, 2); // 2. 棻钦?? 除问 | |||
|  | 
 | |||
|  | 			sq_BinaryStartWrite(); | |||
|  | 			sq_BinaryWriteDword(attackRate); // 横鸥奢问溘 | |||
|  | 			sq_BinaryWriteDword(distance); // 釭陛朝 剪葬 | |||
|  | 			sq_BinaryWriteDword(arriveTime); // 模辨给桧 釭陛朝 楼紫 (剪葬梱虽 紫殖?朝 卫除) (1/1000蟾) | |||
|  | 			sq_BinaryWriteDword(term); // 棻钦?? 除问 | |||
|  | 			obj.sq_SendCreatePassiveObjectPacket(24254, 0, 0, 1, 0); //  | |||
|  | 		} | |||
|  | 
 | |||
|  | 		obj.sq_SetCurrentAnimation(CUSTOM_ANI_FIREPILLAR3); | |||
|  | 	} | |||
|  | 	else if(substate == SUB_STATE_FIREPILLAR_3) | |||
|  | 	{ | |||
|  | 	} | |||
|  | 	else if(substate == SUB_STATE_FIREPILLAR_4) | |||
|  | 	{ | |||
|  | 	} | |||
|  | 	 | |||
|  | 	//obj.sq_SetStaticSpeedInfo(SPEED_TYPE_CAST_SPEED, SPEED_TYPE_CAST_SPEED, | |||
|  | 	//		SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0); | |||
|  | } | |||
|  | 
 | |||
|  | function prepareDraw_FirePillar(obj) | |||
|  | { | |||
|  | 
 | |||
|  | 	if(!obj) return; | |||
|  | 
 | |||
|  | 	local substate = obj.getSkillSubState(); | |||
|  | 
 | |||
|  | 	if(substate == SUB_STATE_FIREPILLAR_0) { | |||
|  | 		// SUB_STATE_FIREPILLAR_0 怃粽蝶才桧? 蒙机 | |||
|  | 	} | |||
|  | 	else if(substate == SUB_STATE_FIREPILLAR_1) { | |||
|  | 		// SUB_STATE_FIREPILLAR_1 怃粽蝶才桧? 蒙机 | |||
|  | 	} | |||
|  | 	else if(substate == SUB_STATE_FIREPILLAR_2) { | |||
|  | 		// SUB_STATE_FIREPILLAR_2 怃粽蝶才桧? 蒙机 | |||
|  | 	} | |||
|  | 	else if(substate == SUB_STATE_FIREPILLAR_3) { | |||
|  | 		// SUB_STATE_FIREPILLAR_3 怃粽蝶才桧? 蒙机 | |||
|  | 	} | |||
|  | 	else if(substate == SUB_STATE_FIREPILLAR_4) { | |||
|  | 		// SUB_STATE_FIREPILLAR_4 怃粽蝶才桧? 蒙机 | |||
|  | 	} | |||
|  | } | |||
|  | 
 | |||
|  | function onProc_FirePillar(obj) | |||
|  | { | |||
|  | 
 | |||
|  | 	if(!obj) return; | |||
|  | 
 | |||
|  | 	local substate = obj.getSkillSubState(); | |||
|  | 
 | |||
|  | 	local pAni = obj.sq_GetCurrentAni(); | |||
|  | 	local frmIndex = obj.sq_GetCurrentFrameIndex(pAni); | |||
|  | 	local currentT = sq_GetCurrentTime(pAni); | |||
|  | 	 | |||
|  | 	//print(" substate:" + substate); | |||
|  | 
 | |||
|  | 	if(substate == SUB_STATE_FIREPILLAR_0) { | |||
|  | 		// SUB_STATE_FIREPILLAR_0 怃粽蝶才桧? 蒙机 | |||
|  | 	} | |||
|  | 	else if(substate == SUB_STATE_FIREPILLAR_1) { | |||
|  | 	} | |||
|  | 	else if(substate == SUB_STATE_FIREPILLAR_2) { | |||
|  | 		// SUB_STATE_FIREPILLAR_2 怃粽蝶才桧? 蒙机 | |||
|  | 	} | |||
|  | 	else if(substate == SUB_STATE_FIREPILLAR_3) { | |||
|  | 		// SUB_STATE_FIREPILLAR_3 怃粽蝶才桧? 蒙机 | |||
|  | 	} | |||
|  | 	else if(substate == SUB_STATE_FIREPILLAR_4) { | |||
|  | 		// SUB_STATE_FIREPILLAR_4 怃粽蝶才桧? 蒙机 | |||
|  | 	} | |||
|  | } | |||
|  | 
 | |||
|  | function onProcCon_FirePillar(obj) | |||
|  | { | |||
|  | 
 | |||
|  | 	if(!obj) return; | |||
|  | 
 | |||
|  | 	local substate = obj.getSkillSubState(); | |||
|  | 
 | |||
|  | 	if(substate == SUB_STATE_FIREPILLAR_0) { | |||
|  | 		// SUB_STATE_FIREPILLAR_0 怃粽蝶才桧? 蒙机 | |||
|  | 	} | |||
|  | 	else if(substate == SUB_STATE_FIREPILLAR_1) | |||
|  | 	{ | |||
|  | 		local bDownKey = obj.isDownSkillLastKey(); | |||
|  | 		local stateTimer = obj.sq_GetStateTimer(); | |||
|  | 		local grabMaxTime = obj.sq_GetIntData(SKILL_FIREPILLAR, 1); // 1. 模辨给桧 濩坚 毡朝 譆渠卫除 | |||
|  | 		 | |||
|  | 		// 蹂羶饵? | |||
|  | 		// 谏醱 ?缣 谏醱卫除虏踯 ?脑贼 濠翕戏煎 剩横骨栖棻..		 | |||
|  | 		if(!bDownKey || stateTimer >= grabMaxTime)// 桨击 嗥历棻朝匙擎..  | |||
|  | 		//if(!bDownKey)// 桨击 嗥历棻朝匙擎..  | |||
|  | 		{ // 桨击 嗥历棻朝匙擎..  | |||
|  | 			obj.sq_IntVectClear(); | |||
|  | 			obj.sq_IntVectPush(SUB_STATE_FIREPILLAR_2); // substate撮? | |||
|  | 			obj.sq_AddSetStatePacket(STATE_FIREPILLAR, STATE_PRIORITY_USER, true); | |||
|  | 			return; | |||
|  | 		} | |||
|  | 	} | |||
|  | 	else if(substate == SUB_STATE_FIREPILLAR_2) { | |||
|  | 		// SUB_STATE_FIREPILLAR_2 怃粽蝶才桧? 蒙机 | |||
|  | 	} | |||
|  | 	else if(substate == SUB_STATE_FIREPILLAR_3) { | |||
|  | 		// SUB_STATE_FIREPILLAR_3 怃粽蝶才桧? 蒙机 | |||
|  | 	} | |||
|  | 	else if(substate == SUB_STATE_FIREPILLAR_4) { | |||
|  | 		// SUB_STATE_FIREPILLAR_4 怃粽蝶才桧? 蒙机 | |||
|  | 	} | |||
|  | 	 | |||
|  | 
 | |||
|  | } | |||
|  | 
 | |||
|  | function onEndCurrentAni_FirePillar(obj) | |||
|  | { | |||
|  | 
 | |||
|  | 	if(!obj) return; | |||
|  | 
 | |||
|  | 	if(!obj.isMyControlObject()) { | |||
|  | 		return; | |||
|  | 	}	 | |||
|  | 	 | |||
|  | 	local substate = obj.getSkillSubState(); | |||
|  | 
 | |||
|  | 	if(substate == SUB_STATE_FIREPILLAR_0) { | |||
|  | 		 | |||
|  | 		print( " onend:" + substate); | |||
|  | 		obj.sq_IntVectClear(); | |||
|  | 		obj.sq_IntVectPush(SUB_STATE_FIREPILLAR_1); // substate撮? | |||
|  | 		obj.sq_AddSetStatePacket(STATE_FIREPILLAR, STATE_PRIORITY_IGNORE_FORCE, true); | |||
|  | 	} | |||
|  | 	else if(substate == SUB_STATE_FIREPILLAR_1) { | |||
|  | 	} | |||
|  | 	else if(substate == SUB_STATE_FIREPILLAR_2) { | |||
|  | 		obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_USER, false); | |||
|  | 	} | |||
|  | 	else if(substate == SUB_STATE_FIREPILLAR_3) { | |||
|  | 		// SUB_STATE_FIREPILLAR_3 怃粽蝶才桧? 蒙机 | |||
|  | 	} | |||
|  | 	else if(substate == SUB_STATE_FIREPILLAR_4) { | |||
|  | 		// SUB_STATE_FIREPILLAR_4 怃粽蝶才桧? 蒙机 | |||
|  | 	} | |||
|  | 	 | |||
|  | 
 | |||
|  | } | |||
|  | 
 | |||
|  | function onKeyFrameFlag_FirePillar(obj, flagIndex) | |||
|  | { | |||
|  | 
 | |||
|  | 	if(!obj) return false; | |||
|  | 
 | |||
|  | 	local substate = obj.getSkillSubState(); | |||
|  | 
 | |||
|  | 	if(substate == SUB_STATE_FIREPILLAR_0) { | |||
|  | 		// SUB_STATE_FIREPILLAR_0 怃粽蝶才桧? 蒙机 | |||
|  | 	} | |||
|  | 	else if(substate == SUB_STATE_FIREPILLAR_1) { | |||
|  | 		// SUB_STATE_FIREPILLAR_1 怃粽蝶才桧? 蒙机 | |||
|  | 	} | |||
|  | 	else if(substate == SUB_STATE_FIREPILLAR_2) { | |||
|  | 		// SUB_STATE_FIREPILLAR_2 怃粽蝶才桧? 蒙机 | |||
|  | 	} | |||
|  | 	else if(substate == SUB_STATE_FIREPILLAR_3) { | |||
|  | 		// SUB_STATE_FIREPILLAR_3 怃粽蝶才桧? 蒙机 | |||
|  | 	} | |||
|  | 	else if(substate == SUB_STATE_FIREPILLAR_4) { | |||
|  | 		// SUB_STATE_FIREPILLAR_4 怃粽蝶才桧? 蒙机 | |||
|  | 	} | |||
|  | 	 | |||
|  | 
 | |||
|  | 	return false; | |||
|  | 
 | |||
|  | } | |||
|  | 
 | |||
|  | function onEndState_FirePillar(obj, new_state) | |||
|  | { | |||
|  | 
 | |||
|  | 	if(!obj) return; | |||
|  | 
 | |||
|  | 	local substate = obj.getSkillSubState(); | |||
|  | 	 | |||
|  | 	if(substate == SUB_STATE_FIREPILLAR_0) { | |||
|  | 		// SUB_STATE_FIREPILLAR_0 怃粽蝶才桧? 蒙机 | |||
|  | 	} | |||
|  | 	else if(substate == SUB_STATE_FIREPILLAR_1) { | |||
|  | 		// SUB_STATE_FIREPILLAR_1 怃粽蝶才桧? 蒙机 | |||
|  | 	} | |||
|  | 	else if(substate == SUB_STATE_FIREPILLAR_2) { | |||
|  | 		// SUB_STATE_FIREPILLAR_2 怃粽蝶才桧? 蒙机 | |||
|  | 	} | |||
|  | 	else if(substate == SUB_STATE_FIREPILLAR_3) { | |||
|  | 		// SUB_STATE_FIREPILLAR_3 怃粽蝶才桧? 蒙机 | |||
|  | 	} | |||
|  | 	else if(substate == SUB_STATE_FIREPILLAR_4) { | |||
|  | 		// SUB_STATE_FIREPILLAR_4 怃粽蝶才桧? 蒙机 | |||
|  | 	} | |||
|  | 	 | |||
|  | 
 | |||
|  | } | |||
|  | 
 | |||
|  | function onAfterSetState_FirePillar(obj, state, datas, isResetTimer) | |||
|  | { | |||
|  | 
 | |||
|  | 	if(!obj) return; | |||
|  | 
 | |||
|  | 	local substate = obj.getSkillSubState(); | |||
|  | 
 | |||
|  | 	if(substate == SUB_STATE_FIREPILLAR_0) { | |||
|  | 	} | |||
|  | 	else if(substate == SUB_STATE_FIREPILLAR_1) { | |||
|  | 		// SUB_STATE_FIREPILLAR_1 怃粽蝶才桧? 蒙机 | |||
|  | 	} | |||
|  | 	else if(substate == SUB_STATE_FIREPILLAR_2) { | |||
|  | 		// SUB_STATE_FIREPILLAR_2 怃粽蝶才桧? 蒙机 | |||
|  | 	} | |||
|  | 	else if(substate == SUB_STATE_FIREPILLAR_3) { | |||
|  | 		// SUB_STATE_FIREPILLAR_3 怃粽蝶才桧? 蒙机 | |||
|  | 	} | |||
|  | 	else if(substate == SUB_STATE_FIREPILLAR_4) { | |||
|  | 		// SUB_STATE_FIREPILLAR_4 怃粽蝶才桧? 蒙机 | |||
|  | 	} | |||
|  | 	 | |||
|  | 
 | |||
|  | } | |||
|  | 
 | |||
|  | 
 | |||
|  | function onBeforeDamage_FirePillar(obj, attacker, boundingBox, isStuck) | |||
|  | //function onBeforeDamage_FirePillar(obj, attacker, boundingBox) | |||
|  | { | |||
|  | 	if(!obj) return; | |||
|  | 	 | |||
|  | 	local substate = obj.getSkillSubState(); | |||
|  | 	 | |||
|  | 	if(substate == SUB_STATE_FIREPILLAR_1) | |||
|  | 	{ | |||
|  | 		// // 碳晦菅 锰剪葬 奢问暧 等嘐虽蒂 N%虏踯 马模卫郦坚, 唳霜击 嫡虽 强蝗栖棻. | |||
|  | 		local isMeleeAttack = attacker.isMeleeAttack(); | |||
|  | 		local isMissileObj = attacker.isMissileObject(); | |||
|  | 		 | |||
|  | 		if((isMeleeAttack == false) || (isMissileObj == true)) | |||
|  | 		{ | |||
|  | 			local direction = sq_GetOppositeDirection(obj. sq_GetDirection(obj)); | |||
|  | 			 | |||
|  | 			if(direction == sq_GetDirection(attacker)) | |||
|  | 			{ | |||
|  | 				local attackerInfo = sq_GetCurrentAttackInfo(attacker); | |||
|  | 				 | |||
|  | 				print( " isMeleeAttack:" + isMeleeAttack); | |||
|  | 				print( " isMissileObj:" + isMissileObj); | |||
|  | 				if(attackerInfo) | |||
|  | 				{ | |||
|  | 					local rateDamager = sq_GetAttackInfoHitDelayRateDamager(attackerInfo); | |||
|  | 					 | |||
|  | 					local backupRate = rateDamager * 100.0; | |||
|  | 					obj.getVar("firepillar").set_vector(VECTOR_FLAG_0, backupRate.tointeger()); | |||
|  | 					 | |||
|  | 					sq_SetAttackInfoHitDelayRateDamager(attackerInfo, 0.0); // 横鸥 蝶欐?徽击 0.0戏煎 虏菟横帼萼棻.. | |||
|  | 					 | |||
|  | 					obj.getVar("firepillar").set_vector(VECTOR_FLAG_1, sq_GetCurrentAttackeDamageAct(attackerInfo)); | |||
|  | 					print( " DAMAGEACT_NONE"); | |||
|  | 					sq_SetCurrentAttackeDamageAct(attackerInfo, DAMAGEACT_NONE); | |||
|  | 					 | |||
|  | 					obj.getVar("firepillar").set_vector(VECTOR_FLAG_2, 1); | |||
|  | 				} | |||
|  | 			} | |||
|  | 		} | |||
|  | 	} | |||
|  | 
 | |||
|  | } | |||
|  | 
 | |||
|  | function onAfterDamage_FirePillar(obj, attacker, boundingBox) | |||
|  | { | |||
|  | 	if(!obj) return; | |||
|  | 
 | |||
|  | 	local substate = obj.getSkillSubState(); | |||
|  | 	// // 碳晦菅 锰剪葬 奢问暧 等嘐虽蒂 N%虏踯 马模卫郦坚, 唳霜击 嫡虽 强蝗栖棻. | |||
|  | 	if(substate == SUB_STATE_FIREPILLAR_1) | |||
|  | 	{ | |||
|  | 		if(obj.getVar("firepillar").get_vector(VECTOR_FLAG_2)) | |||
|  | 		{ | |||
|  | 			local attackerInfo = sq_GetCurrentAttackInfo(attacker); | |||
|  | 			 | |||
|  | 			if(attackerInfo) | |||
|  | 			{ | |||
|  | 				local backupRate = obj.getVar("firepillar").get_vector(VECTOR_FLAG_0); | |||
|  | 				local damageAct = obj.getVar("firepillar").get_vector(VECTOR_FLAG_1); | |||
|  | 				local rateDamager = backupRate.tofloat() / 100.0; | |||
|  | 				sq_SetAttackInfoHitDelayRateDamager(attackerInfo, rateDamager); // 横鸥 蝶欐?徽击 0.0戏煎 虏菟横帼萼棻.. | |||
|  | 				sq_SetCurrentAttackeDamageAct(attackerInfo, damageAct); | |||
|  | 			} | |||
|  | 			 | |||
|  | 			obj.getVar("firepillar").set_vector(VECTOR_FLAG_2, 0); | |||
|  | 		} | |||
|  | 	} | |||
|  | } | |||
|  |  |