SUB_STATE_WINDPRESS_0 <- 0 SUB_STATE_WINDPRESS_1 <- 1 SUB_STATE_WINDPRESS_2 <- 2 SUB_STATE_WINDPRESS_3 <- 3 SUB_STATE_WINDPRESS_4 <- 4 function checkExecutableSkill_WindPress(obj) { if (!obj) return false; local b_useskill = obj.sq_IsUseSkill(SKILL_WINDPRESS); print("b_useskill : %d" + b_useskill); if (b_useskill) { obj.sq_IntVectClear(); obj.sq_IntVectPush(SUB_STATE_WINDPRESS_0); // substate撮? obj.sq_AddSetStatePacket(STATE_WINDPRESS, STATE_PRIORITY_IGNORE_FORCE, true); return true; } return false; } function checkCommandEnable_WindPress(obj) { if (!obj) return false; local state = obj.sq_GetState(); if (state == STATE_ATTACK) { return obj.sq_IsCommandEnable(SKILL_WINDPRESS); // 念瘫潍缣怃朝 ?姜蝶鉴虏 警蜗桧 陛栋?栖棻. 蒙机濠:姜霞热 [2012.04.20] obj.sq_IsCommandEnable(SKILL_BROKENARROW); } return true; } function onSetState_WindPress(obj,state,datas,isResetTimer) { if (!obj) return; local substate = obj.sq_GetVectorData(datas, 0); obj.setSkillSubState(substate); 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().clear_ct_vector(); obj.getVar().push_ct_vector(); local t = obj.getVar().get_ct_vector(0); if (t) { t.Reset(); t.Start(10000,0); } print(" onSetState_WindPress"); if (substate == SUB_STATE_WINDPRESS_0) { obj.sq_SetCurrentAnimation(CUSTOM_ANI_WINDPRESS_CAST); local pAni = obj.sq_GetCurrentAni(); // 议蝶? 楼紫蒂 评塭陛紫烟 扑姜 // 议蝶? 楼紫陛 渗唳肾贼, 缣栖诡桧暮 楼紫紫 渗唳 腌栖棻. // 议蝶? 啪桧虽紫 ?卫蒂 ?鄹栖棻. local skillLevel = sq_GetSkillLevel(obj, SKILL_WINDPRESS); //local castTime = sq_GetCastTime(obj, SKILL_WINDPRESS, skillLevel); //local animation = sq_GetCurrentAnimation(obj); //local startTime = sq_GetFrameStartTime(animation, 16); //local speedRate = startTime.tofloat() / castTime.tofloat(); //obj.sq_SetStaticSpeedInfo(SPEED_TYPE_CAST_SPEED, SPEED_TYPE_CAST_SPEED, //SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, speedRate, speedRate); // //sq_StartDrawCastGauge(obj, startTime, true); obj.sq_PlaySound("R_CR_WINDPRESS"); } else if (substate == SUB_STATE_WINDPRESS_1) { obj.sq_SetCurrentAnimation(CUSTOM_ANI_WINDPRESS_START); obj.sq_PlaySound("WINDPRESS_READY"); } else if (substate == SUB_STATE_WINDPRESS_2) { if (obj.isMyControlObject()) { sq_flashScreen(obj,0,300,0,100, sq_RGB(0,0,0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM); obj.sq_SetShake(obj,1,300); } obj.sq_SetCurrentAnimation(CUSTOM_ANI_WINDPRESS); obj.sq_PlaySound("WINDPRESS_BURST", 7571); } else if (substate == SUB_STATE_WINDPRESS_3) { obj.sq_SetCurrentAnimation(CUSTOM_ANI_WINDPRESS_END); } } function prepareDraw_WindPress(obj) { if (!obj) return; } function onProc_WindPress(obj) { if (!obj) return; local substate = obj.getSkillSubState(); local pAni = obj.sq_GetCurrentAni(); local frmIndex = obj.sq_GetCurrentFrameIndex(pAni); local currentT = sq_GetCurrentTime(pAni); if (substate == SUB_STATE_WINDPRESS_2) { if (obj.isMyControlObject()) { local skill_level = obj.sq_GetSkillLevel(SKILL_WINDPRESS); //24355 `Character/Mage/CreatorWindPress.obj` // 觼葬缣桧搅 : 孺萄?溯蝶 local passiveobj_cl = obj.sq_GetPassiveObject(24355); local objectManager = obj.getObjectManager(); if (!objectManager) return; local stage = sq_GetObjectManagerStage(obj); local control = stage.getMainControl(); if (!control.IsLBDown() || !passiveobj_cl) { obj.sq_IntVectClear(); obj.sq_IntVectPush(SUB_STATE_WINDPRESS_3); obj.sq_AddSetStatePacket(STATE_WINDPRESS, STATE_PRIORITY_USER, true); } else { local t = obj.getVar().get_ct_vector(0); if (t) { local currentT = 0; currentT = t.Get(); print(" currentT:" + currentT); if (currentT >= 300) { if (obj.isMyControlObject()) { print(" reset:" + currentT); sq_flashScreen(obj,0,300,0,100, sq_RGB(0,0,0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM); obj.sq_SetShake(obj,1,300); } t.Reset(); t.Start(10000,0); } } } } } } function onProcCon_WindPress(obj) { if (!obj) return; local substate = obj.getSkillSubState(); local pAni = obj.sq_GetCurrentAni(); local frmIndex = obj.sq_GetCurrentFrameIndex(pAni); local currentT = sq_GetCurrentTime(pAni); if (substate == SUB_STATE_WINDPRESS_1) { if (frmIndex >= 2) { if (!obj.getVar().get_vector(0)) { obj.getVar().set_vector(0, 1); local posX = obj.getXPos(); local posY = obj.getYPos(); local posZ = obj.getZPos(); //100 // 0.棻钦?? 除问 //100 // 1.颤问剪葬 //10 // 2. 模赅榆 //30 // 3. 颤问陕紫 彰嫔 // 0.棻钦?? 除问 local multiHitTerm = sq_GetIntData(obj, SKILL_WINDPRESS, 0); // 1.颤问剪葬 local targetLen = sq_GetIntData(obj, SKILL_WINDPRESS, 1); // 2.模赅榆 local consume = sq_GetIntData(obj, SKILL_WINDPRESS, 2); // 3.颤问陕紫 local dir = sq_GetIntData(obj, SKILL_WINDPRESS, 3); // 奢问溘 跷陛热纂 蒙机 local level = sq_GetSkillLevel(obj, SKILL_CREATORWIND); // 1.奢问溘 跷陛 热纂 (%) local addValue = sq_GetLevelData(obj, SKILL_CREATORWIND, SKL_LV_1, level); local addRate = addValue.tofloat() / 100.0; local power = obj.sq_GetPowerWithPassive(SKILL_WINDPRESS, STATE_STAND, SKL_LV_0, -1,addRate.tofloat()); obj.sq_StartWrite(); sq_BinaryWriteDword(multiHitTerm); sq_BinaryWriteDword(targetLen); sq_BinaryWriteDword(consume); sq_BinaryWriteDword(dir); sq_BinaryWriteDword(power); local size = 50; local offsetZ = 62; local offset = sq_GetDistancePos(0, obj.getDirection(), size); sq_SendCreatePassiveObjectPacketPos(obj, 24355, 0, posX + offset, posY - 1, posZ + offsetZ); } } } } function onEndCurrentAni_WindPress(obj) { if (!obj) return; //local pSickleObj = obj.sq_GetPassiveObject(24101); // sickle local substate = obj.getSkillSubState(); if (substate == SUB_STATE_WINDPRESS_0) { if (obj.isMyControlObject()) { obj.sq_IntVectClear(); obj.sq_IntVectPush(SUB_STATE_WINDPRESS_1); obj.sq_AddSetStatePacket(STATE_WINDPRESS, STATE_PRIORITY_USER, true); } } else if (substate == SUB_STATE_WINDPRESS_1) { if (obj.isMyControlObject()) { obj.sq_IntVectClear(); obj.sq_IntVectPush(SUB_STATE_WINDPRESS_2); obj.sq_AddSetStatePacket(STATE_WINDPRESS, STATE_PRIORITY_USER, true); } } else if (substate == SUB_STATE_WINDPRESS_2) { } else if (substate == SUB_STATE_WINDPRESS_3) { if (obj.isMyControlObject()) { obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_USER, false); } } else if (substate == SUB_STATE_WINDPRESS_4) { } } function onKeyFrameFlag_WindPress(obj,flagIndex) { if (!obj) return false; return true; } function onEndState_WindPress(obj,new_state) { if (!obj) return; obj.stopSound(7571); sq_EndDrawCastGauge(obj); } function onAfterSetState_WindPress(obj,state,datas,isResetTimer) { if (!obj) return; } function onBeforeAttack_WindPress(obj,damager,boundingBox,isStuck) { if (!obj) return; } function onAttack_WindPress(obj,damager,boundingBox,isStuck) { if (!obj) return; } function onAfterAttack_WindPress(obj,damager,boundingBox,isStuck) { if (!obj) return 0; return 1; } function onBeforeDamage_WindPress(obj,attacker,boundingBox,isStuck) { if (!obj) return; } function onDamage_WindPress(obj,attacker,boundingBox) { if (!obj) return; } function onAfterDamage_WindPress(obj,attacker,boundingBox) { if (!obj) return; }