function createPassiveObjectEx_k_k(obj,monsterobj,targetObj,skillIndex,subtype,x,y,z,direction,pvector1,pvector2,pvector3,pvector4,pvector5) { if(!obj || !monsterobj) return; if(pvector1 == null) pvector1 = 0; if(pvector2 == null) pvector2 = 0; if(pvector3 == null) pvector3 = 0; if(pvector4 == null) pvector4 = 0; if(pvector5 == null) pvector5 = 0; // local bonusRate = obj.getVar("summoners_bonusRate").get_vector(0).tofloat() / 1000.0; //print("bonusRate = "+bonusRate); // pvector1 = (pvector1.tofloat() * bonusRate).tointeger(); if((skillIndex == SKILL_BYKK_SUMMONRAMOS && subtype == 41) || (skillIndex == 25 && subtype == 7) || (skillIndex == 46 && subtype == 6)) pvector2 = (pvector2.tofloat() * summoners_kuk_setbonusRate(obj).tofloat() / 1000.0).tointeger(); local destX_01 = 0; local destY_01 = 0; if(!isSameObject(obj, monsterobj)){ destX_01 = targetObj.getXPos() - obj.getXPos(); destY_01 = targetObj.getYPos() - obj.getYPos(); if(direction == ENUM_DIRECTION_LEFT) destX_01 = obj.getXPos() - targetObj.getXPos(); } sq_BinaryStartWrite(); sq_BinaryWriteDword(skillIndex); sq_BinaryWriteDword(subtype); sq_BinaryWriteDword(pvector1); sq_BinaryWriteDword(pvector2); sq_BinaryWriteDword(pvector3); sq_BinaryWriteDword(pvector4); sq_BinaryWriteDword(pvector5); sq_SendCreatePassiveObjectPacket(obj, 24381, 0, destX_01 + x, destY_01 + y, z - obj.getZPos(), direction); } function checkExecutableSkill_Blacklunatic(obj) { if(!obj) return false; local LuisObj = obj.getVar("LuisObj").get_obj_vector_size(); if(LuisObj > 0){ local b_useskill = obj.sq_IsUseSkill(SKILL_BYKK_BLACKLUNATIC); if(b_useskill){ obj.sq_IntVectClear(); obj.sq_IntVectPush(0); obj.sq_AddSetStatePacket(SKILL_BYKK_BLACKLUNATIC, STATE_PRIORITY_USER, true); return true; } } else if(obj.isMessage()){ sq_AddMessage(71099); } return false; } function checkCommandEnable_Blacklunatic(obj) { if(!obj) return false; return true; } function onSetState_Blacklunatic(obj, state, datas, isResetTimer) { if(!obj) return; local substate = obj.sq_GetVectorData(datas, 0); obj.setSkillSubState(substate); switch(substate){ case 0: obj.sq_StopMove(); local Ani = obj.sq_GetThrowChargeAni(3); obj.setCurrentAnimation(Ani); local castTime = 200; obj.getVar("caseTimE").clear_vector(); obj.getVar("caseTimE").push_vector(castTime); sq_StartDrawCastGauge(obj, castTime, true); //obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED,SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0); break; case 1: obj.sq_StopMove(); local Ani = obj.sq_GetThrowShootAni(3); obj.setCurrentAnimation(Ani); obj.sq_PlaySound("R_WZ_BLACK_LUNATIC"); obj.sq_PlaySound("BLACK_LUNATIC_START"); local monsternum = obj.getVar("LuisObj").get_obj_vector_size(); if(sq_GetIntData(obj, SKILL_BYKK_BLACKLUNATIC, 51) > 0 && monsternum > 2){ for(local i = 2; i < monsternum; i++){ local LuisObj = obj.getVar("LuisObj").get_obj_vector(i); if(LuisObj) LuisObj.setValid(false); } } if(monsternum > 0 && sq_GetIntData(obj, SKILL_BYKK_BLACKLUNATIC, 51) < 1) monsternum = 1; if(monsternum > 0){ local totalDamage = sq_GetBonusRateWithPassive(obj, SKILL_BYKK_BLACKLUNATIC, -1, 0, 1.0) + 100; createPassiveObject_k_k(obj,obj,SKILL_BYKK_BLACKLUNATIC,5,100,0,0,totalDamage,0,0,0,0); } for(local i = 0; i < monsternum; i++){ local monsterObj = sq_GetCNRDObjectToActiveObject(obj.getVar("LuisObj").get_obj_vector(i)); if(monsterObj){ //monsterObj.getVar("skill").setBool(0,true); local yPos = obj.getYPos(); local xPos = sq_GetDistancePos(obj.getXPos(), obj.getDirection(), 100); sq_MoveToNearMovablePos(monsterObj, xPos, yPos, sq_GetZPos(monsterObj), xPos, yPos, sq_GetZPos(monsterObj), 100, -1, 5); sq_SetCurrentDirection(monsterObj, obj.getDirection()); monsterattack_ksk(monsterObj,11); local AddAppendage = CNSquirrelAppendage.sq_AppendAppendage(monsterObj, obj, 220, false, BLACKLUNATIC_APDPATH, true); print("load");//" local monsterAppendage = CNSquirrelAppendage.sq_GetAppendage(monsterObj, "character/mage/k_k_made/appendage/aptomonster/ap_luis.nut"); if(monsterAppendage){ local coolTime_01 = sq_GetIntData(obj, SKILL_BYKK_BLACKLUNATIC, 22); local coolTime_02 = sq_GetIntData(obj, SKILL_BYKK_BLACKLUNATIC, 24); local coolTime_03 = sq_GetIntData(obj, SKILL_BYKK_BLACKLUNATIC, 23); if(obj.getVar("eclipsehive_select").getBool(0) == false){ if(sq_GetIntData(obj, SKILL_BYKK_BLACKLUNATIC, 51) > 0){ coolTime_01 = coolTime_01 * 50 / 100; coolTime_02 = coolTime_02 * 50 / 100; coolTime_03 = coolTime_03 * 50 / 100; } } print("coolTime_01 = "+coolTime_01+" ,coolTime_02 = "+coolTime_02+" ,coolTime_03 = "+coolTime_03); monsterAppendage.getVar("skill_10").clear_timer_vector(); monsterAppendage.getVar("skill_10").push_timer_vector(); local t_02 = monsterAppendage.getVar("skill_10").get_timer_vector(0); t_02.setParameter(coolTime_01, -1); t_02.resetInstant(0); monsterAppendage.getVar("skill_11").clear_timer_vector(); monsterAppendage.getVar("skill_11").push_timer_vector(); local t_03 = monsterAppendage.getVar("skill_11").get_timer_vector(0); t_03.setParameter(coolTime_02, -1); t_03.resetInstant(0); monsterAppendage.getVar("skill_12").clear_timer_vector(); monsterAppendage.getVar("skill_12").push_timer_vector(); local t_04 = monsterAppendage.getVar("skill_12").get_timer_vector(0); t_04.setParameter(coolTime_03, -1); t_04.resetInstant(0); } } } break; } } function onEndCurrentAni_Blacklunatic(obj) { if(!obj) return; local substate = obj.getSkillSubState(); obj.setSkillSubState(substate); switch(substate){ case 1: obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_USER, false); break; } } function onEndState_Blacklunatic(obj, new_state) { if(!obj) return; if(new_state != 139) sq_EndDrawCastGauge(obj); } function onProcCon_Blacklunatic(obj) { if(!obj) return; local substate = obj.getSkillSubState(); local casttime = obj.getVar("caseTimE").get_vector(0); if(substate == 0){ if(obj.sq_GetStateTimer() >= casttime){ sq_EndDrawCastGauge(obj); obj.sq_IntVectClear(); obj.sq_IntVectPush(1); obj.sq_AddSetStatePacket(SKILL_BYKK_BLACKLUNATIC, STATE_PRIORITY_USER, true); } } } function procAppend_Summoner_bykk(obj) { // if(!sq_GetSkill(obj, SKILL_BYKK_BLACKLUNATIC).isInCoolTime() && obj.getVar("LuisObj").get_obj_vector_size() > 0 && obj.isMyControlObject()){ // local monsternum = obj.getVar("LuisObj").get_obj_vector_size(); // if(sq_GetIntData(obj, SKILL_BYKK_BLACKLUNATIC, 51) > 0 && monsternum > 2){ // for(local i = 2; i < monsternum; i++){ // local LuisObj = obj.getVar("LuisObj").get_obj_vector(i); // if(LuisObj) LuisObj.setValid(false); // } // } // if(monsternum > 0 && false) monsternum = 1; // if(monsternum > 0){ // local totalDamage = sq_GetBonusRateWithPassive(obj, SKILL_BYKK_BLACKLUNATIC, -1, 0, 1.0) + 100; // local LuisObj = obj.getVar("LuisObj").get_obj_vector(0); // createPassiveObject_k_k(obj,LuisObj,SKILL_BYKK_BLACKLUNATIC,5,0,0,0,totalDamage,0,0,0,0); // } // for(local i = 0; i < monsternum; i++){ // local monsterObj = sq_GetCNRDObjectToActiveObject(obj.getVar("LuisObj").get_obj_vector(i)); // if(monsterObj){ // //monsterObj.getVar("skill").setBool(0,true); // // local yPos = obj.getYPos(); // // local xPos = sq_GetDistancePos(obj.getXPos(), obj.getDirection(), 100); // // sq_MoveToNearMovablePos(monsterObj, xPos, yPos, sq_GetZPos(monsterObj), xPos, yPos, sq_GetZPos(monsterObj), 100, -1, 5); // // sq_SetCurrentDirection(monsterObj, obj.getDirection()); // monsterattack_ksk(monsterObj,11); // local AddAppendage = CNSquirrelAppendage.sq_AppendAppendage(monsterObj, obj, 220, false, BLACKLUNATIC_APDPATH, true); // print("load");//" // local monsterAppendage = CNSquirrelAppendage.sq_GetAppendage(monsterObj, "character/mage/k_k_made/appendage/aptomonster/ap_luis.nut"); // if(monsterAppendage){ // local coolTime_01 = sq_GetIntData(obj, SKILL_BYKK_BLACKLUNATIC, 22); // local coolTime_02 = sq_GetIntData(obj, SKILL_BYKK_BLACKLUNATIC, 24); // local coolTime_03 = sq_GetIntData(obj, SKILL_BYKK_BLACKLUNATIC, 23); // if(obj.getVar("eclipsehive_select").getBool(0) == false){ // if(sq_GetIntData(obj, SKILL_BYKK_BLACKLUNATIC, 51) > 0){ // coolTime_01 = coolTime_01 * 70 / 100; // coolTime_02 = coolTime_02 * 70 / 100; // coolTime_03 = coolTime_03 * 70 / 100; // } // } // print("coolTime_01 = "+coolTime_01+" ,coolTime_02 = "+coolTime_02+" ,coolTime_03 = "+coolTime_03); // monsterAppendage.getVar("skill_10").clear_timer_vector(); // monsterAppendage.getVar("skill_10").push_timer_vector(); // local t_02 = monsterAppendage.getVar("skill_10").get_timer_vector(0); // t_02.setParameter(coolTime_01, -1); // t_02.resetInstant(0); // monsterAppendage.getVar("skill_11").clear_timer_vector(); // monsterAppendage.getVar("skill_11").push_timer_vector(); // local t_03 = monsterAppendage.getVar("skill_11").get_timer_vector(0); // t_03.setParameter(coolTime_02, -1); // t_03.resetInstant(0); // monsterAppendage.getVar("skill_12").clear_timer_vector(); // monsterAppendage.getVar("skill_12").push_timer_vector(); // local t_04 = monsterAppendage.getVar("skill_12").get_timer_vector(0); // t_04.setParameter(coolTime_03, -1); // t_04.resetInstant(0); // t_04.setEventOnStart(true); // } // } // } // obj.startSkillCoolTime(SKILL_BYKK_BLACKLUNATIC, sq_GetSkillLevel(obj, SKILL_BYKK_BLACKLUNATIC), -1); // } } function onStart_appendage_luis_blacklunatic(appendage) { if (!appendage) return; local parentObj = appendage.getParent(); local sqrChr = appendage.getSource(); sqrChr = sq_GetCNRDObjectToSQRCharacter(sqrChr); if (!parentObj || parentObj.getState() == STATE_DIE) { appendage.setValid(false); return; } local group = sq_GetGroup(parentObj);//组 local uniqueId = sq_GetUniqueId(parentObj);//唯一ID local skillLevel = sq_GetSkillLevel(sqrChr, 220); local lifeTime = sq_GetIntData(sqrChr, 220, 2); if(sq_GetIntData(sqrChr, 220, 51) > 0 && sq_GetIntData(sqrChr, 220, 52) > 0) lifeTime = lifeTime + 5000; appendage.sq_SetValidTime(lifeTime + 1100); if(sq_GetIntData(sqrChr, SKILL_BYKK_BLACKLUNATIC, 53) > 0){ local ap = sq_CreateChangeStatus(CHANGE_STATUS_TYPE_ATTACK_SPEED, true, sq_GetIntData(sqrChr, SKILL_BYKK_BLACKLUNATIC, 53).tofloat() , 0); if (ap){ ap.getAppendageInfo().setValidTime(lifeTime); ap.sq_Append(parentObj, sqrChr); } } sqrChr.sq_SetSuperArmorUntilTime(parentObj, lifeTime + 1100); local subliftTime_01 = lifeTime - lifeTime / 5 * (4); local subliftTime_02 = lifeTime - lifeTime / 5 * (3); local subliftTime_03 = lifeTime - lifeTime / 5 * (0); local subliftTime_04 = lifeTime - lifeTime / 5 * (1); local subliftTime_05 = lifeTime - lifeTime / 5 * (2); local subliftTime = [0,subliftTime_01,subliftTime_02,subliftTime_03,subliftTime_04,subliftTime_05]; for(local i = 1; i < 6; i++){ createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONLUIS,10,0,-1,20,i,subliftTime[i],group,uniqueId,0); } } function onEnd_appendage_luis_blacklunatic(appendage) { if (!appendage) return; } function onDamageParent_appendage_luis_blacklunatic(appendage ,attacker, boundingBox, isStuck) { if (!appendage) return; } function drawAppend_appendage_luis_blacklunatic(appendage, isOver, x, y, isFlip) { if (!appendage) return; local parentObj = appendage.getParent(); if (!parentObj || parentObj.getState() == STATE_DIE) { appendage.setValid(false); return; } } //至高精灵王 function checkExecutableSkill_HighestEcheverra(obj) { if (!obj) return false; local monsternum = obj.getVar("EcheverraObj").get_obj_vector_size(); if(monsternum <= 0){ if(obj.isMessage()) sq_AddMessage(71099); return false; } local isUse = obj.sq_IsUseSkill(SKILL_BYKK_HIGHESTECHEVERRA); if (isUse){ obj.sq_IntVectClear(); obj.sq_IntVectPush(0); obj.sq_AddSetStatePacket(SKILL_BYKK_HIGHESTECHEVERRA, STATE_PRIORITY_IGNORE_FORCE, true); return true; } return false; } function checkCommandEnable_HighestEcheverra(obj) { if (!obj) return false; return true; } function onSetState_HighestEcheverra(obj, state, datas, isResetTimer) { if(!obj) return; local subState = obj.sq_GetVectorData(datas, 0); obj.setSkillSubState(subState); obj.sq_StopMove(); switch(subState){ case 0: obj.sq_SetCurrentAnimation(299); break; case 1: obj.sq_SetCurrentAnimation(300); break; } obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0); local currentAni = obj.getCurrentAnimation(); local speedRate = 5000 / currentAni.getDelaySum(0, 0); if(subState == 1) speedRate = 4000 / currentAni.getDelaySum(0, 0); print("speedRate = "+speedRate); if(speedRate >= 150) currentAni.setSpeedRate(150.0); } function onEndCurrentAni_HighestEcheverra(obj) { if(!obj) return; local subState = obj.getSkillSubState(); switch(subState){ case 0: obj.sq_IntVectClear(); obj.sq_IntVectPush(1); obj.sq_AddSetStatePacket(SKILL_BYKK_HIGHESTECHEVERRA, STATE_PRIORITY_AUTO, true); break; case 1: obj.sq_IntVectClear(); obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true); break; } } function onProcCon_HighestEcheverra(obj) { if(!obj) return; } function onKeyFrameFlag_HighestEcheverra(obj, flagIndex) { if(!obj) return false; switch(flagIndex){ case 1010: sq_SetMyShake(obj, 5, 150); //`camera move` local currentAni = obj.getCurrentAnimation(); local delay = currentAni.getDelaySum(10, 14); obj.sq_SetXScrollStart(300, delay); break; case 1011: local EcheverraObj = obj.getVar("EcheverraObj").get_obj_vector(0); if(EcheverraObj && EcheverraObj.getState() != STATE_DIE){ local monsterObj = sq_GetCNRDObjectToActiveObject(EcheverraObj); monsterObj.getVar("teleport").setInt(10, obj.getDirection()); monsterObj.getVar("teleport").setInt(11, sq_GetDistancePos(sq_GetXPos(obj), obj.getDirection(), 50)); monsterObj.getVar("teleport").setInt(12, sq_GetYPos(obj)); monsterObj.getVar("isHighestEcheverra").setBool(0, true); monsterattack_ksk(monsterObj,5); } //`hide` local currentAni = obj.getCurrentAnimation(); local speedRate = 5000 / currentAni.getDelaySum(0, 0); print("speedRate2 = "+speedRate); createPassiveObject_k_k(obj,obj,SKILL_BYKK_HIGHESTECHEVERRA,3,0,20,20,speedRate,0,0,0,0); break; case 2002://`laser` local currentAni = obj.getCurrentAnimation(); local speedRate = 4000 / currentAni.getDelaySum(0, 0); local offset = [[-100,-5,180,60,100],[-31,5,271,45,100],[-33,1,358,80,100],[20,0,250,45,100],[54,-3,308,50,100],[110,-2,300,55,100],[100,1,425,70,100]]; local angle = [2303,4581,2794,3666,4582,3714,4212]; local aniPath = "character/mage/animation/summoner_bykk/effect/highestecheverra/laser/laser_body_1.ani"; local direction = sq_GetDirection(obj), xPos = sq_GetXPos(obj), yPos = sq_GetYPos(obj); local alsName = [10002, 10004, 10006, 10007, 10010]; for(local i = 0; i < 7; i++){ local offsetX = sq_GetDistancePos(xPos, direction, offset[i][0] + 100); local pooledObj = createOnlyDrawObjectEX_HighestEcheverra_bykk(obj,aniPath,true,direction, offsetX, yPos + offset[i][1], offset[i][2],ENUM_DRAWLAYER_NORMAL,100,100); sq_SetCustomRotate(pooledObj, sq_ToRadian(-angle[i].tofloat() / 100.0)); local pAni = pooledObj.getCurrentAnimation(); pAni.setSpeedRate(speedRate.tofloat()); for(local ui = 0; ui < 10; ui++){ local aniPath = "character/mage/animation/summoner_bykk/effect/highestecheverra/laser/laser_0"+(ui+1).tostring()+".ani"; if(ui == 9) aniPath = "character/mage/animation/summoner_bykk/effect/highestecheverra/laser/laser_"+(ui+1).tostring()+".ani"; local pooledObj = createOnlyDrawObjectEX_HighestEcheverra_bykk(obj,aniPath,true,direction, offsetX, yPos + offset[i][1] + ui + 1, offset[i][2] + ui + 1,ENUM_DRAWLAYER_NORMAL,offset[i][3],offset[i][4]); sq_SetCustomRotate(pooledObj, sq_ToRadian(-angle[i].tofloat() / 100.0)); local pAni = pooledObj.getCurrentAnimation(); pAni.setSpeedRate(speedRate.tofloat()); } } local aniPath = "character/mage/animation/summoner_bykk/effect/highestecheverra/lasersik/bottom/highestecheverra_floorsik.ani"; local baseX = 50; local offset = [[350,-5],[300,20],[400,0],[250,18],[325,20],[500,20],[550,15]]; for(local i = 0; i < offset.len(); i++){ local pooledObj = sq_AddDrawOnlyAniFromParent(obj, aniPath, offset[i][0] + baseX, offset[i][1], 0); local pAni = pooledObj.getCurrentAnimation(); pAni.setSpeedRate(speedRate.tofloat()); } break; case 2005://`laserAttackStart` local currentAni = obj.getCurrentAnimation(); local speedRate = 4000 / currentAni.getDelaySum(0, 0); local totalDamage = sq_GetBonusRateWithPassive(obj, SKILL_BYKK_HIGHESTECHEVERRA, -1, 0, 1.0); local hitMax = sq_GetIntData(obj, SKILL_BYKK_HIGHESTECHEVERRA, 1); createPassiveObject_k_k(obj,obj,SKILL_BYKK_HIGHESTECHEVERRA,1,150,0,0,totalDamage,hitMax,speedRate,0,0); break; case 2015:// sq_SetMyShake(obj, 20, 450); //`explosion` obj.sq_PlaySound("HIGHEST_ECHEVERRA_EXP"); obj.sq_PlaySound("WZ_HIGHEST_ECHEVERRA_01_3"); local totalDamage = sq_GetBonusRateWithPassive(obj, SKILL_BYKK_HIGHESTECHEVERRA, -1, 1, 1.0); createPassiveObject_k_k(obj,obj,SKILL_BYKK_HIGHESTECHEVERRA,2,450,0,0,totalDamage,0,0,0,0); break; } return true; } function onTimeEvent_HighestEcheverra(obj, timeEventIndex, timeEventCount) { if(!obj) return false; } function onEndState_HighestEcheverra(obj, new_state) { if(!obj) return; if(new_state != SKILL_BYKK_HIGHESTECHEVERRA){ obj.sq_SetXScrollStop(500); } } function createOnlyDrawObjectEX_HighestEcheverra_bykk(obj,aniPath,isTrue,direction,x,y,z,drawlayer,sizeRateX,sizeRateY) { local ani = sq_CreateAnimation("",aniPath); local pooledObj = sq_CreatePooledObject(ani,isTrue); sq_SetCurrentDirection(pooledObj, direction); pooledObj.setCurrentPos(x,y,z); local currentAni = pooledObj.getCurrentAnimation(); sizeRateX = sizeRateX.tofloat() / 100.0; sizeRateY = sizeRateY.tofloat() / 100.0; currentAni.setImageRateFromOriginal(sizeRateX, sizeRateY); pooledObj = sq_SetEnumDrawLayer(pooledObj, drawlayer); sq_AddObject(obj, pooledObj, OBJECTTYPE_DRAWONLY, false); return pooledObj; } //束缚印记 function checkExecutableSkill_ThrowStickyTrap(obj) { if (!obj) return false; local isUse = obj.sq_IsUseSkill(150); if (isUse){ obj.sq_IntVectClear(); obj.sq_IntVectPush(0); obj.sq_AddSetStatePacket(150, STATE_PRIORITY_IGNORE_FORCE, true); return true; } return false; } function checkCommandEnable_ThrowStickyTrap(obj) { if (!obj) return false; return true; } function onSetState_ThrowStickyTrap(obj, state, datas, isResetTimer) { if(!obj) return; local subState = obj.sq_GetVectorData(datas, 0); obj.setSkillSubState(subState); obj.sq_StopMove(); switch(subState){ case 0: obj.sq_SetCurrentAnimation(301); break; case 1: obj.sq_SetCurrentAnimation(302); // obj.sq_PlaySound("R_WZ_THROWST"); break; } obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0); } function onEndCurrentAni_ThrowStickyTrap(obj) { if(!obj) return; local subState = obj.getSkillSubState(); switch(subState){ case 0: obj.sq_IntVectClear(); obj.sq_IntVectPush(1); obj.sq_AddSetStatePacket(150, STATE_PRIORITY_AUTO, true); break; case 1: obj.sq_IntVectClear(); obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true); break; } } function onProcCon_ThrowStickyTrap(obj) { if(!obj) return; } function onKeyFrameFlag_ThrowStickyTrap(obj, flagIndex) { if(!obj) return false; switch(flagIndex){ case 1: obj.sq_PlaySound("WZ_STICKY"); obj.sq_PlaySound("STICKY_READY"); break; case 2: local totalDamage = sq_GetBonusRateWithPassive(obj, 150, -1, 0, 1.0); local holdTime = sq_GetBonusRateWithPassive(obj, 150, -1, 1, 1.0) + 100; createPassiveObject_k_k(obj,obj,150,1,100,0,70,totalDamage,holdTime,0,0,0); break; } return true; } function onTimeEvent_ThrowStickyTrap(obj, timeEventIndex, timeEventCount) { if(!obj) return false; } function onEndState_ThrowStickyTrap(obj, new_state) { if(!obj) return; } function drawAppend_appendage_throwstickytrap_hold(appendage, isOver, x, y, isFlip) { local var = appendage.getVar(); local parentObj = appendage.getParent(); if(!parentObj || parentObj.getState() == STATE_DIE){ appendage.setValid(false); return; } //自定义ani local Ani = var.GetAnimationMap("throwstickytrap_hold", "character/mage/animation/summoner_bykk/effect/throwstickytrap/throwglue_glueloop01.ani"); sq_AnimationProc(Ani); sq_drawCurrentFrame(Ani, x, y - 60, isFlip); } //////////////////////////////////// function checkExecutableSkill_SummonHodor(obj) { if(!obj) return false; if(!obj.isMyControlObject()) return false; if(sq_getGrowType(obj) == 2){ local isTrue = summoner_kak_monsterSkill(obj,SKILL_BYKK_SUMMONHODOR,"HodorObj",10); if(isTrue == 1) return false; local b_useskill = obj.sq_IsUseSkill(SKILL_BYKK_SUMMONHODOR); if(b_useskill){ summonmonster_by_kwk(obj,SKILL_BYKK_SUMMONHODOR); return true; } } return false; } function checkExecutableSkill_SummonSandor(obj) { if(!obj) return false; if(!obj.isMyControlObject()) return false; local isTrue = summoner_kak_monsterSkill(obj,SKILL_BYKK_SUMMONSANDOR,"SandorObj",6); if(isTrue == 1) return false; local b_useskill = obj.sq_IsUseSkill(SKILL_BYKK_SUMMONSANDOR); if(b_useskill){ summonmonster_by_kwk(obj,SKILL_BYKK_SUMMONSANDOR); } return false; } function checkExecutableSkill_SummonAuxo(obj) { if(!obj) return false; if(!obj.isMyControlObject()) return false; local isTrue = summoner_kak_monsterSkill(obj,SKILL_BYKK_SUMMONAUXO,"AuxoObj",5); if(isTrue == 1) return false; local b_useskill = obj.sq_IsUseSkill(SKILL_BYKK_SUMMONAUXO); if(b_useskill){ summonmonster_by_kwk(obj,SKILL_BYKK_SUMMONAUXO); } return false; } function checkExecutableSkill_SummonLuis(obj) { if(!obj) return false; if(!obj.isMyControlObject()) return false; local isTrue = summoner_kak_monsterSkill(obj,SKILL_BYKK_SUMMONLUIS,"LuisObj",6); if(isTrue == 1) return false; local b_useskill = obj.sq_IsUseSkill(SKILL_BYKK_SUMMONLUIS); if(b_useskill){ summonmonster_by_kwk(obj,SKILL_BYKK_SUMMONLUIS); } return false; } function checkExecutableSkill_SummonEcheverra(obj) { if(!obj) return false; if(!obj.isMyControlObject()) return false; local isTrue = summoner_kak_monsterSkill(obj,SKILL_BYKK_SUMMONECHEVERRA,"EcheverraObj",5); if(isTrue == 1) return false; local b_useskill = obj.sq_IsUseSkill(SKILL_BYKK_SUMMONECHEVERRA); if(b_useskill){ summonmonster_by_kwk(obj,SKILL_BYKK_SUMMONECHEVERRA); } return false; } function checkExecutableSkill_SummonSpiritDarkHigher(obj) { if(!obj) return false; if(!obj.isMyControlObject()) return false; local isTrue = summoner_kak_monsterSkill(obj,SKILL_BYKK_SUMMONSPIRITDARKHIGHER,"DarkhigherspiritObj",4); if(isTrue == 1) return false; local b_useskill = obj.sq_IsUseSkill(SKILL_BYKK_SUMMONSPIRITDARKHIGHER); if(b_useskill){ summonmonster_by_kwk(obj,SKILL_BYKK_SUMMONSPIRITDARKHIGHER); } return false; } function checkExecutableSkill_SummonSpiritLightHigher(obj) { if(!obj) return false; if(!obj.isMyControlObject()) return false; local isTrue = summoner_kak_monsterSkill(obj,SKILL_BYKK_SUMMONSPIRITLIGHTHIGHER,"LighthigherspiritObj",4); if(isTrue == 1) return false; local b_useskill = obj.sq_IsUseSkill(SKILL_BYKK_SUMMONSPIRITLIGHTHIGHER); if(b_useskill){ summonmonster_by_kwk(obj,SKILL_BYKK_SUMMONSPIRITLIGHTHIGHER); } return false; } function checkExecutableSkill_SummonSpiritWaterHigher(obj) { if(!obj) return false; if(!obj.isMyControlObject()) return false; local isTrue = summoner_kak_monsterSkill(obj,SKILL_BYKK_SUMMONSPIRITWATERHIGHER,"WaterhigherspiritObj",4); if(isTrue == 1) return false; local b_useskill = obj.sq_IsUseSkill(SKILL_BYKK_SUMMONSPIRITWATERHIGHER); if(b_useskill){ summonmonster_by_kwk(obj,SKILL_BYKK_SUMMONSPIRITWATERHIGHER); } return false; } function checkExecutableSkill_SummonSpiritFireHigher(obj) { if(!obj) return false; if(!obj.isMyControlObject()) return false; local isTrue = summoner_kak_monsterSkill(obj,SKILL_BYKK_SUMMONSPIRITFIREHIGHER,"FirehigherspiritObj",4); if(isTrue == 1) return false; local b_useskill = obj.sq_IsUseSkill(SKILL_BYKK_SUMMONSPIRITFIREHIGHER); if(b_useskill){ summonmonster_by_kwk(obj,SKILL_BYKK_SUMMONSPIRITFIREHIGHER); } return false; } function checkExecutableSkill_SummonBabyDragon(obj) { if(!obj) return false; if(!obj.isMyControlObject()) return false; local isTrue = summoner_kak_monsterSkill(obj,SKILL_BYKK_SUMMONBABYDRAGON,"BabydragonObj",7); if(isTrue == 1) return false; local b_useskill = obj.sq_IsUseSkill(SKILL_BYKK_SUMMONBABYDRAGON); if(b_useskill){ summonmonster_by_kwk(obj,SKILL_BYKK_SUMMONBABYDRAGON); } return false; } function checkExecutableSkill_SummonCasillas(obj) { if(!obj) return false; if(!obj.isMyControlObject()) return false; local isTrue = summoner_kak_monsterSkill(obj,SKILL_BYKK_SUMMONCASILLAS,"CassillasObj",4); if(isTrue == 1) return false; local b_useskill = obj.sq_IsUseSkill(SKILL_BYKK_SUMMONCASILLAS); if(b_useskill){ summonmonster_by_kwk(obj,SKILL_BYKK_SUMMONCASILLAS); } return false; } function checkExecutableSkill_SummonSandorEx(obj) { if(!obj) return false; local b_useskill = obj.sq_IsUseSkill(SKILL_BYKK_SUMMONSANDOREX); if(b_useskill){ // summoner_monsterskill_bykk(obj,"SandorexObj",4,SKILL_BYKK_SUMMONSANDOREX,1); return true; } return false; } function checkExecutableSkill_SummonHeilrom(obj) { if(!obj) return false; if(!obj.isMyControlObject()) return false; local isTrue = summoner_kak_monsterSkill(obj,SKILL_BYKK_SUMMONHEILROM,"HeilromObj",0); if(isTrue == 1) return false; local b_useskill = obj.sq_IsUseSkill(SKILL_BYKK_SUMMONHEILROM); if(b_useskill){ summonmonster_by_kwk(obj,SKILL_BYKK_SUMMONHEILROM); } return false; } function checkExecutableSkill_SummonSpiritFireEx(obj) { if(!obj) return false; if(!obj.isMyControlObject()) return false; local b_useskill = obj.sq_IsUseSkill(SKILL_BYKK_SUMMONSPIRITFIREEX); if(b_useskill){ summonmonster_by_kwk(obj,SKILL_BYKK_SUMMONSPIRITFIREEX); } return false; } function checkExecutableSkill_SummonKruta(obj) { if(!obj) return false; if(!obj.isMyControlObject()) return false; local isTrue = summoner_kak_monsterSkill(obj,SKILL_BYKK_SUMMONKRUTA,"KrutaObj", 13); if(isTrue == 1) return false; local b_useskill = obj.sq_IsUseSkill(SKILL_BYKK_SUMMONKRUTA); if(b_useskill){ summonmonster_by_kwk(obj,SKILL_BYKK_SUMMONKRUTA); } return false; } function checkExecutableSkill_SummonRamos(obj) { if(!obj) return false; if(!obj.isMyControlObject()) return false; local isTrue = summoner_kak_monsterSkill(obj,SKILL_BYKK_SUMMONRAMOS,"RamosObj",17); if(isTrue == 1) return false; local b_useskill = obj.sq_IsUseSkill(SKILL_BYKK_SUMMONRAMOS); if(b_useskill){ summonmonster_by_kwk(obj,SKILL_BYKK_SUMMONRAMOS); } return false; } function checkExecutableSkill_SummonSpiritFire(obj) { if(!obj) return false; if(!obj.isMyControlObject()) return false; local monsternum = obj.getVar("SpiritFireObj").get_obj_vector_size(); if(monsternum > 0){ local state = obj.getState(); if(state == 14 || state == 0){ obj.sq_IntVectClear(); obj.sq_AddSetStatePacket(state, STATE_PRIORITY_IGNORE_FORCE, true); } obj.startCantUseSkillWarning(); if (obj.isMessage()) sq_AddMessage(2); return true; } local b_useskill = obj.sq_IsUseSkill(SKILL_BYKK_SUMMONSPIRITFIRE); if(b_useskill){ obj.sq_IntVectClear(); obj.sq_IntVectPush(22); obj.sq_IntVectPush(SKILL_BYKK_SUMMONSPIRITFIRE); obj.sq_AddSetStatePacket(SKILL_BYKK_RINGOFDOMINATION , STATE_PRIORITY_IGNORE_FORCE, true); return true; } return false; } function checkExecutableSkill_SummonSpiritWater(obj) { if(!obj) return false; if(!obj.isMyControlObject()) return false; local monsternum = obj.getVar("SpiritWaterObj").get_obj_vector_size(); if(monsternum > 0){ local state = obj.getState(); if(state == 14 || state == 0){ obj.sq_IntVectClear(); obj.sq_AddSetStatePacket(state, STATE_PRIORITY_IGNORE_FORCE, true); } obj.startCantUseSkillWarning(); if (obj.isMessage()) sq_AddMessage(2); return true; } local b_useskill = obj.sq_IsUseSkill(SKILL_BYKK_SUMMONSPIRITWATER); if(b_useskill){ obj.sq_IntVectClear(); obj.sq_IntVectPush(22); obj.sq_IntVectPush(SKILL_BYKK_SUMMONSPIRITWATER); obj.sq_AddSetStatePacket(SKILL_BYKK_RINGOFDOMINATION , STATE_PRIORITY_IGNORE_FORCE, true); return true; } return false; } function checkExecutableSkill_SummonSpiritDark(obj) { if(!obj) return false; if(!obj.isMyControlObject()) return false; local monsternum = obj.getVar("SpiritDarkObj").get_obj_vector_size(); if(monsternum > 0){ local state = obj.getState(); if(state == 14 || state == 0){ obj.sq_IntVectClear(); obj.sq_AddSetStatePacket(state, STATE_PRIORITY_IGNORE_FORCE, true); } obj.startCantUseSkillWarning(); if (obj.isMessage()) sq_AddMessage(2); return true; } local b_useskill = obj.sq_IsUseSkill(SKILL_BYKK_SUMMONSPIRITDARK); if(b_useskill){ obj.sq_IntVectClear(); obj.sq_IntVectPush(22); obj.sq_IntVectPush(SKILL_BYKK_SUMMONSPIRITDARK); obj.sq_AddSetStatePacket(SKILL_BYKK_RINGOFDOMINATION , STATE_PRIORITY_IGNORE_FORCE, true); return true; } return false; } function checkExecutableSkill_SummonSpiritLight(obj) { if(!obj) return false; if(!obj.isMyControlObject()) return false; local monsternum = obj.getVar("SpiritLightObj").get_obj_vector_size(); if(monsternum > 0){ local state = obj.getState(); if(state == 14 || state == 0){ obj.sq_IntVectClear(); obj.sq_AddSetStatePacket(state, STATE_PRIORITY_IGNORE_FORCE, true); } obj.startCantUseSkillWarning(); if (obj.isMessage()) sq_AddMessage(2); return true; } local b_useskill = obj.sq_IsUseSkill(SKILL_BYKK_SUMMONSPIRITLIGHT); if(b_useskill){ obj.sq_IntVectClear(); obj.sq_IntVectPush(22); obj.sq_IntVectPush(SKILL_BYKK_SUMMONSPIRITLIGHT); obj.sq_AddSetStatePacket(SKILL_BYKK_RINGOFDOMINATION , STATE_PRIORITY_IGNORE_FORCE, true); return true; } return false; } function checkExecutableSkill_RingOfDomination(obj) { if (!obj) return false; if(!obj.isMyControlObject()) return false; local isUse = obj.sq_IsUseSkill(SKILL_BYKK_RINGOFDOMINATION); if (isUse){ obj.sq_IntVectClear(); obj.sq_IntVectPush(0); obj.sq_AddSetStatePacket(SKILL_BYKK_RINGOFDOMINATION , STATE_PRIORITY_USER, true); return true; } return false; } function checkCommandEnable_RingOfDomination(obj) { if (!obj) return false; local state = obj.sq_GetState(); if (state == STATE_STAND) return true; if(state == STATE_ATTACK){ return obj.sq_IsCommandEnable(SKILL_BYKK_RINGOFDOMINATION); } return true; } function onSetState_RingOfDomination(obj, state, datas, isResetTimer) { if(!obj) return; obj.sq_StopMove(); local substate = obj.sq_GetVectorData(datas, 0); obj.setSkillSubState(substate); switch(substate){ case 0: local direction = obj.getDirection();//嚙踝蕭嚙踝蕭菾嚙踝蕭 local xpos = sq_GetDistancePos(obj.getXPos(), direction, 185);//嚙踝蕭嚙踝蕭菾嚙踝蕭嚙踝蕭pos local ypos = obj.getYPos(); onAddPooledObj_RingOfDomination(obj, "passiveobject/madeby_k_k/animation/ringofdomination/start/rodstarta_p01.ani", xpos, ypos, ENUM_DRAWLAYER_NORMAL); onAddPooledObj_RingOfDomination(obj, "passiveobject/madeby_k_k/animation/ringofdomination/start/rodstartringa_01.ani", xpos, ypos, ENUM_DRAWLAYER_NORMAL); onAddPooledObj_RingOfDomination(obj, "passiveobject/madeby_k_k/animation/ringofdomination/start/rodstartringb_01.ani", xpos, ypos, ENUM_DRAWLAYER_NORMAL); sq_SetCustomDamageType(obj, true, 1); local Ani = obj.sq_GetThrowChargeAni(2); obj.setCurrentAnimation(Ani); obj.getVar("monster_enum").clear_vector(); obj.getVar("monster_enum").push_vector(0); obj.setTimeEvent(1001,900,1,false); obj.sq_PlaySound("R_RING_DOMINATION_01"); obj.getVar("map").setBool(0, false); setEclipsehive_summoner_bykk(obj); break; case 1: obj.sq_SetCurrentAnimation(68); obj.setTimeEvent(1002,900,1,false); break; case 2: RemoveAllAni_RingOfDomination(obj); local direction = obj.getDirection();//嚙踝蕭嚙踝蕭菾嚙踝蕭 local xpos = sq_GetDistancePos(obj.getXPos(), direction, 185);//嚙踝蕭嚙踝蕭菾嚙踝蕭嚙踝蕭pos local ypos = obj.getYPos(); onAddPooledObj_RingOfDomination(obj, "passiveobject/madeby_k_k/animation/ringofdomination/end/rodendringa_01.ani", xpos, ypos, ENUM_DRAWLAYER_NORMAL); onAddPooledObj_RingOfDomination(obj, "passiveobject/madeby_k_k/animation/ringofdomination/end/rodendringb_01.ani", xpos, ypos, ENUM_DRAWLAYER_NORMAL); local Ani = obj.sq_GetThrowShootAni(1); obj.setCurrentAnimation(Ani); obj.sq_PlaySound("WZ_RING_DOMINATION_02"); obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED,SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0); break; case 20://嚙踝蕭?嚙?1 local skillIndex = sq_GetVectorData(datas, 1); obj.getVar("sm_skindex").clear_vector(); obj.getVar("sm_skindex").push_vector(skillIndex); local Ani = obj.sq_GetThrowChargeAni(2); obj.setCurrentAnimation(Ani); switch(skillIndex){ case SKILL_BYKK_SUMMONAUXO: obj.sq_PlaySound("WZ_INVOKE_AUXO"); break; case SKILL_BYKK_SUMMONHODOR: obj.sq_PlaySound("WZ_INVOKE"); break; case SKILL_BYKK_SUMMONSANDOR: obj.sq_PlaySound("WZ_INVOKE_SANDOR"); break; case SKILL_BYKK_SUMMONLUIS: obj.sq_PlaySound("WZ_INVOKE_LUIS"); break; case SKILL_BYKK_SUMMONBABYDRAGON: obj.sq_PlaySound("WZ_INVOKE_FREET"); break; case SKILL_BYKK_SUMMONKRUTA: obj.sq_PlaySound("WZ_SUMMON_KRUTA"); break; case SKILL_BYKK_SUMMONCASILLAS: obj.sq_PlaySound("WZ_CASILLAS"); break; case SKILL_BYKK_SUMMONRAMOS: obj.sq_PlaySound("WZ_RAMOS"); break; } obj.sq_SetStaticSpeedInfo(SPEED_TYPE_CAST_SPEED, SPEED_TYPE_CAST_SPEED, SPEED_VALUE_DEFAULT,SPEED_VALUE_DEFAULT, 1.0, 1.0); break; case 21://嚙踝蕭?嚙?2 local Ani = obj.sq_GetThrowShootAni(2); obj.setCurrentAnimation(Ani); local monster_level = sq_GetSkillLevel(obj, 174); local monster_time = 3600000; local skillIndex = obj.getVar("sm_skindex").get_vector(0); switch(skillIndex){ case SKILL_BYKK_SUMMONAUXO: local skill = sq_GetSkill(obj, SKILL_BYKK_SUMMONAUXO); local montser_id = MONSTER_ID_AUXO; local subtype = 15; if(skill.isSealFunction()){montser_id = MONSTER_ID_AUXOOLD; subtype = 5;} local seedNumber = sq_GetLevelData(obj, SKILL_BYKK_SUMMONAUXO, 8, sq_GetSkillLevel(obj, SKILL_BYKK_SUMMONAUXO)); summonmonster_mage_plus_Kwk(obj,obj,100,0,0,0,montser_id,monster_time,monster_level,0); if(seedNumber > 0) createPassiveObject_k_k(obj,obj,45,subtype,100,0,70,0,0,0,0,0); if(sq_GetLevelData(obj, SKILL_BYKK_SUMMONAUXO, 2, sq_GetSkillLevel(obj, SKILL_BYKK_SUMMONAUXO)) > 1){ local num_max = sq_GetLevelData(obj, SKILL_BYKK_SUMMONAUXO, 2, sq_GetSkillLevel(obj, SKILL_BYKK_SUMMONAUXO)) - 1 for(local i = 0; i < num_max; i++){ local angle = 360 / num_max * (i + 1); local x = (sq_Cos(sq_ToRadian(angle.tofloat())) * 100.0).tointeger(); local y = (sq_Sin(sq_ToRadian(angle.tofloat())) * 50.0).tointeger(); summonmonster_mage_plus_Kwk(obj,obj,x,y,0,0,montser_id,monster_time,monster_level,0); if(seedNumber > 0) createPassiveObject_k_k(obj,obj,45,subtype,x,y,70,0,0,0,0,0); } } // local skill02 = sq_GetSkill(obj, 45); // local prob = obj.sq_GetIntData(45, 10); // if(sq_getRandom(0,99) >= 100 - prob){ // local subtype = 5; // if(!skill02.isSealFunction()) subtype = 15; // for(local i = 0; i < 6; i++){ // createPassiveObject_k_k(obj,obj,45,subtype,100,0,70,0,0,0,0,0); // } // } break; case SKILL_BYKK_SUMMONHODOR: summonmonster_mage_plus_Kwk(obj,obj,100,0,0,0,MONSTER_ID_HODOR,monster_time,monster_level,0); if(sq_GetLevelData(obj, SKILL_BYKK_SUMMONHODOR, 2, sq_GetSkillLevel(obj, SKILL_BYKK_SUMMONHODOR)) > 1){ local num_max = sq_GetLevelData(obj, SKILL_BYKK_SUMMONHODOR, 2, sq_GetSkillLevel(obj, SKILL_BYKK_SUMMONHODOR)) - 1 for(local i = 0; i < num_max; i++){ local angle = 360 / num_max * (i + 1); local x = (sq_Cos(sq_ToRadian(angle.tofloat())) * 100.0).tointeger(); local y = (sq_Sin(sq_ToRadian(angle.tofloat())) * 50.0).tointeger(); summonmonster_mage_plus_Kwk(obj,obj,x,y,0,0,MONSTER_ID_HODOR,monster_time,monster_level,0); } } break; case SKILL_BYKK_SUMMONSANDOR: summonmonster_mage_plus_Kwk(obj,obj,100,0,0,0,MONSTER_ID_SANDOR,monster_time,monster_level,0); if(sq_GetLevelData(obj, SKILL_BYKK_SUMMONSANDOR, 2, sq_GetSkillLevel(obj, SKILL_BYKK_SUMMONSANDOR)) > 1){ local num_max = sq_GetLevelData(obj, SKILL_BYKK_SUMMONSANDOR, 2, sq_GetSkillLevel(obj, SKILL_BYKK_SUMMONSANDOR)) - 1 for(local i = 0; i < num_max; i++){ local angle = 360 / num_max * (i + 1); local x = (sq_Cos(sq_ToRadian(angle.tofloat())) * 100.0).tointeger(); local y = (sq_Sin(sq_ToRadian(angle.tofloat())) * 50.0).tointeger(); summonmonster_mage_plus_Kwk(obj,obj,x,y,0,0,MONSTER_ID_SANDOR,monster_time,monster_level,0); } } break; case SKILL_BYKK_SUMMONLUIS: summonmonster_mage_plus_Kwk(obj,obj,100,0,0,0,MONSTER_ID_LUIS,monster_time,monster_level,0); if(sq_GetIntData(obj, SKILL_BYKK_BLACKLUNATIC, 50) > 0){ summonmonster_mage_plus_Kwk(obj,obj,145,0,0,0,MONSTER_ID_LUIS,monster_time,monster_level,0); break; } if(sq_GetLevelData(obj, SKILL_BYKK_SUMMONLUIS, 2, sq_GetSkillLevel(obj, SKILL_BYKK_SUMMONLUIS)) > 1){ local num_max = sq_GetLevelData(obj, SKILL_BYKK_SUMMONLUIS, 2, sq_GetSkillLevel(obj, SKILL_BYKK_SUMMONLUIS)) - 1 for(local i = 0; i < num_max; i++){ local angle = 360 / num_max * (i + 1); local x = (sq_Cos(sq_ToRadian(angle.tofloat())) * 100.0).tointeger(); local y = (sq_Sin(sq_ToRadian(angle.tofloat())) * 50.0).tointeger(); summonmonster_mage_plus_Kwk(obj,obj,145 + i * 45,y,0,0,MONSTER_ID_LUIS,monster_time,monster_level,0); } } break; case SKILL_BYKK_SUMMONBABYDRAGON: summonmonster_mage_plus_Kwk(obj,obj,100,0,0,0,MONSTER_ID_BABYDRAGON,monster_time,monster_level,0); if(sq_GetLevelData(obj, SKILL_BYKK_SUMMONBABYDRAGON, 2, sq_GetSkillLevel(obj, SKILL_BYKK_SUMMONBABYDRAGON)) > 1){ local num_max = sq_GetLevelData(obj, SKILL_BYKK_SUMMONBABYDRAGON, 2, sq_GetSkillLevel(obj, SKILL_BYKK_SUMMONBABYDRAGON)) - 1 for(local i = 0; i < num_max; i++){ local angle = 360 / num_max * (i + 1); local x = (sq_Cos(sq_ToRadian(angle.tofloat())) * 100.0).tointeger(); local y = (sq_Sin(sq_ToRadian(angle.tofloat())) * 50.0).tointeger(); summonmonster_mage_plus_Kwk(obj,obj,x,y,0,0,MONSTER_ID_BABYDRAGON,monster_time,monster_level,0); } } break; case SKILL_BYKK_SUMMONKRUTA: summonmonster_mage_plus_Kwk(obj,obj,100,0,0,0,MONSTER_ID_KRUTA,monster_time,monster_level,0); //print(sq_GetLevelData(obj, SKILL_BYKK_SUMMONKRUTA, 2, sq_GetSkillLevel(obj, SKILL_BYKK_SUMMONKRUTA))); if(sq_GetLevelData(obj, SKILL_BYKK_SUMMONKRUTA, 2, sq_GetSkillLevel(obj, SKILL_BYKK_SUMMONKRUTA)) > 1){ local num_max = sq_GetLevelData(obj, SKILL_BYKK_SUMMONKRUTA, 2, sq_GetSkillLevel(obj, SKILL_BYKK_SUMMONKRUTA)) - 1 for(local i = 0; i < num_max; i++){ local angle = 360 / num_max * (i + 1); local x = (sq_Cos(sq_ToRadian(angle.tofloat())) * 100.0).tointeger(); local y = (sq_Sin(sq_ToRadian(angle.tofloat())) * 50.0).tointeger(); summonmonster_mage_plus_Kwk(obj,obj,x,y,0,0,MONSTER_ID_KRUTA,monster_time,monster_level,0); } } break; case SKILL_BYKK_SUMMONCASILLAS: summonmonster_mage_plus_Kwk(obj,obj,100,0,0,6,MONSTER_ID_CASILLAS,monster_time,monster_level,0); if(sq_GetLevelData(obj, SKILL_BYKK_SUMMONCASILLAS, 2, sq_GetSkillLevel(obj, SKILL_BYKK_SUMMONCASILLAS)) > 1){ for(local i = 0; i < sq_GetLevelData(obj, SKILL_BYKK_SUMMONCASILLAS, 2, sq_GetSkillLevel(obj, SKILL_BYKK_SUMMONCASILLAS)) - 1; i++){ summonmonster_mage_plus_Kwk(obj,obj,145 + i * 45,0,0,0,MONSTER_ID_CASILLAS,monster_time,monster_level,0); } } break; case SKILL_BYKK_SUMMONRAMOS: createPassiveObject_k_k(obj,obj,SKILL_BYKK_SUMMONRAMOS,200,100,0,0,0,0,0,0,0); break; } obj.sq_SetStaticSpeedInfo(SPEED_TYPE_CAST_SPEED, SPEED_TYPE_CAST_SPEED, SPEED_VALUE_DEFAULT,SPEED_VALUE_DEFAULT, 2.0, 2.0); break; case 22://嚙踝蕭?嚙?1 local skillIndex = sq_GetVectorData(datas, 1); obj.getVar("sm_skindex").clear_vector(); obj.getVar("sm_skindex").push_vector(skillIndex); local Ani = obj.sq_GetThrowChargeAni(3); obj.setCurrentAnimation(Ani); obj.sq_SetStaticSpeedInfo(SPEED_TYPE_CAST_SPEED, SPEED_TYPE_CAST_SPEED, SPEED_VALUE_DEFAULT,SPEED_VALUE_DEFAULT, 2.0, 2.0); break; case 23://嚙踝蕭?嚙?2 local Ani = obj.sq_GetThrowShootAni(3); obj.setCurrentAnimation(Ani); local skillIndex = obj.getVar("sm_skindex").get_vector(0); local monster_level = sq_GetSkillLevel(obj, 174); local monster_time = 3600000; local montser_id = MONSTER_ID_ECHEVERRA; local summonsub = 0; switch(skillIndex){ case SKILL_BYKK_SUMMONECHEVERRA: obj.sq_PlaySound("WZ_INVOKE_ECHEVERRA"); break; case SKILL_BYKK_SUMMONSPIRITDARKHIGHER: obj.sq_PlaySound("WZ_SUMMON_DMURKER"); montser_id = MONSTER_ID_DARKHIGHERSPIRIT; break; case SKILL_BYKK_SUMMONSPIRITFIREHIGHER: obj.sq_PlaySound("WZ_SUMMON_FHULK"); montser_id = MONSTER_ID_FIREHIGHERSPIRIT; break; case SKILL_BYKK_SUMMONSPIRITLIGHTHIGHER: obj.sq_PlaySound("WZ_SUMMON_GLARINE"); montser_id = MONSTER_ID_LIGHTHIGHERSPIRIT; break; case SKILL_BYKK_SUMMONSPIRITWATERHIGHER: obj.sq_PlaySound("WZ_SUMMON_AQUARESS"); montser_id = MONSTER_ID_WATERHIGHERSPIRIT; break; case SKILL_BYKK_SUMMONHEILROM: obj.sq_PlaySound("WZ_SUMMON_HEILROM"); montser_id = MONSTER_ID_HEILROM; break; case SKILL_BYKK_SUMMONSPIRITFIRE: obj.sq_PlaySound("WZ_SUMMON_ADOR"); montser_id = MONSTER_ID_SPIRITFIRE; summonsub = 1; break; case SKILL_BYKK_SUMMONSPIRITWATER: obj.sq_PlaySound("WZ_SUMMON_NIAS"); montser_id = MONSTER_ID_SPIRITWATER; summonsub = 2; break; case SKILL_BYKK_SUMMONSPIRITDARK: obj.sq_PlaySound("WZ_SUMMON_STALKER"); montser_id = MONSTER_ID_SPIRITDARK; summonsub = 3; break; case SKILL_BYKK_SUMMONSPIRITLIGHT: obj.sq_PlaySound("WZ_SUMMON_WISP"); montser_id = MONSTER_ID_SPIRITLIGHT; summonsub = 4; break; } local sizeRate = obj.sq_GetIntData(skillIndex, 5).tofloat() / 490.0; for(local i = 1; i < 5; i++){ local pooledObj = sq_AddDrawOnlyAniFromParent(obj,"character/mage/effect/animation/summonspirit"+i.tostring()+".ani", 0, -1, -1); local currentAni = pooledObj.getCurrentAnimation(); currentAni.setImageRateFromOriginal(sizeRate, sizeRate); } summonmonster_mage_plus_Kwk(obj,obj,100,0,0,summonsub,montser_id,monster_time,monster_level,0); switch(skillIndex){ case SKILL_BYKK_SUMMONECHEVERRA: case SKILL_BYKK_SUMMONSPIRITDARKHIGHER: case SKILL_BYKK_SUMMONSPIRITFIREHIGHER: case SKILL_BYKK_SUMMONSPIRITLIGHTHIGHER: case SKILL_BYKK_SUMMONSPIRITWATERHIGHER: local skill_level = sq_GetSkillLevel(obj, skillIndex); if(sq_GetLevelData(obj, skillIndex, 2, skill_level) > 1){ local num_max = sq_GetLevelData(obj, skillIndex, 2, skill_level) - 1 for(local i = 0; i < num_max; i++){ local angle = 360 / num_max * (i + 1); local x = (sq_Cos(sq_ToRadian(angle.tofloat())) * 100.0).tointeger(); local y = (sq_Sin(sq_ToRadian(angle.tofloat())) * 50.0).tointeger(); summonmonster_mage_plus_Kwk(obj,obj,x,y,0,0,montser_id,monster_time,monster_level,0); } } break; case SKILL_BYKK_SUMMONSPIRITFIRE: local skill_level1 = sq_GetSkillLevel(obj, 51); local skill_level2 = sq_GetSkillLevel(obj, SKILL_BYKK_SUMMONSPIRITFIRE); local number = sq_GetLevelData(obj, 51, 9, skill_level1); local min_level = sq_GetLevelData(obj, 51, 10, skill_level1); if(skill_level2 >= min_level){ if(sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 36) < 1){ for(local i = 0; i < number; i++){ summonmonster_mage_plus_Kwk(obj,obj,100 + (i + 1) * 40,0,0,summonsub,montser_id,monster_time,monster_level,0); } } } local skill_level = sq_GetSkillLevel(obj, skillIndex); local add_number = sq_GetLevelData(obj, skillIndex, 2, skill_level); if(add_number > 1){ for(local i = 0; i < add_number - 1; i++){ local angle = 360 / add_number * (i + 1); local x = (sq_Cos(sq_ToRadian(angle.tofloat())) * 100.0).tointeger(); local y = (sq_Sin(sq_ToRadian(angle.tofloat())) * 50.0).tointeger(); summonmonster_mage_plus_Kwk(obj,obj,x,y,0,summonsub,montser_id,monster_time,monster_level,0); } } break; case SKILL_BYKK_SUMMONSPIRITWATER: local skill_level1 = sq_GetSkillLevel(obj, 52); local skill_level2 = sq_GetSkillLevel(obj, SKILL_BYKK_SUMMONSPIRITWATER); local number = sq_GetLevelData(obj, 52, 5, skill_level1); local min_level = sq_GetLevelData(obj, 52, 6, skill_level1); if(skill_level2 >= min_level){ if(sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 36) < 1){ for(local i = 0; i < number; i++){ summonmonster_mage_plus_Kwk(obj,obj,100 + (i + 1) * 40,0,0,summonsub,montser_id,monster_time,monster_level,0); } } } local skill_level = sq_GetSkillLevel(obj, skillIndex); local add_number = sq_GetLevelData(obj, skillIndex, 2, skill_level); if(add_number > 1){ for(local i = 0; i < add_number - 1; i++){ local angle = 360 / add_number * (i + 1); local x = (sq_Cos(sq_ToRadian(angle.tofloat())) * 100.0).tointeger(); local y = (sq_Sin(sq_ToRadian(angle.tofloat())) * 50.0).tointeger(); summonmonster_mage_plus_Kwk(obj,obj,x,y,0,summonsub,montser_id,monster_time,monster_level,0); } } break; case SKILL_BYKK_SUMMONSPIRITDARK: local skill_level1 = sq_GetSkillLevel(obj, 53); local skill_level2 = sq_GetSkillLevel(obj, SKILL_BYKK_SUMMONSPIRITDARK); local number = sq_GetLevelData(obj, 53, 6, skill_level1); local min_level = sq_GetLevelData(obj, 53, 7, skill_level1); if(skill_level2 >= min_level){ if(sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 36) < 1){ for(local i = 0; i < number; i++){ summonmonster_mage_plus_Kwk(obj,obj,100 + (i + 1) * 40,0,0,summonsub,montser_id,monster_time,monster_level,0); } } } local skill_level = sq_GetSkillLevel(obj, skillIndex); local add_number = sq_GetLevelData(obj, skillIndex, 2, skill_level); if(add_number > 1){ for(local i = 0; i < add_number - 1; i++){ local angle = 360 / add_number * (i + 1); local x = (sq_Cos(sq_ToRadian(angle.tofloat())) * 100.0).tointeger(); local y = (sq_Sin(sq_ToRadian(angle.tofloat())) * 50.0).tointeger(); summonmonster_mage_plus_Kwk(obj,obj,x,y,0,summonsub,montser_id,monster_time,monster_level,0); } } break; case SKILL_BYKK_SUMMONSPIRITLIGHT: local skill_level1 = sq_GetSkillLevel(obj, 54); local skill_level2 = sq_GetSkillLevel(obj, SKILL_BYKK_SUMMONSPIRITLIGHT); local number = sq_GetLevelData(obj, 54, 6, skill_level1); local min_level = sq_GetLevelData(obj, 54, 7, skill_level1); if(skill_level2 >= min_level){ if(sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 36) < 1){ for(local i = 0; i < number; i++){ summonmonster_mage_plus_Kwk(obj,obj,100 + (i + 1) * 40,0,0,summonsub,montser_id,monster_time,monster_level,0); } } } local skill_level = sq_GetSkillLevel(obj, skillIndex); local add_number = sq_GetLevelData(obj, skillIndex, 2, skill_level); if(add_number > 1){ for(local i = 0; i < add_number - 1; i++){ local angle = 360 / add_number * (i + 1); local x = (sq_Cos(sq_ToRadian(angle.tofloat())) * 100.0).tointeger(); local y = (sq_Sin(sq_ToRadian(angle.tofloat())) * 50.0).tointeger(); summonmonster_mage_plus_Kwk(obj,obj,x,y,0,summonsub,montser_id,monster_time,monster_level,0); } } break; } break; case 31: local Ani = obj.sq_GetThrowChargeAni(3); obj.setCurrentAnimation(Ani); break; case 32: local Ani = obj.sq_GetThrowShootAni(3); obj.setCurrentAnimation(Ani); break; } } function onProcCon_RingOfDomination(obj) { if(!obj) return; local substate = obj.getSkillSubState(); if(substate <= 1){ if(sq_IsKeyDown(OPTION_HOTKEY_JUMP, ENUM_SUBKEY_TYPE_ALL)){ obj.sq_IntVectClear(); obj.sq_IntVectPush(2); obj.sq_AddSetStatePacket(SKILL_BYKK_RINGOFDOMINATION, STATE_PRIORITY_IGNORE_FORCE, true); } } } function onEndCurrentAni_RingOfDomination(obj) { if(!obj) return; if(!obj.sq_IsMyControlObject()) return; local substate = obj.getSkillSubState(); switch(substate){ case 0: obj.sq_IntVectClear(); obj.sq_IntVectPush(1); obj.sq_AddSetStatePacket(SKILL_BYKK_RINGOFDOMINATION, STATE_PRIORITY_USER, true); break; case 1: obj.sq_IntVectClear(); obj.sq_IntVectPush(2); obj.sq_AddSetStatePacket(SKILL_BYKK_RINGOFDOMINATION, STATE_PRIORITY_USER, true); break; case 2: sq_SetCustomDamageType(obj, true, 0); obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_USER, false); break; case 20: obj.sq_IntVectClear(); obj.sq_IntVectPush(21); obj.sq_AddSetStatePacket(SKILL_BYKK_RINGOFDOMINATION, STATE_PRIORITY_USER, true); break; case 21: case 23: case 32: obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_USER, false); break; case 22: obj.sq_IntVectClear(); obj.sq_IntVectPush(23); obj.sq_AddSetStatePacket(SKILL_BYKK_RINGOFDOMINATION, STATE_PRIORITY_USER, true); break; case 31: obj.sq_IntVectClear(); obj.sq_IntVectPush(32); obj.sq_AddSetStatePacket(SKILL_BYKK_RINGOFDOMINATION, STATE_PRIORITY_USER, true); break; } } function onEndState_RingOfDomination(obj, new_state) { if(!obj) return; if(new_state != SKILL_BYKK_RINGOFDOMINATION){ RemoveAllAni_RingOfDomination(obj); sq_SetCustomDamageType(obj, true, 0); } } function onTimeEvent_RingOfDomination(obj, timeEventIndex, timeEventCount) { if(!obj) return false; if(!obj.isMyControlObject()) return false; if(timeEventIndex == 1001){ local direction = obj.getDirection();//嚙踝蕭嚙踝蕭菾嚙踝蕭 local xpos = sq_GetDistancePos(obj.getXPos(), direction, 185);//嚙踝蕭嚙踝蕭菾嚙踝蕭嚙踝蕭pos local ypos = obj.getYPos(); local pooledobj_01 = onAddPooledObj_RingOfDomination(obj, "passiveobject/madeby_k_k/animation/ringofdomination/loop/rodloopringa_01.ani", xpos, ypos, ENUM_DRAWLAYER_COVER); local pooledobj_02 = onAddPooledObj_RingOfDomination(obj, "passiveobject/madeby_k_k/animation/ringofdomination/loop/rodloopringb_01.ani", xpos, ypos, ENUM_DRAWLAYER_NORMAL); local pooledobj_03 = onAddPooledObj_RingOfDomination(obj, "passiveobject/madeby_k_k/animation/ringofdomination/loop/rodsummoneffa_01.ani", xpos, ypos, ENUM_DRAWLAYER_NORMAL); local pooledobj_04 = onAddPooledObj_RingOfDomination(obj, "passiveobject/madeby_k_k/animation/ringofdomination/loop/rodsummoneffb_01.ani", xpos, ypos, ENUM_DRAWLAYER_NORMAL); local pooledobj_05 = onAddPooledObj_RingOfDomination(obj, "passiveobject/madeby_k_k/animation/ringofdomination/loop/rodsummonefffloor_01.ani", xpos, ypos, ENUM_DRAWLAYER_NORMAL); obj.getVar("aniobj").clear_obj_vector(); obj.getVar("aniobj").push_obj_vector(pooledobj_01); obj.getVar("aniobj").push_obj_vector(pooledobj_02); obj.getVar("aniobj").push_obj_vector(pooledobj_03); obj.getVar("aniobj").push_obj_vector(pooledobj_04); obj.getVar("aniobj").push_obj_vector(pooledobj_05); local skill_Id = [44,45,46,47,76,77,78,79,80,121,119,82,25,122,23,21,24,22]; local monster_Id = [MONSTER_ID_SANDOR,MONSTER_ID_AUXO,MONSTER_ID_LUIS,MONSTER_ID_ECHEVERRA,MONSTER_ID_DARKHIGHERSPIRIT,MONSTER_ID_LIGHTHIGHERSPIRIT,MONSTER_ID_WATERHIGHERSPIRIT,MONSTER_ID_FIREHIGHERSPIRIT,MONSTER_ID_BABYDRAGON,MONSTER_ID_KRUTA,MONSTER_ID_HEILROM,MONSTER_ID_CASILLAS,MONSTER_ID_HODOR,MONSTER_ID_RAMOS,MONSTER_ID_SPIRITDARK,MONSTER_ID_SPIRITFIRE,MONSTER_ID_SPIRITLIGHT,MONSTER_ID_SPIRITWATER]; local monster_Name = ["SandorObj","AuxoObj","LuisObj","EcheverraObj","DarkhigherspiritObj","LighthigherspiritObj","WaterhigherspiritObj","FirehigherspiritObj","BabydragonObj","KrutaObj","HeilromObj","CassillasObj","HodorObj","RamosObj","SpiritDarkObj","SpiritFireObj","SpiritLightObj","SpiritWaterObj"]; if(sq_GetLevelData(obj, 45, 8, sq_GetSkillLevel(obj, 45)) > 0){ local monster_Name = ["AuxoObj","LuisObj","HeilromObj","CassillasObj","RamosObj"]; } for(local i = 0;i < monster_Id.len(); i++){ local skill_level = sq_GetSkillLevel(obj, skill_Id[i]); //print(monster_Name[i]+",level = "+skill_level); local limit_level = sq_GetLevelData(obj, SKILL_BYKK_RINGOFDOMINATION, 2, sq_GetSkillLevel(obj, SKILL_BYKK_RINGOFDOMINATION)); if(skill_Id[i] == 122) limit_level = 0; if(skill_level > limit_level){ local subtype = 15; if(skill_Id[i] == 45 && sq_GetSkill(obj, 45).isSealFunction()){monster_Id[i] = MONSTER_ID_AUXOOLD; subtype = 5;} local obj_Monster = obj.getVar(monster_Name[i]).get_obj_vector(0); if(!obj_Monster){ local monster_level = sq_GetSkillLevel(obj, 174); local monster_time = 3600000; local monster_Num = obj.sq_GetLevelData(skill_Id[i], 2, skill_level); if(skill_Id[i] == 122) monster_Num = 1; else if(skill_Id[i] == 47 && sq_GetLevelData(obj,SKILL_BYKK_SUMMONECHEVERRA, 0, skill_level) > 0 && monster_Num == 1) monster_Num = 2; else if(skill_Id[i] == 46 && sq_GetIntData(obj, SKILL_BYKK_BLACKLUNATIC, 50) > 0) monster_Num = 2; else if(skill_Id[i] == 23 && sq_GetSkillLevel(obj, 53) > 0 && sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 36) < 1) monster_Num = 3; else if(skill_Id[i] == 21 && sq_GetSkillLevel(obj, 51) > 0 && sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 36) < 1) monster_Num = 3; else if(skill_Id[i] == 24 && sq_GetSkillLevel(obj, 54) > 0 && sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 36) < 1) monster_Num = 3; else if(skill_Id[i] == 22 && sq_GetSkillLevel(obj, 52) > 0 && sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 36) < 1) monster_Num = 3; // if((skill_Id[i] == 21 || skill_Id[i] == 22 || skill_Id[i] == 23 || skill_Id[i] == 24) && sq_GetLevelData(obj, skill_Id[i], 2, sq_GetSkillLevel(obj, skill_Id[i])) > 1){ // monster_Num = monster_Num + sq_GetLevelData(obj, skill_Id[i], 2, sq_GetSkillLevel(obj, skill_Id[i])) - 1; // print(monster_Num); // } local seedNumber = sq_GetLevelData(obj, SKILL_BYKK_SUMMONAUXO, 8, sq_GetSkillLevel(obj, SKILL_BYKK_SUMMONAUXO)); summonmonster_mage_plus_Kwk(obj,obj,190,0,0,0,monster_Id[i],monster_time,monster_level,0); if(monster_Num >= 2){ for(local ac = 0;ac < monster_Num - 1; ac++){ summonmonster_mage_plus_Kwk(obj,obj,190 + (ac + 1) * 40,0,0,0,monster_Id[i],monster_time,monster_level,0); if(skill_Id[i] == 45){ if(seedNumber > 0) createPassiveObject_k_k(obj,obj,45,subtype,190 + (ac + 1) * 40,0,70,0,0,0,0,0); } } } } } } if(sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 26) > 0){ summonmonster_mage_plus_Kwk(obj,obj,190,0,0,0,MONSTER_ID_DARKHIGHERSPIRIT + sq_getRandom(0, 3),3600000,sq_GetSkillLevel(obj, 174),0); } } if(timeEventIndex == 1002){ obj.sq_IntVectClear(); obj.sq_IntVectPush(2); obj.sq_AddSetStatePacket(SKILL_BYKK_RINGOFDOMINATION, STATE_PRIORITY_USER, true); } return true; } function onAddPooledObj_RingOfDomination(obj, aniPath, x, y, abc) { local ani = sq_CreateAnimation("",aniPath); local pooledObj = sq_CreatePooledObject(ani,true); sq_SetCurrentDirection(pooledObj, obj.getDirection()); pooledObj.setCurrentPos(x,y,0); pooledObj = sq_SetEnumDrawLayer(pooledObj, abc); sq_AddObject(obj, pooledObj, OBJECTTYPE_DRAWONLY, false); return pooledObj; } function RemoveAllAni_RingOfDomination(obj) { local objVar = obj.getVar("aniobj"); local size = objVar.get_obj_vector_size(); for(local i=0;i 0) obj_kruta.getVar("skillIndex").set_vector(0,11); else obj_kruta.getVar("skillIndex").set_vector(0, 7); monsterattack_ksk(obj_kruta,13); } } break; } } function checkExecutableSkill_MoonShadow(obj) { if(!obj) return false; if(sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 16) > 0) return true; local b_useskill = obj.sq_IsUseSkill(SKILL_BYKK_MOONSHADOW); if(b_useskill){ obj.sq_IntVectClear(); obj.sq_IntVectPush(0); obj.sq_AddSetStatePacket(SKILL_BYKK_MOONSHADOW, STATE_PRIORITY_USER, true); return true; } return false; } function checkCommandEnable_MoonShadow(obj) { if(!obj) return false; local state = obj.sq_GetState(); if(state == STATE_STAND) return true; if(state == STATE_ATTACK){ return obj.sq_IsCommandEnable(SKILL_BYKK_MOONSHADOW); } return true; } function onSetState_MoonShadow(obj, state, datas, isResetTimer) { if(!obj) return; obj.sq_StopMove(); local substate = obj.sq_GetVectorData(datas, 0); obj.setSkillSubState(substate); switch(substate){ case 0: local Ani = obj.sq_GetThrowChargeAni(2); obj.setCurrentAnimation(Ani); obj.sq_SetStaticSpeedInfo(SPEED_TYPE_CAST_SPEED, SPEED_TYPE_CAST_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0); local skill_level = sq_GetSkillLevel(obj, SKILL_BYKK_MOONSHADOW); local castTime = sq_GetCastTime(obj, SKILL_BYKK_MOONSHADOW, skill_level); sq_StartDrawCastGauge(obj, castTime, true); break; case 1: local Ani = obj.sq_GetThrowShootAni(2); obj.setCurrentAnimation(Ani); obj.sq_PlaySound("WZ_MOONSHADOW"); local skill_level = sq_GetSkillLevel(obj,SKILL_BYKK_MOONSHADOW); local attacknumber = sq_GetIntData(obj, SKILL_BYKK_MOONSHADOW, 7); local time = sq_GetLevelData(obj,SKILL_BYKK_MOONSHADOW, 1, skill_level); // obj.getVar("moonshadow").clear_vector(); // obj.getVar("moonshadow").push_vector(attacknumber); local monsternumber = 0; obj.sq_AddSkillLoad(SKILL_BYKK_MOONSHADOW, 139, attacknumber, time); local monster_Name = ["SandorObj","AuxoObj","LuisObj","EcheverraObj","DarkhigherspiritObj","LighthigherspiritObj","WaterhigherspiritObj","FirehigherspiritObj","BabydragonObj","KrutaObj","HeilromObj","CassillasObj","HodorObj","RamosObj","SpiritDarkObj","SpiritFireObj","SpiritLightObj","SpiritWaterObj"]; for(local ui = 0; ui < monster_Name.len(); ui++){ local number = obj.getVar(monster_Name[ui]).get_obj_vector_size(); // print(monster_Name[ui]+" = "+number); if(number > 0){ for(local pi = 0; pi < number; pi++){ local monsterObj = sq_GetCNRDObjectToActiveObject(obj.getVar(monster_Name[ui]).get_obj_vector(pi)); if(monsterObj){ local group = sq_GetGroup(monsterObj); local uniqueId = sq_GetUniqueId(monsterObj); createPassiveObject_k_k(obj,monsterObj,SKILL_BYKK_MOONSHADOW,1,0,0,0,0,time,group,uniqueId,0); } } monsternumber = monsternumber + number; } } // print("monsternumber = "+monsternumber); if(monsternumber > 0) obj.sq_PlaySound("MOONSHADOW"); if(monsternumber <= 0) obj.sq_RemoveSkillLoad(SKILL_BYKK_MOONSHADOW); obj.getVar("time").clear_ct_vector(); obj.getVar("time").push_ct_vector(); local timer = obj.getVar("time").get_ct_vector(0); timer.Reset(); timer.Start(10000,0); break; } } function onEndCurrentAni_MoonShadow(obj) { if(!obj) return; if(!obj.sq_IsMyControlObject()) return; local substate = obj.getSkillSubState(); switch(substate){ case 0: obj.sq_IntVectClear(); obj.sq_IntVectPush(1); obj.sq_AddSetStatePacket(SKILL_BYKK_MOONSHADOW, STATE_PRIORITY_USER, true); break; case 1: obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_USER, false); break; } } function onEndState_MoonShadow(obj, new_state) { if(!obj) return; if(new_state != SKILL_BYKK_MOONSHADOW){ obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_USER, false); } } function checkExecutableSkill_MassTeleport(obj) { if (!obj) return false; local isUse = obj.sq_IsUseSkill(SKILL_BYKK_MASSTELEPORT); if (isUse){ obj.sq_AddSetStatePacket(SKILL_BYKK_MASSTELEPORT , STATE_PRIORITY_USER, false); return true; } return false; } function checkCommandEnable_MassTeleport(obj) { if (!obj) return false; local state = obj.sq_GetState(); if (state == STATE_STAND) return true; if(state == STATE_ATTACK){ return obj.sq_IsCommandEnable(SKILL_BYKK_MASSTELEPORT); } return true; } function onSetState_MassTeleport(obj, state, datas, isResetTimer) { if(!obj) return; obj.sq_StopMove(); obj.sq_SetCurrentAnimation(68);//68 obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED,SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0); local monster_Name = ["SandorObj","AuxoObj","LuisObj","EcheverraObj","DarkhigherspiritObj","LighthigherspiritObj","WaterhigherspiritObj","FirehigherspiritObj","BabydragonObj","KrutaObj","HeilromObj","CassillasObj","HodorObj","RamosObj","SpiritDarkObj","SpiritFireObj","SpiritLightObj","SpiritWaterObj"]; for(local i = 0;i < monster_Name.len(); i++){ local number = obj.getVar(monster_Name[i]).get_obj_vector_size(); if(number > 0){ for(local ui = 0; ui < number; ui++){ local monsterObj = sq_GetCNRDObjectToActiveObject(obj.getVar(monster_Name[i]).get_obj_vector(ui)); if(monsterObj){ local yPos = obj.getYPos(); local xPos = sq_GetDistancePos(obj.getXPos(), obj.getDirection(), 100); sq_MoveToNearMovablePos(monsterObj, xPos, yPos, 0, xPos, yPos, 0, 100, -1, 5); } } } } } function onEndCurrentAni_MassTeleport(obj) { obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_USER, false); } function checkExecutableSkill_BugFall(obj) { if(!obj) return false; local RamosObj = obj.getVar("RamosObj").get_obj_vector_size(); if(RamosObj > 0){ local b_useskill = obj.sq_IsUseSkill(SKILL_BYKK_BUGFALL); if(b_useskill){ obj.sq_IntVectClear(); obj.sq_IntVectPush(0); obj.sq_AddSetStatePacket(SKILL_BYKK_BUGFALL, STATE_PRIORITY_USER, true); return true; } } else if(obj.isMessage()){ sq_AddMessage(71099); } return false; } function checkCommandEnable_BugFall(obj) { if(!obj) return false; local state = obj.sq_GetState(); if(state == STATE_STAND) return true; if(state == STATE_ATTACK){ return obj.sq_IsCommandEnable(SKILL_BYKK_BUGFALL); } return true; } function onSetState_BugFall(obj, state, datas, isResetTimer) { if(!obj) return; local substate = obj.sq_GetVectorData(datas, 0); obj.setSkillSubState(substate); switch(substate){ case 0: obj.sq_StopMove(); local Ani = obj.sq_GetThrowChargeAni(3); obj.setCurrentAnimation(Ani); local skill_level = sq_GetSkillLevel(obj, SKILL_BYKK_BUGFALL); local castTime = sq_GetCastTime(obj, SKILL_BYKK_BUGFALL, skill_level); obj.getVar("caseTimE").clear_vector(); obj.getVar("caseTimE").push_vector(castTime); sq_StartDrawCastGauge(obj, castTime, true); obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED,SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0); break; case 1: obj.sq_StopMove(); local Ani = obj.sq_GetThrowShootAni(3); obj.setCurrentAnimation(Ani); local monsternum = obj.getVar("RamosObj").get_obj_vector_size(); for(local i = 0; i < monsternum; i++){ local monsterObj = sq_GetCNRDObjectToActiveObject(obj.getVar("RamosObj").get_obj_vector(i)); if(monsterObj){ monsterObj.getVar("skill").setBool(0,true); monsterattack_ksk(monsterObj,17); } } break; } } function onEndCurrentAni_BugFall(obj) { if(!obj) return; local substate = obj.getSkillSubState(); obj.setSkillSubState(substate); switch(substate){ case 1: obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_USER, false); break; } } function onEndState_BugFall(obj, new_state) { if(!obj) return; if(new_state != 139) sq_EndDrawCastGauge(obj); } function onProcCon_BugFall(obj) { if(!obj) return; local substate = obj.getSkillSubState(); local casttime = obj.getVar("caseTimE").get_vector(0); if(substate == 0){ if(obj.sq_GetStateTimer() >= casttime){ sq_EndDrawCastGauge(obj); obj.sq_IntVectClear(); obj.sq_IntVectPush(1); obj.sq_AddSetStatePacket(SKILL_BYKK_BUGFALL, STATE_PRIORITY_USER, true); } } } //種花人 function procSkill_zhonghuaren(obj) { if(sq_GetLevelData(obj, 45, 8, sq_GetSkillLevel(obj, 45)) < 1) return; obj.setSkillCommandEnable(137, false); obj.setSkillCommandEnable(80, false); obj.setSkillCommandEnable(47, false); obj.setSkillCommandEnable(25, false); obj.setSkillCommandEnable(121, false); obj.setSkillCommandEnable(44, false); obj.setSkillCommandEnable(118, false); obj.setSkillCommandEnable(21, false); obj.setSkillCommandEnable(22, false); obj.setSkillCommandEnable(23, false); obj.setSkillCommandEnable(24, false); obj.setSkillCommandEnable(76, false); obj.setSkillCommandEnable(77, false); obj.setSkillCommandEnable(78, false); obj.setSkillCommandEnable(79, false); } /////////////////////////summoner_end