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