function onTimeEvent_po_summoners(obj, timeEventIndex, timeEventCount) { if(!obj) return; local sqrChr = sq_GetCNRDObjectToSQRCharacter(obj.getTopCharacter()); local skillIndex = obj.getVar("skillIndex").get_vector(0); local subtype = obj.getVar("subtype").get_vector(0); local state = obj.getVar("state").get_vector(0); switch(skillIndex){ case 25://hodor break; case 44://sandor switch(timeEventIndex){ case 0: sq_SendDestroyPacketPassiveObject(obj); break; } break; case 45://auxo break; case 46://luis switch(subtype){ case 3: switch(timeEventIndex){ case 0: //?嚙踝蕭ptl obj.sq_SetMoveParticle("particle/luis/fireball.ptl", 0.0, 0.0); local etcSub = obj.getVar("custom").getInt(10); if(etcSub > 0){ sq_SetSpeedToMoveParticle(obj, 0, 1000); } break; } break; case 5: switch(timeEventIndex){ case 0: local eclipsehive_bonus = sqrChr.getVar("eclipsehive_bonus").getInt(11).tofloat() / 100.0; // if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 23) > 0) eclipsehive_bonus = eclipsehive_bonus + 0.5; local totalDamage = sq_GetBonusRateWithPassive(sqrChr, 46, 46, 20, eclipsehive_bonus) + 100; local totalDamage2 = sq_GetBonusRateWithPassive(sqrChr, 46, 46, 21, eclipsehive_bonus) + 100; local etcSub = obj.getVar("custom").getInt(10); local bonusRate = obj.getVar("custom").getInt(11); if(bonusRate > 1){ totalDamage = totalDamage * bonusRate; totalDamage2 = totalDamage2 * bonusRate; } createPassiveObject_k_k(sqrChr,obj,46,6,-300,0,600,totalDamage,totalDamage2,etcSub,0,0); break; case 2: obj.setTimeEvent(3,100,10,false); break; case 3: local eclipsehive_bonus = sqrChr.getVar("eclipsehive_bonus").getInt(11).tofloat() / 100.0; // if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 23) > 0) eclipsehive_bonus = eclipsehive_bonus + 0.5; local totalDamage = sq_GetBonusRateWithPassive(sqrChr, 46, 46, 20, 0.17*eclipsehive_bonus) + 100; local totalDamage2 = sq_GetBonusRateWithPassive(sqrChr, 46, 46, 21, 0.17*eclipsehive_bonus) + 100; local etcSub = obj.getVar("custom").getInt(10); local bonusRate = obj.getVar("custom").getInt(11); if(bonusRate > 1){ totalDamage = totalDamage * bonusRate; totalDamage2 = totalDamage2 * bonusRate; } createPassiveObject_k_k(sqrChr,obj,46,6,-300+sq_getRandom(-50,50),sq_getRandom(-40,40),600,totalDamage,totalDamage2,etcSub,0,0); if(timeEventCount >= 10) sq_SendDestroyPacketPassiveObject(obj); break; } break; case 10: switch(timeEventIndex){ case 0: local sub = obj.getVar("custom").getInt(10); local pooledObj = sq_AddDrawOnlyAniFromParent(obj, "character/mage/effect/animation/blacklunatic/blacklunaticwing"+sub.tostring()+"crack_00.ani", 0, 0, 0); local targetObj = obj.getVar("tar").get_obj_vector(0); sq_moveWithParent(targetObj, pooledObj); //print("sub = "+sub); // if(sub == 3){ // if(targetObj){ // CNSquirrelAppendage.sq_RemoveAppendage(targetObj, BLACKLUNATIC_APDPATH); // print("remove"); // } // } sq_SendDestroyPacketPassiveObject(obj); break; case 1: local targetObj = obj.getVar("tar").get_obj_vector(0); if(targetObj){ sq_setCurrentAxisPos(obj, 0, sq_GetXPos(targetObj)); sq_setCurrentAxisPos(obj, 1, sq_GetYPos(targetObj) - 1); sq_setCurrentAxisPos(obj, 2, sq_GetZPos(targetObj)); sq_SetCurrentDirection(obj, targetObj.getDirection()); if(!CNSquirrelAppendage.sq_IsAppendAppendage(targetObj, BLACKLUNATIC_APDPATH)) sq_SendDestroyPacketPassiveObject(obj); } else sq_SendDestroyPacketPassiveObject(obj); break; } break; } break; case 47://echeverra switch(subtype){ case 2: case 5: switch(timeEventIndex){ case 0: obj.resetHitObjectList(); break; case 1: //?嚙踝蕭ptl obj.sq_SetMoveParticle("particle/spikeking/grandwave.ptl", 0.0, 0.0); break; case 2: sq_SendDestroyPacketPassiveObject(obj); break; } break; case 4: switch(timeEventIndex){ case 0: createPassiveObject_k_k(sqrChr,obj,47,41,75 * (timeEventCount - 1),0,0,0,0,0,0,0); break; case 1: obj.sq_PlaySound("SSTAR_DMG"); break; } break; case 51: switch(timeEventIndex){ case 0: obj.resetHitObjectList(); break; } break; } break; case 76://spiritdarkhigher switch(subtype){ case 3: case 41: case 61: case 62: case 63: switch(timeEventIndex){ case 0: obj.addSetStatePacket(22, null, STATE_PRIORITY_AUTO, false, ""); break; case 2: sq_SetMyShake(obj,1,100); obj.resetHitObjectList(); local pooledObj = sq_AddDrawOnlyAniFromParent(obj,"passiveobject/madeby_k_k/animation/spirit/darkhigherspirit/darkskill/test/animation/cylindercrack_0"+(timeEventCount - 1).tostring()+".ani",0,0,0); local pAni = pooledObj.getCurrentAnimation(); local time = obj.getVar("time").get_vector(0) / 4; local speedRate = 150000.0 / time.tofloat(); pAni.setSpeedRate(speedRate); obj.stopSound(101); obj.sq_PlaySound("DESCHAMPS_METAL_CHAIN",101); break; case 4: obj.addSetStatePacket(21, null, STATE_PRIORITY_AUTO, false, ""); break; } break; case 4: switch(timeEventIndex){ case 0: sq_SendDestroyPacketPassiveObject(obj); break; case 1: obj.resetHitObjectList(); break; } break; } break; case 77://spiritlighthigher switch(subtype){ case 2: switch(timeEventIndex){ case 0: local eclipsehive_bonus = sqrChr.getVar("eclipsehive_bonus").getInt(10).tofloat() / 100.0; local totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONSPIRITLIGHTHIGHER, SKILL_BYKK_SUMMONSPIRITLIGHTHIGHER, 7, eclipsehive_bonus) + 100; createPassiveObject_k_k(sqrChr,obj,SKILL_BYKK_SUMMONSPIRITLIGHTHIGHER,21,timeEventCount * 70,0,0,totalDamage,0,0,0,0); break; } break; case 9: switch(timeEventIndex){ case 0: local totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONSPIRITLIGHTHIGHER, SKILL_BYKK_SUMMONSPIRITLIGHTHIGHER, 28, 1.0) + 100; createPassiveObject_k_k(sqrChr,obj,SKILL_BYKK_SUMMONSPIRITLIGHTHIGHER,10,sq_getRandom(-50,200), sq_getRandom(-35,35),0,totalDamage,0,0,0,0); break; } break; case 10: switch(timeEventIndex){ case 0: //obj.resetHitObjectList(); //"WORDSWORTH_LIGHTNING_0"+sq_getRandom(1,4).tostring()); break; } break; } break; case 78://spiritwaterhigher switch(subtype){ case 1: case 11: switch(timeEventIndex){ case 0: local eclipsehive_bonus = sqrChr.getVar("eclipsehive_bonus").getInt(10).tofloat() / 100.0; local totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONSPIRITWATERHIGHER, SKILL_BYKK_SUMMONSPIRITWATERHIGHER, 6, eclipsehive_bonus) + 100; createPassiveObject_k_k(sqrChr,obj,SKILL_BYKK_SUMMONSPIRITWATERHIGHER,11,0,0,timeEventCount * 115 + 80,totalDamage,timeEventCount,0,0,0); break; case 1: obj.sq_SetMoveParticle("particle/spirit/water_spirit_higher_ice_move.ptl", 0.0, 0.0); break; } break; case 4: switch(timeEventIndex){ case 0: local eclipsehive_bonus = sqrChr.getVar("eclipsehive_bonus").getInt(11).tofloat() / 100.0; local totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONSPIRITWATERHIGHER, SKILL_BYKK_SUMMONSPIRITWATERHIGHER, 19, eclipsehive_bonus) + 100; createPassiveObject_k_k(sqrChr,obj,SKILL_BYKK_SUMMONSPIRITWATERHIGHER,41,sq_getRandom(-50,100),sq_getRandom(-15,30),0,totalDamage,timeEventCount - 1,0,0,0); break; } break; case 9: switch(timeEventIndex){ case 0: local totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONSPIRITWATERHIGHER, SKILL_BYKK_SUMMONSPIRITWATERHIGHER, 22, 1.0) + 100; local time = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONSPIRITWATERHIGHER, SKILL_BYKK_SUMMONSPIRITWATERHIGHER, 23, 1.0) + 100; createPassiveObject_k_k(sqrChr,obj,SKILL_BYKK_SUMMONSPIRITWATERHIGHER,10,0,0,0,totalDamage,time,timeEventCount,0,0); break; } break; case 10: switch(timeEventIndex){ case 0: obj.addSetStatePacket(state + 1, null, STATE_PRIORITY_AUTO, false, ""); break; case 1: obj.resetHitObjectList(); break; case 2: break; } break; } break; case 79://spiritfirehigher switch(subtype){ case 4: switch(timeEventIndex){ case 0: obj.resetHitObjectList(); break; } break; case 61: switch(timeEventIndex){ case 0: obj.addSetStatePacket(22, null, STATE_PRIORITY_AUTO, false, ""); break; case 1: obj.resetHitObjectList(); break; case 2: obj.addSetStatePacket(21, null, STATE_PRIORITY_AUTO, false, ""); break; case 3: obj.sq_PlaySound("SASCHA_TORNADO_LOOP"); break; } break; } break; case 80://babydragon switch(timeEventIndex){ case 1: obj.resetHitObjectList(); if(timeEventCount >= 10) obj.addSetStatePacket(state + 1, null, STATE_PRIORITY_AUTO, false, ""); break; case 2: local totalDamage = obj.getVar("custom").getInt(10); if(subtype == 12) createPassiveObject_k_k(sqrChr, obj, 80, 121, 85, 0, 290, totalDamage, 0, 0, 0, 0); else createPassiveObject_k_k(sqrChr, obj, 80, 131, 265, 0, 0, totalDamage, 0, 0, 0, 0); break; case 3: obj.addSetStatePacket(22, null, STATE_PRIORITY_AUTO, false, ""); break; case 4: obj.addSetStatePacket(21, null, STATE_PRIORITY_AUTO, false, ""); break; case 10: local hittime = obj.getVar("custom").getInt(10); obj.setTimeEvent(11, hittime, -1, false); break; case 11: obj.resetHitObjectList(); break; } break; case 82://casillas break; case 118://sandorex break; case 119://heilrom break; case 120://spiritfireex break; case 121://kruta switch(subtype){ case 2: switch(timeEventIndex){ case 0: obj.resetHitObjectList(); break; } break; case 10: switch(timeEventIndex){ case 0: sq_SendDestroyPacketPassiveObject(obj); break; } break; } break; case 122://ramos switch(subtype){ case 41: case 5: case 71: case 72: switch(timeEventIndex){ case 0: obj.resetHitObjectList(); break; } break; case 200: switch(timeEventIndex){ case 1: local monster_level = sq_GetSkillLevel(sqrChr, 174); summonmonster_mage_plus_Kwk(sqrChr,obj,0,0,0,0,MONSTER_ID_RAMOS,3600000,monster_level,0); sq_SendDestroyPacketPassiveObject(obj); break; } break; } break; case SKILL_BYKK_SUMMONSPIRITCOMMON: switch(subtype){ case 202: switch(timeEventIndex){ case 0: sq_SendDestroyPacketPassiveObject(obj); break; case 1: obj.resetHitObjectList(); break; } break; case 102: case 302: switch(timeEventIndex){ case 0: obj.resetHitObjectList(); break; } break; case 1001: local sizeRate = obj.getVar("sizeRate").get_vector(0).tofloat() / 100; sizeRate = sizeRate.tofloat(); local sub = obj.getVar("sizeRate").get_vector(1); switch(timeEventIndex){ case 1: local anipath; switch(sub){ case 1: anipath = "passiveobject/common/animation/darkexplosionparticle1.ani"; break; case 2: anipath = "passiveobject/common/animation/fireexplosionparticle1.ani"; break; case 3: anipath = "passiveobject/common/animation/lightexplosionparticle1.ani"; break; case 4: anipath = "passiveobject/character/mage/animation/icefireexplosionparticle1.ani"; break; } local pooledObj = sq_AddDrawOnlyAniFromParent(obj,anipath, sq_getRandom(-10,10), sq_getRandom(-10,10), sq_getRandom(-10,10)); local currentAni = pooledObj.getCurrentAnimation(); currentAni.setImageRateFromOriginal(sizeRate, sizeRate); break; case 2: local anipath; switch(sub){ case 1: anipath = "passiveobject/common/animation/darkexplosionparticle2.ani"; break; case 2: anipath = "passiveobject/common/animation/fireexplosionparticle2.ani"; break; case 3: anipath = "passiveobject/common/animation/lightexplosionparticle2.ani"; break; case 4: anipath = "passiveobject/character/mage/animation/icefireexplosionparticle2.ani"; break; } local pooledObj = sq_AddDrawOnlyAniFromParent(obj,anipath, 0, 2, 0); local currentAni = pooledObj.getCurrentAnimation(); currentAni.setImageRateFromOriginal(sizeRate, sizeRate); break; case 3: local anipath; switch(sub){ case 1: anipath = "passiveobject/common/animation/darkexplosionparticle3.ani"; break; case 2: anipath = "passiveobject/common/animation/fireexplosionparticle3.ani"; break; case 3: anipath = "passiveobject/common/animation/lightexplosionparticle3.ani"; break; case 4: anipath = "passiveobject/character/mage/animation/icefireexplosionparticle3.ani"; break; } local pooledObj = sq_AddDrawOnlyAniFromParent(obj,anipath, 0, 1, 1); local currentAni = pooledObj.getCurrentAnimation(); local angle = sq_ToRadian(360.0 * timeEventCount / 8); sq_SetfRotateAngle(currentAni, angle); currentAni.setImageRateFromOriginal(sizeRate * 2.0, sizeRate * 2.0); break; case 4: local anipath; switch(sub){ case 1: anipath = "passiveobject/common/animation/darkexplosionparticle4.ani"; break; case 2: anipath = "passiveobject/common/animation/fireexplosionparticle4.ani"; break; case 3: anipath = "passiveobject/common/animation/lightexplosionparticle4.ani"; break; case 4: anipath = "passiveobject/character/mage/animation/icefireexplosionparticle4.ani"; break; } local pooledObj = sq_AddDrawOnlyAniFromParent(obj,anipath, sq_getRandom(-30,30), sq_getRandom(-30,30), sq_getRandom(-30,30)); local currentAni = pooledObj.getCurrentAnimation(); currentAni.setImageRateFromOriginal(sizeRate, sizeRate); break; } break; } break; case SKILL_BYKK_MOONSHADOW: switch(timeEventIndex){ case 0: obj.addSetStatePacket(state + 1, null, STATE_PRIORITY_AUTO, false, ""); break; case 1: local targetObj = obj.getVar("tar").get_obj_vector(0); if(targetObj) sq_SendHitObjectPacket(obj,targetObj,0,0,sq_GetObjectHeight(targetObj) / 2); else sq_SendDestroyPacketPassiveObject(obj); if(timeEventCount >= 10) sq_SendDestroyPacketPassiveObject(obj); break; } break; case SKILL_BYKK_BLACKLUNATIC: switch(subtype){ case 1: switch(timeEventIndex){ case 0: obj.addSetStatePacket(22, null, STATE_PRIORITY_AUTO, false, ""); break; case 1: local srcX = obj.getVar("custom").getInt(10); local vx = sq_GetUniformVelocity(0, obj.getVar("custom").getInt(12), timeEventCount, 30); local vz = sq_GetUniformVelocity(obj.getVar("custom").getInt(11), 30, timeEventCount, 30); local dstX = sq_GetDistancePos(srcX, obj.getDirection(), vx); sq_setCurrentAxisPos(obj, 0, dstX); sq_setCurrentAxisPos(obj, 2, vz); if(timeEventCount >= 30) obj.addSetStatePacket(23, null, STATE_PRIORITY_AUTO, false, ""); break; } break; } break; case SKILL_BYKK_HIGHESTECHEVERRA: switch(timeEventIndex){ case 1: obj.resetHitObjectList(); break; case 2: local EcheverraObj = sqrChr.getVar("EcheverraObj").get_obj_vector(0); if(EcheverraObj && EcheverraObj.getState() != STATE_DIE){ local monsterObj = sq_GetCNRDObjectToActiveObject(EcheverraObj); sq_IntVectorClear(sq_GetGlobalIntVector()); sq_AddSetStatePacketActiveObject(monsterObj, 0, sq_GetGlobalIntVector(), STATE_PRIORITY_USER); } break; } break; } } function procAppend_po_summoners(obj) { if(!obj) return; local sqrChr = sq_GetCNRDObjectToSQRCharacter(obj.getTopCharacter()); if(obj.getZPos() >= 1000 && obj.getVar().getBool(0) == false){ local parentObj = obj.getParent(); if(!parentObj) sq_SendDestroyPacketPassiveObject(obj); local id = parentObj.getCollisionObjectIndex(); obj.getVar().setBool(0, true); // print("id:" + id); if(sq_IsMyControlObject(sqrChr)) { sq_BinaryStartWrite(); sq_BinaryWriteDword(1); sq_BinaryWriteDword(id); sq_BinaryWriteDword(sq_GetGroup(parentObj)); sq_BinaryWriteDword(sq_GetUniqueId(parentObj)); sq_SendChangeSkillEffectPacket(sqrChr, SKILL_BYKK_COMMUNION); sq_SendDestroyPacketPassiveObject(obj); } sq_SendDestroyPacketPassiveObject(obj); } local skillIndex = obj.getVar("skillIndex").get_vector(0); local subtype = obj.getVar("subtype").get_vector(0); local state = obj.getVar("state").get_vector(0); switch(skillIndex){ case 25://hodor switch(subtype){ case 7://嚙踝蕭嚙踝蕭嚙踝蕭嚙踝蕭 switch(state){ case 20: local pAni = obj.getCurrentAnimation(); local currentT = sq_GetCurrentTime(pAni); local fireT = 800; local srcX = obj.getVar("move").get_vector(0); local srcY = obj.getVar("move").get_vector(1); local MoveX = obj.getVar("move").get_vector(2); local MoveY = obj.getVar("move").get_vector(3); local vx = sq_GetUniformVelocity(0, MoveX, currentT, fireT); local vy = sq_GetUniformVelocity(0, MoveY, currentT, fireT); sq_setCurrentAxisPos(obj, 0, srcX + vx);//?嚙踝蕭?嚙踝蕭x嚙? sq_setCurrentAxisPos(obj, 1, srcY + vy);//?嚙踝蕭?嚙踝蕭y嚙? if(obj.getZPos() <= 0){ obj.addSetStatePacket(21, null, STATE_PRIORITY_AUTO, false, ""); } break; } break; } break; case 44://sandor break; case 45://auxo switch(subtype){ case 5: case 15: switch(state){ case 20: if(obj.getZPos() <= 0){ if(subtype == 5) obj.addSetStatePacket(21, null, STATE_PRIORITY_AUTO, false, ""); if(subtype == 15) obj.addSetStatePacket(22, null, STATE_PRIORITY_AUTO, false, ""); } break; } break; case 13: switch(state){ case 20: if(obj.getZPos() <= 0){ obj.addSetStatePacket(21, null, STATE_PRIORITY_AUTO, false, ""); } break; case 22: local targetObj = sq_GetCNRDObjectToActiveObject(obj.getVar("targetObj").get_obj_vector(0)); if(targetObj){ if(sq_GetDistanceObject(obj, targetObj, false) <= 5){ local eclipsehive_bonus = sqrChr.getVar("eclipsehive_bonus").getInt(10).tofloat() / 100.0; local totalDamage = sq_GetBonusRateWithPassive(sqrChr, 45, 45, 28, eclipsehive_bonus) + 100; targetObj.getVar("auxohit").clear_vector(); targetObj.getVar("auxohit").push_vector(1); targetObj.getVar("auxohittime").clear_vector(); targetObj.getVar("auxohittime").push_vector(100); targetObj.getVar("auxohitbonus").clear_vector(); targetObj.getVar("auxohitbonus").push_vector(totalDamage * 6); local AddAppendage = CNSquirrelAppendage.sq_AppendAppendage(targetObj, sqrChr, 199, true, "character/mage/k_k_made/appendage/aptomonster/ap_auxoex_skillthree.nut", true); sq_SendDestroyPacketPassiveObject(obj); return; } local pAni = obj.getCurrentAnimation(); local currentT = sq_GetCurrentTime(pAni); local fireT = pAni.getDelaySum(false); local X1 = sq_GetUniformVelocity(obj.getXPos(), targetObj.getXPos(), currentT, fireT); local Y1 = sq_GetUniformVelocity(obj.getYPos(), targetObj.getYPos(), currentT, fireT); sq_setCurrentAxisPos(obj, 0, X1); sq_setCurrentAxisPos(obj, 1, Y1); } else{ sq_SendDestroyPacketPassiveObject(obj); } break; } break; case 14: switch(state){ case 20: local pAni = obj.getCurrentAnimation(); local currentT = sq_GetCurrentTime(pAni); local fireT = pAni.getDelaySum(false); local angle = sq_GetAccel(5, -90, currentT, fireT, true); sq_SetCustomRotate(obj, sq_ToRadian(angle.tofloat())); if(obj.getZPos() <= 0){ obj.addSetStatePacket(21, null, STATE_PRIORITY_AUTO, false, ""); } break; } break; } break; case 46://luis switch(subtype){ case 2: local pAni = obj.getCurrentAnimation();//嚙踝蕭嚙踝蕭ani local currentT = sq_GetCurrentTime(pAni);//?嚙踝蕭?? local etcSub = obj.getVar("custom").getInt(10); local time = 3000; if(etcSub > 0) time = 1500; if(currentT >= time) sq_SendDestroyPacketPassiveObject(obj); break; case 6: switch(state){ case 20: if(obj.getZPos() <= 0){ //obj.resetHitObjectList(); obj.addSetStatePacket(21, null, STATE_PRIORITY_AUTO, false, ""); } break; } break; case 10: break; } break; case 47://echeverra switch(subtype){ case 8: switch(state){ case 21: local targetObj = sq_GetCNRDObjectToActiveObject(obj.getVar().get_obj_vector(0)); if(targetObj){ if(sq_GetDistanceObject(obj, targetObj, false) <= 5){ if(obj.getVar().getBool(0) == false){ sq_AddDrawOnlyAniFromParent(targetObj,"passiveobject/test/kcontents3/curseofbloodyfruit/buff/animation/absorb_element_01.ani",0,0,30); obj.getVar().setBool(0,true); } sq_SendDestroyPacketPassiveObject(obj); return; } local pAni = obj.getCurrentAnimation(); local currentT = sq_GetCurrentTime(pAni); local fireT = 800;// pAni.getDelaySum(false); local X1 = sq_GetAccel(obj.getXPos(), targetObj.getXPos(), currentT, fireT, false); local Y1 = sq_GetAccel(obj.getYPos(), targetObj.getYPos(), currentT, fireT, false); local sizeRate = sq_GetUniformVelocity(20, 2, currentT, fireT).tofloat() / 10.0; pAni.setImageRateFromOriginal(sizeRate, sizeRate); pAni.setAutoLayerWorkAnimationAddSizeRate(sizeRate); sq_setCurrentAxisPos(obj, 0, X1); sq_setCurrentAxisPos(obj, 1, Y1); } else{ sq_SendDestroyPacketPassiveObject(obj); } break; } break; } break; case 76://spiritdarkhigher break; case 77://spiritlighthigher break; case 78://spiritwaterhigher switch(subtype){ case 11: switch(state){ case 20: case 21: if(obj.getZPos() <= 0){ obj.addSetStatePacket(22, null, STATE_PRIORITY_AUTO, false, ""); } break; } break; case 10: switch(state){ case 21: local currentT = sq_GetObjectTime(obj);;//?嚙踝蕭?? local fireT = 3000;//??? local srcX = obj.getVar("move").get_vector(0); local MoveX = obj.getVar("move").get_vector(1); local v = sq_GetUniformVelocity(0, MoveX, currentT, fireT); local dstX = sq_GetDistancePos(srcX, obj.getDirection(), v); if(sqrChr.isMovablePos(dstX, obj.getYPos())){ sq_setCurrentAxisPos(obj, 0, dstX); } else{ obj.getVar("move").set_vector(0,obj.getXPos()); obj.getVar("move").set_vector(1,0); } break; } break; } break; case 79://spiritfirehigher switch(subtype){ case 61: switch(state){ case 20: case 21: case 22: local sub = obj.getVar("sub").get_vector(0); local sub_all = obj.getVar("sub").get_vector(1); local parentObj = sq_GetCNRDObjectToActiveObject(obj.getVar("parentObj").get_obj_vector(0)); if(parentObj){ local base100Angle = (36000 / sub_all) * sub; local currentT = sq_GetObjectTime(obj); local currentSpeedRate = 1.0; local defaultRoundTime = 960; local radius = 125; local baseX = parentObj.getXPos(); local baseZ = parentObj.getYPos(); local current100Angle = (base100Angle + (36000 * currentSpeedRate * currentT / defaultRoundTime)) % 36000; local angle = (current100Angle.tofloat() / 100.0); local disMovLen = radius * sq_CosTable(angle.tointeger()); local mov_x = sq_GetDistancePos(baseX, ENUM_DIRECTION_LEFT, disMovLen.tointeger()); local axisMagnifyRate = 125 * 0.33; local upMovLen = radius * sq_SinTable(angle.tointeger()) * axisMagnifyRate / 100; local mov_y = baseZ + upMovLen.tointeger(); sq_setCurrentAxisPos(obj, 0, mov_x); sq_setCurrentAxisPos(obj, 1, mov_y); //sq_setCurrentAxisPos(obj, 2, parentObj.getZPos()); } else{ sq_SendDestroyPacketPassiveObject(obj); } break; } break; } break; case 80://babydragon break; case 82://casillas break; case 118://sandorex break; case 119://heilrom break; case 120://spiritfireex break; case 121://kruta break; case 122://ramos switch(subtype){ case 41: switch(state){ case 20: local pAni = obj.getCurrentAnimation(); local currentT = sq_GetCurrentTime(pAni); local fireT = pAni.getDelaySum(false); local srcX = obj.getVar("move").get_vector(0); local MoveX = obj.getVar("move").get_vector(1); local v = sq_GetAccel(0, MoveX, currentT, fireT, false); local dstX = sq_GetDistancePos(srcX, obj.getDirection(), v); sq_setCurrentAxisPos(obj, 0, dstX); break; } break; case 200: switch(state){ case 21: local pAni = obj.getCurrentAnimation(); local currentT = sq_GetCurrentTime(pAni); local fireT = 1000; local srcX = obj.getVar("move").get_vector(0); local MoveX = obj.getVar("move").get_vector(1); local v = sq_GetAccel(0, MoveX, currentT, fireT, true); local dstX = sq_GetDistancePos(srcX, obj.getDirection(), v); if(sqrChr.isMovablePos(dstX,obj.getYPos())) sq_setCurrentAxisPos(obj, 0, dstX); if(currentT > fireT) obj.addSetStatePacket(22, null, STATE_PRIORITY_AUTO, false, ""); break; } break; } break; case SKILL_BYKK_SUMMONSPIRITCOMMON: break; case SKILL_BYKK_MOONSHADOW: switch(subtype){ case 1: switch(state){ case 20: case 21: case 22: local loadSlot = sqrChr.sq_GetSkillLoad(SKILL_BYKK_MOONSHADOW); if(loadSlot){ local attacknumber = loadSlot.getRemainLoadNumber(); if(attacknumber <= 0){ obj.addSetStatePacket(23, null, STATE_PRIORITY_AUTO, false, ""); return; } } else{ obj.addSetStatePacket(23, null, STATE_PRIORITY_AUTO, false, ""); } local time = sq_GetObjectTime(obj); if(time >= obj.getVar("custom").getInt(0)){ obj.addSetStatePacket(23, null, STATE_PRIORITY_AUTO, false, ""); return; } break; } break; } break; case 150: switch(subtype){ case 1: if(sq_GetObjectTime(obj) >= 5000) sq_SendDestroyPacketPassiveObject(obj); break; } break; } } function onAttack_po_summoners(obj, damager, boundingBox, isStuck) { if(!obj) return 0; //enableClearDeadEnemies(obj, damager); local sqrChr = sq_GetCNRDObjectToSQRCharacter(obj.getTopCharacter()); local skillIndex = obj.getVar("skillIndex").get_vector(0); local subtype = obj.getVar("subtype").get_vector(0); local state = obj.getVar("state").get_vector(0); switch(skillIndex){ case 25://hodor switch(subtype){ case 4: case 5: case 6: if(obj.getVar("custom").getInt(10) < 1) sq_SendDestroyPacketPassiveObject(obj); break; case 7: switch(state){ case 20: obj.addSetStatePacket(23, null, STATE_PRIORITY_AUTO, false, ""); break; } break; } break; case 44://sandor break; case 45://auxo switch(subtype){ case 3: local skill_level = sqrChr.sq_GetSkillLevel(45); local level = 40 + skill_level * 2; local prob = sq_GetLevelData(sqrChr, 45, 19, skill_level); local time = sq_GetLevelData(sqrChr, 45, 21, skill_level); sq_sendSetActiveStatusPacket(damager, sqrChr, ACTIVESTATUS_CONFUSE, prob.tofloat(), level.tointeger(), false, time.tointeger()); break; } break; case 46://luis switch(subtype){ case 3: sq_SendDestroyPacketPassiveObject(obj); break; } break; case 47://echeverra break; case 76://spiritdarkhigher switch(subtype){ case 61: switch(state){ case 21: local appendagePath = "character/mage/k_k_made/appendage/aptomonster/debuff/ap_holdedmonster.nut"; if(!CNSquirrelAppendage.sq_IsAppendAppendage(damager, appendagePath)){ local MasterAppendage = CNSquirrelAppendage.sq_AppendAppendage(damager, obj, 128, false, appendagePath, true); if(MasterAppendage){ sq_HoldAndDelayDie(damager, obj, true, false, false, 100, 500, ENUM_DIRECTION_NEUTRAL , MasterAppendage); local validT = MasterAppendage.getAppendageInfo() local time = obj.getVar("time").get_vector(0); validT.setValidTime(time); } } break; } break; } break; case 77://spiritlighthigher break; case 78://spiritwaterhigher switch(subtype){ case 3: case 11: switch(state){ case 20: case 21: obj.sq_RemoveMoveParticle(); obj.addSetStatePacket(22, null, STATE_PRIORITY_AUTO, false, ""); if(subtype == 3) sq_AddDrawOnlyAniFromParent(obj,"passiveobject/madeby_k_k/animation/spirit/waterhigherspirit/element_water_ice_spear_exp_dodge.ani",0,0,0); break; } break; case 10: if(obj.getVar().getBool(0)){ obj.sq_RemoveMoveParticle(); obj.sq_SetMoveParticle("particle/ramos/targetingmove.ptl", 0.0, 0.0); sq_SetSpeedToMoveParticle(obj,0,50); obj.getVar().setBool(0,false); } break; } break; case 79://spiritfirehigher switch(subtype){ case 31: case 32: case 33: local eclipsehive_bonus = sqrChr.getVar("eclipsehive_bonus").getInt(10).tofloat() / 100.0; local totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONSPIRITFIREHIGHER, SKILL_BYKK_SUMMONSPIRITFIREHIGHER, 24, eclipsehive_bonus) + 100; local sizeRate = 110; sq_BinaryStartWrite(); sq_BinaryWriteWord(sizeRate); sq_BinaryWriteWord(totalDamage); sq_SendCreatePassiveObjectPacketPos(sqrChr, 24281, 0, damager.getXPos(), damager.getYPos() + 1, sq_GetCenterZPos(boundingBox)); break; } break; case 80://babydragon switch(subtype){ case 3: sq_CreateParticle("passiveobject/common/particle/fireexplosionparticle1.ptl", obj, 0, 0, 0, true, 30, 0, 1); sq_CreateParticle("passiveobject/common/particle/fireexplosionparticle2.ptl", obj, 0, 0, 0, true, 30, 0, 1); sq_CreateParticle("passiveobject/common/particle/fireexplosionparticle3.ptl", obj, 0, 0, 0, true, 30, 0, 1); sq_CreateParticle("passiveobject/common/particle/fireexplosionparticle4.ptl", obj, 0, 0, 0, true, 30, 0, 1); case 5: if(obj.getVar("custom").getInt(10) > 0) break; sq_SendDestroyPacketPassiveObject(obj); break; } break; case 82://casillas switch(subtype){ case 100: if(damager && damager.isObjectType(OBJECTTYPE_ACTIVE)){ local activeObj = sq_GetCNRDObjectToActiveObject(damager); local hpMax = activeObj.getHpMax(); local hp = activeObj.getHp(); local decrease_hp = (hpMax.tofloat() * 0.1).tointeger(); if(sq_IsBoss(activeObj)) decrease_hp = (hp.tofloat() * 0.03).tointeger(); else if(sq_IsNamed(activeObj)) decrease_hp = (hp.tofloat() * 0.06).tointeger(); // print("hpMax = "+hpMax+" + hp = "+hp+" + decrease_hp = "+decrease_hp); if(decrease_hp > hp) activeObj.setHp(0, null, true); else activeObj.setHp(hp - decrease_hp, null, true); } break; } break; case 118://sandorex break; case 119://heilrom break; case 120://spiritfireex break; case 121://kruta switch(subtype){ case 41: if(!CNSquirrelAppendage.sq_IsAppendAppendage(damager, "character/mage/k_k_made/appendage/aptomonster/debuff/ap_pulledmonster.nut")){ local appendagePath = "character/mage/k_k_made/appendage/aptomonster/debuff/ap_pulledmonster.nut"; local MasterAppendage = CNSquirrelAppendage.sq_AppendAppendage(damager, sqrChr, -1, false, appendagePath, true); if(MasterAppendage){ sq_AccelMoveToAppendageForce(damager, sqrChr, obj, 325, 0, 0, 400, true, MasterAppendage, false); local validT = MasterAppendage.getAppendageInfo() validT.setValidTime(700); } } break; } break; case 122://ramos switch(subtype){ case 5: if(!CNSquirrelAppendage.sq_IsAppendAppendage(damager, "character/mage/k_k_made/appendage/aptomonster/debuff/ap_pulledmonster.nut")){ local appendagePath = "character/mage/k_k_made/appendage/aptomonster/debuff/ap_pulledmonster.nut"; local MasterAppendage = CNSquirrelAppendage.sq_AppendAppendage(damager, sqrChr, -1, false, appendagePath, true); if(MasterAppendage){ sq_AccelMoveToAppendageForce(damager, sqrChr, obj, 200, 0, 0, 800, true, MasterAppendage, false); local validT = MasterAppendage.getAppendageInfo() validT.setValidTime(1000); } } sq_AddDrawOnlyAniFromParent(damager,"monster/character/mage/madeby_k_k/ramos/animation/gather/gatherhit_03.ani",0,0,sq_GetCenterZPos(boundingBox)); break; } break; case SKILL_BYKK_SUMMONSPIRITCOMMON: break; case SKILL_BYKK_MOONSHADOW: break; case 150: switch(subtype){ case 1: if(damager.isObjectType(OBJECTTYPE_ACTIVE) && damager.isInDamagableState(obj)){ local holdTime = obj.getVar("custom").getInt(1); if(holdTime == 0) holdTime = 3000; local totalDamage = obj.getVar("custom").getInt(0); createPassiveObject_k_k(obj,obj,150,2,0,0,sq_GetCenterZPos(boundingBox),totalDamage,holdTime,0,0,0); sq_SendDestroyPacketPassiveObject(obj); } break; case 2: if(damager.isObjectType(OBJECTTYPE_ACTIVE) && damager.isInDamagableState(obj)){ local apdPath = "character/mage/k_k_made/appendage/aptoemeny/ap_throwstickytrap_hold.nut"; if(CNSquirrelAppendage.sq_IsAppendAppendage(damager, apdPath)) CNSquirrelAppendage.sq_RemoveAppendage(damager, apdPath); local AddAppendage = CNSquirrelAppendage.sq_AppendAppendage(damager, obj, -1, true, apdPath, true); sq_HoldAndDelayDie(damager, obj, true, true, true, 200, 200, ENUM_DIRECTION_NEUTRAL , AddAppendage); local holdTime = obj.getVar("custom").getInt(1); AddAppendage.sq_SetValidTime(holdTime); } break; } break; } local timer = sqrChr.getVar("time").get_ct_vector(0); if(timer){ local timer_t1 = timer.Get(); if(timer_t1 > 1680){ local loadSlot = sqrChr.sq_GetSkillLoad(SKILL_BYKK_MOONSHADOW); if(loadSlot){ local attacknumber = loadSlot.getRemainLoadNumber(); if(attacknumber > 0 && skillIndex != SKILL_BYKK_MOONSHADOW && subtype != 2){ loadSlot.decreaseLoadCount(1); local totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_MOONSHADOW, -1, 10, 1.0) + 100; createPassiveObject_k_k(sqrChr,damager,SKILL_BYKK_MOONSHADOW,2,0,0,sq_GetCenterZPos(boundingBox),totalDamage,0,0,0,0); } attacknumber = loadSlot.getRemainLoadNumber(); if(attacknumber <= 0) sqrChr.sq_RemoveSkillLoad(SKILL_BYKK_MOONSHADOW); } } } return 0; } function onAfterAttack_po_summoners(obj, damager, boundingBox, isStuck) { if(!obj) return 0; local sqrChr = sq_GetCNRDObjectToSQRCharacter(obj.getTopCharacter()); local skillIndex = obj.getVar("skillIndex").get_vector(0); local subtype = obj.getVar("subtype").get_vector(0); local state = obj.getVar("state").get_vector(0); switch(skillIndex){ case 25://hodor break; case 44://sandor break; case 45://auxo break; case 46://luis break; case 47://echeverra break; case 76://spiritdarkhigher switch(subtype){ case 61: switch(state){ case 22: //嚙踝蕭? if(damager && damager.isObjectType(OBJECTTYPE_ACTIVE)){// && damager.getVar().getBool(0) == false //damager.getVar().setBool(0,true); local activeObj = sq_GetCNRDObjectToActiveObject(damager); local hpMax = activeObj.getHpMax(); local hp = activeObj.getHp(); local hp_percentage = (hp.tofloat() / hpMax.tofloat()) * 100; local killpoint = (sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONSPIRITDARKHIGHER, SKILL_BYKK_SUMMONSPIRITDARKHIGHER, 24, 1.0) + 100).tofloat(); local hide_percent = 89; if(sq_IsBoss(activeObj)){killpoint = killpoint.tofloat() / 3.0;hide_percent = 98;} else if(sq_IsNamed(activeObj)){killpoint = killpoint.tofloat() / 2.0;hide_percent = 94;} if((hp_percentage <= killpoint && hp_percentage > 0) || sq_getRandom(0,99) > hide_percent){ local group = sq_GetGroup(activeObj); local uniqueId = sq_GetUniqueId(activeObj); local z = activeObj.getObjectHeight(); createPassiveObject_k_k(sqrChr,activeObj,SKILL_BYKK_SUMMONSPIRITDARKHIGHER,63,0,1,z / 4 + 1,0,500,group,uniqueId,0); } } return; break; } break; } break; case 77://spiritlighthigher break; case 78://spiritwaterhigher break; case 79://spiritfirehigher break; case 80://babydragon break; case 82://casillas // if(damager && damager.isObjectType(OBJECTTYPE_ACTIVE)){ // local activeObj = sq_GetCNRDObjectToActiveObject(damager); // if(activeObj.getHp() <= 0) activeObj.setValid(false); // } break; case 118://sandorex break; case 119://heilrom break; case 120://spiritfireex break; case 121://kruta break; case 122://ramos break; case SKILL_BYKK_SUMMONSPIRITCOMMON: break; case SKILL_BYKK_MOONSHADOW: break; } return 0; } function startSkillCoolTime_mage_bykk(obj, skillIndex, skillLevel, currentCoolTime) { local nct = currentCoolTime; if((CNSquirrelAppendage.sq_IsAppendAppendage(obj, "character/mage/elementalmaster_bykk/ap/ap_magicaltempoup.nut") || CNSquirrelAppendage.sq_IsAppendAppendage(obj, "character/mage/witch_skill_bykk/passiveskill/ap_magicaltempoup.nut")) && nct > 0){ local value1 = sq_GetLevelData(obj, 2, 1, sq_GetSkillLevel(obj, 2)); local mightyrune_level = obj.sq_GetSkillLevel(ELEMENTALMASTER_SKILL_MIGHTYRUNE); if(mightyrune_level > 0){ local add_Rate = sq_GetLevelData(obj, ELEMENTALMASTER_SKILL_MIGHTYRUNE, 4, mightyrune_level); value1 = value1 * (1000 + add_Rate) / 1000; } // print("value1 = "+value1); nct = nct * (1000 - value1) / 1000; } // print("nct = "+nct); local newCoolTime = 0; switch(skillIndex){ case SKILL_BYKK_BLACKLUNATIC: return 40000; break; // case 45: // if(nct < 3500) return 3500; // else return nct; // break; case 46: if(obj.getVar("eclipsehive_select").getBool(0) && sq_GetIntData(obj, SKILL_BYKK_BLACKLUNATIC, 51) > 0){ newCoolTime = nct * 50 / 100; return newCoolTime; } else return nct; break; case 49: if(obj.getVar("eclipsehive_select").getBool(0)){ local decreaseRate = 0; if(sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 37) > 0) decreaseRate = decreaseRate - 10; if(sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 38) > 0) decreaseRate = decreaseRate - 10; if(decreaseRate < 0){ newCoolTime = nct * (100 + decreaseRate) / 100; return newCoolTime; } else return nct; } else return nct; break; case 2: if(currentCoolTime < 40000) return 40000; break; case SKILL_BYKK_CHASERLAUNCH: newCoolTime = 100; if(sq_isPVPMode()) newCoolTime = 1000; // switch(obj.getState()){ // case SKILL_BYKK_DRAGONSPEAR: // newCoolTime = newCoolTime - sq_GetLevelData(obj, SKILL_BYKK_DRAGONSPEAR, 10, sq_GetSkillLevel(obj, SKILL_BYKK_DRAGONSPEAR)); // break; // case SKILL_BYKK_RANDOMPIERCESTRIKE: // newCoolTime = newCoolTime - sq_GetLevelData(obj, SKILL_BYKK_RANDOMPIERCESTRIKE, 9, sq_GetSkillLevel(obj, SKILL_BYKK_RANDOMPIERCESTRIKE)); // break; // case STATE_BYKK_RANDOMPIERCESTRIKEEX: // newCoolTime = newCoolTime - sq_GetLevelData(obj, SKILL_BYKK_RANDOMPIERCESTRIKEEX, 6, sq_GetSkillLevel(obj, SKILL_BYKK_RANDOMPIERCESTRIKEEX)); // break; // } // print("newCoolTime = "+newCoolTime); return newCoolTime; break; case SKILL_BYKK_CHASERSEXPLOSION: return nct; break; default: if(sq_getGrowType(obj) == 3) return currentCoolTime; else return nct; break; } } /////////////////////////summoner function proc_appendage_summonerwait(appendage) { if (!appendage) return; local parentObj = appendage.getParent(); if(!parentObj || parentObj.getState() == STATE_DIE) { appendage.setValid(false); return; } local monster_Name = ["SandorObj","AuxoObj","AuxooldObj","LuisObj","EcheverraObj","DarkhigherspiritObj","LighthigherspiritObj","WaterhigherspiritObj","FirehigherspiritObj","BabydragonObj","KrutaObj","HeilromObj","CassillasObj","HodorObj","RamosObj"]; for(local i = 0; i < monster_Name.len(); i++){ local monster_num = parentObj.getVar(monster_Name[i]).get_obj_vector_size(); if(monster_num > 0){ for(local ui = 0; ui < monster_num; ui++){ local monsterObj = sq_GetCNRDObjectToActiveObject(parentObj.getVar(monster_Name[i]).get_obj_vector(ui)); if(!CNSquirrelAppendage.sq_IsAppendAppendage(monsterObj, "character/mage/appendage/kks_ap/ap_summonmonsterwait.nut")){ local AddAppendage = CNSquirrelAppendage.sq_AppendAppendage(monsterObj, parentObj, 199, false, "character/mage/appendage/kks_ap/ap_summonmonsterwait.nut", true); } } } } } function onEnd_appendage_summonerwait(appendage) { if (!appendage) return; local parentObj = appendage.getParent(); local monster_Name = ["SandorObj","AuxoObj","AuxooldObj","LuisObj","EcheverraObj","DarkhigherspiritObj","LighthigherspiritObj","WaterhigherspiritObj","FirehigherspiritObj","BabydragonObj","KrutaObj","HeilromObj","CassillasObj","HodorObj","RamosObj"]; for(local i = 0; i < monster_Name.len(); i++){ local monster_num = parentObj.getVar(monster_Name[i]).get_obj_vector_size(); if(monster_num > 0){ for(local ui = 0; ui < monster_num; ui++){ local monsterObj = sq_GetCNRDObjectToActiveObject(parentObj.getVar(monster_Name[i]).get_obj_vector(ui)); if(CNSquirrelAppendage.sq_IsAppendAppendage(monsterObj, "character/mage/appendage/kks_ap/ap_summonmonsterwait.nut")){ CNSquirrelAppendage.sq_RemoveAppendage(monsterObj, "character/mage/appendage/kks_ap/ap_summonmonsterwait.nut"); } } } } } function onSourceKeyFrameFlag_appendage_auxo_bykk(appendage,flagIndex) { if(!appendage) return; local parentObj = appendage.getParent(); if(!parentObj){ appendage.setValid(false); return true; } local sqrChr = sq_GetCNRDObjectToSQRCharacter(appendage.getVar("sqrChr").get_obj_vector(0)); if(!sqrChr) return true; // if(!sq_IsMyControlObject(sqrChr)) return true; local eclipsehive_bonus = sqrChr.getVar("eclipsehive_bonus").getInt(10).tofloat() / 100.0; local eclipsehive_bonus2 = sqrChr.getVar("eclipsehive_bonus").getInt(11).tofloat() / 100.0; switch(flagIndex){ case 101://嚙踝蕭嚙踝蕭嚙踝蕭嚙踝蕭嚙踝蕭? local totalDamage = sq_GetBonusRateWithPassive(sqrChr, 45, 45, 7, eclipsehive_bonus) + 100; createPassiveObject_k_k(sqrChr,parentObj,45,1,0,0,0,totalDamage,0,0,0,0); break; case 201://?嚙踝蕭嚙踝蕭嚙踝蕭嚙踝蕭? local targetObj = sq_GetCNRDObjectToActiveObject(parentObj.getVar("targetObj").get_obj_vector(0)); if(targetObj){ local totalDamage = sq_GetBonusRateWithPassive(sqrChr, 45, 45, 9, eclipsehive_bonus) + 100; createPassiveObject_k_k(sqrChr,targetObj,45,2,0,0,0,totalDamage,0,0,0,0); } break; case 301://堋?嚙踝蕭嚙踝蕭?堋? local totalDamage = sq_GetBonusRateWithPassive(sqrChr, 45, 45, 11, eclipsehive_bonus) + 100; createPassiveObject_k_k(sqrChr,parentObj,45,3,0,0,0,totalDamage,0,0,0,0); break; case 401://嚙踝蕭嚙踝蕭 local sizeRate = 100; if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 21) > 0){ sizeRate = sizeRate + 20; } if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 22) > 0){ sizeRate = sizeRate + 20; eclipsehive_bonus2 = eclipsehive_bonus2 + 0.1; } if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 23) > 0){ sizeRate = sizeRate + 30; eclipsehive_bonus2 = eclipsehive_bonus2 + 0.1; } local totalDamage = sq_GetBonusRateWithPassive(sqrChr, 45, 45, 23, eclipsehive_bonus2) + 100; if(appendage.getVar("bool").getBool(10)){ appendage.getVar("bool").setBool(10, false); totalDamage = totalDamage * 50 / 100; } if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 23) > 0 && sqrChr.getVar("eclipsehive_select").getBool(0) && parentObj.getVar("ronghe_bool").getBool(0)){ local number = sqrChr.getVar("AuxoObj").get_obj_vector_size(); local tz_number = 0; local max_number = 9; if(number > max_number) {tz_number = number - max_number; number = max_number;} print("totalDamage_before = "+totalDamage); totalDamage = (totalDamage * (number.tofloat() + tz_number.tofloat() / 2.5)).tointeger(); print("totalDamage_after = "+totalDamage); parentObj.getVar("ronghe_bool").setBool(0, false); } createPassiveObject_k_k(sqrChr,parentObj,45,4,50,0,0,totalDamage,sizeRate,0,0,0); break; case 501://嚙踝蕭嚙踝蕭嚙? local targetObj = sq_GetCNRDObjectToActiveObject(parentObj.getVar("targetObj").get_obj_vector(0)); if(targetObj){ local yPos = targetObj.getYPos(); local xPos = sq_GetDistancePos(targetObj.getXPos(), parentObj.getDirection(), -50); sq_MoveToNearMovablePos(parentObj, xPos, yPos, 0, xPos, yPos, 0, 100, -1, 5); } break; case 502://嚙踝蕭嚙踝蕭嚙踝蕭嚙踝蕭嚙踝蕭 appendage.getVar("bool").setBool(1, true); //monsterattack_ksk(parentObj,0); break; case 503://嚙踝蕭嚙踝蕭嚙踝蕭嚙踝蕭嚙踝蕭 local totalDamage = sq_GetBonusRateWithPassive(sqrChr, 45, 45, 9, eclipsehive_bonus) + 100; createPassiveObject_k_k(sqrChr,parentObj,45,100,0,0,0,totalDamage,0,0,0,0); break; case 1001://?嚙踝蕭嚙? local direction = sqrChr.getDirection(); local yPos = sqrChr.getYPos(); local xPos = sq_GetDistancePos(sqrChr.getXPos(), sqrChr.getDirection(), 50); sq_MoveToNearMovablePos(parentObj, xPos, yPos, 0, xPos, yPos, 0, 100, -1, 5); sq_SetCurrentDirection(parentObj, direction); if(!sq_GetSkill(sqrChr, SKILL_BYKK_SUMMONAUXO).isInCoolTime()) sqrChr.startSkillCoolTime(SKILL_BYKK_SUMMONAUXO, sq_GetSkillLevel(sqrChr, SKILL_BYKK_SUMMONAUXO), -1); break; case 1002://?嚙踝蕭嚙踝蕭嚙踝蕭嚙踝蕭 local pIntVec = sq_GetGlobalIntVector(); sq_IntVectorClear(pIntVec); sq_IntVectorPush(pIntVec, 3); sq_AddSetStatePacketActiveObject(parentObj, 8, pIntVec, STATE_PRIORITY_USER); break; } return true; } function proc_appendage_auxo_bykk(appendage) { if (!appendage) return; local parentObj = appendage.getParent(); local sqrChr = sq_GetCNRDObjectToSQRCharacter(appendage.getVar("sqrChr").get_obj_vector(0)); if((!sqrChr || sqrChr.getState() == STATE_DIE) || (!parentObj || parentObj.getState() == STATE_DIE)){ appendage.setValid(false); return; } if(!sq_IsMyControlObject(sqrChr)) return; local t_01 = appendage.getVar("skill_1").get_timer_vector(0); local t_02 = appendage.getVar("skill_2").get_timer_vector(0); local t_03 = appendage.getVar("skill_3").get_timer_vector(0); local t_04 = appendage.getVar("skill_4").get_timer_vector(0); local currentT = appendage.getTimer().Get(); local state = parentObj.getState(); local attackIndex = parentObj.getAttackIndex(); switch(state){ case STATE_STAND: if(sqrChr.getVar("summonmonsterwait").getBool(0)) monsterattack_ksk(parentObj,4); local timer = appendage.getVar("atktime").get_ct_vector(0); local currentTT = timer.Get(); local tiaozheng = 0; if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 23) > 0) tiaozheng = 200; if(currentTT < ATK_TIME - tiaozheng) return; timer.Reset(); timer.Start(10000,0); local targetObj = sq_FindTarget( parentObj, 0, 1000, 800, 350); if(targetObj){ parentObj.getVar("targetObj").clear_obj_vector(); parentObj.getVar("targetObj").push_obj_vector(targetObj); local skillt = [t_04,t_03,t_02,t_01]; local attackIndex = [3,2,1,0]; local distanceX = [80,60,500,60]; local distanceXmin = [30,0,0,0]; local distanceY = [10,10,200,10]; for(local i = 0;i < skillt.len(); i++){ if(skillt[i] && skillt[i].isOnEvent(currentT)){ if(sq_IsMyControlObject(parentObj)){ if(sq_Abs(targetObj.getXPos() - parentObj.getXPos()) <= distanceX[i] && sq_Abs(targetObj.getXPos() - parentObj.getXPos()) >= distanceXmin[i] && sq_Abs(targetObj.getYPos() - parentObj.getYPos()) <= distanceY[i]){ if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 0) < 1 && i == 0) return; if(i == 0) appendage.getVar("bool").setBool(10, true); monsterattack_ksk(parentObj,attackIndex[i]); return; } else if(i == 1 || i == 3){ local prob = 69; if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 23) > 0) prob = 20; if(sq_getRandom(0,99) >= prob && appendage.getVar("bool").getBool(0) == true){ appendage.getVar("bool").setBool(0,false); monsterattack_ksk(parentObj,6); return; } } } } } } else{ targetObj = sq_FindTarget( parentObj, -1000, 1000, 800, 350); if(targetObj){ sq_SetCurrentDirection(parentObj, sq_GetOppositeDirection(sq_GetDirection(parentObj))); } } break; case STATE_ATTACK: appendage.getVar("bool").setBool(0,true); if(attackIndex == 4){ if(sqrChr.getVar("summonmonsterwait").getBool(0) == false) parentObj.sendStateOnlyPacket(STATE_STAND); } else if(attackIndex == 5 && appendage.getVar("bool").getBool(1) == true){ appendage.getVar("bool").setBool(1, false); if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 23) > 0){ local ani = parentObj.getCurrentAnimation(); ani.setSpeedRate(200.0); } } break; } } function onStart_appendage_auxo_bykk(appendage) { if (!appendage) return; appendage.getVar("atktime").clear_ct_vector(); appendage.getVar("atktime").push_ct_vector(); local timer = appendage.getVar("atktime").get_ct_vector(0); timer.Reset(); timer.Start(10000,0); } function onEnd_appendage_auxo_bykk(appendage) { if (!appendage) return; local parentObj = appendage.getParent(); if(!parentObj) return; parentObj.sendDestroyPacket(true); } function onSourceKeyFrameFlag_appendage_auxoex_bykk(appendage,flagIndex) { if(!appendage) return; local parentObj = appendage.getParent(); if(!parentObj){ appendage.setValid(false); return true; } local sqrChr = sq_GetCNRDObjectToSQRCharacter(appendage.getVar("sqrChr").get_obj_vector(0)); if(!sqrChr) return true; // if(!sq_IsMyControlObject(sqrChr)) return true; local eclipsehive_bonus = sqrChr.getVar("eclipsehive_bonus").getInt(10).tofloat() / 100.0; local eclipsehive_bonus2 = sqrChr.getVar("eclipsehive_bonus").getInt(11).tofloat() / 100.0; switch(flagIndex){ case 101: local targetObj = sq_GetCNRDObjectToActiveObject(parentObj.getVar("targetObj").get_obj_vector(0)); if(targetObj){ local totalDamage = sq_GetBonusRateWithPassive(sqrChr, 45, 45, 27, eclipsehive_bonus) + 100; createPassiveObject_k_k(sqrChr,targetObj,45,11,0,0,0,totalDamage,0,0,0,0); } break; case 201: local targetObj = sq_GetCNRDObjectToActiveObject(parentObj.getVar("targetObj").get_obj_vector(0)); if(targetObj){ local totalDamage = sq_GetBonusRateWithPassive(sqrChr, 45, 45, 27, eclipsehive_bonus) + 100; createPassiveObject_k_k(sqrChr,targetObj,45,12,0,0,0,totalDamage,0,0,0,0); } break; case 301: local targetObj = sq_GetCNRDObjectToActiveObject(parentObj.getVar("targetObj").get_obj_vector(0)); if(targetObj){ local group = sq_GetGroup(targetObj),uniqueId = sq_GetUniqueId(targetObj); local totalDamage = sq_GetBonusRateWithPassive(sqrChr, 45, 45, 28, eclipsehive_bonus) + 100; createPassiveObject_k_k(sqrChr, parentObj, 45, 13, 150, 0, 50, totalDamage * 2, 20, group, uniqueId, 0); } break; case 401: local sizeRate = 100; if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 21) > 0){ sizeRate = sizeRate + 20; } if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 22) > 0){ sizeRate = sizeRate + 20; eclipsehive_bonus2 = eclipsehive_bonus2 + 0.1; } if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 23) > 0){ sizeRate = sizeRate + 30; eclipsehive_bonus2 = eclipsehive_bonus2 + 0.1; } local totalDamage = sq_GetBonusRateWithPassive(sqrChr, 45, 45, 29, eclipsehive_bonus2) + 100; if(appendage.getVar("bool").getBool(10)){ appendage.getVar("bool").setBool(10, false); totalDamage = totalDamage * 50 / 100; } if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 23) > 0 && sqrChr.getVar("eclipsehive_select").getBool(0) && parentObj.getVar("ronghe_bool").getBool(0)){ totalDamage = totalDamage * sqrChr.getVar("AuxoObj").get_obj_vector_size(); parentObj.getVar("ronghe_bool").setBool(0, false); } createPassiveObject_k_k(sqrChr,parentObj,45,14,155,-1,124,totalDamage,sizeRate,0,0,0); break; case 601: local direction = sqrChr.getDirection(); local yPos = sqrChr.getYPos(); local xPos = sq_GetDistancePos(sqrChr.getXPos(), sqrChr.getDirection(), 50); sq_MoveToNearMovablePos(parentObj, xPos, yPos, 0, xPos, yPos, 0, 100, -1, 5); sq_SetCurrentDirection(parentObj, direction); if(!sq_GetSkill(sqrChr, SKILL_BYKK_SUMMONAUXO).isInCoolTime()) sqrChr.startSkillCoolTime(SKILL_BYKK_SUMMONAUXO, sq_GetSkillLevel(sqrChr, SKILL_BYKK_SUMMONAUXO), -1); local pIntVec = sq_GetGlobalIntVector(); sq_IntVectorClear(pIntVec); sq_IntVectorPush(pIntVec, 6); sq_AddSetStatePacketActiveObject(parentObj, 8, pIntVec, STATE_PRIORITY_USER); break; case 701: local pIntVec = sq_GetGlobalIntVector(); sq_IntVectorClear(pIntVec); sq_IntVectorPush(pIntVec, 3); sq_AddSetStatePacketActiveObject(parentObj, 8, pIntVec, STATE_PRIORITY_USER); break; } return true; } function proc_appendage_auxoex_bykk(appendage) { if (!appendage) return; local parentObj = appendage.getParent(); local sqrChr = sq_GetCNRDObjectToSQRCharacter(appendage.getVar("sqrChr").get_obj_vector(0)); if((!sqrChr || sqrChr.getState() == STATE_DIE) || (!parentObj || parentObj.getState() == STATE_DIE)){ appendage.setValid(false); return; } if(!sq_IsMyControlObject(sqrChr)) return; local t_01 = appendage.getVar("skill_1").get_timer_vector(0); local t_02 = appendage.getVar("skill_2").get_timer_vector(0); local t_03 = appendage.getVar("skill_3").get_timer_vector(0); local currentT = appendage.getTimer().Get(); local state = parentObj.getState(); local attackIndex = parentObj.getAttackIndex(); switch(state){ case STATE_STAND: // appendage.getVar("speed").setBool(0,true); if(sqrChr.getVar("summonmonsterwait").getBool(0)) monsterattack_ksk(parentObj,4); local timer = appendage.getVar("atktime").get_ct_vector(0); local currentTT = timer.Get(); local tiaozheng = 0; if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 23) > 0) tiaozheng = 200; if(currentTT < ATK_TIME - tiaozheng) return; timer.Reset(); timer.Start(10000,0); local targetObj = sq_FindTarget( parentObj, 0, 1000, 800, 350); if(targetObj){ parentObj.getVar("targetObj").clear_obj_vector(); parentObj.getVar("targetObj").push_obj_vector(targetObj); local sizeRate = 1; if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 23) > 0) sizeRate = 2; local skillt = [t_03,t_02,t_01]; local attackIndex = [3,2,0]; local distanceX = [450,400 * sizeRate,400 * sizeRate]; local distanceXmin = [200,0,0]; local distanceY = [50,150,150]; for(local i = 0;i < skillt.len(); i++){ if(skillt[i] && skillt[i].isOnEvent(currentT)){ if(sq_IsMyControlObject(parentObj)){ if(sq_Abs(targetObj.getXPos() - parentObj.getXPos()) <= distanceX[i] && sq_Abs(targetObj.getXPos() - parentObj.getXPos()) >= distanceXmin[i] && sq_Abs(targetObj.getYPos() - parentObj.getYPos()) <= distanceY[i]){ if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 0) < 1 && i == 0) return; if(i == 0) appendage.getVar("bool").setBool(10, true); if(i == 2 && sq_getRandom(0,99) >= 69) attackIndex[i] = 1; monsterattack_ksk(parentObj,attackIndex[i]); return; } } } } } else{ if(sq_FindTarget( parentObj, -1000, 1000, 800, 350)) sq_SetCurrentDirection(parentObj, sq_GetOppositeDirection(sq_GetDirection(parentObj))); } break; case STATE_ATTACK: appendage.getVar("bool").setBool(0,true); if(attackIndex == 4){ if(sqrChr.getVar("summonmonsterwait").getBool(0) == false) parentObj.sendStateOnlyPacket(STATE_STAND); } // if(appendage.getVar("speed").getBool(0) == true){ // appendage.getVar("speed").setBool(0,false); // parentObj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, eclipsehive_bonus); // } break; } } function onStart_appendage_auxoex_bykk(appendage) { if (!appendage) return; appendage.getVar("atktime").clear_ct_vector(); appendage.getVar("atktime").push_ct_vector(); local timer = appendage.getVar("atktime").get_ct_vector(0); timer.Reset(); timer.Start(10000,0); } function onEnd_appendage_auxoex_bykk(appendage) { if (!appendage) return; local parentObj = appendage.getParent(); if(!parentObj) return; parentObj.sendDestroyPacket(true); } function onSourceKeyFrameFlag_appendage_babydragon_bykk(appendage,flagIndex) { if(!appendage) return; local parentObj = appendage.getParent(); if(!parentObj){ appendage.setValid(false); return true; } local sqrChr = sq_GetCNRDObjectToSQRCharacter(appendage.getVar("sqrChr").get_obj_vector(0)); if(!sqrChr) return true; // if(!sq_IsMyControlObject(sqrChr)) return true; local eclipsehive_bonus = sqrChr.getVar("eclipsehive_bonus").getInt(10).tofloat() / 100.0; local eclipsehive_bonus2 = sqrChr.getVar("eclipsehive_bonus").getInt(11).tofloat() / 100.0; switch(flagIndex){ case 101://?嚙踝蕭 local totalDamage = sq_GetBonusRateWithPassive(sqrChr, 80, 80, 7, eclipsehive_bonus) + 100; createPassiveObject_k_k(sqrChr,parentObj,80,1,0,0,0,totalDamage,0,0,0,0); break; case 201://?嚙踝蕭2 local totalDamage = sq_GetBonusRateWithPassive(sqrChr, 80, 80, 7, eclipsehive_bonus) + 100; createPassiveObject_k_k(sqrChr,parentObj,80,2,0,0,0,totalDamage,0,0,0,0); break; case 301://嚙踝蕭牊 local totalDamage = sq_GetBonusRateWithPassive(sqrChr, 80, 80, 9, eclipsehive_bonus) + 100; local sizeRate = 100; if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 28) > 0 && sqrChr.getVar("eclipsehive_select").getBool(0) == false) sizeRate = 250; createPassiveObject_k_k(sqrChr,parentObj,80,3,80,0,40,totalDamage,sizeRate,0,0,0); if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 29) > 0 && sqrChr.getVar("eclipsehive_select").getBool(0) == false) createPassiveObject_k_k(sqrChr,parentObj,80,3,100,0,40,totalDamage,sizeRate,0,0,0); break; case 401://嚙踝蕭嚙踝蕭 local xpos = 150; if(parentObj.getDirection() == ENUM_DIRECTION_LEFT) xpos = -150; local sizeRate = 100; if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 29) > 0 && sqrChr.getVar("eclipsehive_select").getBool(0) == false) sizeRate = 150; sq_CreateParticle("monster/character/mage/madeby_k_k/babydragon/particle/flamethrower.ptl", parentObj, xpos, 0, 30, true, 20, 0, 10); local totalDamage = sq_GetBonusRateWithPassive(sqrChr, 80, 80, 10, eclipsehive_bonus) + 100; createPassiveObject_k_k(sqrChr,parentObj,80,4,0,0,0,totalDamage,sizeRate,0,0,0); break; case 501://嚙踝蕭? local totalDamage = sq_GetBonusRateWithPassive(sqrChr, 80, 80, 9, eclipsehive_bonus) + 100; local etcSub = 0; local sizeRate = 100; if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 28) > 0 && sqrChr.getVar("eclipsehive_select").getBool(0) == false) sizeRate = 250; if(sq_GetBonusRateWithPassive(sqrChr, 80, 80, 11, 1.0) + 100 > 0) etcSub = 1; createPassiveObject_k_k(sqrChr,parentObj,80,5,80,0,40,totalDamage, etcSub, sizeRate,0,0); if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 29) > 0 && sqrChr.getVar("eclipsehive_select").getBool(0) == false) createPassiveObject_k_k(sqrChr,parentObj,80,5,100,0,40,totalDamage, etcSub, sizeRate,0,0); break; case 601://旓?1 local totalDamage = sq_GetBonusRateWithPassive(sqrChr, 80, 80, 18, eclipsehive_bonus2) + 100; if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 29) > 0 && sqrChr.getVar("eclipsehive_select").getBool(0) && parentObj.getVar("ronghe_bool").getBool(0)){ totalDamage = totalDamage * sqrChr.getVar("BabydragonObj").get_obj_vector_size(); parentObj.getVar("ronghe_bool").setBool(0, false); } local ani = parentObj.getCurrentAnimation(); local delay = ani.getDelaySum(0,0); local sizeRate = 100; local hittime = delay * 2; local add_bonus = 0; if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 27) > 0 && sqrChr.getVar("eclipsehive_select").getBool(0)) sizeRate = sizeRate + 10; if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 28) > 0 && sqrChr.getVar("eclipsehive_select").getBool(0)){add_bonus = add_bonus + 10; hittime = hittime * 70 /100;} if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 29) > 0 && sqrChr.getVar("eclipsehive_select").getBool(0)){sizeRate = sizeRate + 20; add_bonus = add_bonus + 20;} if(add_bonus > 0) totalDamage = totalDamage * (100 + add_bonus) / 100; if(appendage.getVar("bool").getBool(10)){ appendage.getVar("bool").setBool(10, false); totalDamage = totalDamage * 50 / 100; } createPassiveObject_k_k(sqrChr,parentObj,80,6,0,0,0,totalDamage,delay,sizeRate,hittime,0); break; case 1001://?嚙踝蕭嚙踝蕭嚙? local direction = sqrChr.getDirection(); local yPos = sqrChr.getYPos(); local xPos = sq_GetDistancePos(sqrChr.getXPos(), sqrChr.getDirection(), 50); sq_MoveToNearMovablePos(parentObj, xPos, yPos, 0, xPos, yPos, 0, 100, -1, 5); sq_SetCurrentDirection(parentObj, direction); if(!sq_GetSkill(sqrChr, SKILL_BYKK_SUMMONBABYDRAGON).isInCoolTime()) sqrChr.startSkillCoolTime(SKILL_BYKK_SUMMONBABYDRAGON, sq_GetSkillLevel(sqrChr, SKILL_BYKK_SUMMONBABYDRAGON), -1); break; case 1002://?嚙踝蕭嚙踝蕭嚙踝蕭嚙踝蕭 local attackIndex = 5; if(sqrChr.getVar("eclipsehive_select").getBool(0) && appendage.getVar("custom").getBool(0)) attackIndex = 9; local pIntVec = sq_GetGlobalIntVector(); sq_IntVectorClear(pIntVec); sq_IntVectorPush(pIntVec, attackIndex); sq_AddSetStatePacketActiveObject(parentObj, 8, pIntVec, STATE_PRIORITY_USER); break; case 10001://裁決 sq_AddDrawOnlyAniFromParent(parentObj, "passiveobject/madeby_k_k/animation/babydragon/newskill/stormbreath/astractransform_starteff05.ani", 0, 0, sq_GetObjectHeight(parentObj) / 2); local totalDamage = sq_GetBonusRateWithPassive(sqrChr, 80, 80, 9, 1.0) + 100; local group = sq_GetGroup(parentObj); local uniqueId = sq_GetUniqueId(parentObj); createPassiveObject_k_k(sqrChr,parentObj,80,11,0,0,0,totalDamage,group,uniqueId,0,0); sq_SendCreatePassiveObjectPacketPos(parentObj, 1008605, 0, 0, 0, 600); break; case 10002://嘶吼 sq_AddDrawOnlyAniFromParent(parentObj, "passiveobject/madeby_k_k/animation/babydragon/newskill/stormbreath/astractransform_starteff05.ani", 0, 0, sq_GetObjectHeight(parentObj) / 2); local totalDamage = sq_GetBonusRateWithPassive(sqrChr, 80, 80, 18, 1.0) + 100; local group = sq_GetGroup(parentObj); local uniqueId = sq_GetUniqueId(parentObj); createPassiveObject_k_k(sqrChr,parentObj,80,12,0,0,320,totalDamage,group,uniqueId,0,0); sq_SendCreatePassiveObjectPacketPos(parentObj, 1008605, 0, 0, 0, 600); break; case 10003://龍息 sq_AddDrawOnlyAniFromParent(parentObj, "passiveobject/madeby_k_k/animation/babydragon/newskill/stormbreath/astractransform_starteff05.ani", 0, 0, sq_GetObjectHeight(parentObj) / 2); local totalDamage = sq_GetBonusRateWithPassive(sqrChr, 80, 80, 9, 1.0) + 100; local group = sq_GetGroup(parentObj); local uniqueId = sq_GetUniqueId(parentObj); createPassiveObject_k_k(sqrChr,parentObj,80,13,0,0,320,totalDamage,group,uniqueId,0,0); sq_SendCreatePassiveObjectPacketPos(parentObj, 1008605, 0, 0, 0, 600); break; } return true; } function proc_appendage_babydragon_bykk(appendage) { if (!appendage) return; local parentObj = appendage.getParent(); local sqrChr = sq_GetCNRDObjectToSQRCharacter(appendage.getVar("sqrChr").get_obj_vector(0)); if((!sqrChr || sqrChr.getState() == STATE_DIE) || (!parentObj || parentObj.getState() == STATE_DIE)){ appendage.setValid(false); return; } if(!sq_IsMyControlObject(sqrChr)) return; local t_01 = appendage.getVar("skill_1").get_timer_vector(0); local t_02 = appendage.getVar("skill_2").get_timer_vector(0); local t_03 = appendage.getVar("skill_3").get_timer_vector(0); local t_04 = appendage.getVar("skill_4").get_timer_vector(0); local currentT = appendage.getTimer().Get(); local state = parentObj.getState(); local skill_level = sq_GetSkillLevel(sqrChr, 72); local attackIndex = parentObj.getAttackIndex(); switch(state){ case STATE_STAND: if(sqrChr.getVar("summonmonsterwait").getBool(0)) monsterattack_ksk(parentObj,6); local timer = appendage.getVar("atktime").get_ct_vector(0); local currentTT = timer.Get(); local balance = 0; //if(appendage.getVar("custom").getBool(0)) balance = -100; if(currentTT < ATK_TIME + balance) return; timer.Reset(); timer.Start(10000,0); local targetObj = sq_FindTarget( parentObj, 0, 1000, 800, 350); if(targetObj){ parentObj.getVar("targetObj").clear_obj_vector(); parentObj.getVar("targetObj").push_obj_vector(targetObj); local skillt = [t_04,t_03,t_02,t_01]; local attackIndex = [5,3,2,0]; local distanceX = [300,300,300,30]; local distanceXmin = [40,40,40,0]; local distanceY = [100,10,20,10]; if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 28) > 0 && sqrChr.getVar("eclipsehive_select").getBool(0) == false){ distanceX = [300,500,700,30]; distanceY = [100,40,60,30]; } for(local i = 0;i < skillt.len(); i++){ if(skillt[i] && skillt[i].isOnEvent(currentT) && sq_Abs(targetObj.getXPos() - parentObj.getXPos()) <= distanceX[i] && sq_Abs(targetObj.getXPos() - parentObj.getXPos()) >= distanceXmin[i] && sq_Abs(targetObj.getYPos() - parentObj.getYPos()) <= distanceY[i]){ if(i == 3 && sq_getRandom(0,100) >= 50) attackIndex[i] = 1; if(i == 2 && sq_getRandom(0,100) >= 50) attackIndex[i] = 4; if(sq_IsMyControlObject(parentObj)){ if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 1) < 1 && i == 0) return; if(i == 0) appendage.getVar("bool").setBool(10, true); if(appendage.getVar("custom").getBool(0)){ if(sq_getRandom(1,10000) > 6666){ monsterattack_ksk(parentObj,8 + sq_getRandom(0, 1) * 2); return; } } monsterattack_ksk(parentObj,attackIndex[i]); return; } } } } break; case STATE_ATTACK: if(attackIndex == 6){ if(sqrChr.getVar("summonmonsterwait").getBool(0) == false) parentObj.sendStateOnlyPacket(STATE_STAND); } break; } } function onStart_appendage_babydragon_bykk(appendage) { if (!appendage) return; appendage.getVar("atktime").clear_ct_vector(); appendage.getVar("atktime").push_ct_vector(); local timer = appendage.getVar("atktime").get_ct_vector(0); timer.Reset(); timer.Start(10000,0); } function onEnd_appendage_babydragon_bykk(appendage) { if (!appendage) return; local parentObj = appendage.getParent(); if(!parentObj) return; parentObj.sendDestroyPacket(true); } function onSourceKeyFrameFlag_appendage_casillas_bykk(appendage,flagIndex) { if(!appendage) return; local parentObj = appendage.getParent(); if(!parentObj){ appendage.setValid(false); return true; } local sqrChr = sq_GetCNRDObjectToSQRCharacter(appendage.getVar("sqrChr").get_obj_vector(0)); if(!sqrChr) return true; // if(!sq_IsMyControlObject(sqrChr)) return true; local eclipsehive_bonus = sqrChr.getVar("eclipsehive_bonus").getInt(10).tofloat() / 100.0; local eclipsehive_bonus2 = sqrChr.getVar("eclipsehive_bonus").getInt(11).tofloat() / 100.0; switch(flagIndex){ case 101://嚙誶g蕭?嚙踝蕭 嚙踝蕭?? local totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONCASILLAS, SKILL_BYKK_SUMMONCASILLAS, 8, eclipsehive_bonus) + 100; createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONCASILLAS,1,0,0,0,totalDamage,0,0,0,0); break; case 201://嚙誶g蕭?嚙踝蕭 嚙踝蕭?? local totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONCASILLAS, SKILL_BYKK_SUMMONCASILLAS, 9, eclipsehive_bonus) + 100; createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONCASILLAS,2,0,0,0,totalDamage,0,0,0,0); break; case 301://嚙誶g蕭?嚙踝蕭 ?嚙踝蕭? local totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONCASILLAS, SKILL_BYKK_SUMMONCASILLAS, 10, eclipsehive_bonus) + 100; local group = sq_GetGroup(parentObj); local uniqueId = sq_GetUniqueId(parentObj); createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONCASILLAS,3,0,0,0,totalDamage,group,uniqueId,0,0); break; case 401://嚙踝蕭?? 嚙踝蕭 嚙踝蕭苤?嚙踝蕭嚙踝蕭嚙踝蕭琲嚙踝蕭 local direction = sqrChr.getDirection(); local yPos = sqrChr.getYPos(); local zPos = parentObj.getZPos(); local xPos = sq_GetDistancePos(sqrChr.getXPos(), sqrChr.getDirection(), 50); sq_MoveToNearMovablePos(parentObj, xPos, yPos, zPos, xPos, yPos, zPos, 100, -1, 5); sq_SetCurrentDirection(parentObj, direction); if(!sq_GetSkill(sqrChr, SKILL_BYKK_SUMMONCASILLAS).isInCoolTime()) sqrChr.startSkillCoolTime(SKILL_BYKK_SUMMONCASILLAS, sq_GetSkillLevel(sqrChr, SKILL_BYKK_SUMMONCASILLAS), -1); break; case 402://嚙踝蕭?? 嚙踝蕭 嚙踝蕭苤?嚙踝蕭嚙?茷 monsterattack_ksk(parentObj,5); break; case 403://嚙踝蕭?? 嚙踝蕭 嚙踝蕭苤? 嚙踝蕭嚙? local direction = parentObj.getDirection(); local xPos = parentObj.getXPos(); local yPos = parentObj.getYPos(); local xPos_distance = sq_GetDistancePos(xPos, parentObj.getDirection(), 200); sq_MoveToNearMovablePos(parentObj, xPos_distance, yPos, 0, xPos, yPos, 0, 100, -1, 5); sq_SetCurrentDirection(parentObj, direction); break; case 404://嚙踝蕭?? 嚙踝蕭 嚙踝蕭苤? 嚙踝蕭嚙? local direction = parentObj.getDirection(); local xPos = parentObj.getXPos(); local yPos = parentObj.getYPos(); local xPos_distance = sq_GetDistancePos(xPos, parentObj.getDirection(), 180); sq_MoveToNearMovablePos(parentObj, xPos_distance, yPos, 0, xPos, yPos, 0, 100, -1, 5); sq_SetCurrentDirection(parentObj, direction); break; case 405://嚙踝蕭?? 嚙踝蕭 嚙踝蕭苤? 嚙踝蕭嚙? 嚙踝蕭? local direction = parentObj.getDirection(); local xPos = parentObj.getXPos(); local yPos = parentObj.getYPos(); local xPos_distance = sq_GetDistancePos(xPos, parentObj.getDirection(), 30); sq_MoveToNearMovablePos(parentObj, xPos_distance, yPos, 0, xPos, yPos, 0, 100, -1, 5); local totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONCASILLAS, SKILL_BYKK_SUMMONCASILLAS, 11, eclipsehive_bonus2) + 100; createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONCASILLAS,41,0,0,0,totalDamage,0,0,0,0); break; case 406://嚙踝蕭?? 嚙踝蕭 嚙踝蕭苤?嚙踝蕭嚙?茷 monsterattack_ksk(parentObj,6); break; case 407://嚙踝蕭?? 嚙踝蕭 嚙踝蕭苤?嚙?茷 嚙踝蕭? local pAni = parentObj.getCurrentAnimation(); local delay = pAni.getDelaySum(2, 2); local totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONCASILLAS, SKILL_BYKK_SUMMONCASILLAS, 11, eclipsehive_bonus2) + 100; createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONCASILLAS,42,0,0,0,totalDamage,delay,0,0,0); break; } return true; } function proc_appendage_casillas_bykk(appendage) { if (!appendage) return; local parentObj = appendage.getParent(); local sqrChr = sq_GetCNRDObjectToSQRCharacter(appendage.getVar("sqrChr").get_obj_vector(0)); if((!sqrChr || sqrChr.getState() == STATE_DIE) || (!parentObj || parentObj.getState() == STATE_DIE)){ appendage.setValid(false); return; } if(!sq_IsMyControlObject(sqrChr)) return; local t_01 = appendage.getVar("skill_1").get_timer_vector(0);//嚙誶g蕭?嚙踝蕭 嚙踝蕭?? local t_02 = appendage.getVar("skill_2").get_timer_vector(0);//嚙誶g蕭?嚙踝蕭 嚙踝蕭?? local t_03 = appendage.getVar("skill_3").get_timer_vector(0);//嚙誶g蕭?嚙踝蕭 ?嚙踝蕭? local t_04 = appendage.getVar("skill_4").get_timer_vector(0);//葀?嚙踝蕭? local currentT = appendage.getTimer().Get(); local state = parentObj.getState(); local attackIndex = parentObj.getAttackIndex(); switch(state){ case STATE_STAND: // appendage.getVar("speed").setBool(0,true); if(sqrChr.getVar("summonmonsterwait").getBool(0)) monsterattack_ksk(parentObj,3); local timer = appendage.getVar("atktime").get_ct_vector(0); local currentTT = timer.Get(); if(currentTT < ATK_TIME) return; timer.Reset(); timer.Start(10000,0); if(t_04 && t_04.isOnEvent(currentT) == true){ local objectManager = sqrChr.getObjectManager(); local objectNumber = objectManager.getCollisionObjectNumber(); for(local i = 0; i < objectNumber; i++){ local targetObj = objectManager.getCollisionObject(i); if(targetObj && targetObj.isObjectType(OBJECTTYPE_ACTIVE) && targetObj.isEnemy(sqrChr) && !CNSquirrelAppendage.sq_IsAppendAppendage(targetObj, "character/mage/k_k_made/appendage/aptomonster/skill_ap/ap_casillas_skill.nut")){ local AddAppendage = CNSquirrelAppendage.sq_AppendAppendage(targetObj, sqrChr, -1, false, "character/mage/k_k_made/appendage/aptomonster/skill_ap/ap_casillas_skill.nut", true); targetObj.getVar("casillasatck").clear_vector(); targetObj.getVar("casillasatck").push_vector(0); } } } local targetObj = sq_FindTarget( parentObj, 0, 1000, 800, 350); if(targetObj){ parentObj.getVar("targetObj").clear_obj_vector(); parentObj.getVar("targetObj").push_obj_vector(targetObj); local skillt = [t_03,t_02,t_01]; local attackIndex = [2,1,0]; local distanceX = [300,200,200]; local distanceXmin = [0,0,0]; local distanceY = [30,30,30]; for(local i = 0;i < skillt.len(); i++){ if(skillt[i] && skillt[i].isOnEvent(currentT)){ if(sq_IsMyControlObject(parentObj)){ if(sq_Abs(targetObj.getXPos() - parentObj.getXPos()) <= distanceX[i] && sq_Abs(targetObj.getXPos() - parentObj.getXPos()) >= distanceXmin[i] && sq_Abs(targetObj.getYPos() - parentObj.getYPos()) <= distanceY[i]){ monsterattack_ksk(parentObj,attackIndex[i]); if(attackIndex[i] == 2){ parentObj.getVar("move").set_vector(0,parentObj.getXPos()); parentObj.getVar("move").set_vector(1,150); } return; } } } } } else{ if(sq_FindTarget( parentObj, -1000, 1000, 800, 350)) sq_SetCurrentDirection(parentObj, sq_GetOppositeDirection(sq_GetDirection(parentObj))); } break; case STATE_ATTACK: switch(attackIndex){ case 2: local pAni = parentObj.getCurrentAnimation(); local currentT = sq_GetCurrentTime(pAni); local frameIndex = sq_GetAnimationFrameIndex(pAni); local fireT = pAni.getDelaySum(0, 7); local srcX = parentObj.getVar("move").get_vector(0); local MoveX = parentObj.getVar("move").get_vector(1); local v = sq_GetAccel(0, MoveX, currentT, fireT, false); local dstX = sq_GetDistancePos(srcX, parentObj.getDirection(), v); if(frameIndex >= 4 && frameIndex <= 7){ if(parentObj.isMovablePos(dstX,parentObj.getYPos())) sq_setCurrentAxisPos(parentObj, 0, dstX); } break; case 3: if(sqrChr.getVar("summonmonsterwait").getBool(0) == false) parentObj.sendStateOnlyPacket(STATE_STAND); break; } break; } } function onStart_appendage_casillas_bykk(appendage) { if (!appendage) return; appendage.getVar("atktime").clear_ct_vector(); appendage.getVar("atktime").push_ct_vector(); local timer = appendage.getVar("atktime").get_ct_vector(0); timer.Reset(); timer.Start(10000,0); } function onEnd_appendage_casillas_bykk(appendage) { if (!appendage) return; local parentObj = appendage.getParent(); if(!parentObj) return; parentObj.sendDestroyPacket(true); } function onSourceKeyFrameFlag_appendage_darkhigherspirit_bykk(appendage,flagIndex) { if(!appendage) return; local parentObj = appendage.getParent(); if(!parentObj){ appendage.setValid(false); return true; } local sqrChr = sq_GetCNRDObjectToSQRCharacter(appendage.getVar("sqrChr").get_obj_vector(0)); if(!sqrChr) return true; // if(!sq_IsMyControlObject(sqrChr)) return true; local eclipsehive_bonus = sqrChr.getVar("eclipsehive_bonus").getInt(10).tofloat() / 100.0; local eclipsehive_bonus2 = sqrChr.getVar("eclipsehive_bonus").getInt(11).tofloat() / 100.0; if(sqrChr.getVar("eclipsehive_select").getBool(0) == true){ local add_bonus = 0.0; if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 24) > 0) add_bonus = add_bonus + 10.0; if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 25) > 0) add_bonus = add_bonus + 10.0; if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 26) > 0) add_bonus = add_bonus + 20.0; if(add_bonus > 0) eclipsehive_bonus2 = eclipsehive_bonus2 +add_bonus / 100.0 } switch(flagIndex){ case 101://嚙踝蕭嚙踝蕭?嚙踝蕭?? local totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONSPIRITDARKHIGHER, SKILL_BYKK_SUMMONSPIRITDARKHIGHER, 6, eclipsehive_bonus) + 100; createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONSPIRITDARKHIGHER,1,0,0,0,totalDamage,0,0,0,0); break; case 201://嚙踝蕭嚙踝蕭?嚙踝蕭嚙踝蕭? local totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONSPIRITDARKHIGHER, SKILL_BYKK_SUMMONSPIRITDARKHIGHER, 7, eclipsehive_bonus) + 100; createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONSPIRITDARKHIGHER,2,0,0,0,totalDamage,0,0,0,0); break; case 301://嚙踝蕭嚙踝蕭? local totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONSPIRITDARKHIGHER, SKILL_BYKK_SUMMONSPIRITDARKHIGHER, 19, eclipsehive_bonus) + 100; local time = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONSPIRITDARKHIGHER, SKILL_BYKK_SUMMONSPIRITDARKHIGHER, 18, eclipsehive_bonus) + 100; createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONSPIRITDARKHIGHER,3,150,0,0,totalDamage,time,0,0,0); break; case 401://嚙踝蕭? local totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONSPIRITDARKHIGHER, SKILL_BYKK_SUMMONSPIRITDARKHIGHER, 19, eclipsehive_bonus) + 100; local time = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONSPIRITDARKHIGHER, SKILL_BYKK_SUMMONSPIRITDARKHIGHER, 18, eclipsehive_bonus) + 100; local sub = 1; if(parentObj.getVar("skill").getBool(0) == true){ totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONSPIRITDARKHIGHER, SKILL_BYKK_SUMMONSPIRITDARKHIGHER, 20, eclipsehive_bonus2) + 100; time = 3500; sub = 2; } createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONSPIRITDARKHIGHER,4,150,0,0,totalDamage,time,sub,0,0); parentObj.getVar("skill").setBool(0, false); break; case 601://晬嚙? local totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONSPIRITDARKHIGHER, SKILL_BYKK_SUMMONSPIRITDARKHIGHER, 23, 1.0) + 100; createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONSPIRITDARKHIGHER,62,150,-1,-1,0,3000,0,0,0); createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONSPIRITDARKHIGHER,61,150,0,0,totalDamage,3000,0,0,0); break; case 1001://?嚙踝蕭嚙踝蕭嚙? local direction = sqrChr.getDirection(); local yPos = sqrChr.getYPos(); local zPos = parentObj.getZPos(); local xPos = sq_GetDistancePos(sqrChr.getXPos(), sqrChr.getDirection(), 50); sq_MoveToNearMovablePos(parentObj, xPos, yPos, zPos, xPos, yPos, zPos, 100, -1, 5); sq_SetCurrentDirection(parentObj, direction); if(!sq_GetSkill(sqrChr, SKILL_BYKK_SUMMONSPIRITDARKHIGHER).isInCoolTime()) sqrChr.startSkillCoolTime(SKILL_BYKK_SUMMONSPIRITDARKHIGHER, sq_GetSkillLevel(sqrChr, SKILL_BYKK_SUMMONSPIRITDARKHIGHER), -1); break; case 1002://?嚙踝蕭嚙踝蕭嚙踝蕭嚙踝蕭 parentObj.getVar("skill").setBool(0, true); monsterattack_ksk(parentObj,3); break; } return true; } function proc_appendage_darkhigherspirit_bykk(appendage) { if (!appendage) return; local parentObj = appendage.getParent(); local sqrChr = sq_GetCNRDObjectToSQRCharacter(appendage.getVar("sqrChr").get_obj_vector(0)); if((!sqrChr || sqrChr.getState() == STATE_DIE) || (!parentObj || parentObj.getState() == STATE_DIE)){ appendage.setValid(false); return; } if(!sq_IsMyControlObject(sqrChr)) return; local t_01 = appendage.getVar("skill_1").get_timer_vector(0);//嚙踝蕭嚙踝蕭?嚙踝蕭?? local t_02 = appendage.getVar("skill_2").get_timer_vector(0);//嚙踝蕭嚙踝蕭?嚙踝蕭嚙踝蕭? local t_03 = appendage.getVar("skill_3").get_timer_vector(0);//嚙踝蕭嚙踝蕭? local t_04 = appendage.getVar("skill_4").get_timer_vector(0);//嚙踝蕭? local currentT = appendage.getTimer().Get(); local state = parentObj.getState(); local attackIndex = parentObj.getAttackIndex(); switch(state){ case STATE_STAND: if(sqrChr.getVar("summonmonsterwait").getBool(0)) monsterattack_ksk(parentObj,5); local timer = appendage.getVar("atktime").get_ct_vector(0); local currentTT = timer.Get(); if(currentTT < ATK_TIME) return; timer.Reset(); timer.Start(10000,0); local grant_timer = parentObj.getVar("grant").get_ct_vector(0); if(grant_timer){ local grant_time = grant_timer.Get(); if(grant_timer && grant_time >= 4000 + sq_getRandom(0,4000) && sq_FindTarget( parentObj, 0, 200, 50, 200)){ grant_timer.Reset(); grant_timer.Start(10000,0); monsterattack_ksk(parentObj,6); return; } } local targetObj = sq_FindTarget( parentObj, 0, 1000, 800, 350); if(targetObj){ parentObj.getVar("targetObj").clear_obj_vector(); parentObj.getVar("targetObj").push_obj_vector(targetObj); local skillt = [t_04,t_03,t_02,t_01]; local attackIndex = [3,2,1,0]; local distanceX = [300,200,200,100]; local distanceXmin = [0,0,0,0]; local distanceY = [50,40,20,10]; for(local i = 0;i < skillt.len(); i++){ if(skillt[i] && skillt[i].isOnEvent(currentT)){ if(sq_IsMyControlObject(parentObj)){ if(sq_Abs(targetObj.getXPos() - parentObj.getXPos()) <= distanceX[i] && sq_Abs(targetObj.getXPos() - parentObj.getXPos()) >= distanceXmin[i] && sq_Abs(targetObj.getYPos() - parentObj.getYPos()) <= distanceY[i]){ if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 10) < 1 && i == 0) return; monsterattack_ksk(parentObj,attackIndex[i]); if(parentObj.getVar("darkaura").size_vector() > 0){ local attacknum = parentObj.getVar("darkaura").get_vector(0); parentObj.getVar("darkaura").set_vector(0,attacknum + 1); } return; } } } } } else{ if(sq_FindTarget( parentObj, -1000, 1000, 800, 350)) sq_SetCurrentDirection(parentObj, sq_GetOppositeDirection(sq_GetDirection(parentObj))); } break; case STATE_ATTACK: if(attackIndex == 5){ if(sqrChr.getVar("summonmonsterwait").getBool(0) == false) parentObj.sendStateOnlyPacket(STATE_STAND); } break; } } function onStart_appendage_darkhigherspirit_bykk(appendage) { if (!appendage) return; appendage.getVar("atktime").clear_ct_vector(); appendage.getVar("atktime").push_ct_vector(); local timer = appendage.getVar("atktime").get_ct_vector(0); timer.Reset(); timer.Start(10000,0); } function onEnd_appendage_darkhigherspirit_bykk(appendage) { if (!appendage) return; local parentObj = appendage.getParent(); if(!parentObj) return; parentObj.sendDestroyPacket(true); } function onSourceKeyFrameFlag_appendage_echeverra_bykk(appendage,flagIndex) { if(!appendage) return; local parentObj = appendage.getParent(); if(!parentObj){ appendage.setValid(false); return true; } local sqrChr = sq_GetCNRDObjectToSQRCharacter(appendage.getVar("sqrChr").get_obj_vector(0)); if(!sqrChr) return true; // if(!sq_IsMyControlObject(sqrChr)) return true; local eclipsehive_bonus = sqrChr.getVar("eclipsehive_bonus").getInt(10).tofloat() / 100.0; local eclipsehive_bonus2 = sqrChr.getVar("eclipsehive_bonus").getInt(11).tofloat() / 100.0; switch(flagIndex){ case 101://嚙踝蕭嚙踝蕭嚙? parentObj.sq_PlaySound("ECHEVERRA_ARM_ATK"); local totalDamage = sq_GetBonusRateWithPassive(sqrChr, 47, 47, 13, eclipsehive_bonus) + 100; createPassiveObject_k_k(sqrChr,parentObj,47,1,0,0,0,totalDamage,0,0,0,0); break; case 201://嚙踝蕭嚙踝蕭嚙踝蕭? parentObj.sq_PlaySound("ECHEVERRA_WAVE"); local totalDamage = sq_GetBonusRateWithPassive(sqrChr, 47, 47, 10, eclipsehive_bonus) + 100; createPassiveObject_k_k(sqrChr,parentObj,47,2,80,0,100,totalDamage,0,0,0,0); break; case 301://阰嚙踝蕭嚙踝蕭? parentObj.sq_PlaySound("ECHEVERRA_INTENSE_AURA"); if(CNSquirrelAppendage.sq_IsAppendAppendage(parentObj, "character/mage/k_k_made/appendage/aptomonster/ap_echeverra_buff.nut")){ CNSquirrelAppendage.sq_RemoveAppendage(parentObj, "character/mage/k_k_made/appendage/aptomonster/ap_echeverra_buff.nut"); } local AddAppendage = CNSquirrelAppendage.sq_AppendAppendage(parentObj, sqrChr, -1, false, "character/mage/k_k_made/appendage/aptomonster/ap_echeverra_buff.nut", true); AddAppendage.sq_SetValidTime(25000); break; case 401://??ECHEVERRA_READY createPassiveObject_k_k(sqrChr,parentObj,47,4,100,0,0,0,0,0,0,0); break; case 501://怑嚙踝蕭 parentObj.sq_PlaySound("ECHEVERRA_LASER"); local hit = 3; if(parentObj.getVar("skill").getBool(0) == true){ parentObj.getVar("skill").setBool(0, false); if(sq_getRandom(0,99) >= 49){ local totalDamage = sq_GetBonusRateWithPassive(sqrChr, 47, 47, 25, eclipsehive_bonus2) + 100; if(appendage.getVar("bool").getBool(10)){ appendage.getVar("bool").setBool(10, false); totalDamage = totalDamage * 50 / 100; } createPassiveObject_k_k(sqrChr,parentObj,47,51,250,0,0,totalDamage,0,0,0,0); return true; } hit = 8; } local totalDamage = sq_GetBonusRateWithPassive(sqrChr, 47, 47, 12, eclipsehive_bonus) + 100; if(hit == 8) totalDamage = sq_GetBonusRateWithPassive(sqrChr, 47, 47, 25, eclipsehive_bonus2) + 100; if(appendage.getVar("bool").getBool(10)){ appendage.getVar("bool").setBool(10, false); totalDamage = totalDamage * 50 / 100; } createPassiveObject_k_k(sqrChr,parentObj,47,5,50,0,80,totalDamage,hit,0,0,0); sq_SendCreatePassiveObjectPacket(parentObj, 30555, 0, 100, 0, 90, parentObj.getDirection()); break; case 901: sq_SendCreatePassiveObjectPacket(parentObj, 1008607, 0, 0, 0, 325, parentObj.getDirection()); local number = 0; if(parentObj.getVar("grant").getBool(1) == true) number = 1; if(parentObj.getVar("grant").getBool(2) == true) number = 2; if(parentObj.getVar("grant").getBool(3) == true) number = 3; local monstername = ["DarkhigherspiritObj","FirehigherspiritObj","LighthigherspiritObj","WaterhigherspiritObj"]; local monsterObj = sqrChr.getVar(monstername[number]).get_obj_vector(0); local group = sq_GetGroup(monsterObj); local uniqueId = sq_GetUniqueId(monsterObj); local pAni = parentObj.getCurrentAnimation(); local Delay = pAni.getDelaySum(0,3); sq_flashScreen(parentObj,300,Delay - 300,200,230, sq_RGB(0,0,0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM); createPassiveObject_k_k(parentObj,parentObj,47,9,-15,0,0,0,group,uniqueId,Delay,0); for(local i = 0; i < 4; i++){ parentObj.getVar("grant").setBool(i,false); } break; case 902: parentObj.sq_PlaySound("SARPOZA_PUNCH_CAST_01"); local objject = parentObj.getVar("kingsobj").get_obj_vector(0); if(objject){ local colObj = sq_GetCNRDObjectToCollisionObject(objject); colObj.addSetStatePacket(21, null, STATE_PRIORITY_AUTO, false, ""); } break; case 903: parentObj.sq_PlaySound("ECHEVERRA_ARM_ATK"); local objject = parentObj.getVar("kingsobj").get_obj_vector(0); if(objject){ local colObj = sq_GetCNRDObjectToCollisionObject(objject); colObj.addSetStatePacket(22, null, STATE_PRIORITY_AUTO, false, ""); } break; case 1001://?嚙踝蕭嚙踝蕭嚙? local direction = sqrChr.getDirection(); local yPos = sqrChr.getYPos(); local zPos = parentObj.getZPos(); local xPos = sq_GetDistancePos(sqrChr.getXPos(), sqrChr.getDirection(), 50); sq_MoveToNearMovablePos(parentObj, xPos, yPos, zPos, xPos, yPos, zPos, 100, -1, 5); sq_SetCurrentDirection(parentObj, direction); if(!sq_GetSkill(sqrChr, SKILL_BYKK_SUMMONECHEVERRA).isInCoolTime()) sqrChr.startSkillCoolTime(SKILL_BYKK_SUMMONECHEVERRA, sq_GetSkillLevel(sqrChr, SKILL_BYKK_SUMMONECHEVERRA), -1); break; case 1002://?嚙踝蕭嚙踝蕭嚙踝蕭嚙踝蕭 parentObj.getVar("skill").setBool(0,true); local atkIndex = 4; if(parentObj.getVar("isHighestEcheverra").getBool(0)){ parentObj.getVar("isHighestEcheverra").setBool(0, false); atkIndex = 8; } monsterattack_ksk(parentObj,atkIndex); break; } return true; } function proc_appendage_echeverra_bykk(appendage) { if (!appendage) return; local parentObj = appendage.getParent(); local sqrChr = sq_GetCNRDObjectToSQRCharacter(appendage.getVar("sqrChr").get_obj_vector(0)); if((!sqrChr || sqrChr.getState() == STATE_DIE) || (!parentObj || parentObj.getState() == STATE_DIE)){ appendage.setValid(false); return; } if(!sq_IsMyControlObject(sqrChr)) return; local activeObj = sq_GetCNRDObjectToActiveObject(parentObj); if(sq_IsValidActiveStatus(activeObj, ACTIVESTATUS_SLOW)){ sq_ReleaseActiveStatus(activeObj, ACTIVESTATUS_SLOW); } local t_01 = appendage.getVar("skill_1").get_timer_vector(0);//嚙踝蕭嚙踝蕭嚙? local t_02 = appendage.getVar("skill_2").get_timer_vector(0);//嚙踝蕭嚙踝蕭嚙踝蕭? local t_03 = appendage.getVar("skill_3").get_timer_vector(0);//阰嚙踝蕭嚙踝蕭? local t_04 = appendage.getVar("skill_4").get_timer_vector(0);//?? local t_05 = appendage.getVar("skill_5").get_timer_vector(0);//怑嚙踝蕭 local t_06 = appendage.getVar("skill_6").get_timer_vector(0);//怑嚙踝蕭 local currentT = appendage.getTimer().Get(); local state = parentObj.getState(); local attackIndex = parentObj.getAttackIndex(); switch(state){ case STATE_STAND: if(sqrChr.getVar("summonmonsterwait").getBool(0)) monsterattack_ksk(parentObj,6); local objject = parentObj.getVar("kingsobj").get_obj_vector(0); if(objject && objject.getState() == 20) objject.setValid(false); local grant_timer = sqrChr.getVar("grant").get_ct_vector(0); if(grant_timer){ if(sq_GetIntData(sqrChr, 47, 13) < 1){ sqrChr.getVar("grant").clear_ct_vector(); return; } //print(sq_GetIntData(sqrChr, 47, 13)); local grant_time = grant_timer.Get(); local cooltime = 15000; local size = sqrChr.getVar("EcheverraObj").get_obj_vector_size(); if(size > 1) cooltime = cooltime / size + 1000; if(grant_time >= cooltime){ grant_timer.Reset(); grant_timer.Start(10000,0); local number01 = sqrChr.getVar("DarkhigherspiritObj").get_obj_vector_size(); local number02 = sqrChr.getVar("FirehigherspiritObj").get_obj_vector_size(); local number03 = sqrChr.getVar("LighthigherspiritObj").get_obj_vector_size(); local number04 = sqrChr.getVar("WaterhigherspiritObj").get_obj_vector_size(); local monstername = []; if(number01 > 0) monstername.push("DarkhigherspiritObj"); if(number02 > 0) monstername.push("FirehigherspiritObj"); if(number03 > 0) monstername.push("LighthigherspiritObj"); if(number04 > 0) monstername.push("WaterhigherspiritObj"); if(monstername.len() <= 0) return; local random_number; if(monstername.len() == 1){ random_number = 0; } else if(monstername.len() == 2){ random_number = sq_getRandom(0,1); } else{ random_number = sq_getRandom(0,monstername.len() - 1); } // print(random_number); local monsterObj = sq_GetCNRDObjectToActiveObject(sqrChr.getVar(monstername[random_number]).get_obj_vector(0)); if(monsterObj && !CNSquirrelAppendage.sq_IsAppendAppendage(monsterObj, "character/mage/k_k_made/appendage/aptomonster/skill_ap/ap_spikeking_grant.nut")){ switch(monsterObj.getCollisionObjectIndex()){ case MONSTER_ID_DARKHIGHERSPIRIT: parentObj.getVar("grant").setBool(0,true); break; case MONSTER_ID_FIREHIGHERSPIRIT: parentObj.getVar("grant").setBool(1,true); break; case MONSTER_ID_LIGHTHIGHERSPIRIT: parentObj.getVar("grant").setBool(2,true); break; case MONSTER_ID_WATERHIGHERSPIRIT: parentObj.getVar("grant").setBool(3,true); break; } } else{ if(monstername.len() == 1) return; local random_number2 = sq_getRandom(0,monstername.len() - 1); if(random_number2 == random_number && random_number2 != 0) random_number2 = random_number2 - 1; if(random_number2 == random_number && random_number2 == 0) random_number2 = 1; local monsterObj = sq_GetCNRDObjectToActiveObject(sqrChr.getVar(monstername[random_number2]).get_obj_vector(0)); if(monsterObj && !CNSquirrelAppendage.sq_IsAppendAppendage(monsterObj, "character/mage/k_k_made/appendage/aptomonster/skill_ap/ap_spikeking_grant.nut")){ switch(monsterObj.getCollisionObjectIndex()){ case MONSTER_ID_DARKHIGHERSPIRIT: parentObj.getVar("grant").setBool(0,true); break; case MONSTER_ID_FIREHIGHERSPIRIT: parentObj.getVar("grant").setBool(1,true); break; case MONSTER_ID_LIGHTHIGHERSPIRIT: parentObj.getVar("grant").setBool(2,true); break; case MONSTER_ID_WATERHIGHERSPIRIT: parentObj.getVar("grant").setBool(3,true); break; } } else return; } monsterattack_ksk(parentObj,7); } } else{ if(sq_GetIntData(sqrChr, 47, 13) > 0){ sqrChr.getVar("grant").clear_ct_vector(); sqrChr.getVar("grant").push_ct_vector(); local timer = sqrChr.getVar("grant").get_ct_vector(0); timer.Reset(); timer.Start(10000,0); } } local timer = appendage.getVar("atktime").get_ct_vector(0); local currentTT = timer.Get(); if(currentTT < ATK_TIME) return; timer.Reset(); timer.Start(10000,0); if(t_03 && t_03.isOnEvent(currentT)){ monsterattack_ksk(parentObj,2); return; } appendage.getVar("speed").setBool(0,true); local targetObj = sq_FindTarget( parentObj, 0, 1000, 800, 350); if(targetObj){ parentObj.getVar("targetObj").clear_obj_vector(); parentObj.getVar("targetObj").push_obj_vector(targetObj); local skillt = [t_06,t_05,t_04,t_02,t_01]; local attackIndex = [4,4,3,1,0]; local distanceX = [800,800,500,800,150]; local distanceXmin = [0,0,0,0,0]; local distanceY = [30,30,10,25,20]; for(local i = 0;i < skillt.len(); i++){ if(skillt[i] && skillt[i].isOnEvent(currentT)){ if(sq_IsMyControlObject(parentObj)){ if(sq_Abs(targetObj.getXPos() - parentObj.getXPos()) <= distanceX[i] && sq_Abs(targetObj.getXPos() - parentObj.getXPos()) >= distanceXmin[i] && sq_Abs(targetObj.getYPos() - parentObj.getYPos()) <= distanceY[i]){ if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 3) < 1 && i == 0) return; else parentObj.getVar("skill").setBool(0,true); if(i == 1) parentObj.getVar("skill").setBool(0,false); if(i == 0) appendage.getVar("bool").setBool(10, true); monsterattack_ksk(parentObj,attackIndex[i]); return; } } } } } break; case STATE_ATTACK: if(attackIndex == 6){ if(sqrChr.getVar("summonmonsterwait").getBool(0) == false) parentObj.sendStateOnlyPacket(STATE_STAND); } break; } } function onStart_appendage_echeverra_bykk(appendage) { if (!appendage) return; local parentObj = appendage.getParent(); parentObj.sq_PlaySound("ECHEVERRA_INVOKE"); if(sq_IsMyControlObject(parentObj)){ monsterattack_ksk(parentObj,2); } appendage.getVar("atktime").clear_ct_vector(); appendage.getVar("atktime").push_ct_vector(); local timer = appendage.getVar("atktime").get_ct_vector(0); timer.Reset(); timer.Start(10000,0); } function onEnd_appendage_echeverra_bykk(appendage) { if(!appendage) return; local parentObj = appendage.getParent(); if(!parentObj) return; parentObj.sendDestroyPacket(true); } function onSourceKeyFrameFlag_appendage_firehigherspirit_bykk(appendage,flagIndex) { if(!appendage) return; local parentObj = appendage.getParent(); if(!parentObj){ appendage.setValid(false); return true; } local sqrChr = sq_GetCNRDObjectToSQRCharacter(appendage.getVar("sqrChr").get_obj_vector(0)); if(!sqrChr) return true; // if(!sq_IsMyControlObject(sqrChr)) return true; local eclipsehive_bonus = sqrChr.getVar("eclipsehive_bonus").getInt(10).tofloat() / 100.0; local eclipsehive_bonus2 = sqrChr.getVar("eclipsehive_bonus").getInt(11).tofloat() / 100.0; if(sqrChr.getVar("eclipsehive_select").getBool(0) == true){ local add_bonus = 0.0; if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 24) > 0) add_bonus = add_bonus + 10.0; if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 25) > 0) add_bonus = add_bonus + 10.0; if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 26) > 0) add_bonus = add_bonus + 20.0; if(add_bonus > 0) eclipsehive_bonus2 = eclipsehive_bonus2 +add_bonus / 100.0 } switch(flagIndex){ case 101: local totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONSPIRITFIREHIGHER, SKILL_BYKK_SUMMONSPIRITFIREHIGHER, 6, eclipsehive_bonus) + 100; createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONSPIRITFIREHIGHER,1,0,0,0,totalDamage,0,0,0,0); break; case 201: local totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONSPIRITFIREHIGHER, SKILL_BYKK_SUMMONSPIRITFIREHIGHER, 7, eclipsehive_bonus) + 100; local totalDamage2 = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONSPIRITFIREHIGHER, SKILL_BYKK_SUMMONSPIRITFIREHIGHER, 12, eclipsehive_bonus) + 100; createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONSPIRITFIREHIGHER,2,0,0,0,totalDamage,0,0,0,0); createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONSPIRITFIREHIGHER,21,50,0,0,totalDamage2,0,0,0,0); break; case 301: local totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONSPIRITFIREHIGHER, SKILL_BYKK_SUMMONSPIRITFIREHIGHER, 21, eclipsehive_bonus) + 100; local group = sq_GetGroup(parentObj); local uniqueId = sq_GetUniqueId(parentObj); createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONSPIRITFIREHIGHER,31,0,0,0,totalDamage,group,uniqueId,0,0); local speed = 75.0; if(parentObj.getDirection() == ENUM_DIRECTION_LEFT) speed = -75.0; sq_SetVelocity(parentObj, 0, speed); break; case 302: local totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONSPIRITFIREHIGHER, SKILL_BYKK_SUMMONSPIRITFIREHIGHER, 22, eclipsehive_bonus) + 100; local group = sq_GetGroup(parentObj); local uniqueId = sq_GetUniqueId(parentObj); createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONSPIRITFIREHIGHER,32,0,0,0,totalDamage,group,uniqueId,0,0); break; case 303: local totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONSPIRITFIREHIGHER, SKILL_BYKK_SUMMONSPIRITFIREHIGHER, 22, eclipsehive_bonus) + 100; local group = sq_GetGroup(parentObj); local uniqueId = sq_GetUniqueId(parentObj); createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONSPIRITFIREHIGHER,33,0,0,0,totalDamage,group,uniqueId,0,0); break; case 401: local totalDamage1 = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONSPIRITFIREHIGHER, SKILL_BYKK_SUMMONSPIRITFIREHIGHER, 21, eclipsehive_bonus2) + 100; local totalDamage2 = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONSPIRITFIREHIGHER, SKILL_BYKK_SUMMONSPIRITFIREHIGHER, 22, eclipsehive_bonus2) + 100; local totalDamage3 = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONSPIRITFIREHIGHER, SKILL_BYKK_SUMMONSPIRITFIREHIGHER, 23, eclipsehive_bonus2) + 100; local totalDamage = totalDamage1 + totalDamage2 + totalDamage3; createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONSPIRITFIREHIGHER,4,150,0,0,totalDamage,0,0,0,0); break; case 1001://?嚙踝蕭嚙踝蕭嚙? local direction = sqrChr.getDirection(); local yPos = sqrChr.getYPos(); local zPos = parentObj.getZPos(); local xPos = sq_GetDistancePos(sqrChr.getXPos(), sqrChr.getDirection(), 50); sq_MoveToNearMovablePos(parentObj, xPos, yPos, zPos, xPos, yPos, zPos, 100, -1, 5); sq_SetCurrentDirection(parentObj, direction); if(!sq_GetSkill(sqrChr, SKILL_BYKK_SUMMONSPIRITFIREHIGHER).isInCoolTime()) sqrChr.startSkillCoolTime(SKILL_BYKK_SUMMONSPIRITFIREHIGHER, sq_GetSkillLevel(sqrChr, SKILL_BYKK_SUMMONSPIRITFIREHIGHER), -1); break; case 1002://?嚙踝蕭嚙踝蕭嚙踝蕭嚙踝蕭 monsterattack_ksk(parentObj,3); break; case 1006://嚙踝蕭? sq_SendCreatePassiveObjectPacket(parentObj, 1008607, 0, 0, 0, 120, parentObj.getDirection()); local number = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONSPIRITFIREHIGHER, SKILL_BYKK_SUMMONSPIRITFIREHIGHER, 27, 1.0) + 100; for(local i = 0; i < number; i++){ local totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONSPIRITFIREHIGHER, SKILL_BYKK_SUMMONSPIRITFIREHIGHER, 29, 1.0) + 100; local group = sq_GetGroup(parentObj);//? local uniqueId = sq_GetUniqueId(parentObj);//嚙踝蕭嚙踝蕭ID createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONSPIRITFIREHIGHER,61,0,0,0,totalDamage,number,i + 1,group,uniqueId); } break; } return true; } function proc_appendage_firehigherspirit_bykk(appendage) { if (!appendage) return; local parentObj = appendage.getParent(); local sqrChr = sq_GetCNRDObjectToSQRCharacter(appendage.getVar("sqrChr").get_obj_vector(0)); if((!sqrChr || sqrChr.getState() == STATE_DIE) || (!parentObj || parentObj.getState() == STATE_DIE)){ appendage.setValid(false); return; } if(!sq_IsMyControlObject(sqrChr)) return; local t_01 = appendage.getVar("skill_1").get_timer_vector(0);//嚙踝蕭嚙踝蕭?葞? local t_02 = appendage.getVar("skill_2").get_timer_vector(0);//嚙踝蕭嚙踝蕭嚙踝蕭嚙踝蕭? local t_03 = appendage.getVar("skill_3").get_timer_vector(0);//嚙踝蕭嚙踝蕭嚙踝蕭?? local t_04 = appendage.getVar("skill_4").get_timer_vector(0);//嚙踝蕭嚙踝蕭嚙踝蕭? local t_05 = appendage.getVar("skill_5").get_timer_vector(0);//嚙踝蕭嚙踝蕭嚙踝蕭? local currentT = appendage.getTimer().Get(); local state = parentObj.getState(); local attackIndex = parentObj.getAttackIndex(); switch(state){ case STATE_STAND: if(sqrChr.getVar("summonmonsterwait").getBool(0)) monsterattack_ksk(parentObj,5); local timer = appendage.getVar("atktime").get_ct_vector(0); local currentTT = timer.Get(); if(currentTT < ATK_TIME) return; timer.Reset(); timer.Start(10000,0); local grant_timer = parentObj.getVar("grant").get_ct_vector(0); if(grant_timer){ local grant_time = grant_timer.Get(); if(grant_timer && grant_time >= 4000 + sq_getRandom(0,4000)){ grant_timer.Reset(); grant_timer.Start(10000,0); monsterattack_ksk(parentObj,6); return; } } local targetObj = sq_FindTarget( parentObj, 0, 1000, 800, 350); if(targetObj){ parentObj.getVar("targetObj").clear_obj_vector(); parentObj.getVar("targetObj").push_obj_vector(targetObj); local skillt = [t_04,t_03,t_02,t_01]; local attackIndex = [3,2,1,0]; local distanceX = [300,200,200,100]; local distanceXmin = [50,0,0,0]; local distanceY = [50,40,20,10]; for(local i = 0;i < skillt.len(); i++){ if(skillt[i] && skillt[i].isOnEvent(currentT)){ if(sq_IsMyControlObject(parentObj)){ if(sq_Abs(targetObj.getXPos() - parentObj.getXPos()) <= distanceX[i] && sq_Abs(targetObj.getXPos() - parentObj.getXPos()) >= distanceXmin[i] && sq_Abs(targetObj.getYPos() - parentObj.getYPos()) <= distanceY[i]){ if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 11) < 1 && i == 0) return; monsterattack_ksk(parentObj,attackIndex[i]); if(parentObj.getVar("firestorm").size_vector() > 0){ local attacknum = parentObj.getVar("firestorm").get_vector(0); parentObj.getVar("firestorm").set_vector(0,attacknum + 1); } return; } } } } } else{ if(sq_FindTarget( parentObj, -1000, 1000, 800, 350)) sq_SetCurrentDirection(parentObj, sq_GetOppositeDirection(sq_GetDirection(parentObj))); } break; case STATE_ATTACK: if(attackIndex == 5){ if(sqrChr.getVar("summonmonsterwait").getBool(0) == false) parentObj.sendStateOnlyPacket(STATE_STAND); } break; } } function onStart_appendage_firehigherspirit_bykk(appendage) { if (!appendage) return; appendage.getVar("atktime").clear_ct_vector(); appendage.getVar("atktime").push_ct_vector(); local timer = appendage.getVar("atktime").get_ct_vector(0); timer.Reset(); timer.Start(10000,0); } function onEnd_appendage_firehigherspirit_bykk(appendage) { if (!appendage) return; local parentObj = appendage.getParent(); if(!parentObj) return; parentObj.sendDestroyPacket(true); } function onSourceKeyFrameFlag_appendage_heilrom_bykk(appendage, flagIndex) { if(!appendage) return; local parentObj = appendage.getParent(); if(!parentObj){ appendage.setValid(false); return true; } local sqrChr = sq_GetCNRDObjectToSQRCharacter(appendage.getVar("sqrChr").get_obj_vector(0)); if(!sqrChr) return true; // if(!sq_IsMyControlObject(sqrChr)) return true; switch(flagIndex){ case 101: sq_AddDrawOnlyAniFromParent(parentObj,"monster/character/mage/madeby_k_k/heilrom/animation/skill_heilrom_effect_back.ani", 0, -1, 0); sq_AddDrawOnlyAniFromParent(parentObj,"monster/character/mage/madeby_k_k/heilrom/animation/skill_heilrom_effect_front.ani", 0, 1, 0); sq_AddDrawOnlyAniFromParent(parentObj,"monster/character/mage/madeby_k_k/heilrom/animation/skill_heilrom_effect00.ani", 0, -1, -40); break; case 102: if(!sq_GetSkill(sqrChr, SKILL_BYKK_SUMMONHEILROM).isInCoolTime()) sqrChr.startSkillCoolTime(SKILL_BYKK_SUMMONHEILROM, sq_GetSkillLevel(sqrChr, SKILL_BYKK_SUMMONHEILROM), -1); local skillLevel = sq_GetSkillLevel(sqrChr, SKILL_BYKK_SUMMONHEILROM); local HP_heal = sq_GetLevelData(sqrChr, SKILL_BYKK_SUMMONHEILROM, 14, skillLevel); local objmg = parentObj.getObjectManager(); for(local i= 0; i < objmg.getCollisionObjectNumber(); i++){ local object = objmg.getCollisionObject(i); if(object && object.isObjectType(OBJECTTYPE_ACTIVE) && !parentObj.isEnemy(object)){ local activeObj = sq_GetCNRDObjectToActiveObject(object); local hpMax = activeObj.getHpMax(); local MpMax = activeObj.getMpMax(); local hp = activeObj.getHp(); local mp = activeObj.getMp(); if(!isSameObject(activeObj,sqrChr)){ activeObj.setHp(hp + hpMax * HP_heal / 1000, null, true); } else{ sqrChr.sq_SendSetHpPacket(hp + hpMax * HP_heal / 1000, false, parentObj); sqrChr.sq_SendSetMpPacket(mp + MpMax * HP_heal / 1000, false, parentObj); } } } //printp("111111111111111111"+"\n"); break; } return true; } function proc_appendage_heilrom_bykk(appendage) { if (!appendage) return; local parentObj = appendage.getParent(); local sqrChr = sq_GetCNRDObjectToSQRCharacter(appendage.getVar("sqrChr").get_obj_vector(0)); if((!sqrChr || sqrChr.getState() == STATE_DIE) || (!parentObj || parentObj.getState() == STATE_DIE)){ appendage.setValid(false); return; } if(!sq_IsMyControlObject(sqrChr)) return; local t = appendage.getVar("buff01").get_timer_vector(0); local t2 = appendage.getVar("buff02").get_timer_vector(0); local currentT = appendage.getTimer().Get(); if(t2 && t2.isOnEvent(currentT) == true){ monsterattack_ksk(parentObj,0); return; } if(t && t.isOnEvent(currentT) == true){ local buff_range = appendage.getVar("buffPx").get_vector(0); local elementAttack = appendage.getVar("buffPx").get_vector(1); local attackSpeed = appendage.getVar("buffPx").get_vector(2); local moveSpeed = appendage.getVar("buffPx").get_vector(3); local castSpeed = appendage.getVar("buffPx").get_vector(4); local skillLevel = appendage.getVar("buffPx").get_vector(5); local objmg = sqrChr.getObjectManager(); //嚙踝蕭嚙踝蕭嚙踝蕭嚙踝蕭庢嚙踝蕭嚙踝蕭 for(local i= 0; i < objmg.getCollisionObjectNumber(); i++){ local object = objmg.getCollisionObject(i); if(object.isObjectType(OBJECTTYPE_ACTIVE) && !sqrChr.isEnemy(object)){ local activeObj = sq_GetCNRDObjectToActiveObject(object); if(sq_Abs(activeObj.getXPos() - parentObj.getXPos()) <= buff_range && sq_Abs(activeObj.getYPos() - parentObj.getYPos()) <= buff_range / 2){ if(!CNSquirrelAppendage.sq_IsAppendAppendage(activeObj, "character/mage/k_k_made/appendage/aptomonster/ap_heilrom_normalbuff.nut")){ local AddAppendage = CNSquirrelAppendage.sq_AppendAppendage(activeObj, parentObj, SKILL_BYKK_SUMMONHEILROM, false, "character/mage/k_k_made/appendage/aptomonster/ap_heilrom_normalbuff.nut", true); AddAppendage.getVar().clear_vector(); AddAppendage.getVar().push_vector(buff_range); AddAppendage.getVar().push_vector(skillLevel); AddAppendage.getVar().clear_timer_vector(); AddAppendage.getVar().push_timer_vector(); local t_01 = AddAppendage.getVar().get_timer_vector(0); t_01.setParameter(1000, -1); t_01.resetInstant(0); AddAppendage.getVar("status").clear_vector(); AddAppendage.getVar("status").push_vector(elementAttack); AddAppendage.getVar("status").push_vector(attackSpeed); AddAppendage.getVar("status").push_vector(moveSpeed); AddAppendage.getVar("status").push_vector(castSpeed); } } } } return; } } function onEnd_appendage_heilrom_bykk(appendage) { if(!appendage) return; local parentObj = appendage.getParent(); parentObj.sendDestroyPacket(true); } function onStart_appendage_heilrom_bykk(appendage) { if (!appendage) return; local parentObj = appendage.getParent(); local pooledObj_01 = sq_AddDrawOnlyAniFromParent(parentObj,"monster/character/mage/madeby_k_k/heilrom/animation/skill_heilrom_effect_back.ani", 0, -1, 0); local pooledObj_02 = sq_AddDrawOnlyAniFromParent(parentObj,"monster/character/mage/madeby_k_k/heilrom/animation/skill_heilrom_effect_front.ani", 0, 1, 0); local pooledObj_03 = sq_AddDrawOnlyAniFromParent(parentObj,"monster/character/mage/madeby_k_k/heilrom/animation/skill_heilrom_effect00.ani", 0, -1, -40); } function onSourceKeyFrameFlag_appendage_hodor_bykk(appendage,flagIndex) { if(!appendage) return; local parentObj = appendage.getParent(); if(!parentObj){ appendage.setValid(false); return true; } local sqrChr = sq_GetCNRDObjectToSQRCharacter(appendage.getVar("sqrChr").get_obj_vector(0)); if(!sqrChr) return true; // if(!sq_IsMyControlObject(sqrChr)) return true; local eclipsehive_bonus = sqrChr.getVar("eclipsehive_bonus").getInt(10).tofloat() / 100.0; local eclipsehive_bonus2 = sqrChr.getVar("eclipsehive_bonus").getInt(11).tofloat() / 100.0; switch(flagIndex){ case 101: local totalDamage = sq_GetBonusRateWithPassive(sqrChr, 25, 25, 13, eclipsehive_bonus) + 100; createPassiveObject_k_k(sqrChr,parentObj,25,1,0,0,0,totalDamage,0,0,0,0); break; case 201: local ap = sq_CreateChangeStatus(CHANGE_STATUS_TYPE_MOVE_SPEED, true, 20.0, 20000); if(ap) ap.sq_Append(parentObj, parentObj); local ap2 = sq_CreateChangeStatus(CHANGE_STATUS_TYPE_ATTACK_SPEED, true, 20.0, 20000); if(ap2) ap2.sq_Append(parentObj, parentObj); break; case 301: local totalDamage = sq_GetBonusRateWithPassive(sqrChr, 25, 25, 15, eclipsehive_bonus) + 100; createPassiveObject_k_k(sqrChr,parentObj,25,3,0,0,0,totalDamage,0,0,0,0); break; case 401: local totalDamage = sq_GetBonusRateWithPassive(sqrChr, 25, 25, 17, eclipsehive_bonus) + 100; local sub = 0; if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 32) > 0 && sqrChr.getVar("eclipsehive_select").getBool(0) == false) sub = 1; createPassiveObject_k_k(sqrChr,parentObj,25,4,50,0,50,totalDamage,sub,0,0,0); if(sq_GetIntData(sqrChr, 25, 10) > 0) createPassiveObject_k_k(sqrChr,parentObj,25,4,75,0,50,totalDamage,sub,0,0,0); break; case 501: local totalDamage = sq_GetBonusRateWithPassive(sqrChr, 25, 25, 19, eclipsehive_bonus) + 100; local sub = 0; if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 32) > 0 && sqrChr.getVar("eclipsehive_select").getBool(0) == false) sub = 1; createPassiveObject_k_k(sqrChr,parentObj,25,5,50,0,50,totalDamage,sub,0,0,0); if(sq_GetIntData(sqrChr, 25, 10) > 0) createPassiveObject_k_k(sqrChr,parentObj,25,5,75,0,50,totalDamage,sub,0,0,0); break; case 601: local totalDamage = sq_GetBonusRateWithPassive(sqrChr, 25, 25, 21, eclipsehive_bonus) + 100; local sub = 0; if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 32) > 0 && sqrChr.getVar("eclipsehive_select").getBool(0) == false) sub = 1; local add_number = sq_GetIntData(sqrChr, 25, 10); for(local i = 0; i < 5; i++){ createPassiveObject_k_k(sqrChr,parentObj,25,6,50,0,50,totalDamage,sub,i,0,0); if(add_number > 0) createPassiveObject_k_k(sqrChr,parentObj,25,6,75,0,50,totalDamage,sub,i,0,0); } break; case 701: local totalDamage = sq_GetBonusRateWithPassive(sqrChr, 25, 25, 23, eclipsehive_bonus) + 100; local totalDamage2 = sq_GetBonusRateWithPassive(sqrChr, 25, 25, 25, eclipsehive_bonus) + 100; local targetObj = parentObj.getVar("targetObj").get_obj_vector(0); local moveX = targetObj.getXPos() - parentObj.getXPos() + sq_getRandom(-10,10); local moveY = targetObj.getYPos() - parentObj.getYPos() + sq_getRandom(-8,8); if(parentObj.getDirection() == ENUM_DIRECTION_LEFT) moveX = moveX + 50; if(parentObj.getDirection() == ENUM_DIRECTION_RIGHT) moveX = moveX - 50; createPassiveObject_k_k(sqrChr,parentObj,25,7,50,0,50,totalDamage,totalDamage2,moveX,moveY,0); if(sq_GetIntData(sqrChr, 25, 10) > 0) createPassiveObject_k_k(sqrChr,parentObj,25,7,50,0,55,totalDamage,totalDamage2,moveX,moveY,0); break; case 801: local totalDamage = sq_GetBonusRateWithPassive(sqrChr, 25, 25, 27, eclipsehive_bonus2) + 100; if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 30) > 0 && sqrChr.getVar("eclipsehive_select").getBool(0)) totalDamage = totalDamage * 110 / 100; local group = sq_GetGroup(parentObj); local uniqueId = sq_GetUniqueId(parentObj); createPassiveObject_k_k(sqrChr,parentObj,25,8,0,0,0,totalDamage,group,uniqueId,0,0); break; case 901: case 902: case 903: if(flagIndex == 901) sq_AddDrawOnlyAniFromParent(parentObj, "monster/character/mage/madeby_k_k/hodor/animation/hita_01.ani", 50, 0, 25); if(flagIndex == 902) sq_AddDrawOnlyAniFromParent(parentObj, "monster/character/mage/madeby_k_k/hodor/animation/hitb_01.ani", 50, 0, 25); if(flagIndex == 903) sq_AddDrawOnlyAniFromParent(parentObj, "monster/character/mage/madeby_k_k/hodor/animation/hitc_01.ani", 50, 0, 25); local totalDamage = sq_GetBonusRateWithPassive(sqrChr, 25, 25, 27, eclipsehive_bonus2) + 100; if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 30) > 0 && sqrChr.getVar("eclipsehive_select").getBool(0)) totalDamage = totalDamage * 110 / 100; if(appendage.getVar("bool").getBool(10)){ appendage.getVar("bool").setBool(10, false); totalDamage = totalDamage * 50 / 100; } createPassiveObject_k_k(sqrChr,parentObj,25,9,0,0,0,totalDamage,1,0,0,0); break; case 904: sq_AddDrawOnlyAniFromParent(parentObj, "monster/character/mage/madeby_k_k/hodor/animation/hitd_01.ani", 50, 0, 25); local totalDamage = sq_GetBonusRateWithPassive(sqrChr, 25, 25, 29, eclipsehive_bonus2) + 100; local size = 100; if(sqrChr.getVar("eclipsehive_select").getBool(0)){ if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 30) > 0) totalDamage = totalDamage * 110 / 100; if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 31) > 0) totalDamage = totalDamage * 130 / 100; if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 32) > 0) size = 200; } if(appendage.getVar("bool").getBool(10)){ appendage.getVar("bool").setBool(10, false); totalDamage = totalDamage * 50 / 100; } createPassiveObject_k_k(sqrChr,parentObj,25,9,0,0,0,totalDamage,2,size,0,0); break; case 1001: local direction = sqrChr.getDirection(); local yPos = sqrChr.getYPos(); local xPos = sq_GetDistancePos(sqrChr.getXPos(), sqrChr.getDirection(), 50); sq_MoveToNearMovablePos(parentObj, xPos, yPos, 0, xPos, yPos, 0, 100, -1, 5); sq_SetCurrentDirection(parentObj, direction); if(!sq_GetSkill(sqrChr, SKILL_BYKK_SUMMONHODOR).isInCoolTime()) sqrChr.startSkillCoolTime(SKILL_BYKK_SUMMONHODOR, sq_GetSkillLevel(sqrChr, SKILL_BYKK_SUMMONHODOR), -1); break; case 1002: local targetObj = sq_FindTarget( sqrChr, 0, 500, 500, 350); if(targetObj){ parentObj.getVar("targetObj").clear_obj_vector(); parentObj.getVar("targetObj").push_obj_vector(targetObj); local pIntVec = sq_GetGlobalIntVector(); sq_IntVectorClear(pIntVec); sq_IntVectorPush(pIntVec, 7); sq_AddSetStatePacketActiveObject(parentObj, 8, pIntVec, STATE_PRIORITY_USER); } else{ local pIntVec = sq_GetGlobalIntVector(); sq_IntVectorClear(pIntVec); sq_IntVectorPush(pIntVec, 1); sq_AddSetStatePacketActiveObject(parentObj, 8, pIntVec, STATE_PRIORITY_USER); } break; } return true; } function proc_appendage_hodor_bykk(appendage) { if (!appendage) return; local parentObj = appendage.getParent(); local sqrChr = sq_GetCNRDObjectToSQRCharacter(appendage.getVar("sqrChr").get_obj_vector(0)); if((!sqrChr || sqrChr.getState() == STATE_DIE) || (!parentObj || parentObj.getState() == STATE_DIE)){ appendage.setValid(false); return; } if(!sq_IsMyControlObject(sqrChr)) return; local t_01 = appendage.getVar("skill_1").get_timer_vector(0); local t_02 = appendage.getVar("skill_2").get_timer_vector(0); local t_03 = appendage.getVar("skill_3").get_timer_vector(0); local t_04 = appendage.getVar("skill_4").get_timer_vector(0); local t_05 = appendage.getVar("skill_5").get_timer_vector(0); local t_06 = appendage.getVar("skill_6").get_timer_vector(0); local t_07 = appendage.getVar("skill_7").get_timer_vector(0); local t_08 = appendage.getVar("skill_8").get_timer_vector(0); local currentT = appendage.getTimer().Get(); local state = parentObj.getState(); local attackIndex = parentObj.getAttackIndex(); switch(state){ case STATE_STAND: if(sqrChr.getVar("summonmonsterwait").getBool(0)) monsterattack_ksk(parentObj,9); if(t_02 && t_02.isOnEvent(currentT)){ if(sq_IsMyControlObject(parentObj)){ monsterattack_ksk(parentObj,1); return; } } local targetObj = sq_FindTarget( parentObj, 0, 1000, 800, 350); if(targetObj){ parentObj.getVar("targetObj").clear_obj_vector(); parentObj.getVar("targetObj").push_obj_vector(targetObj); local skillt = [t_08,t_07,t_06,t_05,t_04,t_03,t_01]; local attackIndex = [7,6,5,4,3,2,0]; local distanceX = [300,300,300,300,300,300,30,30]; local distanceXmin = [40,40,40,40,40,40,0,0]; local distanceY = [150,150,80,10,10,10,10,10,10]; for(local i = 0;i < skillt.len(); i++){ if(skillt[i] && skillt[i].isOnEvent(currentT) && sq_Abs(targetObj.getXPos() - parentObj.getXPos()) <= distanceX[i] && sq_Abs(targetObj.getXPos() - parentObj.getXPos()) >= distanceXmin[i] && sq_Abs(targetObj.getYPos() - parentObj.getYPos()) <= distanceY[i]){ if(sq_IsMyControlObject(parentObj)){ if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 5) < 1 && i == 0) return; if(i == 0) appendage.getVar("bool").setBool(10, true); monsterattack_ksk(parentObj,attackIndex[i]); return; } } } } break; case STATE_ATTACK: switch(attackIndex){ case 7: local targetObj = sq_GetCNRDObjectToActiveObject(parentObj.getVar("targetObj").get_obj_vector(0)); if(targetObj){ if(sq_GetDistanceObject(parentObj, targetObj, false) < 20){ local pIntVec = sq_GetGlobalIntVector(); sq_IntVectorClear(pIntVec); sq_IntVectorPush(pIntVec, 8); sq_AddSetStatePacketActiveObject(parentObj, 8, pIntVec, STATE_PRIORITY_USER); return; } local pAni = parentObj.getCurrentAnimation(); local currentT = sq_GetCurrentTime(pAni); local fireT = pAni.getDelaySum(false); local X1 = sq_GetUniformVelocity(parentObj.getXPos(), targetObj.getXPos(), currentT, fireT); local Y1 = sq_GetUniformVelocity(parentObj.getYPos(), targetObj.getYPos(), currentT, fireT); sq_setCurrentAxisPos(parentObj, 0, X1); sq_setCurrentAxisPos(parentObj, 1, Y1); } break; case 9: if(sqrChr.getVar("summonmonsterwait").getBool(0) == false) parentObj.sendStateOnlyPacket(STATE_STAND); break; } break; } } function onStart_appendage_hodor_bykk(appendage) { if (!appendage) return; appendage.getVar("atktime").clear_ct_vector(); appendage.getVar("atktime").push_ct_vector(); local timer = appendage.getVar("atktime").get_ct_vector(0); timer.Reset(); timer.Start(10000,0); } function onEnd_appendage_hodor_bykk(appendage) { if (!appendage) return; local parentObj = appendage.getParent(); if(!parentObj) return; parentObj.sendDestroyPacket(true); } function onSourceKeyFrameFlag_appendage_kruta_bykk(appendage, flagIndex) { if(!appendage) return; local parentObj = appendage.getParent(); if(!parentObj){ appendage.setValid(false); return true; } local sqrChr = sq_GetCNRDObjectToSQRCharacter(appendage.getVar("sqrChr").get_obj_vector(0)); if(!sqrChr) return true; // if(!sq_IsMyControlObject(sqrChr)) return true; local eclipsehive_bonus = sqrChr.getVar("eclipsehive_bonus").getInt(10).tofloat() / 100.0; local eclipsehive_bonus2 = sqrChr.getVar("eclipsehive_bonus").getInt(11).tofloat() / 100.0; switch(flagIndex){ case 101: local totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONKRUTA, SKILL_BYKK_SUMMONKRUTA, 7, eclipsehive_bonus) + 100; local sizeRate = 100 + (sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONKRUTA, SKILL_BYKK_SUMMONKRUTA, 15, 1.0) + 100) * 10; createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONKRUTA,1,0,0,0,totalDamage,sizeRate,0,0,0); parentObj.sq_PlaySound("SUMMON_KRUTA_SWISH_01"); break; case 201: local targetObj = sq_GetCNRDObjectToActiveObject(parentObj.getVar("targetObj").get_obj_vector(0)); if(targetObj){ parentObj.getVar("skill2").set_vector(0,parentObj.getXPos()); parentObj.getVar("skill2").set_vector(1,parentObj.getYPos()); local moveX = sq_Abs(targetObj.getXPos() - parentObj.getXPos()) + sq_getRandom(0,200); parentObj.getVar("skill2").set_vector(2,moveX); parentObj.getVar("skill2").set_vector(3,targetObj.getYPos() - parentObj.getYPos()); } monsterattack_ksk(parentObj,3); local totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONKRUTA, SKILL_BYKK_SUMMONKRUTA, 8, eclipsehive_bonus) + 100; local group = sq_GetGroup(parentObj); local uniqueId = sq_GetUniqueId(parentObj); local sizeRate = 100 + (sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONKRUTA, SKILL_BYKK_SUMMONKRUTA, 15, 1.0) + 100) * 10; createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONKRUTA,2,0,0,0,totalDamage,group,uniqueId,sizeRate,0); parentObj.sq_PlaySound("SUMMON_KRUTA_RUSH"); break; case 301: sq_SetMyShake(parentObj,3,720); parentObj.sq_PlaySound("SUMMON_KRUTA_SCREAM"); break; case 302: local totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONKRUTA, SKILL_BYKK_SUMMONKRUTA, 9, eclipsehive_bonus) + 100; local sizeRate = 100 + (sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONKRUTA, SKILL_BYKK_SUMMONKRUTA, 15, 1.0) + 100) * 10; createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONKRUTA,3,0,0,0,totalDamage,sizeRate,0,0,0); break; case 401: local totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONKRUTA, SKILL_BYKK_SUMMONKRUTA, 10, eclipsehive_bonus2) + 100; local sizeRate = 100 + (sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONKRUTA, SKILL_BYKK_SUMMONKRUTA, 15, 1.0) + 100) * 10; if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 30) > 0 && sqrChr.getVar("eclipsehive_select").getBool(0)){ totalDamage = totalDamage * 110 / 100; } createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONKRUTA,41,0,0,0,totalDamage,sizeRate,0,0,0); parentObj.sq_PlaySound("SUMMON_KRUTA_SWISH_02"); break; case 402: monsterattack_ksk(parentObj,5); break; case 4022: parentObj.sq_PlaySound("SUMMON_KRUTA_CHARGE"); break; case 403: monsterattack_ksk(parentObj,6); break; case 404: local totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONKRUTA, SKILL_BYKK_SUMMONKRUTA, 11, eclipsehive_bonus2) + 100; local sizeRate = 100 + (sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONKRUTA, SKILL_BYKK_SUMMONKRUTA, 15, 1.0) + 100) * 10; createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONKRUTA,42,0,0,0,totalDamage,sizeRate,0,0,0); sq_SetMyShake(parentObj,3,320); sq_AddDrawOnlyAniFromParent(parentObj,"monster/character/mage/madeby_k_k/kruta/animation/ragefinisheff_01.ani",375,0,0); sq_AddDrawOnlyAniFromParent(parentObj,"monster/character/mage/madeby_k_k/kruta/animation/ragefinishfloor_f01.ani",375,-1,-1); parentObj.sq_PlaySound("SUMMON_KRUTA_SMASH"); break; case 501: monsterattack_ksk(parentObj,8); parentObj.sq_PlaySound("SUMMON_KRUTA_IMPACT"); break; case 502: monsterattack_ksk(parentObj,9); break; case 503: local totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_REPEATEDSMASHOFRAGE, SKILL_BYKK_REPEATEDSMASHOFRAGE, 0, eclipsehive_bonus2) + 100; if(sqrChr.getVar("eclipsehive_select").getBool(0)){ local add_Rate = 0; if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 31) > 0) add_Rate = add_Rate + 20; if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 32) > 0) add_Rate = add_Rate + 20; if(add_Rate > 0) totalDamage = totalDamage * (100 + add_Rate) / 100; } local sizeRate = 100 + (sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONKRUTA, SKILL_BYKK_SUMMONKRUTA, 15, 1.0) + 100) * 10; createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONKRUTA,52,0,0,0,totalDamage,sizeRate,0,0,0); local hit = parentObj.getVar("skill").get_vector(0); local pooledObj1, pooledObj2, pooledObj3, pooledObj4; switch(hit){ case 4: pooledObj1 = sq_AddDrawOnlyAniFromParent(parentObj,"monster/character/mage/madeby_k_k/kruta/animation/atkaxeeffect_dust.ani",200,0,0); pooledObj2 = sq_AddDrawOnlyAniFromParent(parentObj,"monster/character/mage/madeby_k_k/kruta/animation/atkeffectbottom01_crack.ani",200,-1,-1); pooledObj3 = sq_AddDrawOnlyAniFromParent(parentObj,"monster/character/mage/madeby_k_k/kruta/animation/atkeffectbottom01_rock.ani",200,-1,-1); pooledObj4 = sq_AddDrawOnlyAniFromParent(parentObj,"monster/character/mage/madeby_k_k/kruta/animation/atkeffecttop01_crack.ani",200,1,1); break; case 3: pooledObj1 = sq_AddDrawOnlyAniFromParent(parentObj,"monster/character/mage/madeby_k_k/kruta/animation/atkaxeeffect_dust.ani",200,0,0); pooledObj2 = sq_AddDrawOnlyAniFromParent(parentObj,"monster/character/mage/madeby_k_k/kruta/animation/atkeffectbottom02_crack.ani",200,-1,-1); pooledObj3 = sq_AddDrawOnlyAniFromParent(parentObj,"monster/character/mage/madeby_k_k/kruta/animation/atkeffectbottom02_rock.ani",200,-1,-1); pooledObj4 = sq_AddDrawOnlyAniFromParent(parentObj,"monster/character/mage/madeby_k_k/kruta/animation/atkeffecttop02_crack.ani",200,1,1); break; case 2: pooledObj1 = sq_AddDrawOnlyAniFromParent(parentObj,"monster/character/mage/madeby_k_k/kruta/animation/atkaxeeffect_dust.ani",200,0,0); pooledObj2 = sq_AddDrawOnlyAniFromParent(parentObj,"monster/character/mage/madeby_k_k/kruta/animation/atkeffectbottom03_crack.ani",200,-1,-1); pooledObj3 = sq_AddDrawOnlyAniFromParent(parentObj,"monster/character/mage/madeby_k_k/kruta/animation/atkeffectbottom03_rock.ani",200,-1,-1); pooledObj4 = sq_AddDrawOnlyAniFromParent(parentObj,"monster/character/mage/madeby_k_k/kruta/animation/atkeffecttop03_crack.ani",200,1,1); break; case 1: pooledObj1 = sq_AddDrawOnlyAniFromParent(parentObj,"monster/character/mage/madeby_k_k/kruta/animation/atkaxeeffect_dust.ani",200,0,0); pooledObj2 = sq_AddDrawOnlyAniFromParent(parentObj,"monster/character/mage/madeby_k_k/kruta/animation/atkeffectbottom04_crack.ani",200,-1,-1); pooledObj3 = sq_AddDrawOnlyAniFromParent(parentObj,"monster/character/mage/madeby_k_k/kruta/animation/atkeffectbottom04_rock.ani",200,-1,-1); pooledObj4 = sq_AddDrawOnlyAniFromParent(parentObj,"monster/character/mage/madeby_k_k/kruta/animation/atkeffecttop04_crack.ani",200,1,1); break; } if(sizeRate > 100){ local pooledObj = [pooledObj1, pooledObj2, pooledObj3, pooledObj4]; sizeRate = sizeRate.tofloat() / 100.0; for(local i = 0; i < 4; i++){ local pAni = pooledObj[i].getCurrentAnimation(); pAni.setImageRateFromOriginal(sizeRate, sizeRate); pAni.setAutoLayerWorkAnimationAddSizeRate(sizeRate); } } break; case 504: sq_SetMyShake(parentObj,5,90); parentObj.sq_PlaySound("R_SUMMON_KRUTA_STRIKE"); break; case 506: local hitnumber = parentObj.getVar("skill").get_vector(0); if(hitnumber <= 1){ monsterattack_ksk(parentObj,10); } else{ parentObj.getVar("skill").set_vector(0, hitnumber - 1); monsterattack_ksk(parentObj,9); } break; case 5061: case 6011: parentObj.sq_PlaySound("SUMMON_KRUTA_SWISH_03"); break; case 507: local totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_REPEATEDSMASHOFRAGE, SKILL_BYKK_REPEATEDSMASHOFRAGE, 1, eclipsehive_bonus2) + 100; local sizeRate = 100 + (sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONKRUTA, SKILL_BYKK_SUMMONKRUTA, 15, 1.0) + 100) * 10; createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONKRUTA,53,0,0,0,totalDamage,sizeRate,0,0,0); sq_SetMyShake(parentObj,3,300); sq_flashScreen(parentObj,0,100,0,102, sq_RGB(255,255,255), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM); parentObj.getVar("skill").set_vector(0, 4); sq_AddDrawOnlyAniFromParent(parentObj,"monster/character/mage/madeby_k_k/kruta/animation/finishaxeeffect_dust.ani",400,0,0); sq_AddDrawOnlyAniFromParent(parentObj,"monster/character/mage/madeby_k_k/kruta/animation/finisheffectbottom_crack.ani",400,-1,-1); sq_AddDrawOnlyAniFromParent(parentObj,"monster/character/mage/madeby_k_k/kruta/animation/finisheffectbottom_crackb.ani",400,-1,-1); sq_AddDrawOnlyAniFromParent(parentObj,"monster/character/mage/madeby_k_k/kruta/animation/finisheffecttop_cracka.ani",400,1,1); sq_AddDrawOnlyAniFromParent(parentObj,"monster/character/mage/madeby_k_k/kruta/animation/finisheffecttop_rock.ani",400,1,1); parentObj.sq_PlaySound("SUMMON_KRUTA_STRIKE_FINISH"); break; case 600: local pAni = parentObj.getCurrentAnimation(); local fireT = pAni.getDelaySum(0,20); createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONKRUTA,10,-135,0,80,fireT,0,0,0,0); parentObj.sq_PlaySound("SUMMON_KRUTA_CHARGE"); break; case 601: monsterattack_ksk(parentObj,12); break; case 602: local totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_REPEATEDSMASHOFRAGE, -1, 0, 4.4*eclipsehive_bonus2) + sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_REPEATEDSMASHOFRAGE, -1, 1, 1.1*eclipsehive_bonus2) + 200; local sizeRate = 100 + (sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONKRUTA, SKILL_BYKK_SUMMONKRUTA, 15, 1.0) + 100) * 10; createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONKRUTA,6,0,0,0,totalDamage,sizeRate,0,0,0); sq_AddDrawOnlyAniFromParent(parentObj,"monster/character/mage/madeby_k_k/kruta/animation/finisheffectbottom_crack.ani",300,-1,-1); sq_AddDrawOnlyAniFromParent(parentObj,"monster/character/mage/madeby_k_k/kruta/animation/finisheffectbottom_crackb.ani",300,-1,-1); sq_AddDrawOnlyAniFromParent(parentObj,"monster/character/mage/madeby_k_k/kruta/animation/finisheffecttop_rock.ani",300,1,1); sq_AddDrawOnlyAniFromParent(parentObj,"monster/character/mage/madeby_k_k/kruta/animation/talisman/landingexplosion_eff_00.ani",300,0,0); parentObj.sq_PlaySound("SUMMON_KRUTA_STRIKE_FINISH"); break; case 603: sq_AddDrawOnlyAniFromParent(parentObj,"monster/character/mage/madeby_k_k/kruta/animation/finishaxeeffect_dust.ani",300,-1,-1); break; case 1001: local direction = sqrChr.getDirection(); local yPos = sqrChr.getYPos(); local zPos = parentObj.getZPos(); local xPos = sq_GetDistancePos(sqrChr.getXPos(), sqrChr.getDirection(), 50); sq_MoveToNearMovablePos(parentObj, xPos, yPos, zPos, xPos, yPos, zPos, 100, -1, 5); sq_SetCurrentDirection(parentObj, direction); if(!sq_GetSkill(sqrChr, SKILL_BYKK_SUMMONKRUTA).isInCoolTime()) sqrChr.startSkillCoolTime(SKILL_BYKK_SUMMONKRUTA, sq_GetSkillLevel(sqrChr, SKILL_BYKK_SUMMONKRUTA), -1); break; case 1002: local skillIndex = parentObj.getVar("skillIndex").get_vector(0); monsterattack_ksk(parentObj,skillIndex); break; } return true; } function proc_appendage_kruta_bykk(appendage) { if (!appendage) return; local parentObj = appendage.getParent(); local sqrChr = sq_GetCNRDObjectToSQRCharacter(appendage.getVar("sqrChr").get_obj_vector(0)); if((!sqrChr || sqrChr.getState() == STATE_DIE) || (!parentObj || parentObj.getState() == STATE_DIE)){ appendage.setValid(false); return; } if(!sq_IsMyControlObject(sqrChr)) return; local t_01 = appendage.getVar("skill_1").get_timer_vector(0); local t_02 = appendage.getVar("skill_2").get_timer_vector(0); local t_03 = appendage.getVar("skill_3").get_timer_vector(0); local t_04 = appendage.getVar("skill_4").get_timer_vector(0); local currentT = appendage.getTimer().Get(); local state = parentObj.getState(); local attackIndex = parentObj.getAttackIndex(); switch(state){ case STATE_STAND: // appendage.getVar("speed").setBool(0,true); if(sqrChr.getVar("summonmonsterwait").getBool(0)) monsterattack_ksk(parentObj,14); local timer = appendage.getVar("atktime").get_ct_vector(0); local currentTT = timer.Get(); if(currentTT < ATK_TIME) return; timer.Reset(); timer.Start(10000,0); local targetObj = sq_FindTarget( parentObj, 0, 1000, 800, 350); if(targetObj){ parentObj.getVar("targetObj").clear_obj_vector(); parentObj.getVar("targetObj").push_obj_vector(targetObj); local skillt = [t_04,t_03,t_02,t_01]; local attackIndex = [4,2,1,0]; local distanceX = [350,200,600,200]; local distanceXmin = [50,0,0,0]; local distanceY = [50,40,400,40]; for(local i = 0;i < skillt.len(); i++){ if(skillt[i] && skillt[i].isOnEvent(currentT)){ if(sq_IsMyControlObject(parentObj)){ if(sq_Abs(targetObj.getXPos() - parentObj.getXPos()) <= distanceX[i] && sq_Abs(targetObj.getXPos() - parentObj.getXPos()) >= distanceXmin[i] && sq_Abs(targetObj.getYPos() - parentObj.getYPos()) <= distanceY[i]){ if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 6) < 1 && i == 0) return; monsterattack_ksk(parentObj,attackIndex[i]); return; } } } } } else{ if(sq_FindTarget( parentObj, -1000, 1000, 800, 350)) sq_SetCurrentDirection(parentObj, sq_GetOppositeDirection(sq_GetDirection(parentObj))); } break; case STATE_ATTACK: switch(attackIndex){ case 3: local pAni = parentObj.getCurrentAnimation(); local currentT = sq_GetCurrentTime(pAni); local fireT = 600; local srcX = parentObj.getVar("skill2").get_vector(0); local srcY = parentObj.getVar("skill2").get_vector(1); local MoveX = parentObj.getVar("skill2").get_vector(2); local MoveY = parentObj.getVar("skill2").get_vector(3); local v = sq_GetUniformVelocity(0, MoveX, currentT, fireT); local vy = sq_GetUniformVelocity(0, MoveY, currentT, fireT); local dstX = sq_GetDistancePos(srcX, parentObj.getDirection(), v); if(parentObj.isMovablePos(dstX, srcY + vy)){ sq_setCurrentAxisPos(parentObj, 0, dstX); sq_setCurrentAxisPos(parentObj, 1, srcY + vy); } else{ parentObj.getVar("skill2").set_vector(0,parentObj.getXPos()); parentObj.getVar("skill2").set_vector(1,parentObj.getYPos()); parentObj.getVar("skill2").set_vector(2,0); parentObj.getVar("skill2").set_vector(3,0) } if(currentT > fireT) parentObj.sendStateOnlyPacket(STATE_STAND); break; case 14: if(sqrChr.getVar("summonmonsterwait").getBool(0) == false) parentObj.sendStateOnlyPacket(STATE_STAND); break; } break; } } function onStart_appendage_kruta_bykk(appendage) { if (!appendage) return; appendage.getVar("atktime").clear_ct_vector(); appendage.getVar("atktime").push_ct_vector(); local timer = appendage.getVar("atktime").get_ct_vector(0); timer.Reset(); timer.Start(10000,0); } function onEnd_appendage_kruta_bykk(appendage) { if(!appendage) return; local parentObj = appendage.getParent(); if(!parentObj) return; parentObj.sendDestroyPacket(true); } function onSourceKeyFrameFlag_appendage_lighthigherspirit_bykk(appendage,flagIndex) { if(!appendage) return; local parentObj = appendage.getParent(); if(!parentObj){ appendage.setValid(false); return true; } local sqrChr = sq_GetCNRDObjectToSQRCharacter(appendage.getVar("sqrChr").get_obj_vector(0)); if(!sqrChr) return true; // if(!sq_IsMyControlObject(sqrChr)) return true; local eclipsehive_bonus = sqrChr.getVar("eclipsehive_bonus").getInt(10).tofloat() / 100.0; local eclipsehive_bonus2 = sqrChr.getVar("eclipsehive_bonus").getInt(11).tofloat() / 100.0; if(sqrChr.getVar("eclipsehive_select").getBool(0) == true){ local add_bonus = 0.0; if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 24) > 0) add_bonus = add_bonus + 10.0; if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 25) > 0) add_bonus = add_bonus + 10.0; if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 26) > 0) add_bonus = add_bonus + 20.0; if(add_bonus > 0) eclipsehive_bonus2 = eclipsehive_bonus2 +add_bonus / 100.0 } switch(flagIndex){ case 101: local targetObj = sq_GetCNRDObjectToActiveObject(parentObj.getVar("targetObj").get_obj_vector(0)); if(targetObj){ local totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONSPIRITLIGHTHIGHER, SKILL_BYKK_SUMMONSPIRITLIGHTHIGHER, 6, eclipsehive_bonus) + 100; createPassiveObject_k_k(sqrChr,targetObj,SKILL_BYKK_SUMMONSPIRITLIGHTHIGHER,1,0,0,0,totalDamage,0,0,0,0); } break; case 201: createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONSPIRITLIGHTHIGHER,2,0,0,0,5,0,0,0,0); break; case 301://??嚙踝蕭 if(CNSquirrelAppendage.sq_IsAppendAppendage(parentObj, "character/mage/k_k_made/appendage/aptomonster/ap_lighthigherspirit_buff.nut")) CNSquirrelAppendage.sq_RemoveAppendage(parentObj, "character/mage/k_k_made/appendage/aptomonster/ap_lighthigherspirit_buff.nut"); local AddAppendage = CNSquirrelAppendage.sq_AppendAppendage(parentObj, sqrChr, 77, false, "character/mage/k_k_made/appendage/aptomonster/ap_lighthigherspirit_buff.nut", true); AddAppendage.sq_SetValidTime(8000); break; case 401: local totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONSPIRITLIGHTHIGHER, SKILL_BYKK_SUMMONSPIRITLIGHTHIGHER, 25, eclipsehive_bonus2) + 100; local subtype = 41; if(parentObj.getVar("skill4").getBool(0) == true) subtype = 42; createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONSPIRITLIGHTHIGHER,subtype,150,0,0,totalDamage,0,0,0,0); parentObj.getVar("skill4").setBool(0,false); break; case 1001://?嚙踝蕭嚙踝蕭嚙? local direction = sqrChr.getDirection(); local yPos = sqrChr.getYPos(); local zPos = parentObj.getZPos(); local xPos = sq_GetDistancePos(sqrChr.getXPos(), sqrChr.getDirection(), 50); sq_MoveToNearMovablePos(parentObj, xPos, yPos, zPos, xPos, yPos, zPos, 100, -1, 5); sq_SetCurrentDirection(parentObj, direction); if(!sq_GetSkill(sqrChr, SKILL_BYKK_SUMMONSPIRITLIGHTHIGHER).isInCoolTime()) sqrChr.startSkillCoolTime(SKILL_BYKK_SUMMONSPIRITLIGHTHIGHER, sq_GetSkillLevel(sqrChr, SKILL_BYKK_SUMMONSPIRITLIGHTHIGHER), -1); break; case 1002://?嚙踝蕭嚙踝蕭嚙踝蕭嚙踝蕭 parentObj.getVar("skill4").setBool(0,true); monsterattack_ksk(parentObj,3); break; case 1005: createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONSPIRITLIGHTHIGHER,9,100,0,0,0,15,0,0,0); sq_SendCreatePassiveObjectPacket(parentObj, 1008607, 0, 0, 0, 60, parentObj.getDirection()); break; } return true; } function proc_appendage_lighthigherspirit_bykk(appendage) { if (!appendage) return; local parentObj = appendage.getParent(); local sqrChr = sq_GetCNRDObjectToSQRCharacter(appendage.getVar("sqrChr").get_obj_vector(0)); if((!sqrChr || sqrChr.getState() == STATE_DIE) || (!parentObj || parentObj.getState() == STATE_DIE)){ appendage.setValid(false); return; } if(!sq_IsMyControlObject(sqrChr)) return; local t_01 = appendage.getVar("skill_1").get_timer_vector(0);//?嚙踝蕭?? local t_02 = appendage.getVar("skill_2").get_timer_vector(0);//??5?? local t_03 = appendage.getVar("skill_3").get_timer_vector(0);//??嚙踝蕭 local t_04 = appendage.getVar("skill_4").get_timer_vector(0);//晡嚙踝蕭 local currentT = appendage.getTimer().Get(); local state = parentObj.getState(); local attackIndex = parentObj.getAttackIndex(); switch(state){ case STATE_STAND: if(sqrChr.getVar("summonmonsterwait").getBool(0)) monsterattack_ksk(parentObj,5); local timer = appendage.getVar("atktime").get_ct_vector(0); local currentTT = timer.Get(); if(currentTT < ATK_TIME) return; timer.Reset(); timer.Start(10000,0); local grant_timer = parentObj.getVar("grant").get_ct_vector(0); if(grant_timer){ local grant_time = grant_timer.Get(); if(grant_timer && grant_time >= 4000 + sq_getRandom(0,4000) && sq_FindTarget( parentObj, 0, 400, 80, 200)){ grant_timer.Reset(); grant_timer.Start(10000,0); monsterattack_ksk(parentObj,6); return; } } if(t_03 && t_03.isOnEvent(currentT)){ monsterattack_ksk(parentObj,2); return; } local targetObj = sq_FindTarget( parentObj, 0, 1000, 800, 350); if(targetObj){ parentObj.getVar("targetObj").clear_obj_vector(); parentObj.getVar("targetObj").push_obj_vector(targetObj); local skillt = [t_04,t_02,t_01]; local attackIndex = [3,1,0]; local distanceX = [300,200,300]; local distanceXmin = [50,0,0]; local distanceY = [100,30,100]; for(local i = 0;i < skillt.len(); i++){ if(skillt[i] && skillt[i].isOnEvent(currentT)){ if(sq_IsMyControlObject(parentObj)){ if(sq_Abs(targetObj.getXPos() - parentObj.getXPos()) <= distanceX[i] && sq_Abs(targetObj.getXPos() - parentObj.getXPos()) >= distanceXmin[i] && sq_Abs(targetObj.getYPos() - parentObj.getYPos()) <= distanceY[i]){ if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 12) < 1 && i == 0) return; monsterattack_ksk(parentObj,attackIndex[i]); if(parentObj.getVar("lightning").size_vector() > 0){ local attacknum = parentObj.getVar("lightning").get_vector(0); parentObj.getVar("lightning").set_vector(0,attacknum + 1); } return; } } } } } else{ if(sq_FindTarget( parentObj, -1000, 1000, 800, 350)) sq_SetCurrentDirection(parentObj, sq_GetOppositeDirection(sq_GetDirection(parentObj))); } break; case STATE_ATTACK: if(attackIndex == 5){ if(sqrChr.getVar("summonmonsterwait").getBool(0) == false) parentObj.sendStateOnlyPacket(STATE_STAND); } break; } } function onStart_appendage_lighthigherspirit_bykk(appendage) { if (!appendage) return; appendage.getVar("atktime").clear_ct_vector(); appendage.getVar("atktime").push_ct_vector(); local timer = appendage.getVar("atktime").get_ct_vector(0); timer.Reset(); timer.Start(10000,0); } function onEnd_appendage_lighthigherspirit_bykk(appendage) { if (!appendage) return; local parentObj = appendage.getParent(); if(!parentObj) return; parentObj.sendDestroyPacket(true); }