function onSourceKeyFrameFlag_appendage_luis_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, 46, 46, 11, eclipsehive_bonus) + 100; createPassiveObject_k_k(sqrChr,parentObj,46,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, 46, 46, 12, eclipsehive_bonus) + 100; local etcSub = sq_GetLevelData(sqrChr, 46, 25, sq_GetSkillLevel(sqrChr, 46)); createPassiveObject_k_k(sqrChr,targetObj,46,2,0,0,0,totalDamage,etcSub,0,0,0); } break; case 301://嚙踝蕭牊 sq_AddDrawOnlyAniFromParent(parentObj,"passiveobject/madeby_k_k/animation/luis/fireballstart.ani", 85, 1, 80); local totalDamage = sq_GetBonusRateWithPassive(sqrChr, 46, 46, 13, eclipsehive_bonus) + 100; local etcSub = sq_GetLevelData(sqrChr, 46, 25, sq_GetSkillLevel(sqrChr, 46)); createPassiveObject_k_k(sqrChr,parentObj,46,3,65,0,100,totalDamage,etcSub,0,0,0); break; case 401://嚙??嚙? local targetObj = sq_GetCNRDObjectToActiveObject(parentObj.getVar("targetObj").get_obj_vector(0)); local totalDamage = sq_GetBonusRateWithPassive(sqrChr, 46, 46, 14, eclipsehive_bonus) + 100; local etcSub = sq_GetLevelData(sqrChr, 46, 25, sq_GetSkillLevel(sqrChr, 46)); createPassiveObject_k_k(sqrChr,targetObj,46,4,0,0,0,totalDamage,etcSub,0,0,0); break; case 501://嚙??嚙? local etcSub = sq_GetLevelData(sqrChr, 46, 25, sq_GetSkillLevel(sqrChr, 46)), bonusRate = 1; if(sqrChr.getVar("eclipsehive_select").getBool(0) && parentObj.getVar("ronghe_bool").getBool(0)){//sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 23) > 0 && bonusRate = sqrChr.getVar("LuisObj").get_obj_vector_size(); parentObj.getVar("ronghe_bool").setBool(0, false); } if(parentObj.getVar("skill").getBool(0) == true){ parentObj.getVar("skill").setBool(0,false); local sub = 1; if(etcSub > 0) sub = 10; createPassiveObject_k_k(sqrChr,parentObj,46,5,150,0,0,0,sub,etcSub,bonusRate,0); } else{ local targetObj = sq_GetCNRDObjectToActiveObject(parentObj.getVar("targetObj").get_obj_vector(0)); if(targetObj) createPassiveObject_k_k(sqrChr,targetObj,46,5,0,0,0,0,1,etcSub,bonusRate,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_SUMMONLUIS).isInCoolTime()) sqrChr.startSkillCoolTime(SKILL_BYKK_SUMMONLUIS, sq_GetSkillLevel(sqrChr, SKILL_BYKK_SUMMONLUIS), -1); break; case 1002://?嚙踝蕭嚙踝蕭嚙踝蕭嚙踝蕭 parentObj.getVar("skill").setBool(0,true); local attackIndex = 4; if(CNSquirrelAppendage.sq_IsAppendAppendage(parentObj, BLACKLUNATIC_APDPATH)) attackIndex = 10; local pIntVec = sq_GetGlobalIntVector(); sq_IntVectorClear(pIntVec); sq_IntVectorPush(pIntVec, attackIndex); sq_AddSetStatePacketActiveObject(parentObj, 8, pIntVec, STATE_PRIORITY_USER); break; case 2001://月蝕長矛 local targetObj = sq_GetCNRDObjectToActiveObject(parentObj.getVar("targetObj").get_obj_vector(0)); if(targetObj){ parentObj.sq_PlaySound("R_LUIS_ATK"); parentObj.sq_PlaySound("BLACK_LUNATIC_SPEAR_CAST"); local totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_BLACKLUNATIC, -1, 3, eclipsehive_bonus) + 100; local count = sq_GetIntData(sqrChr, SKILL_BYKK_BLACKLUNATIC, 10); for(local i = 0; i < count; i++){ local base_X = -200 + i * 50; local base_Z = 180 + i * 30; if(i % 2 = 1) base_Z = base_Z + 20; local angle = sq_ToDegree(sq_Atan2(base_X.tofloat(), (base_Z-30).tofloat())); local moveX = -base_X; createPassiveObjectEx_k_k(sqrChr,parentObj,targetObj,SKILL_BYKK_BLACKLUNATIC,1,base_X,0,base_Z,parentObj.getDirection(),totalDamage,angle.tointeger(),moveX,0,0); } } break; case 2002://月空破碎 local targetObj = sq_GetCNRDObjectToActiveObject(parentObj.getVar("targetObj").get_obj_vector(0)); if(targetObj){ parentObj.sq_PlaySound("R_LUIS_ATK"); local totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_BLACKLUNATIC, -1, 2, eclipsehive_bonus) + 100; createPassiveObject_k_k(sqrChr,targetObj,SKILL_BYKK_BLACKLUNATIC,2,0,0,0,totalDamage,0,0,0,0); } break; case 2003://月光追擊 local targetObj = sq_GetCNRDObjectToActiveObject(parentObj.getVar("targetObj").get_obj_vector(0)); if(targetObj){ parentObj.sq_PlaySound("R_LUIS_ATK"); local totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_BLACKLUNATIC, -1, 1, eclipsehive_bonus) + 100; local count = sq_GetIntData(sqrChr, SKILL_BYKK_BLACKLUNATIC, 13); for(local i = 0; i < count; i++){ createPassiveObject_k_k(sqrChr,targetObj,SKILL_BYKK_BLACKLUNATIC,3,sq_getRandom(-100,100),sq_getRandom(-50,50),0,totalDamage,0,0,0,0); } } break; case 2004://黑暗閃電 parentObj.sq_PlaySound("R_LUIS_ATK"); local totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_BLACKLUNATIC, -1, 1, eclipsehive_bonus) + 100; totalDamage = totalDamage * sq_GetIntData(sqrChr, SKILL_BYKK_BLACKLUNATIC, 13) * 110 / 100; createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_BLACKLUNATIC,4,250,0,0,totalDamage,0,0,0,0); break; } return true; } function proc_appendage_luis_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_10").get_timer_vector(0); local t_07 = appendage.getVar("skill_11").get_timer_vector(0); local t_08 = appendage.getVar("skill_12").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 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_05,t_04,t_03,t_02,t_01]; local attackIndex = [4,3,2,1,0]; local distanceX = [800,800,500,800,100]; local distanceXmin = [0,0,50,0,0]; local distanceY = [800,800,20,800,20]; if(CNSquirrelAppendage.sq_IsAppendAppendage(parentObj, BLACKLUNATIC_APDPATH)){ skillt = [t_08,t_07,t_06]; attackIndex = [9,8,7]; distanceX = [600,600,600]; distanceXmin = [0,0,0]; distanceY = [200,200,200]; } 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, 7) < 1 && i == 0 && !CNSquirrelAppendage.sq_IsAppendAppendage(parentObj, BLACKLUNATIC_APDPATH)) return; monsterattack_ksk(parentObj,attackIndex[i]); return; } } } } } break; case STATE_ATTACK: if(attackIndex == 5){ if(sqrChr.getVar("summonmonsterwait").getBool(0) == false) parentObj.sendStateOnlyPacket(STATE_STAND); } break; } } function onStart_appendage_luis_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_luis_bykk(appendage) { if (!appendage) return; local parentObj = appendage.getParent(); if(!parentObj) return; parentObj.sendDestroyPacket(true); } function onSourceKeyFrameFlag_appendage_ramos_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 number = 0; local bonus = 1.0; local bonus_Max = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONRAMOS, SKILL_BYKK_SUMMONRAMOS, 23, 1.0) + 1100; local bonus_deed = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONRAMOS, SKILL_BYKK_SUMMONRAMOS, 24, 1.0) + 100; local bonus_spirit = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONRAMOS, SKILL_BYKK_SUMMONRAMOS, 25, 1.0) + 100; local monster_Name_spirit = ["EcheverraObj","DarkhigherspiritObj","LighthigherspiritObj","WaterhigherspiritObj","FirehigherspiritObj","SpiritDarkObj","SpiritFireObj","SpiritLightObj","SpiritWaterObj"]; local monster_Name_deed = ["SandorObj","AuxoObj","LuisObj","BabydragonObj","KrutaObj","HodorObj"]; for(local i = 0; i < monster_Name_spirit.len(); i++){ local monster_num_spirit = sqrChr.getVar(monster_Name_spirit[i]).get_obj_vector_size(); if(monster_num_spirit > 0) number = number + monster_num_spirit; } bonus = bonus + (number * bonus_spirit).tofloat() / 1000.0; number = 0; for(local ui = 0; ui < monster_Name_deed.len(); ui++){ local monster_num_deed = sqrChr.getVar(monster_Name_deed[ui]).get_obj_vector_size(); if(monster_num_deed > 0) number = number + monster_num_deed; } bonus = bonus + (number * bonus_deed).tofloat() / 1000.0; if(bonus > bonus_Max.tofloat() / 1000.0) bonus = bonus_Max.tofloat() / 1000.0; 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_SUMMONRAMOS, SKILL_BYKK_SUMMONRAMOS, 2, bonus*eclipsehive_bonus) + 100; createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONRAMOS,1,0,0,0,totalDamage,0,0,0,0); break; case 201://嚙踝蕭嚙踝蕭1 local pAni = parentObj.getCurrentAnimation(); local delay1 = pAni.getDelaySum(0,0); local delay2 = pAni.getDelaySum(4,4); local totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONRAMOS, SKILL_BYKK_SUMMONRAMOS, 5, bonus*eclipsehive_bonus) + 100; createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONRAMOS,21,0,0,0,totalDamage,delay1,delay2,0,0); break; case 202://嚙踝蕭嚙踝蕭嚙踝蕭2 monsterattack_ksk(parentObj,2); break; case 203://嚙踝蕭嚙踝蕭2 local pAni = parentObj.getCurrentAnimation(); local delay1 = pAni.getDelaySum(0,0); local delay2 = pAni.getDelaySum(1,1); local delay3 = pAni.getDelaySum(4,4); local totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONRAMOS, SKILL_BYKK_SUMMONRAMOS, 6, bonus*eclipsehive_bonus) + 100; createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONRAMOS,22,0,0,0,totalDamage,delay1,delay2,delay3,0); break; case 301://嚙踝蕭?嚙踝蕭?嚙踝蕭嚙踝蕭嚙踝蕭? monsterattack_ksk(parentObj,4); break; case 302://嚙踝蕭? local pAni = parentObj.getCurrentAnimation(); local delay1 = pAni.getDelaySum(0,0); local delay2 = pAni.getDelaySum(3,3); local group = sq_GetGroup(parentObj); local uniqueId = sq_GetUniqueId(parentObj); local totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONRAMOS, SKILL_BYKK_SUMMONRAMOS, 7, bonus*eclipsehive_bonus) + 100; createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONRAMOS,31,0,0,0,totalDamage,group,uniqueId,delay1,delay2); break; case 303://嚙踝蕭?嚙踝蕭嚙踝蕭嚙踝蕭嚙踝蕭?1 monsterattack_ksk(parentObj,5); break; case 304://嚙踝蕭?1 local pAni = parentObj.getCurrentAnimation(); local delay1 = pAni.getDelaySum(0,0); local delay2 = pAni.getDelaySum(4,4); local totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONRAMOS, SKILL_BYKK_SUMMONRAMOS, 8, bonus*eclipsehive_bonus) + 100; createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONRAMOS,32,0,0,0,totalDamage,delay1,delay2,0,0); break; case 305://嚙踝蕭?1嚙踝蕭嚙踝蕭?2 monsterattack_ksk(parentObj,6); break; case 306://嚙踝蕭?2 local pAni = parentObj.getCurrentAnimation(); local delay1 = pAni.getDelaySum(0,0); local delay2 = pAni.getDelaySum(1,1); local delay3 = pAni.getDelaySum(4,4); local totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONRAMOS, SKILL_BYKK_SUMMONRAMOS, 9, bonus*eclipsehive_bonus) + 100; createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONRAMOS,33,0,0,0,totalDamage,delay1,delay2,delay3,0); break; case 401://嚙踝蕭嚙踝蕭嚙踝蕭嚙踝蕭 local pAni = parentObj.getCurrentAnimation(); local delay = pAni.getDelaySum(0,0); local totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONRAMOS, SKILL_BYKK_SUMMONRAMOS, 10, bonus*eclipsehive_bonus) + 100; local totalDamage2 = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONRAMOS, SKILL_BYKK_SUMMONRAMOS, 11, bonus*eclipsehive_bonus) + 100; local hittime = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONRAMOS, SKILL_BYKK_SUMMONRAMOS, 22, 1.0) + 100; createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONRAMOS,41,100,0,0,totalDamage,totalDamage2,hittime,delay,0); break; case 402://嚙踝蕭?嚙踝蕭 monsterattack_ksk(parentObj,8); break; case 403://嚙踝蕭?嚙踝蕭 local pAni = parentObj.getCurrentAnimation(); local delay = pAni.getDelaySum(0,0); createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONRAMOS,42,300,0,75,0,delay,0,0,0); monsterattack_ksk(parentObj,9); break; case 501://?嚙踝蕭 local pAni = parentObj.getCurrentAnimation(); local delay = pAni.getDelaySum(0,0); local totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONRAMOS, SKILL_BYKK_SUMMONRAMOS, 15, bonus*eclipsehive_bonus2) + 100; local hittime = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONRAMOS, SKILL_BYKK_SUMMONRAMOS, 14, 1.0*eclipsehive_bonus2) + 100; createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONRAMOS,5,0,0,0,totalDamage,hittime,delay,0,0); sq_SendCreatePassiveObjectPacket(parentObj, 1008605, 0, 0, 0, 600, parentObj.getDirection()); break; case 502: sq_SendCreatePassiveObjectPacket(parentObj, 1008605, 0, 0, 0, 100, parentObj.getDirection()); break; case 601://嚙踝蕭嚙?嚙? break; case 602://嚙踝蕭? local pAni = parentObj.getCurrentAnimation(); local delay = pAni.getDelaySum(6,6); local totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONRAMOS, SKILL_BYKK_SUMMONRAMOS, 4, bonus*eclipsehive_bonus) + 100; createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONRAMOS,6,0,0,0,totalDamage,delay,0,0,0); break; case 603://嚙踝蕭嚙? parentObj.sendDestroyPacket(true); break; case 701://嚙踝蕭瓊嚙踝蕭?嚙踝蕭嚙? parentObj.getVar("skill").setBool(0,false); createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONRAMOS,74,0,-1,-1,0,0,0,0,0); createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONRAMOS,75,0,-1,-1,0,0,0,0,0); sq_SendCreatePassiveObjectPacket(parentObj, 1008605, 0, 0, 0, 600, parentObj.getDirection()); 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)){ targetObj = sq_GetCNRDObjectToActiveObject(targetObj); sq_AddDrawOnlyAniFromParent(targetObj,"monster/character/mage/madeby_k_k/ramos/animation/meal/2down_03.ani", 0, 0, 0); local appendagePath = "character/mage/k_k_made/appendage/aptomonster/debuff/ap_holdedmonster.nut"; local MasterAppendage = CNSquirrelAppendage.sq_AppendAppendage(targetObj, sqrChr, -1, false, appendagePath, true); if(MasterAppendage){ sq_HoldAndDelayDie(targetObj, sqrChr, true, false, false, 100, 5000, ENUM_DIRECTION_NEUTRAL , MasterAppendage); local validT = MasterAppendage.getAppendageInfo(); validT.setValidTime(5500); } } } break; case 702://嚙踝蕭? local pAni = parentObj.getCurrentAnimation(); local delay = pAni.getDelaySum(9,9); local delay2 = pAni.getDelaySum(10,10); local delay3 = pAni.getDelaySum(23,23); local totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_BUGFALL, SKILL_BYKK_BUGFALL, 1, bonus) + 100; local hittime = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_BUGFALL, SKILL_BYKK_BUGFALL, 2, 1.0) + 100; createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONRAMOS,71,0,0,0,totalDamage,hittime,delay,delay2,delay3); break; case 703://嚙踝蕭??葞?嚙踝蕭?嚙賦ㄛ嚙踝蕭?嚙踝蕭 local effectObj1 = sqrChr.getVar("RamosEffect1").get_obj_vector(0); local effectObj2 = sqrChr.getVar("RamosEffect2").get_obj_vector(0); if(effectObj1) effectObj1.setValid(false); if(effectObj2) effectObj2.setValid(false); sq_SendCreatePassiveObjectPacket(parentObj, 1008605, 0, 0, 0, 100, parentObj.getDirection()); local monsternumber = 0; 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)){ monsternumber = monsternumber + 1; } } if(monsternumber > 0){ monsterattack_ksk(parentObj,13); } else{ monsterattack_ksk(parentObj,14); } break; case 704://嚙踝蕭?嚙踝蕭嚙踝蕭? local pAni = parentObj.getCurrentAnimation(); local delay = pAni.getDelaySum(0,0); local totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_BUGFALL, SKILL_BYKK_BUGFALL, 3, bonus) + 100; local hittime = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_BUGFALL, SKILL_BYKK_BUGFALL, 4, 1.0) + 100; createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONRAMOS,72,0,0,0,totalDamage,hittime,delay,0,0); break; case 705://嚙踝蕭?嚙踝蕭 monsterattack_ksk(parentObj,15);//14 break; case 706://晡嚙踝蕭嚙?+嚙踝蕭嚙踝蕭 local pAni = parentObj.getCurrentAnimation(); local delay = pAni.getDelaySum(0,0); local totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_BUGFALL, SKILL_BYKK_BUGFALL, 5, bonus) + 100; createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONRAMOS,73,0,0,0,totalDamage,delay,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_SUMMONRAMOS).isInCoolTime()) sqrChr.startSkillCoolTime(SKILL_BYKK_SUMMONRAMOS, sq_GetSkillLevel(sqrChr, SKILL_BYKK_SUMMONRAMOS), -1); break; case 1002://?嚙踝蕭嚙踝蕭嚙踝蕭嚙踝蕭 local attackIndex = 10; if(parentObj.getVar("skill").getBool(0) == true) attackIndex = 12; local pIntVec = sq_GetGlobalIntVector(); sq_IntVectorClear(pIntVec); sq_IntVectorPush(pIntVec, attackIndex); sq_AddSetStatePacketActiveObject(parentObj, 8, pIntVec, STATE_PRIORITY_USER); break; } return true; } function proc_appendage_ramos_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(); if(sqrChr.getState() == 53){ monsterattack_ksk(parentObj,11); return; } switch(state){ case STATE_STAND: if(sqrChr.getVar("summonmonsterwait").getBool(0)){ local pIntVec = sq_GetGlobalIntVector(); sq_IntVectorClear(pIntVec); sq_IntVectorPush(pIntVec, 16); sq_AddSetStatePacketActiveObject(parentObj, 8, pIntVec, STATE_PRIORITY_IGNORE_FORCE); } 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 = [10,7,3,1]; local distanceX = [400,350,800,200]; local distanceXmin = [0,0,0,0]; local distanceY = [50,30,600,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 4: local targetObj = sq_GetCNRDObjectToActiveObject(parentObj.getVar("targetObj").get_obj_vector(0)); if(targetObj){ if(sq_GetDistanceObject(parentObj, targetObj, false) < 90){ monsterattack_ksk(parentObj,5); return; } local pAni = parentObj.getCurrentAnimation(); local currentT = sq_GetCurrentTime(pAni); local fireT = 600;//pAni.getDelaySum(0,3); local X1 = sq_GetAccel(parentObj.getXPos(), targetObj.getXPos(), currentT, fireT, true); local Y1 = sq_GetAccel(parentObj.getYPos(), targetObj.getYPos(), currentT, fireT, true); if(parentObj.isMovablePos(X1, Y1)){ sq_setCurrentAxisPos(parentObj, 0, X1); sq_setCurrentAxisPos(parentObj, 1, Y1); } } break; case 16: if(sqrChr.getVar("summonmonsterwait").getBool(0) == false) parentObj.sendStateOnlyPacket(STATE_STAND); break; } break; } } function onStart_appendage_ramos_bykk(appendage) { if (!appendage) return; local parentObj = appendage.getParent(); if(sq_IsMyControlObject(parentObj)){ monsterattack_ksk(parentObj,0); } 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_ramos_bykk(appendage) { if (!appendage) return; local parentObj = appendage.getParent(); if(!parentObj) return; // parentObj.sendDestroyPacket(true); parentObj.setValid(false); } function onAttackParent_appendage_ramos_bykk(appendage, realAttacker, damager, boundingBox, isStuck) { if(!appendage) return; local parentObj = appendage.getParent(); local sqrChr = sq_GetCNRDObjectToSQRCharacter(appendage.getVar("sqrChr").get_obj_vector(0)); local attackIndex = parentObj.getAttackIndex(); switch(attackIndex){ case 10: if(damager && !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"; damager = sq_GetCNRDObjectToActiveObject(damager); local MasterAppendage = CNSquirrelAppendage.sq_AppendAppendage(damager, sqrChr, -1, false, appendagePath, true); if(MasterAppendage){ sq_AccelMoveToAppendageForce(damager, sqrChr, parentObj, 200, 0, 0, 1000, true, MasterAppendage, true); local validT = MasterAppendage.getAppendageInfo() validT.setValidTime(2000); } } break; } } function onSourceKeyFrameFlag_appendage_sandor_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 pAni = parentObj.getCurrentAnimation(); local delay1 = pAni.getDelaySum(4,4); local totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONSANDOR, SKILL_BYKK_SUMMONSANDOR, 12, eclipsehive_bonus) + 100; local group = sq_GetGroup(parentObj); local uniqueId = sq_GetUniqueId(parentObj); if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 35) > 0 && sqrChr.getVar("eclipsehive_select").getBool(0) == true){ totalDamage = totalDamage * 70 / 100; } createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONSANDOR,1,0,0,0,totalDamage,delay1,group,uniqueId,0); break; case 102: if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 33) > 0 && sqrChr.getVar("eclipsehive_select").getBool(0) == false){ if(parentObj.getVar("attackbool").getBool(0)){ parentObj.getVar("attackbool").setBool(0, false); parentObj.getVar("move").set_vector(0,parentObj.getXPos()); parentObj.getVar("move").set_vector(1,0); parentObj.getVar("move").set_vector(2,0); parentObj.getVar("move").set_vector(3,4); monsterattack_ksk(parentObj,0); } else{ parentObj.getVar("attackbool").setBool(0, true); } } break; case 201://嚙踝蕭嚙踝蕭 local pAni = parentObj.getCurrentAnimation(); local delay1 = pAni.getDelaySum(4,4); local totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONSANDOR, SKILL_BYKK_SUMMONSANDOR, 14, eclipsehive_bonus) + 100; local group = sq_GetGroup(parentObj); local uniqueId = sq_GetUniqueId(parentObj); if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 35) > 0 && sqrChr.getVar("eclipsehive_select").getBool(0) == true){ totalDamage = totalDamage * 70 / 100; } createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONSANDOR,1,0,0,0,totalDamage,delay1,group,uniqueId,0); break; case 202: if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 34) > 0){ parentObj.getVar("attackbool").setBool(1, true); parentObj.getVar("move").set_vector(0,parentObj.getXPos()); parentObj.getVar("move").set_vector(1,0); parentObj.getVar("move").set_vector(2,0); parentObj.getVar("move").set_vector(3,4); monsterattack_ksk(parentObj,0); } break; case 301: local attackIndex = parentObj.getAttackIndex(); switch(attackIndex){ case 2: local hpMax = parentObj.getHpMax(); local hp = parentObj.getHp(); parentObj.setHp((hp + hpMax / 100 * 20).tointeger(), null, true); break; case 3: if(!CNSquirrelAppendage.sq_IsAppendAppendage(parentObj, "character/mage/k_k_made/appendage/aptomonster/skill_ap/ap_sandor_buff.nut")){ local AddAppendage = CNSquirrelAppendage.sq_AppendAppendage(parentObj, sqrChr, 44, false, "character/mage/k_k_made/appendage/aptomonster/skill_ap/ap_sandor_buff.nut", true); AddAppendage.getVar("sqrChr").clear_obj_vector(); AddAppendage.getVar("sqrChr").push_obj_vector(sqrChr); AddAppendage.sq_SetValidTime(35000); AddAppendage.getVar("custominfo").clear_vector(); AddAppendage.getVar("custominfo").push_vector(300); AddAppendage.getVar("custominfo").push_vector(20); AddAppendage.getVar("custominfo").push_vector(20); local skill_level = sq_GetSkillLevel(sqrChr, 44); AddAppendage.getVar("custominfo").push_vector(skill_level); AddAppendage.getVar("a").clear_timer_vector(); AddAppendage.getVar("a").push_timer_vector(); local t = AddAppendage.getVar("a").get_timer_vector(0); t.setParameter(1500, -1); t.resetInstant(0); } break; } break; case 401: local pAni = parentObj.getCurrentAnimation(); local delay1 = pAni.getDelaySum(7,7); local totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONSANDOR, SKILL_BYKK_SUMMONSANDOR, 16, eclipsehive_bonus2) + 100; local sizeRate = 100; local add_Rate = 0; if(sqrChr.getVar("eclipsehive_select").getBool(0)){ if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 33) > 0){ sizeRate = sizeRate + 10; add_Rate = add_Rate + 10; } if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 34) > 0){ sizeRate = sizeRate + 20; add_Rate = add_Rate + 20; } if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 35) > 0){ sizeRate = sizeRate + 20; } } if(add_Rate > 0) totalDamage = totalDamage * (100 + add_Rate) / 100; createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONSANDOR,4,25,0,50,totalDamage,delay1,sizeRate,0,0); break; case 501: for(local i = 0; i < 12; i++){ sq_ReleaseActiveStatus(parentObj, i); } break; case 1001: local direction = parentObj.getVar("teleport").getInt(10); local yPos = parentObj.getVar("teleport").getInt(12); local xPos = parentObj.getVar("teleport").getInt(11); sq_MoveToNearMovablePos(parentObj, xPos, yPos, 0, xPos, yPos, 0, 100, -1, 5); sq_SetCurrentDirection(parentObj, direction); sq_SimpleMoveToNearMovablePos(parentObj,200); if(!sq_GetSkill(sqrChr, SKILL_BYKK_SUMMONSANDOR).isInCoolTime()) sqrChr.startSkillCoolTime(SKILL_BYKK_SUMMONSANDOR, sq_GetSkillLevel(sqrChr, SKILL_BYKK_SUMMONSANDOR), -1); break; case 1002: parentObj.getVar("move").set_vector(0,parentObj.getXPos()); parentObj.getVar("move").set_vector(1,80); parentObj.getVar("move").set_vector(2,7); parentObj.getVar("move").set_vector(3,16); monsterattack_ksk(parentObj,4); break; } return true; } function proc_appendage_sandor_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); if(t_03 && t_03.isOnEvent(currentT)){ monsterattack_ksk(parentObj,2); return; } else if(t_04 && t_04.isOnEvent(currentT)){ monsterattack_ksk(parentObj,3); 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_05,t_02,t_01]; local attackIndex = [4,1,0]; local distanceX = [300,200,200]; local distanceXmin = [0,0,0]; local distanceY = [30,20,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(i == 2){ parentObj.getVar("move").set_vector(0,parentObj.getXPos()); parentObj.getVar("move").set_vector(1,30); parentObj.getVar("move").set_vector(2,0); parentObj.getVar("move").set_vector(3,4); } else if(i == 1){ parentObj.getVar("move").set_vector(0,parentObj.getXPos()); parentObj.getVar("move").set_vector(1,60); parentObj.getVar("move").set_vector(2,4); parentObj.getVar("move").set_vector(3,6); } else if(i == 0){ parentObj.getVar("move").set_vector(0,parentObj.getXPos()); parentObj.getVar("move").set_vector(1,60); parentObj.getVar("move").set_vector(2,7); parentObj.getVar("move").set_vector(3,16); } if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 9) < 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 0: case 1: case 4: local pAni = parentObj.getCurrentAnimation(); local currentT = sq_GetCurrentTime(pAni); if(attackIndex == 1) currentT = currentT - pAni.getDelaySum(0, 3); if(attackIndex == 4) currentT = currentT - pAni.getDelaySum(0, 6); local frameIndex = sq_GetAnimationFrameIndex(pAni); local framestart = parentObj.getVar("move").get_vector(2); local frameend = parentObj.getVar("move").get_vector(3); local fireT = pAni.getDelaySum(framestart, frameend); 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 >= framestart && frameIndex <= frameend){ if(parentObj.isMovablePos(dstX,parentObj.getYPos())){ sq_setCurrentAxisPos(parentObj, 0, dstX); } else{ parentObj.getVar("skill2").set_vector(0,parentObj.getXPos()); parentObj.getVar("move").set_vector(1,0); } } break; case 5: if(sqrChr.getVar("summonmonsterwait").getBool(0) == false) parentObj.sendStateOnlyPacket(STATE_STAND); break; } break; case STATE_SIT_FOREVER: case STATE_DAMAGE: case STATE_HOLD: local timer = parentObj.getVar().get_ct_vector(0); local currentT = timer.Get(); if(currentT > 5000){ monsterattack_ksk(parentObj,7); timer.Reset();//嚙踝蕭嚙踝蕭嚙? timer.Start(10000,0);//???嚙? return; } break; } } function onStart_appendage_sandor_bykk(appendage) { if (!appendage) return; //local parentObj = appendage.getParent(); 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_sandor_bykk(appendage) { if (!appendage) return; local parentObj = appendage.getParent(); if(!parentObj) return; parentObj.sendDestroyPacket(true); } function onSourceKeyFrameFlag_appendage_spirit_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) == false){ if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 36) > 0) eclipsehive_bonus = eclipsehive_bonus + 0.1; if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 37) > 0) eclipsehive_bonus = eclipsehive_bonus + 0.1; if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 38) > 0){ if(flagIndex != 201 && flagIndex != 202 && flagIndex != 203 && flagIndex != 1002) eclipsehive_bonus = eclipsehive_bonus + 0.6; else eclipsehive_bonus = eclipsehive_bonus + 0.1; } } switch(flagIndex){ case 101://嚙踝蕭1 local pAni = parentObj.getCurrentAnimation(); local delay1 = pAni.getDelaySum(2,2); local delay2 = pAni.getDelaySum(3,3); local totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONSPIRITDARK, SKILL_BYKK_SUMMONSPIRITDARK, 5, eclipsehive_bonus) + 100; createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONSPIRITCOMMON,101,0,0,0,totalDamage,delay1,delay2,0,0); break; case 102://嚙踝蕭2 local pAni = parentObj.getCurrentAnimation(); local delay1 = pAni.getDelaySum(4,4); local totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONSPIRITDARK, SKILL_BYKK_SUMMONSPIRITDARK, 5, 1.2*eclipsehive_bonus) + 100; createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONSPIRITCOMMON,102,0,0,0,totalDamage,delay1,0,0,0); break; case 201://嚙踝蕭1 case 202://嚙踝蕭1 local pAni = parentObj.getCurrentAnimation(); local delay1 = pAni.getDelaySum(1,1); local totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONSPIRITFIRE, SKILL_BYKK_SUMMONSPIRITFIRE, 6, eclipsehive_bonus) + 100; createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONSPIRITCOMMON,201,0,0,0,totalDamage,delay1,0,0,0); break; case 203: 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,60); parentObj.getVar("skill2").set_vector(2,moveX); parentObj.getVar("skill2").set_vector(3,targetObj.getYPos() - parentObj.getYPos()); local totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONSPIRITFIRE, SKILL_BYKK_SUMMONSPIRITFIRE, 6, 1.2*eclipsehive_bonus) + 100; local group = sq_GetGroup(parentObj); local uniqueId = sq_GetUniqueId(parentObj); createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONSPIRITCOMMON,202,0,0,0,totalDamage,500,group,uniqueId,0); } monsterattack_ksk(parentObj,4); break; case 301://嚙踝蕭1 local pAni = parentObj.getCurrentAnimation(); local delay1 = pAni.getDelaySum(3,3); local delay2 = pAni.getDelaySum(5,5); local totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONSPIRITLIGHT, SKILL_BYKK_SUMMONSPIRITLIGHT, 6, eclipsehive_bonus) + 100; createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONSPIRITCOMMON,301,0,0,0,totalDamage,delay1,delay2,0,0); break; case 302://嚙踝蕭2 local pAni = parentObj.getCurrentAnimation(); local delay1 = pAni.getDelaySum(2,2); local totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONSPIRITLIGHT, SKILL_BYKK_SUMMONSPIRITLIGHT, 6, 1.2*eclipsehive_bonus) + 100; createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONSPIRITCOMMON,302,0,0,0,totalDamage,delay1,0,0,0); break; case 401://?1 local pAni = parentObj.getCurrentAnimation(); local delay1 = pAni.getDelaySum(2,2); local delay2 = pAni.getDelaySum(3,3); local totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONSPIRITWATER, SKILL_BYKK_SUMMONSPIRITWATER, 6, eclipsehive_bonus) + 100; createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONSPIRITCOMMON,401,0,0,0,totalDamage,delay1,delay2,0,0); break; case 402://?2 local targetObj = sq_GetCNRDObjectToActiveObject(parentObj.getVar("targetObj").get_obj_vector(0)); if(targetObj){ local totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONSPIRITWATER, SKILL_BYKK_SUMMONSPIRITWATER, 6, 1.2*eclipsehive_bonus) + 100; createPassiveObject_k_k(sqrChr,targetObj,SKILL_BYKK_SUMMONSPIRITCOMMON,402,0,0,0,totalDamage,0,0,0,0); } break; case 1001://?嚙踝蕭嚙踝蕭嚙? local direction = sqrChr.getDirection(); local yPos = sqrChr.getYPos()+sq_getRandom(-10,10); local xPos = sq_GetDistancePos(sqrChr.getXPos(), sqrChr.getDirection(), 200+sq_getRandom(-20,20)); sq_MoveToNearMovablePos(parentObj, xPos, yPos, 0, xPos, yPos, 0, 100, -1, 5); sq_SetCurrentDirection(parentObj, direction); break; case 1002://?嚙踝蕭嚙踝蕭嚙踝蕭嚙踝蕭 local Index = parentObj.getCollisionObjectIndex(); local skill_level = sq_GetSkillLevel(sqrChr, 49); switch(Index){ case MONSTER_ID_SPIRITDARK://嚙踝蕭 local totalDamage = sq_GetBonusRateWithPassive(sqrChr, 49, 49, 20, 1.0) + 100,sizeRate = sq_GetBonusRateWithPassive(sqrChr, 49, 49, 19, 1.0) + 100,prob = sq_GetLevelData(sqrChr,49, 21, skill_level),time = sq_GetLevelData(sqrChr,49, 23, skill_level); local Ex_level = sq_GetSkillLevel(sqrChr, 53); if(Ex_level > 0){ totalDamage = sq_GetBonusRateWithPassive(sqrChr, 53, 53, 1, 1.0) + 100; sizeRate = sq_GetBonusRateWithPassive(sqrChr, 53, 53, 0, 1.0) + 100; prob = sq_GetLevelData(sqrChr,53, 2, Ex_level); time = sq_GetLevelData(sqrChr,53, 4, Ex_level); } if(sqrChr.getVar("eclipsehive_select").getBool(0)){ local add_Rate = 0, add_Rate2 = 0; if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 36) > 0){add_Rate = add_Rate + 10; add_Rate2 = add_Rate2 + 10;} if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 37) > 0){add_Rate = add_Rate + 10; add_Rate2 = add_Rate2 + 10;} if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 38) > 0){add_Rate = add_Rate + 30;} if(add_Rate > 0){ sizeRate = sizeRate * (100 + add_Rate) / 100; totalDamage = totalDamage * (100 + add_Rate2) / 100; } } local sub = 1002; if(sqrChr.getVar("sacrifice").getBool(0)){ sub = 1001; sqrChr.getVar("sacrifice").setBool(0, false); } createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONSPIRITCOMMON,sub,0,0,20,totalDamage,sizeRate,1,prob,time); break; case MONSTER_ID_SPIRITFIRE://嚙踝蕭 local totalDamage = sq_GetBonusRateWithPassive(sqrChr, 49, 49, 7, 1.0) + 100,sizeRate = sq_GetBonusRateWithPassive(sqrChr, 49, 49, 6, 1.0) + 100,prob = sq_GetLevelData(sqrChr,49, 8, skill_level),time = sq_GetLevelData(sqrChr,49, 10, skill_level); local Ex_level = sq_GetSkillLevel(sqrChr, 51); if(Ex_level > 0){ totalDamage = sq_GetBonusRateWithPassive(sqrChr, 51, 51, 1, 1.0) + 100; sizeRate = sq_GetBonusRateWithPassive(sqrChr, 51, 51, 0, 1.0) + 100; prob = sq_GetLevelData(sqrChr,51, 2, Ex_level); time = sq_GetLevelData(sqrChr,51, 4, Ex_level); } if(sqrChr.getVar("eclipsehive_select").getBool(0)){ local add_Rate = 0, add_Rate2 = 0; if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 36) > 0){add_Rate = add_Rate + 10; add_Rate2 = add_Rate2 + 10;} if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 37) > 0){add_Rate = add_Rate + 10; add_Rate2 = add_Rate2 + 10;} if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 38) > 0){add_Rate = add_Rate + 30;} if(add_Rate > 0){ sizeRate = sizeRate * (100 + add_Rate) / 100; totalDamage = totalDamage * (100 + add_Rate2) / 100; } } local sub = 1002; if(sqrChr.getVar("sacrifice").getBool(1)){ sub = 1001; sqrChr.getVar("sacrifice").setBool(1, false); } createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONSPIRITCOMMON,sub,0,0,35,totalDamage,sizeRate,2,prob,time); break; case MONSTER_ID_SPIRITLIGHT://嚙踝蕭 local totalDamage = sq_GetBonusRateWithPassive(sqrChr, 49, 49, 26, 1.0) + 100,sizeRate = sq_GetBonusRateWithPassive(sqrChr, 49, 49, 25, 0.67) + 100,prob = sq_GetLevelData(sqrChr,49, 27, skill_level),time = sq_GetLevelData(sqrChr,49, 29, skill_level); local Ex_level = sq_GetSkillLevel(sqrChr, 54); if(Ex_level > 0){ totalDamage = sq_GetBonusRateWithPassive(sqrChr, 54, 54, 1, 1.0) + 100; sizeRate = sq_GetBonusRateWithPassive(sqrChr, 54, 54, 0, 0.67) + 100; prob = sq_GetLevelData(sqrChr,54, 2, Ex_level); time = sq_GetLevelData(sqrChr,54, 4, Ex_level); } if(sqrChr.getVar("eclipsehive_select").getBool(0)){ local add_Rate = 0, add_Rate2 = 0; if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 36) > 0){add_Rate = add_Rate + 10; add_Rate2 = add_Rate2 + 10;} if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 37) > 0){add_Rate = add_Rate + 10; add_Rate2 = add_Rate2 + 10;} if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 38) > 0){add_Rate = add_Rate + 30;} if(add_Rate > 0){ sizeRate = sizeRate * (100 + add_Rate) / 100; totalDamage = totalDamage * (100 + add_Rate2) / 100; } } local sub = 1002; if(sqrChr.getVar("sacrifice").getBool(2)){ sub = 1001; sqrChr.getVar("sacrifice").setBool(2, false); } createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONSPIRITCOMMON,sub,0,0,35,totalDamage,sizeRate,3,prob,time); break; case MONSTER_ID_SPIRITWATER://? local totalDamage = sq_GetBonusRateWithPassive(sqrChr, 49, 49, 15, 1.0) + 100,sizeRate = sq_GetBonusRateWithPassive(sqrChr, 49, 49, 14, 0.2) + 100,prob = sq_GetLevelData(sqrChr,49, 16, skill_level),time = sq_GetLevelData(sqrChr,49, 18, skill_level); local Ex_level = sq_GetSkillLevel(sqrChr, 52); if(Ex_level > 0){ totalDamage = sq_GetBonusRateWithPassive(sqrChr, 52, 52, 1, 1.0) + 100; sizeRate = sq_GetBonusRateWithPassive(sqrChr, 52, 52, 0, 0.2) + 100; prob = sq_GetLevelData(sqrChr,52, 2, Ex_level); time = sq_GetLevelData(sqrChr,52, 4, Ex_level); } if(sqrChr.getVar("eclipsehive_select").getBool(0)){ local add_Rate = 0, add_Rate2 = 0; if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 36) > 0){add_Rate = add_Rate + 10; add_Rate2 = add_Rate2 + 10;} if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 37) > 0){add_Rate = add_Rate + 10; add_Rate2 = add_Rate2 + 10;} if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 38) > 0){add_Rate = add_Rate + 30;} if(add_Rate > 0){ sizeRate = sizeRate * (100 + add_Rate) / 100; totalDamage = totalDamage * (100 + add_Rate2) / 100; } } local sub = 1002; if(sqrChr.getVar("sacrifice").getBool(3)){ sub = 1001; sqrChr.getVar("sacrifice").setBool(3, false); } createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONSPIRITCOMMON,sub,0,0,35,totalDamage,sizeRate,4,prob,time); break; } parentObj.setValid(false); break; } return true; } function proc_appendage_spirit_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);//嚙踝蕭嚙踝蕭1 local t_02 = appendage.getVar("skill_2").get_timer_vector(0);//嚙踝蕭嚙踝蕭2 local currentT = appendage.getTimer().Get(); local state = parentObj.getState(); local attackIndex = parentObj.getAttackIndex(); local Index = parentObj.getCollisionObjectIndex(); switch(state){ case STATE_STAND: if(sqrChr.getVar("summonmonsterwait").getBool(0)) monsterattack_ksk(parentObj,2); local timer = appendage.getVar("atktime").get_ct_vector(0); local currentTT = timer.Get(); local tiaozheng = 0; if(sqrChr.getVar("eclipsehive_select").getBool(0) == false){ if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 37) > 0) tiaozheng = tiaozheng - 100; if(sq_GetIntData(sqrChr, SKILL_BYKK_ECLIPSEHIVE, 38) > 0) tiaozheng = tiaozheng - 100; } 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_02,t_01],attackIndex = [1,0],distanceX,distanceY; switch(Index){ case MONSTER_ID_SPIRITDARK://嚙踝蕭 distanceX = [75,50];distanceY = [15,8]; break; case MONSTER_ID_SPIRITFIRE://嚙踝蕭 distanceX = [400,50];distanceY = [300,8]; break; case MONSTER_ID_SPIRITLIGHT://嚙踝蕭 distanceX = [150,100];distanceY = [35,8]; break; case MONSTER_ID_SPIRITWATER://? distanceX = [400,75];distanceY = [400,8]; break; } 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.getYPos() - parentObj.getYPos()) <= distanceY[i]){ 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: if(attackIndex == 2){ if(sqrChr.getVar("summonmonsterwait").getBool(0) == false) parentObj.sendStateOnlyPacket(STATE_STAND); return; } switch(Index){ case MONSTER_ID_SPIRITDARK://嚙踝蕭 break; case MONSTER_ID_SPIRITFIRE://嚙踝蕭 switch(attackIndex){ case 4: local pAni = parentObj.getCurrentAnimation(); local currentT = sq_GetCurrentTime(pAni); local fireT = 500; 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);//?嚙踝蕭?嚙踝蕭x嚙? sq_setCurrentAxisPos(parentObj, 1, srcY + vy);//?嚙踝蕭?嚙踝蕭y嚙? } 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; } break; case MONSTER_ID_SPIRITLIGHT://嚙踝蕭 break; case MONSTER_ID_SPIRITWATER://? break; } break; } } function onStart_appendage_spirit_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_spirit_bykk(appendage) { if (!appendage) return; local parentObj = appendage.getParent(); if(!parentObj) return; parentObj.sendDestroyPacket(true); } function onSourceKeyFrameFlag_appendage_waterhigherspirit_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) createPassiveObject_k_k(sqrChr,targetObj,SKILL_BYKK_SUMMONSPIRITWATERHIGHER,1,0,0,0,0,0,0,0,0); break; case 201: sq_AddDrawOnlyAniFromParent(parentObj,"monster/character/mage/madeby_k_k/waterhigherspirit/animation/ice_wind.ani",0,0,0); local totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONSPIRITWATERHIGHER, SKILL_BYKK_SUMMONSPIRITWATERHIGHER, 7, eclipsehive_bonus) + 100; local pAni = parentObj.getCurrentAnimation(); local delay = pAni.getDelaySum(2, 2); //printp("delay="+delay.tostring()+"\n"); createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONSPIRITWATERHIGHER,2,0,0,0,totalDamage,delay,0,0,0); break; case 301: local totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONSPIRITWATERHIGHER, SKILL_BYKK_SUMMONSPIRITWATERHIGHER, 14, eclipsehive_bonus) + 100; for(local i = 0; i < 3; i++){ local xpos = 50; local zpos = 75; if(i % 3 == 1){ xpos = 60; zpos = 55; } else if(i % 3 == 2){ xpos = 65; zpos = 100; } createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONSPIRITWATERHIGHER,3,xpos,0,zpos,totalDamage,0,0,0,0); } break; case 401: if(parentObj.getVar("skill4").getBool(0) == false){ local totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_BYKK_SUMMONSPIRITWATERHIGHER, SKILL_BYKK_SUMMONSPIRITWATERHIGHER, 19, eclipsehive_bonus2) + 100; for(local i = 0; i < 7; i++){ local xpos = 50; local zpos = 75; if(i % 3 == 1){ xpos = 60; zpos = 55; } else if(i % 3 == 2){ xpos = 65; zpos = 100; } createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONSPIRITWATERHIGHER,3,xpos,0,zpos,totalDamage,0,0,0,0); } } else{ local pAni = parentObj.getCurrentAnimation(); pAni.setSpeedRate(150.0); } break; case 402: if(parentObj.getVar("skill4").getBool(0) == true){ createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONSPIRITWATERHIGHER,4,150,0,0,0,0,0,0,0); parentObj.getVar("skill4").setBool(0, false); } break; case 601: createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONSPIRITWATERHIGHER,9,100,0,0,1,0,0,0,0); sq_AddDrawOnlyAniFromParent(parentObj,"monster/character/mage/madeby_k_k/waterhigherspirit/animation/ice_wind.ani",0,0,0); sq_SendCreatePassiveObjectPacket(parentObj, 1008607, 0, 0, 0, sq_getRandom(201,299), parentObj.getDirection()); 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_SUMMONSPIRITWATERHIGHER).isInCoolTime()) sqrChr.startSkillCoolTime(SKILL_BYKK_SUMMONSPIRITWATERHIGHER, sq_GetSkillLevel(sqrChr, SKILL_BYKK_SUMMONSPIRITWATERHIGHER), -1); break; case 1002://?嚙踝蕭嚙踝蕭嚙踝蕭嚙踝蕭 parentObj.getVar("skill4").setBool(0, true); monsterattack_ksk(parentObj,3); break; } return true; } function proc_appendage_waterhigherspirit_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, 400, 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 = [400,300,200,300]; local distanceXmin = [50,50,10,0]; local distanceY = [20,20,20,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, 13) < 1 && i == 0) return; monsterattack_ksk(parentObj,attackIndex[i]); if(parentObj.getVar("watertornado").size_vector() > 0){ local attacknum = parentObj.getVar("watertornado").get_vector(0); parentObj.getVar("watertornado").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_waterhigherspirit_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_waterhigherspirit_bykk(appendage) { if (!appendage) return; local parentObj = appendage.getParent(); if(!parentObj) return; parentObj.sendDestroyPacket(true); } function proc_appendage_whipwithsid_bykk(appendage) { if (!appendage) return; local parentObj = appendage.getParent(); if(!parentObj || parentObj.getState() == STATE_DIE){ appendage.setValid(false); return; } local sourceObj = appendage.getSource(); local bonusrater = parentObj.getVar("whip_kk").get_vector(1); local hitr = parentObj.getVar("whip_kk").get_vector(0); local ptime = parentObj.getVar("whip_kk").get_vector(2); local t_01 = appendage.getVar("atktime").get_timer_vector(0); local currentT = appendage.getTimer().Get(); if(t_01 && t_01.isOnEvent(currentT) == true){ local ap = sq_getNewAttackInfoPacket(); ap.powerRate = bonusrater; ap.element = ENUM_ELEMENT_NONE ; ap.useWeapon = true; ap.eType = ATTACKTYPE_MAGICAL; ap.backForce = 2; ap.upForce = 10; sq_SendHitObjectPacketByAttackInfo(sourceObj, parentObj, ap); } if(currentT >= ptime * hitr+ 200){ appendage.setValid(false); } } function onStart_appendage_whipwithsid_bykk(appendage) { if (!appendage) return; local parentObj = appendage.getParent(); local hitr = parentObj.getVar("whip_kk").get_vector(0); local ptime = parentObj.getVar("whip_kk").get_vector(2); appendage.getVar("atktime").clear_timer_vector(); appendage.getVar("atktime").push_timer_vector(); local t_01 = appendage.getVar("atktime").get_timer_vector(0); t_01.setParameter(ptime, hitr); t_01.resetInstant(0); } function onEnd_appendage_whipwithsid_bykk(appendage) { if (!appendage) return; local parentObj = appendage.getParent(); } function drawAppend_appendage_whipwithsid_bykk(appendage, isOver, x, y, isFlip) { if (!appendage) return; local parentObj = appendage.getParent(); if (!parentObj){ appendage.setValid(false); return; } local var = appendage.getVar(); local Ani = var.GetAnimationMap("animation", "passiveobject/madeby_k_k/animation/dominionpowerup/dominionpowerupawakening_damage.ani"); if(Ani && isOver){ sq_AnimationProc(Ani); sq_drawCurrentFrame(Ani, x, y + 1, isFlip); } } function onStart_appendage_casillas_skill_bykk(appendage) { if (!appendage) return; local parentObj = appendage.getParent(); if(!parentObj) appendage.setValid(false); } function onEnd_appendage_casillas_skill_bykk(appendage) { if (!appendage) return; local parentObj = appendage.getParent(); local drawnumber = parentObj.getVar("drawobj").get_obj_vector_size(); for(local i = 0; i < drawnumber; i++){ local drawObj = parentObj.getVar("drawobj").get_obj_vector(i); if(drawObj){ drawObj.setValid(false); } } parentObj.getVar("drawobj").clear_obj_vector(); } function onDamageParent_appendage_casillas_skill_bykk(appendage ,attacker, boundingBox, isStuck) { if (!appendage) return; local parentObj = appendage.getParent(); local sourceObj = appendage.getSource(); if(!parentObj || parentObj.getState() == STATE_DIE) appendage.setValid(false); local ring_number = parentObj.getVar("casillasatck").get_vector(0); if(attacker.isObjectType(OBJECTTYPE_PASSIVE)){ local colObj = sq_GetCNRDObjectToCollisionObject(attacker); if(colObj.getCollisionObjectIndex() == 24381 && colObj.getVar("skillIndex").get_vector(0) == 82 && colObj.getVar("subtype").get_vector(0) != 100){ ring_number = ring_number + 1; parentObj.getVar("casillasatck").set_vector(0, ring_number); ring_number = parentObj.getVar("casillasatck").get_vector(0); if(ring_number >= 3){ parentObj.getVar("casillasatck").set_vector(0, 0); local totalDamage = sq_GetBonusRateWithPassive(sourceObj, SKILL_BYKK_SUMMONCASILLAS, SKILL_BYKK_SUMMONCASILLAS, 11, 1.0) + 100; createPassiveObject_k_k(sourceObj,parentObj,SKILL_BYKK_SUMMONCASILLAS,100,0,0, sq_GetCenterZPos(boundingBox),totalDamage,0,0,0,0); } } } } function drawAppend_appendage_casillas_skill_bykk(appendage, isOver, x, y, isFlip) { if (!appendage) return; local parentObj = appendage.getParent(); if (!parentObj){ appendage.setValid(false); return; } local ring_number = parentObj.getVar("casillasatck").get_vector(0); local size = 1.5; local var = appendage.getVar(); local Ani_01 = var.GetAnimationMap("animation_01", "passiveobject/madeby_k_k/animation/casillas/skill/skill01.ani"); local Ani_02 = var.GetAnimationMap("animation_02", "passiveobject/madeby_k_k/animation/casillas/skill/skill01.ani"); Ani_02.setImageRateFromOriginal(size, size); local hight = parentObj.getZPos(); if(ring_number < 1) return; if(ring_number >= 1 && Ani_01 && !isOver){ sq_AnimationProc(Ani_01); sq_drawCurrentFrame(Ani_01, x, y + hight, isFlip); } if(ring_number >= 2 && Ani_01 && !isOver){ sq_AnimationProc(Ani_02); sq_drawCurrentFrame(Ani_02, x, y + hight, isFlip); } } function onStart_appendage_spikekings_grant_bykk(appendage) { if (!appendage) return; // print("test"); local monsterObj = appendage.getParent(); monsterObj.getVar("grant").clear_ct_vector(); monsterObj.getVar("grant").push_ct_vector(); local timer = monsterObj.getVar("grant").get_ct_vector(0); timer.Reset(); timer.Start(10000,0); } function onEnd_appendage_spikekings_grant_bykk(appendage) { if (!appendage) return; local monsterObj = appendage.getParent(); monsterObj.getVar("grant").clear_ct_vector(); } function drawAppend_appendage_spikekings_grant_bykk(appendage, isOver, x, y, isFlip) { if (!appendage) return; local parentObj = appendage.getParent(); if (!parentObj){ appendage.setValid(false); return; } local monster_id = appendage.getVar().get_vector(0); if(!monster_id || monster_id <= 0) return; local var = appendage.getVar(); local Ani_01; local Ani_02; switch(monster_id){ case MONSTER_ID_DARKHIGHERSPIRIT: case MONSTER_ID_LIGHTHIGHERSPIRIT: Ani_01 = var.GetAnimationMap("animation_01", "passiveobject/madeby_k_k/animation/spikeking/newskill/buff_animation/loop_circle_element.ani"); Ani_02 = var.GetAnimationMap("animation_02", "passiveobject/madeby_k_k/animation/spikeking/newskill/buff_animation/loop_energy_element.ani"); break; case MONSTER_ID_FIREHIGHERSPIRIT: Ani_01 = var.GetAnimationMap("animation_01", "passiveobject/madeby_k_k/animation/spikeking/newskill/buff_animation/loop_circle_red.ani"); Ani_02 = var.GetAnimationMap("animation_02", "passiveobject/madeby_k_k/animation/spikeking/newskill/buff_animation/loop_energy_red.ani"); break; case MONSTER_ID_WATERHIGHERSPIRIT: Ani_01 = var.GetAnimationMap("animation_01", "passiveobject/madeby_k_k/animation/spikeking/newskill/buff_animation/loop_circle_blue.ani"); Ani_02 = var.GetAnimationMap("animation_02", "passiveobject/madeby_k_k/animation/spikeking/newskill/buff_animation/loop_energy_blue.ani"); break; } local hight = parentObj.getZPos(); if(Ani_01 && !isOver){ sq_AnimationProc(Ani_01); sq_drawCurrentFrame(Ani_01, x, y + hight, isFlip); } if(Ani_02 && isOver){ sq_AnimationProc(Ani_02); sq_drawCurrentFrame(Ani_02, x, y + hight, isFlip); } } function whip_bykk(obj,subtype) { local skill_level_01 = sq_GetSkillLevel(obj, SKILL_BYKK_DOMINIONPOWERUP);//??嚙踝蕭嚙踝蕭嚙? local skill_level_02 = sq_GetSkillLevel(obj, SKILL_BYKK_ECLIPSEHIVE);//?嚙踝蕭旓?嚙踝蕭? switch(subtype){ case 1: if(skill_level_01 > 0){//嚙踝蕭嚙踝蕭嚙踝蕭嚙踝蕭 if(obj.getVar("whip_kk").getBool(0) == true){// if(skill_level_02 > 0){ obj.sq_SetCurrentAnimation(ANI_WHIP_AWAKENING_02);//?嚙踝蕭 } else{ obj.sq_SetCurrentAnimation(ANI_WHIP_EX_02);//?嚙踝蕭 } /*local attackInfo = sq_GetCurrentAttackInfo(obj); if(attackInfo){ sq_SetCurrentAttackPower(attackInfo, -1); sq_SetCurrentAttackBonusRate(attackInfo, 100); }*/ obj.getVar("whip_kk").setBool(0,false); obj.getVar("whip_kk").setBool(1,false); } else{//嚙踝蕭嚙踝蕭嚙踝蕭嚙踝蕭嚙? if(skill_level_02 > 0){ obj.sq_SetCurrentAnimation(ANI_WHIP_AWAKENING_01);//?嚙踝蕭 obj.getVar("whip_kk").setBool(1,true); } else{ obj.sq_SetCurrentAnimation(ANI_WHIP_EX_01);//?嚙踝蕭 } /*local attackInfo = sq_GetCurrentAttackInfo(obj); if(attackInfo){ sq_SetCurrentAttackPower(attackInfo, -1); sq_SetCurrentAttackBonusRate(attackInfo, 100); }*/ obj.getVar("whip_kk").setBool(0,true); } } else{ //local pooledObj = sq_AddDrawOnlyAniFromParent(obj,"character/mage/effect/animation/whiptomonsterswing2.ani", 0, 0, 0); //local animation = pooledObj.getCurrentAnimation(); //sq_SetFrameDelayTime(animation, 0, 40); //sq_SetFrameDelayTime(animation, 1, 40); obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/whiptomonsterswing2.ani"), 0, 0); } break; case 2: if(skill_level_01 > 0){ if(obj.getVar("whip_kk").getBool(0) == true){ obj.setSkillCommandEnable(20,true); local b_useskill = obj.sq_IsEnterSkill(20); if(b_useskill != -1){ obj.sq_IntVectClear(); obj.sq_IntVectPush(20); obj.sq_AddSetStatePacket(24, STATE_PRIORITY_USER, true); } } } break; case 3: local state = obj.sq_GetState(); if(state == 24){ if(!obj.isEnemy(damager)){ local pooledObj = sq_CreateDrawOnlyObject(obj, "passiveobject/madeby_k_k/animation/whip/whiptomonsterhitnewbuff.ani", ENUM_DRAWLAYER_COVER, true); pooledObj.setCurrentPos(damager.getXPos(),damager.getYPos(), sq_GetCenterZPos(bounding_box)); } else{ if(obj.getVar("whip_kk").getBool(1) == true){ local hitr = 5; local totalDamage1 = sq_GetBonusRateWithPassive(obj, 20, 20, 14, 1.0) + 100; local totalDamage2 = sq_GetBonusRateWithPassive(obj, 20, 20, 16, 1.0) + 100; local bonusrater = (totalDamage1 + totalDamage2) / 2 / hitr; local ptime = 500; damager.getVar("whip_kk").clear_vector(); damager.getVar("whip_kk").push_vector(hitr); damager.getVar("whip_kk").push_vector(bonusrater); damager.getVar("whip_kk").push_vector(ptime); if(CNSquirrelAppendage.sq_IsAppendAppendage(damager, "character/mage/k_k_made/appendage/aptoemeny/ap_whipwithsid.nut")) CNSquirrelAppendage.sq_RemoveAppendage(obj, "character/mage/k_k_made/appendage/aptoemeny/ap_whipwithsid.nut"); local AddAppendage = CNSquirrelAppendage.sq_AppendAppendage(damager, obj, 24, false, "character/mage/k_k_made/appendage/aptoemeny/ap_whipwithsid.nut", true); } } } break; } } function onattack_whip_k_k(obj, damager, bounding_box, is_stuck) { local state = obj.sq_GetState(); if(state == 24){ if(!obj.isEnemy(damager)){ local pooledObj = sq_CreateDrawOnlyObject(obj, "passiveobject/madeby_k_k/animation/whip/whiptomonsterhitnewbuff.ani", ENUM_DRAWLAYER_COVER, true); pooledObj.setCurrentPos(damager.getXPos(),damager.getYPos(), sq_GetCenterZPos(bounding_box)); if(damager.isObjectType(OBJECTTYPE_ACTIVE)) damager = sq_GetCNRDObjectToActiveObject(damager); if(sq_GetLevelData(obj, 20, 17, sq_GetSkillLevel(obj, 20)) > 0) obj.sq_SetSuperArmorUntilTime(damager, 40000); } else{ if(obj.getVar("whip_kk").getBool(1) == true){ local hitr = 5; local totalDamage1 = sq_GetBonusRateWithPassive(obj, 20, 20, 14, 1.0) + 100; local totalDamage2 = sq_GetBonusRateWithPassive(obj, 20, 20, 16, 1.0) + 100; local bonusrater = (totalDamage1 + totalDamage2) / 2 / hitr; local ptime = 500; damager.getVar("whip_kk").clear_vector(); damager.getVar("whip_kk").push_vector(hitr); damager.getVar("whip_kk").push_vector(bonusrater); damager.getVar("whip_kk").push_vector(ptime); if(CNSquirrelAppendage.sq_IsAppendAppendage(damager, "character/mage/k_k_made/appendage/aptoemeny/ap_whipwithsid.nut")) CNSquirrelAppendage.sq_RemoveAppendage(obj, "character/mage/k_k_made/appendage/aptoemeny/ap_whipwithsid.nut"); local AddAppendage = CNSquirrelAppendage.sq_AppendAppendage(damager, obj, 24, false, "character/mage/k_k_made/appendage/aptoemeny/ap_whipwithsid.nut", true); } if(damager.isObjectType(OBJECTTYPE_ACTIVE)){ local activeObj = sq_GetCNRDObjectToActiveObject(damager); if(activeObj.getCollisionObjectIndex() == 66473 || activeObj.getCollisionObjectIndex() == 66467){ local group = sq_GetGroup(activeObj); local uniqueId = sq_GetUniqueId(activeObj); createPassiveObject_k_k(obj,activeObj,SKILL_BYKK_MOONSHADOW,3,0,0,sq_GetObjectHeight(activeObj) / 2,10,group,uniqueId,0,0); } } } } } function onChangeSkillEffect_Mage_summoner(obj, skillIndex, reciveData) { if(!obj) return; print("test"); switch(skillIndex){ case SKILL_BYKK_COMMUNION: local subtype = reciveData.readDword(); switch(subtype){ case 1: local id = reciveData.readDword(); local monster_obj = sq_GetCNRDObjectToActiveObject(sq_GetObject(obj, reciveData.readDword(), reciveData.readDword())); switch(id){ case MONSTER_ID_RAMOS: setMonsterAppendage_Summoner_byKK(obj, monster_obj, "character/mage/k_k_made/appendage/aptomonster/ap_ramos.nut", "RamosObj", 122); break; case MONSTER_ID_KRUTA: setMonsterAppendage_Summoner_byKK(obj, monster_obj, "character/mage/k_k_made/appendage/aptomonster/ap_kruta.nut", "KrutaObj", 121); break; case MONSTER_ID_HEILROM: setMonsterAppendage_Summoner_byKK(obj, monster_obj, "character/mage/k_k_made/appendage/aptomonster/ap_heilrom.nut", "HeilromObj", 119); break; case MONSTER_ID_ECHEVERRA: setMonsterAppendage_Summoner_byKK(obj, monster_obj, "character/mage/k_k_made/appendage/aptomonster/ap_echeverra.nut", "EcheverraObj", 47); break; case MONSTER_ID_SANDOR: setMonsterAppendage_Summoner_byKK(obj, monster_obj, "character/mage/k_k_made/appendage/aptomonster/ap_sandor.nut", "SandorObj", 44); break; case MONSTER_ID_AUXO: setMonsterAppendage_Summoner_byKK(obj, monster_obj, "character/mage/k_k_made/appendage/aptomonster/ap_auxoex.nut", "AuxoObj", 45); break; case MONSTER_ID_AUXOOLD: setMonsterAppendage_Summoner_byKK(obj, monster_obj, "character/mage/k_k_made/appendage/aptomonster/ap_auxo.nut", "AuxoObj", 45); break; case MONSTER_ID_LIGHTHIGHERSPIRIT: setMonsterAppendage_Summoner_byKK(obj, monster_obj, "character/mage/k_k_made/appendage/aptomonster/ap_lighthigherspirit.nut", "LighthigherspiritObj", 77); break; case MONSTER_ID_FIREHIGHERSPIRIT: setMonsterAppendage_Summoner_byKK(obj, monster_obj, "character/mage/k_k_made/appendage/aptomonster/ap_firehigherspirit.nut", "FirehigherspiritObj", 79); break; case MONSTER_ID_DARKHIGHERSPIRIT: setMonsterAppendage_Summoner_byKK(obj, monster_obj, "character/mage/k_k_made/appendage/aptomonster/ap_darkhigherspirit.nut", "DarkhigherspiritObj", 76); break; case MONSTER_ID_WATERHIGHERSPIRIT: setMonsterAppendage_Summoner_byKK(obj, monster_obj, "character/mage/k_k_made/appendage/aptomonster/ap_waterhigherspirit.nut", "WaterhigherspiritObj", 78); break; case MONSTER_ID_LUIS: setMonsterAppendage_Summoner_byKK(obj, monster_obj, "character/mage/k_k_made/appendage/aptomonster/ap_luis.nut", "LuisObj", 46); break; case MONSTER_ID_BABYDRAGON: setMonsterAppendage_Summoner_byKK(obj, monster_obj, "character/mage/k_k_made/appendage/aptomonster/ap_babydragon.nut", "BabydragonObj", 80); break; case MONSTER_ID_CASILLAS: setMonsterAppendage_Summoner_byKK(obj, monster_obj, "character/mage/k_k_made/appendage/aptomonster/ap_casillas.nut", "CassillasObj", 82); break; case MONSTER_ID_HODOR: setMonsterAppendage_Summoner_byKK(obj, monster_obj, "character/mage/k_k_made/appendage/aptomonster/ap_hodor.nut", "HodorObj", 25); break; case MONSTER_ID_SPIRITDARK://嚙踝蕭 setMonsterAppendage_Summoner_byKK(obj, monster_obj, "character/mage/k_k_made/appendage/aptomonster/ap_spirit.nut", "SpiritDarkObj", 23); break; case MONSTER_ID_SPIRITFIRE://嚙踝蕭 setMonsterAppendage_Summoner_byKK(obj, monster_obj, "character/mage/k_k_made/appendage/aptomonster/ap_spirit.nut", "SpiritFireObj", 21); break; case MONSTER_ID_SPIRITLIGHT://嚙踝蕭 setMonsterAppendage_Summoner_byKK(obj, monster_obj, "character/mage/k_k_made/appendage/aptomonster/ap_spirit.nut", "SpiritLightObj", 24); break; case MONSTER_ID_SPIRITWATER://? setMonsterAppendage_Summoner_byKK(obj, monster_obj, "character/mage/k_k_made/appendage/aptomonster/ap_spirit.nut", "SpiritWaterObj", 22); break; } break; } break; } } function setMonsterAppendage_Summoner_byKK(obj, monster_obj, appendagepath, monstername, skill_index) { if(!obj) return; if(!monster_obj) return; if(appendagepath == null || monstername == null || skill_index == null) return; appendagepath = appendagepath.tostring(); monstername = monstername.tostring(); local monster_obj = sq_GetCNRDObjectToActiveObject(monster_obj); if(!CNSquirrelAppendage.sq_IsAppendAppendage(monster_obj, appendagepath)){ local AddAppendage = CNSquirrelAppendage.sq_AppendAppendage(monster_obj, monster_obj, skill_index, false, appendagepath, true); AddAppendage.getVar("sqrChr").clear_obj_vector(); AddAppendage.getVar("sqrChr").push_obj_vector(obj); local monsternum = obj.getVar(monstername).get_obj_vector_size(); if(monsternum > 0){ obj.getVar(monstername).push_obj_vector(monster_obj); } else{ obj.getVar(monstername).clear_obj_vector(); obj.getVar(monstername).push_obj_vector(monster_obj); } setMonsterInfo_Mage(obj, monster_obj, skill_index, AddAppendage); if(sq_GetSkill(obj, skill_index).isInCoolTime()) obj.endSkillCoolTime(skill_index); } } function setMonsterInfo_Mage(obj, monster_obj, skill_index, appendage) { if(!obj) return; monster_obj.setMapFollowParent(obj); monster_obj.setMapFollowType(1); local cooltime_Balance = obj.getVar("eclipsehive_cooltime").getInt(10); local monster_id = monster_obj.getCollisionObjectIndex(); switch(monster_id){ case MONSTER_ID_RAMOS: local skill_level = sq_GetSkillLevel(obj, skill_index); local coolt_01 = obj.sq_GetLevelData(skill_index, 19, skill_level) * cooltime_Balance / 100; local coolt_02 = obj.sq_GetLevelData(skill_index, 20, skill_level) * cooltime_Balance / 100; local coolt_03 = obj.sq_GetLevelData(skill_index, 21, skill_level) * cooltime_Balance / 100; local coolt_04 = 12000 * cooltime_Balance / 100; appendage.getVar("skill_1").clear_timer_vector(); appendage.getVar("skill_1").push_timer_vector(); local t_01 = appendage.getVar("skill_1").get_timer_vector(0); t_01.setParameter(coolt_01, -1); t_01.resetInstant(0); appendage.getVar("skill_2").clear_timer_vector(); appendage.getVar("skill_2").push_timer_vector(); local t_02 = appendage.getVar("skill_2").get_timer_vector(0); t_02.setParameter(coolt_02, -1); t_02.resetInstant(0); appendage.getVar("skill_3").clear_timer_vector(); appendage.getVar("skill_3").push_timer_vector(); local t_03 = appendage.getVar("skill_3").get_timer_vector(0); t_03.setParameter(coolt_03, -1); t_03.resetInstant(0); if(sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 8) > 0){ appendage.getVar("skill_4").clear_timer_vector(); appendage.getVar("skill_4").push_timer_vector(); local t_04 = appendage.getVar("skill_4").get_timer_vector(0); t_04.setParameter(coolt_04, -1); t_04.resetInstant(0); } break; case MONSTER_ID_KRUTA: monster_obj.getVar("skill").clear_vector(); monster_obj.getVar("skill").push_vector(4); monster_obj.getVar("skill2").clear_vector(); monster_obj.getVar("skill2").push_vector(0); monster_obj.getVar("skill2").push_vector(0); monster_obj.getVar("skill2").push_vector(0); monster_obj.getVar("skill2").push_vector(0); monster_obj.getVar("skillIndex").clear_vector(); monster_obj.getVar("skillIndex").push_vector(7); local skill_level = sq_GetSkillLevel(obj, skill_index); local coolt_01 = obj.sq_GetLevelData(skill_index, 4, skill_level) * cooltime_Balance / 100; local coolt_02 = obj.sq_GetLevelData(skill_index, 5, skill_level) * cooltime_Balance / 100; local coolt_03 = obj.sq_GetLevelData(skill_index, 6, skill_level) * cooltime_Balance / 100; local coolt_04 = 15000 * cooltime_Balance / 100; if(obj.getVar("eclipsehive_select").getBool(0) == false){ if(sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 30) > 0){ coolt_02 = coolt_02 - 1000; } if(sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 31) > 0){ coolt_03 = coolt_03 - 1000; } } appendage.getVar("skill_1").clear_timer_vector(); appendage.getVar("skill_1").push_timer_vector(); local t_01 = appendage.getVar("skill_1").get_timer_vector(0); t_01.setParameter(coolt_01, -1); t_01.resetInstant(0); if(skill_level >= 5){ appendage.getVar("skill_2").clear_timer_vector(); appendage.getVar("skill_2").push_timer_vector(); local t_02 = appendage.getVar("skill_2").get_timer_vector(0); t_02.setParameter(coolt_02, -1); t_02.resetInstant(0); } if(skill_level >= 10){ appendage.getVar("skill_3").clear_timer_vector(); appendage.getVar("skill_3").push_timer_vector(); local t_03 = appendage.getVar("skill_3").get_timer_vector(0); t_03.setParameter(coolt_03, -1); t_03.resetInstant(0); } appendage.getVar("skill_4").clear_timer_vector(); appendage.getVar("skill_4").push_timer_vector(); local t_04 = appendage.getVar("skill_4").get_timer_vector(0); t_04.setParameter(coolt_04, -1); t_04.resetInstant(0); local sizenum = sq_GetLevelData(obj, SKILL_BYKK_SUMMONKRUTA, 15, sq_GetSkillLevel(obj, SKILL_BYKK_SUMMONKRUTA)); if(sizenum > 0){ sq_SendCreatePassiveObjectPacket(monster_obj, 1008606, 0, 0, 0, sizenum * 100 - 10, monster_obj.getDirection()); } break; case MONSTER_ID_HEILROM: local skill_level = sq_GetSkillLevel(obj, skill_index); local range = obj.sq_GetLevelData(SKILL_BYKK_SUMMONHEILROM, 8, skill_level); local elementAttack = obj.sq_GetLevelData(SKILL_BYKK_SUMMONHEILROM, 4, skill_level); local attackSpeed = obj.sq_GetLevelData(SKILL_BYKK_SUMMONHEILROM, 9, skill_level); local moveSpeed = obj.sq_GetLevelData(SKILL_BYKK_SUMMONHEILROM, 10, skill_level); local castSpeed = obj.sq_GetLevelData(SKILL_BYKK_SUMMONHEILROM, 11, skill_level); appendage.getVar("buffPx").clear_vector(); appendage.getVar("buffPx").push_vector(range); appendage.getVar("buffPx").push_vector(elementAttack); appendage.getVar("buffPx").push_vector(attackSpeed); appendage.getVar("buffPx").push_vector(moveSpeed); appendage.getVar("buffPx").push_vector(castSpeed); appendage.getVar("buffPx").push_vector(skill_level); appendage.getVar("buff01").clear_timer_vector(); appendage.getVar("buff01").push_timer_vector(); local t = appendage.getVar("buff01").get_timer_vector(0); t.setParameter(1000, -1); t.resetInstant(0); appendage.getVar("buff02").push_timer_vector(); local t2 = appendage.getVar("buff02").get_timer_vector(0); t2.setParameter(15000, -1); t2.resetInstant(0); break; case MONSTER_ID_ECHEVERRA: local skill_level = sq_GetSkillLevel(obj, skill_index); local coolt_01 = obj.sq_GetLevelData(skill_index, 4, skill_level) * cooltime_Balance / 100; local coolt_02 = obj.sq_GetLevelData(skill_index, 5, skill_level) * cooltime_Balance / 100; local coolt_03 = obj.sq_GetLevelData(skill_index, 7, skill_level) * cooltime_Balance / 100; local coolt_04 = obj.sq_GetLevelData(skill_index, 6, skill_level) * cooltime_Balance / 100; local coolt_05 = obj.sq_GetLevelData(skill_index, 9, skill_level) * cooltime_Balance / 100; local coolt_06 = 15000 * cooltime_Balance / 100; local isBool = obj.sq_GetLevelData(skill_index, 14, skill_level) if(isBool < 1){ appendage.getVar("skill_1").clear_timer_vector(); appendage.getVar("skill_1").push_timer_vector(); local t_01 = appendage.getVar("skill_1").get_timer_vector(0); t_01.setParameter(coolt_01, -1); t_01.resetInstant(0); } appendage.getVar("skill_2").clear_timer_vector(); appendage.getVar("skill_2").push_timer_vector(); local t_02 = appendage.getVar("skill_2").get_timer_vector(0); t_02.setParameter(coolt_02, -1); t_02.resetInstant(0); appendage.getVar("skill_3").clear_timer_vector(); appendage.getVar("skill_3").push_timer_vector(); local t_03 = appendage.getVar("skill_3").get_timer_vector(0); t_03.setParameter(coolt_03, -1); t_03.resetInstant(0); if(skill_level >= 5){ appendage.getVar("skill_4").clear_timer_vector(); appendage.getVar("skill_4").push_timer_vector(); local t_04 = appendage.getVar("skill_4").get_timer_vector(0); t_04.setParameter(coolt_04, -1); t_04.resetInstant(0); } if(skill_level >= 10){ appendage.getVar("skill_5").clear_timer_vector(); appendage.getVar("skill_5").push_timer_vector(); local t_05 = appendage.getVar("skill_5").get_timer_vector(0); t_05.setParameter(coolt_05, -1); t_05.resetInstant(0); } appendage.getVar("skill_6").clear_timer_vector(); appendage.getVar("skill_6").push_timer_vector(); local t_06 = appendage.getVar("skill_6").get_timer_vector(0); t_06.setParameter(coolt_06, -1); t_06.resetInstant(0); if(sq_GetIntData(obj, 47, 13) > 0 && !obj.getVar("grant").get_ct_vector(0)){ obj.getVar("grant").clear_ct_vector(); obj.getVar("grant").push_ct_vector(); local timer = obj.getVar("grant").get_ct_vector(0); timer.Reset(); timer.Start(10000,0); } break; case MONSTER_ID_SANDOR: monster_obj.getVar("move").clear_vector(); monster_obj.getVar("move").push_vector(0); monster_obj.getVar("move").push_vector(0); monster_obj.getVar("move").push_vector(0); monster_obj.getVar("move").push_vector(0); monster_obj.getVar().clear_ct_vector();//?嚙? monster_obj.getVar().push_ct_vector();//吤嚙踝蕭 local timer = monster_obj.getVar().get_ct_vector(0);//嚙踝蕭嚙踝蕭 timer.Reset();//嚙踝蕭嚙踝蕭嚙? timer.Start(10000,0);//???嚙? local skill_level = sq_GetSkillLevel(obj, skill_index); local coolt_01 = obj.sq_GetLevelData(skill_index, 4, skill_level) * cooltime_Balance / 100; local coolt_02 = obj.sq_GetLevelData(skill_index, 5, skill_level) * cooltime_Balance / 100; local coolt_03 = obj.sq_GetLevelData(skill_index, 6, skill_level) * cooltime_Balance / 100; local coolt_04 = obj.sq_GetLevelData(skill_index, 7, skill_level) * cooltime_Balance / 100; local coolt_05 = 8000 * cooltime_Balance / 100; local speedRate = obj.sq_GetLevelData(skill_index, 13, skill_level); if(speedRate > 0){ local ap = sq_CreateChangeStatus(CHANGE_STATUS_TYPE_MOVE_SPEED, true, speedRate.tofloat(), 3600000); if(ap) ap.sq_Append(monster_obj, monster_obj); local ap2 = sq_CreateChangeStatus(CHANGE_STATUS_TYPE_ATTACK_SPEED, true, speedRate.tofloat(), 3600000); if(ap2) ap2.sq_Append(monster_obj, monster_obj); } if(obj.getVar("eclipsehive_select").getBool(0) == false){ local decreaseRate = 0; if(sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 34) > 0) decreaseRate = decreaseRate - 20; if(sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 35) > 0) decreaseRate = decreaseRate - 20; if(decreaseRate < 0){ coolt_01 = coolt_01 * (100 - decreaseRate) / 100; coolt_02 = coolt_02 * (100 - decreaseRate) / 100; } } if(sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 35) > 0){ if(!CNSquirrelAppendage.sq_IsAppendAppendage(obj, "character/mage/k_k_made/appendage/aptomonster/skill_ap/ap_sandor_protect.nut")){ local AddAppendage = CNSquirrelAppendage.sq_AppendAppendage(obj, obj, -1, false, "character/mage/k_k_made/appendage/aptomonster/skill_ap/ap_sandor_protect.nut", true); AddAppendage.setAppendCauseSkill(BUFF_CAUSE_SKILL, ENUM_CHARACTERJOB_MAGE, 44, sq_GetSkillLevel(obj, 44)); } } //else monsterattack_ksk(monster_obj, 3); appendage.getVar("skill_1").clear_timer_vector(); appendage.getVar("skill_1").push_timer_vector(); local t_01 = appendage.getVar("skill_1").get_timer_vector(0); t_01.setParameter(coolt_01, -1); t_01.resetInstant(0); if(skill_level >= 5){ appendage.getVar("skill_2").clear_timer_vector(); appendage.getVar("skill_2").push_timer_vector(); local t_02 = appendage.getVar("skill_2").get_timer_vector(0); t_02.setParameter(coolt_02, -1); t_02.resetInstant(0); } if(skill_level >= 10){ appendage.getVar("skill_3").clear_timer_vector(); appendage.getVar("skill_3").push_timer_vector(); local t_03 = appendage.getVar("skill_3").get_timer_vector(0); t_03.setParameter(coolt_03, -1); t_03.resetInstant(0); if(sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 35) < 1){ appendage.getVar("skill_4").clear_timer_vector(); appendage.getVar("skill_4").push_timer_vector(); local t_04 = appendage.getVar("skill_4").get_timer_vector(0); t_04.setParameter(coolt_04, -1); t_04.resetInstant(0); } } appendage.getVar("skill_5").clear_timer_vector(); appendage.getVar("skill_5").push_timer_vector(); local t_05 = appendage.getVar("skill_5").get_timer_vector(0); t_05.setParameter(coolt_05, -1); t_05.resetInstant(0); break; case MONSTER_ID_AUXO: local skill_level = sq_GetSkillLevel(obj, skill_index); local coolt_01 = obj.sq_GetLevelData(skill_index, 30, skill_level) * cooltime_Balance / 100; local coolt_03 = obj.sq_GetLevelData(skill_index, 31, skill_level) * cooltime_Balance / 100; local coolt_04 = 10000 * cooltime_Balance / 100; if(obj.getVar("eclipsehive_select").getBool(0) == false){ if(sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 21) > 0){ coolt_01 = coolt_01 * 90 / 100; coolt_03 = coolt_03 * 90 / 100; } if(sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 22) > 0){ coolt_03 = coolt_03 - 1000; } if(sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 23) > 0){ coolt_03 = coolt_03 - 1000; } } appendage.getVar("skill_1").clear_timer_vector(); appendage.getVar("skill_1").push_timer_vector(); local t_01 = appendage.getVar("skill_1").get_timer_vector(0); t_01.setParameter(coolt_01, -1); t_01.resetInstant(0); appendage.getVar("skill_2").clear_timer_vector(); appendage.getVar("skill_2").push_timer_vector(); local t_02 = appendage.getVar("skill_2").get_timer_vector(0); t_02.setParameter(coolt_03, -1); t_02.resetInstant(0); appendage.getVar("skill_3").clear_timer_vector(); appendage.getVar("skill_3").push_timer_vector(); local t_03 = appendage.getVar("skill_3").get_timer_vector(0); t_03.setParameter(coolt_04, -1); t_03.resetInstant(0); monster_obj.getVar("Root").clear_vector(); monster_obj.getVar("Root").push_vector(0); break; case MONSTER_ID_AUXOOLD: local skill_level = sq_GetSkillLevel(obj, skill_index); local coolt_01 = obj.sq_GetLevelData(skill_index, 4, skill_level) * cooltime_Balance / 100; local coolt_02 = obj.sq_GetLevelData(skill_index, 5, skill_level) * cooltime_Balance / 100; local coolt_03 = obj.sq_GetLevelData(skill_index, 6, skill_level) * cooltime_Balance / 100; local coolt_04 = 10000 * cooltime_Balance / 150; if(obj.getVar("eclipsehive_select").getBool(0) == false){ if(sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 21) > 0){ coolt_01 = coolt_01 * 90 / 100; coolt_02 = coolt_02 * 90 / 100; coolt_03 = coolt_03 * 90 / 100; } if(sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 22) > 0){ coolt_03 = coolt_03 - 1000; } if(sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 23) > 0){ coolt_03 = coolt_03 - 1000; } } appendage.getVar("skill_1").clear_timer_vector(); appendage.getVar("skill_1").push_timer_vector(); local t_01 = appendage.getVar("skill_1").get_timer_vector(0); t_01.setParameter(coolt_01, -1); t_01.resetInstant(0); if(skill_level >= 5){ appendage.getVar("skill_2").clear_timer_vector(); appendage.getVar("skill_2").push_timer_vector(); local t_02 = appendage.getVar("skill_2").get_timer_vector(0); t_02.setParameter(coolt_02, -1); t_02.resetInstant(0); } if(skill_level >= 10){ appendage.getVar("skill_3").clear_timer_vector(); appendage.getVar("skill_3").push_timer_vector(); local t_03 = appendage.getVar("skill_3").get_timer_vector(0); t_03.setParameter(coolt_03, -1); t_03.resetInstant(0); } appendage.getVar("skill_4").clear_timer_vector(); appendage.getVar("skill_4").push_timer_vector(); local t_04 = appendage.getVar("skill_4").get_timer_vector(0); t_04.setParameter(coolt_04, -1); t_04.resetInstant(0); break; case MONSTER_ID_LIGHTHIGHERSPIRIT: local skill_level = sq_GetSkillLevel(obj, skill_index); local coolt_01 = obj.sq_GetLevelData(skill_index, 4, skill_level) * cooltime_Balance / 100; local coolt_02 = obj.sq_GetLevelData(skill_index, 5, skill_level) * cooltime_Balance / 100; local coolt_03 = 10000 * cooltime_Balance / 100; local coolt_04 = 10000 * cooltime_Balance / 100; if(obj.getVar("eclipsehive_select").getBool(0) == false){ if(sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 25) > 0){ coolt_01 = coolt_01 * 80 / 100; coolt_02 = coolt_02 * 80 / 100; } else if(sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 24) > 0){ coolt_01 = coolt_01 * 90 / 100; coolt_02 = coolt_02 * 90 / 100; } if(sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 26) > 0){ coolt_03 = coolt_03 * 85 /100; } } appendage.getVar("skill_1").clear_timer_vector(); appendage.getVar("skill_1").push_timer_vector(); local t_01 = appendage.getVar("skill_1").get_timer_vector(0); t_01.setParameter(coolt_01, -1); t_01.resetInstant(0); if(skill_level >= 5){ appendage.getVar("skill_2").clear_timer_vector(); appendage.getVar("skill_2").push_timer_vector(); local t_02 = appendage.getVar("skill_2").get_timer_vector(0); t_02.setParameter(coolt_02, -1); t_02.resetInstant(0); } if(skill_level >= 10){ appendage.getVar("skill_3").clear_timer_vector(); appendage.getVar("skill_3").push_timer_vector(); local t_03 = appendage.getVar("skill_3").get_timer_vector(0); t_03.setParameter(coolt_03, -1); t_03.resetInstant(0); } appendage.getVar("skill_4").clear_timer_vector(); appendage.getVar("skill_4").push_timer_vector(); local t_04 = appendage.getVar("skill_4").get_timer_vector(0); t_04.setParameter(coolt_04, -1); t_04.resetInstant(0); local timer = obj.getVar("pulled").get_ct_vector(0); if(!timer){ obj.getVar("pulled").clear_ct_vector(); obj.getVar("pulled").push_ct_vector(); local timer = obj.getVar("pulled").get_ct_vector(0); timer.Reset(); timer.Start(1000000,0); } else{ timer.Reset(); timer.Start(1000000,0); } break; case MONSTER_ID_FIREHIGHERSPIRIT: local skill_level = sq_GetSkillLevel(obj, skill_index); local coolt_01 = obj.sq_GetLevelData(skill_index, 4, skill_level) * cooltime_Balance / 100; local coolt_02 = obj.sq_GetLevelData(skill_index, 5, skill_level) * cooltime_Balance / 100; local coolt_03 = obj.sq_GetLevelData(skill_index, 16, skill_level) * cooltime_Balance / 100; local coolt_04 = 10000 * cooltime_Balance / 100; if(obj.getVar("eclipsehive_select").getBool(0) == false){ if(sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 25) > 0){ coolt_01 = coolt_01 * 80 / 100; coolt_02 = coolt_02 * 80 / 100; } else if(sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 24) > 0){ coolt_01 = coolt_01 * 90 / 100; coolt_02 = coolt_02 * 90 / 100; } if(sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 26) > 0){ coolt_03 = coolt_03 * 85 /100; } } appendage.getVar("skill_1").clear_timer_vector(); appendage.getVar("skill_1").push_timer_vector(); local t_01 = appendage.getVar("skill_1").get_timer_vector(0); t_01.setParameter(coolt_01, -1); t_01.resetInstant(0); if(skill_level >= 5){ appendage.getVar("skill_2").clear_timer_vector(); appendage.getVar("skill_2").push_timer_vector(); local t_02 = appendage.getVar("skill_2").get_timer_vector(0); t_02.setParameter(coolt_02, -1); t_02.resetInstant(0); } if(skill_level >= 10){ appendage.getVar("skill_3").clear_timer_vector(); appendage.getVar("skill_3").push_timer_vector(); local t_03 = appendage.getVar("skill_3").get_timer_vector(0); t_03.setParameter(coolt_03, -1); t_03.resetInstant(0); } appendage.getVar("skill_4").clear_timer_vector(); appendage.getVar("skill_4").push_timer_vector(); local t_04 = appendage.getVar("skill_4").get_timer_vector(0); t_04.setParameter(coolt_04, -1); t_04.resetInstant(0); local timer = obj.getVar("pulled").get_ct_vector(0); if(!timer){ obj.getVar("pulled").clear_ct_vector(); obj.getVar("pulled").push_ct_vector(); local timer = obj.getVar("pulled").get_ct_vector(0); timer.Reset(); timer.Start(1000000,0); } else{ timer.Reset(); timer.Start(1000000,0); } break; case MONSTER_ID_DARKHIGHERSPIRIT: local skill_level = sq_GetSkillLevel(obj, skill_index); local coolt_01 = obj.sq_GetLevelData(skill_index, 4, skill_level) * cooltime_Balance / 100; local coolt_02 = obj.sq_GetLevelData(skill_index, 5, skill_level) * cooltime_Balance / 100; local coolt_03 = obj.sq_GetLevelData(skill_index, 17, skill_level) * cooltime_Balance / 100; local coolt_04 = 10000 * cooltime_Balance / 100; if(obj.getVar("eclipsehive_select").getBool(0) == false){ if(sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 25) > 0){ coolt_01 = coolt_01 * 80 / 100; coolt_02 = coolt_02 * 80 / 100; } else if(sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 24) > 0){ coolt_01 = coolt_01 * 90 / 100; coolt_02 = coolt_02 * 90 / 100; } if(sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 26) > 0){ coolt_03 = coolt_03 * 85 /100; } } appendage.getVar("skill_1").clear_timer_vector(); appendage.getVar("skill_1").push_timer_vector(); local t_01 = appendage.getVar("skill_1").get_timer_vector(0); t_01.setParameter(coolt_01, -1); t_01.resetInstant(0); if(skill_level >= 5){ appendage.getVar("skill_2").clear_timer_vector(); appendage.getVar("skill_2").push_timer_vector(); local t_02 = appendage.getVar("skill_2").get_timer_vector(0); t_02.setParameter(coolt_02, -1); t_02.resetInstant(0); } if(skill_level >= 10){ appendage.getVar("skill_3").clear_timer_vector(); appendage.getVar("skill_3").push_timer_vector(); local t_03 = appendage.getVar("skill_3").get_timer_vector(0); t_03.setParameter(coolt_03, -1); t_03.resetInstant(0); } appendage.getVar("skill_4").clear_timer_vector(); appendage.getVar("skill_4").push_timer_vector(); local t_04 = appendage.getVar("skill_4").get_timer_vector(0); t_04.setParameter(coolt_04, -1); t_04.resetInstant(0); // if(skill_level >= 20){ // monster_obj.getVar("darkaura").clear_vector(); // monster_obj.getVar("darkaura").push_vector(0); // } break; case MONSTER_ID_WATERHIGHERSPIRIT: local skill_level = sq_GetSkillLevel(obj, skill_index); local coolt_01 = obj.sq_GetLevelData(skill_index, 4, skill_level) * cooltime_Balance / 100; local coolt_02 = obj.sq_GetLevelData(skill_index, 5, skill_level) * cooltime_Balance / 100; local coolt_03 = obj.sq_GetLevelData(skill_index, 18, skill_level) * cooltime_Balance / 100; local coolt_04 = 10000 * cooltime_Balance / 100; if(obj.getVar("eclipsehive_select").getBool(0) == false){ if(sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 25) > 0){ coolt_01 = coolt_01 * 80 / 100; coolt_02 = coolt_02 * 80 / 100; } else if(sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 24) > 0){ coolt_01 = coolt_01 * 90 / 100; coolt_02 = coolt_02 * 90 / 100; } if(sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 26) > 0){ coolt_03 = coolt_03 * 85 /100; } } appendage.getVar("skill_1").clear_timer_vector(); appendage.getVar("skill_1").push_timer_vector(); local t_01 = appendage.getVar("skill_1").get_timer_vector(0); t_01.setParameter(coolt_01, -1); t_01.resetInstant(0); if(skill_level >= 5){ appendage.getVar("skill_2").clear_timer_vector(); appendage.getVar("skill_2").push_timer_vector(); local t_02 = appendage.getVar("skill_2").get_timer_vector(0); t_02.setParameter(coolt_02, -1); t_02.resetInstant(0); } if(skill_level >= 10){ appendage.getVar("skill_3").clear_timer_vector(); appendage.getVar("skill_3").push_timer_vector(); local t_03 = appendage.getVar("skill_3").get_timer_vector(0); t_03.setParameter(coolt_03, -1); t_03.resetInstant(0); } appendage.getVar("skill_4").clear_timer_vector(); appendage.getVar("skill_4").push_timer_vector(); local t_04 = appendage.getVar("skill_4").get_timer_vector(0); t_04.setParameter(coolt_04, -1); t_04.resetInstant(0); break; case MONSTER_ID_LUIS: local skill_level = sq_GetSkillLevel(obj, skill_index); local coolt_01 = obj.sq_GetLevelData(skill_index, 4, skill_level) * cooltime_Balance / 100; local coolt_02 = obj.sq_GetLevelData(skill_index, 5, skill_level) * cooltime_Balance / 100; local coolt_03 = obj.sq_GetLevelData(skill_index, 6, skill_level) * cooltime_Balance / 100; local coolt_04 = obj.sq_GetLevelData(skill_index, 7, skill_level) * cooltime_Balance / 100; // if(coolt_04 < 2500) coolt_04 = 2500; local coolt_05 = 8000 * cooltime_Balance / 100; if(obj.getVar("eclipsehive_select").getBool(0) == false){ if(sq_GetIntData(obj, SKILL_BYKK_BLACKLUNATIC, 51) > 0){ coolt_01 = coolt_01 * 50 / 100; coolt_02 = coolt_02 * 50 / 100; coolt_03 = coolt_03 * 50 / 100; coolt_04 = coolt_04 * 50 / 100; } } if(obj.sq_GetLevelData(skill_index, 24, skill_level) < 1){ appendage.getVar("skill_1").clear_timer_vector(); appendage.getVar("skill_1").push_timer_vector(); local t_01 = appendage.getVar("skill_1").get_timer_vector(0); t_01.setParameter(coolt_01, -1); t_01.resetInstant(0); } appendage.getVar("skill_2").clear_timer_vector(); appendage.getVar("skill_2").push_timer_vector(); local t_02 = appendage.getVar("skill_2").get_timer_vector(0); t_02.setParameter(coolt_02, -1); t_02.resetInstant(0); appendage.getVar("skill_3").clear_timer_vector(); appendage.getVar("skill_3").push_timer_vector(); local t_03 = appendage.getVar("skill_3").get_timer_vector(0); t_03.setParameter(coolt_03, -1); t_03.resetInstant(0); if(skill_level >= 10){ appendage.getVar("skill_4").clear_timer_vector(); appendage.getVar("skill_4").push_timer_vector(); local t_04 = appendage.getVar("skill_4").get_timer_vector(0); t_04.setParameter(coolt_04, -1); t_04.resetInstant(0); } appendage.getVar("skill_5").clear_timer_vector(); appendage.getVar("skill_5").push_timer_vector(); local t_05 = appendage.getVar("skill_5").get_timer_vector(0); t_05.setParameter(coolt_05, -1); t_05.resetInstant(0); break; case MONSTER_ID_BABYDRAGON: local skill_level = sq_GetSkillLevel(obj, skill_index); local coolt_01 = obj.sq_GetLevelData(skill_index, 4, skill_level) * cooltime_Balance / 100; local coolt_02 = (obj.sq_GetLevelData(skill_index, 5, skill_level) * 110 / 100) * cooltime_Balance / 100; local coolt_03 = (obj.sq_GetLevelData(skill_index, 6, skill_level) * 110 / 100) * cooltime_Balance / 100; local coolt_04 = 6000 * cooltime_Balance / 100; if(obj.sq_GetLevelData(skill_index, 12, skill_level) > 0){ appendage.getVar("custom").setBool(0, true); coolt_01 = coolt_01 * 70 / 100; coolt_02 = coolt_02 * 70 / 100; coolt_03 = coolt_03 * 70 / 100; } if(obj.getVar("eclipsehive_select").getBool(0) == false){ if(sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 28) > 0){ coolt_03 = coolt_03 * 70 / 100; } if(sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 29) > 0){ coolt_01 = coolt_01 * 70 / 100; coolt_02 = coolt_02 * 70 / 100; } } if(sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 27) > 0 && obj.getVar("eclipsehive_select").getBool(0) == false){ appendage.getVar("skill_1").clear_timer_vector(); appendage.getVar("skill_1").push_timer_vector(); local t_01 = appendage.getVar("skill_1").get_timer_vector(0); t_01.setParameter(coolt_01, -1); t_01.resetInstant(0); } if(skill_level >= 5){ appendage.getVar("skill_2").clear_timer_vector(); appendage.getVar("skill_2").push_timer_vector(); local t_02 = appendage.getVar("skill_2").get_timer_vector(0); t_02.setParameter(coolt_02, -1); t_02.resetInstant(0); } if(skill_level >= 10){ appendage.getVar("skill_3").clear_timer_vector(); appendage.getVar("skill_3").push_timer_vector(); local t_03 = appendage.getVar("skill_3").get_timer_vector(0); t_03.setParameter(coolt_03, -1); t_03.resetInstant(0); } appendage.getVar("skill_4").clear_timer_vector(); appendage.getVar("skill_4").push_timer_vector(); local t_04 = appendage.getVar("skill_4").get_timer_vector(0); t_04.setParameter(coolt_04, -1); t_04.resetInstant(0); break; case MONSTER_ID_CASILLAS: monster_obj.getVar("move").clear_vector(); monster_obj.getVar("move").push_vector(0); monster_obj.getVar("move").push_vector(0); local skill_level = sq_GetSkillLevel(obj, skill_index); local coolt_01 = obj.sq_GetLevelData(skill_index, 5, skill_level) * cooltime_Balance / 100; local coolt_02 = obj.sq_GetLevelData(skill_index, 6, skill_level) * cooltime_Balance / 100; local coolt_03 = obj.sq_GetLevelData(skill_index, 7, skill_level) * cooltime_Balance / 100; local coolt_04 = 800 * cooltime_Balance / cooltime_Balance; appendage.getVar("skill_1").clear_timer_vector(); appendage.getVar("skill_1").push_timer_vector(); local t_01 = appendage.getVar("skill_1").get_timer_vector(0); t_01.setParameter(coolt_01, -1); t_01.resetInstant(0); appendage.getVar("skill_2").clear_timer_vector(); appendage.getVar("skill_2").push_timer_vector(); local t_02 = appendage.getVar("skill_2").get_timer_vector(0); t_02.setParameter(coolt_02, -1); t_02.resetInstant(0); appendage.getVar("skill_3").clear_timer_vector(); appendage.getVar("skill_3").push_timer_vector(); local t_03 = appendage.getVar("skill_3").get_timer_vector(0); t_03.setParameter(coolt_03, -1); t_03.resetInstant(0); if(obj.sq_GetLevelData(skill_index, 17, skill_level) > 0){ appendage.getVar("skill_4").clear_timer_vector(); appendage.getVar("skill_4").push_timer_vector(); local t_04 = appendage.getVar("skill_4").get_timer_vector(0); t_04.setParameter(coolt_04, -1); t_04.resetInstant(0); } break; case MONSTER_ID_HODOR: local skill_level = sq_GetSkillLevel(obj, skill_index); local coolt_01 = obj.sq_GetLevelData(skill_index, 4, skill_level) * cooltime_Balance / 100;//嚙踝蕭嚙踝蕭? local coolt_02 = obj.sq_GetLevelData(skill_index, 5, skill_level) * cooltime_Balance / 100;//吤嚙踝蕭Buff local coolt_03 = obj.sq_GetLevelData(skill_index, 6, skill_level) * cooltime_Balance / 100;//嚙踝蕭? local coolt_04 = obj.sq_GetLevelData(skill_index, 7, skill_level) * cooltime_Balance / 100;//嚙踝蕭?嚙? local coolt_05 = obj.sq_GetLevelData(skill_index, 8, skill_level) * cooltime_Balance / 100;//3?嚙踝蕭 local coolt_06 = obj.sq_GetLevelData(skill_index, 9, skill_level) * cooltime_Balance / 100;//?艉 local coolt_07 = obj.sq_GetLevelData(skill_index, 10, skill_level) * cooltime_Balance / 100;//嚙踝蕭?嚙踝蕭? local coolt_08 = 6000 * cooltime_Balance / 100;//嚙踝蕭?嚙踝蕭? if(obj.getVar("eclipsehive_select").getBool(0) == false){ if(sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 30) > 0){ coolt_05 = coolt_05 - 500; coolt_06 = coolt_06 - 500; } if(sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 31) > 0){ coolt_05 = coolt_05 - 500; coolt_06 = coolt_06 - 500; } if(sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 32) > 0){ coolt_05 = coolt_05 - 1000; coolt_06 = coolt_06 - 1000; } } if(obj.sq_GetLevelData(skill_index, 14, skill_level) < 1){ appendage.getVar("skill_1").clear_timer_vector(); appendage.getVar("skill_1").push_timer_vector(); local t_01 = appendage.getVar("skill_1").get_timer_vector(0); t_01.setParameter(coolt_01, -1); t_01.resetInstant(0); } appendage.getVar("skill_2").clear_timer_vector(); appendage.getVar("skill_2").push_timer_vector(); local t_02 = appendage.getVar("skill_2").get_timer_vector(0); t_02.setParameter(coolt_02, -1); t_02.resetInstant(0); if(obj.sq_GetLevelData(skill_index, 16, skill_level) < 1){ appendage.getVar("skill_3").clear_timer_vector(); appendage.getVar("skill_3").push_timer_vector(); local t_03 = appendage.getVar("skill_3").get_timer_vector(0); t_03.setParameter(coolt_03, -1); t_03.resetInstant(0); } if(skill_level >= 5){ appendage.getVar("skill_4").clear_timer_vector(); appendage.getVar("skill_4").push_timer_vector(); local t_04 = appendage.getVar("skill_4").get_timer_vector(0); t_04.setParameter(coolt_04, -1); t_04.resetInstant(0); appendage.getVar("skill_5").clear_timer_vector(); appendage.getVar("skill_5").push_timer_vector(); local t_05 = appendage.getVar("skill_5").get_timer_vector(0); t_05.setParameter(coolt_05, -1); t_05.resetInstant(0); appendage.getVar("skill_6").clear_timer_vector(); appendage.getVar("skill_6").push_timer_vector(); local t_06 = appendage.getVar("skill_6").get_timer_vector(0); t_06.setParameter(coolt_06, -1); t_06.resetInstant(0); } if(skill_level >= 10){ appendage.getVar("skill_7").clear_timer_vector(); appendage.getVar("skill_7").push_timer_vector(); local t_07 = appendage.getVar("skill_7").get_timer_vector(0); t_07.setParameter(coolt_07, -1); t_07.resetInstant(0); } appendage.getVar("skill_8").clear_timer_vector(); appendage.getVar("skill_8").push_timer_vector(); local t_08 = appendage.getVar("skill_8").get_timer_vector(0); t_08.setParameter(coolt_08, -1); t_08.resetInstant(0); break; case MONSTER_ID_SPIRITDARK: case MONSTER_ID_SPIRITFIRE: case MONSTER_ID_SPIRITLIGHT: case MONSTER_ID_SPIRITWATER: if(monster_id == MONSTER_ID_SPIRITFIRE){ monster_obj.getVar("skill2").clear_vector(); monster_obj.getVar("skill2").push_vector(0); monster_obj.getVar("skill2").push_vector(0); monster_obj.getVar("skill2").push_vector(0); monster_obj.getVar("skill2").push_vector(0); } local skill_level = sq_GetSkillLevel(obj, skill_index); local coolt_01 = obj.sq_GetLevelData(skill_index, 4, skill_level) * cooltime_Balance / 100; local coolt_02 = coolt_01 * 3 * cooltime_Balance / 100; if(obj.getVar("eclipsehive_select").getBool(0) == false){ local decreaseRate = 0; if(sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 36) > 0) decreaseRate = decreaseRate - 10; if(sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 37) > 0) decreaseRate = decreaseRate - 20; if(sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 38) > 0) decreaseRate = decreaseRate - 20; if(decreaseRate < 0) coolt_01 = coolt_01 * (100 + decreaseRate) / 100; } appendage.getVar("skill_1").clear_timer_vector(); appendage.getVar("skill_1").push_timer_vector(); local t_01 = appendage.getVar("skill_1").get_timer_vector(0); t_01.setParameter(coolt_01, -1); t_01.resetInstant(0); appendage.getVar("skill_2").clear_timer_vector(); appendage.getVar("skill_2").push_timer_vector(); local t_02 = appendage.getVar("skill_2").get_timer_vector(0); t_02.setParameter(coolt_02, -1); t_02.resetInstant(0); break; } } function createPassiveObject_k_k(obj,monsterobj,skillIndex,subtype,x,y,z,pvector1,pvector2,pvector3,pvector4,pvector5) { if(!obj || !monsterobj) return; if(pvector1 == null) pvector1 = 0; if(pvector2 == null) pvector2 = 0; if(pvector3 == null) pvector3 = 0; if(pvector4 == null) pvector4 = 0; if(pvector5 == null) pvector5 = 0; // local bonusRate = obj.getVar("summoners_bonusRate").get_vector(0).tofloat() / 1000.0; //print("bonusRate = "+bonusRate); // pvector1 = (pvector1.tofloat() * bonusRate).tointeger(); if((skillIndex == SKILL_BYKK_SUMMONRAMOS && subtype == 41) || (skillIndex == 25 && subtype == 7) || (skillIndex == 46 && subtype == 6)) pvector2 = (pvector2.tofloat() * summoners_kuk_setbonusRate(obj).tofloat() / 1000.0).tointeger(); local destX_01 = 0; local destY_01 = 0; if(!isSameObject(obj, monsterobj)){ destX_01 = monsterobj.getXPos() - obj.getXPos(); destY_01 = monsterobj.getYPos() - obj.getYPos(); if(monsterobj.getDirection() == ENUM_DIRECTION_LEFT) destX_01 = obj.getXPos() - monsterobj.getXPos(); } sq_BinaryStartWrite(); sq_BinaryWriteDword(skillIndex); sq_BinaryWriteDword(subtype); sq_BinaryWriteDword(pvector1); sq_BinaryWriteDword(pvector2); sq_BinaryWriteDword(pvector3); sq_BinaryWriteDword(pvector4); sq_BinaryWriteDword(pvector5); sq_SendCreatePassiveObjectPacket(obj, 24381, 0, destX_01 + x, destY_01 + y, z - obj.getZPos(), monsterobj.getDirection()); } function summonmonster_mage_plus_Kwk(obj,monsterobj,x,y,z,substate,monsterId,summontime,level,team) { if(obj.getVar("Summonnum").size_vector() == 0){ obj.getVar("Summonnum").clear_vector(); obj.getVar("Summonnum").push_vector(0); } sq_BinaryStartWrite(); sq_BinaryWriteByte(substate); sq_BinaryWriteDword(monsterId); sq_BinaryWriteWord(team); sq_BinaryWriteWord(level); sq_BinaryWriteWord(obj.getVar("Summonnum").get_vector(0)); sq_BinaryWriteDword(0); sq_BinaryWriteDword(summontime); sq_BinaryWriteWord(1); sq_BinaryWriteWord(1); sq_BinaryWriteWord(1); local destX_01 = 0; local destY_01 = 0; if(!isSameObject(obj, monsterobj)){ destX_01 = monsterobj.getXPos() - obj.getXPos(); destY_01 = monsterobj.getYPos() - obj.getYPos(); if(monsterobj.getDirection() == ENUM_DIRECTION_LEFT) destX_01 = obj.getXPos() - monsterobj.getXPos(); } sq_SendCreatePassiveObjectPacket(obj, 48024, 0, destX_01 + x, destY_01 + y, z, monsterobj.getDirection()); obj.getVar("Summonnum").set_vector(0,obj.getVar("Summonnum").get_vector(0) + 1); } function monsterattack_ksk(monsterObj,attackIndex) { if(!monsterObj) return; local activeObj = sq_GetCNRDObjectToCollisionObject(monsterObj); sq_IntVectorClear(sq_GetGlobalIntVector()); sq_IntVectorPush(sq_GetGlobalIntVector(),attackIndex); sq_AddSetStatePacketCollisionObject(activeObj, 8, sq_GetGlobalIntVector(), STATE_PRIORITY_USER, true); } function monsterpulled_bykkkkkkk(obj,monsterobj,x,y,z) { local timer = obj.getVar("pulled").get_ct_vector(0); if(!timer) return; local currentT = timer.Get(); //printp("currentT="+currentT.tostring()+"\n"); if(currentT <= 2000) return; timer.Reset();//嚙踝蕭嚙踝蕭嚙? timer.Start(10000,0);//???嚙? local objectManager = obj.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(obj) && !CNSquirrelAppendage.sq_IsAppendAppendage(targetObj, "character/mage/k_k_made/appendage/aptomonster/debuff/ap_pulledmonster.nut") && sq_Abs(targetObj.getXPos() - monsterobj.getXPos() + x) <= 300 && sq_Abs(targetObj.getYPos() - monsterobj.getYPos() + y) <= 150){ local appendagePath = "character/mage/k_k_made/appendage/aptomonster/debuff/ap_pulledmonster.nut"; local MasterAppendage = CNSquirrelAppendage.sq_AppendAppendage(targetObj, obj, -1, false, appendagePath, true); if(MasterAppendage){ sq_AccelMoveToAppendageForce(targetObj, obj, monsterobj, x, y, z, 500, true, MasterAppendage, true); local validT = MasterAppendage.getAppendageInfo() validT.setValidTime(2000); } } } } function creatdrawobject_kwk(obj,path,istrue,x,y,z,drawlayerkind) { local ani = sq_CreateAnimation("",path); local pooledObj = sq_CreatePooledObject(ani,istrue); sq_SetCurrentDirection(pooledObj, obj.getDirection()); pooledObj.setCurrentPos(x,y,z); pooledObj = sq_SetEnumDrawLayer(pooledObj, drawlayerkind); sq_AddObject(obj, pooledObj, OBJECTTYPE_DRAWONLY, false); return pooledObj; } function summoners_kuk_setbonusRate(obj) { local bonusRate = 1000; if(sq_GetSkillLevel(obj, 48) > 0) bonusRate = bonusRate * (1000 + sq_GetLevelData(obj,48, 1, sq_GetSkillLevel(obj, 48))) / 1000; print("bonusRate1 = "+bonusRate); if(sq_GetSkillLevel(obj, 75) > 0) bonusRate = bonusRate * (1000 + sq_GetLevelData(obj,75, 3, sq_GetSkillLevel(obj, 75))) / 1000; if(sq_GetSkillLevel(obj, 20) > 0) bonusRate = bonusRate * (1000 + sq_GetLevelData(obj,20, 18, sq_GetSkillLevel(obj, 20)) / 10) / 1000; print("bonusRate2 = "+bonusRate); if(sq_GetSkillLevel(obj, SKILL_BYKK_COMMUNION) > 0) bonusRate = bonusRate * (1000 + sq_GetLevelData(obj, SKILL_BYKK_COMMUNION, 0, sq_GetSkillLevel(obj, SKILL_BYKK_COMMUNION))) / 1000; print("bonusRate3 = "+bonusRate); //if(obj.getVar("summoners_bonusRate").getBool(0)) bonusRate = bonusRate + sq_GetLevelData(obj, 81, 5, sq_GetSkillLevel(obj, 81)); // print("bonusRate4 = "+bonusRate); if(obj.getVar("echeverra_buff").getBool(0)){ local number = 0; local monster_Name = ["SandorObj","AuxoObj","LuisObj","EcheverraObj","DarkhigherspiritObj","LighthigherspiritObj","WaterhigherspiritObj","FirehigherspiritObj","BabydragonObj","KrutaObj","HeilromObj","CassillasObj","HodorObj","RamosObj","SpiritDarkObj","SpiritFireObj","SpiritLightObj","SpiritWaterObj"]; for(local i = 0; i < monster_Name.len(); i++){ local monster_num = obj.getVar(monster_Name[i]).get_obj_vector_size(); if(monster_num > 0) number = number + monster_num; } if(number >= 3) number = 3; bonusRate = bonusRate * (1000 + number * 50) / 1000; } //print("bonusRate5 = "+bonusRate); local monster_num = 0; local num = 0; local monster_Name = []; if(sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 23) > 0 && obj.getVar("AuxoObj").get_obj_vector_size() > 0) monster_Name = ["SandorObj","EcheverraObj","DarkhigherspiritObj","LighthigherspiritObj","WaterhigherspiritObj","FirehigherspiritObj","BabydragonObj","LuisObj","KrutaObj","HodorObj","SpiritDarkObj","SpiritFireObj","SpiritLightObj","SpiritWaterObj"]; if(sq_GetIntData(obj, SKILL_BYKK_BLACKLUNATIC, 51) > 0 && obj.getVar("LuisObj").get_obj_vector_size() > 0) monster_Name = ["SandorObj","AuxoObj","EcheverraObj","DarkhigherspiritObj","LighthigherspiritObj","WaterhigherspiritObj","FirehigherspiritObj","BabydragonObj","KrutaObj","HodorObj","SpiritDarkObj","SpiritFireObj","SpiritLightObj","SpiritWaterObj"]; if(sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 26) > 0 && (obj.getVar("DarkhigherspiritObj").get_obj_vector_size() > 0 || obj.getVar("LighthigherspiritObj").get_obj_vector_size() > 0 || obj.getVar("WaterhigherspiritObj").get_obj_vector_size() > 0 || obj.getVar("FirehigherspiritObj").get_obj_vector_size() > 0 || obj.getVar("EcheverraObj").get_obj_vector_size() > 0)) monster_Name = ["SandorObj","AuxoObj","LuisObj","BabydragonObj","KrutaObj","HodorObj","SpiritDarkObj","SpiritFireObj","SpiritLightObj","SpiritWaterObj"]; if(sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 29) > 0 && obj.getVar("BabydragonObj").get_obj_vector_size() > 0) monster_Name = ["SandorObj","AuxoObj","LuisObj","EcheverraObj","DarkhigherspiritObj","LighthigherspiritObj","WaterhigherspiritObj","FirehigherspiritObj","KrutaObj","HodorObj","SpiritDarkObj","SpiritFireObj","SpiritLightObj","SpiritWaterObj"]; if(sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 32) > 0 && (obj.getVar("KrutaObj").get_obj_vector_size() > 0 || obj.getVar("HodorObj").get_obj_vector_size() > 0)) monster_Name = ["SandorObj","AuxoObj","LuisObj","EcheverraObj","DarkhigherspiritObj","LighthigherspiritObj","WaterhigherspiritObj","FirehigherspiritObj","BabydragonObj","SpiritDarkObj","SpiritFireObj","SpiritLightObj","SpiritWaterObj"]; if((sq_GetLevelData(obj, SKILL_BYKK_SUMMONCASILLAS, 18, sq_GetSkillLevel(obj, SKILL_BYKK_SUMMONCASILLAS)) > 0 && obj.getVar("CassillasObj").get_obj_vector_size() > 0) || (sq_GetLevelData(obj, SKILL_BYKK_SUMMONRAMOS, 26, sq_GetSkillLevel(obj, SKILL_BYKK_SUMMONRAMOS)) > 0 && obj.getVar("RamosObj").get_obj_vector_size() > 0)) monster_Name = ["SandorObj","AuxoObj","LuisObj","EcheverraObj","DarkhigherspiritObj","LighthigherspiritObj","WaterhigherspiritObj","FirehigherspiritObj","BabydragonObj","KrutaObj","HodorObj","SpiritDarkObj","SpiritFireObj","SpiritLightObj","SpiritWaterObj"]; if(monster_Name.len() > 0){ for(local ui = 0; ui < monster_Name.len(); ui++){ local number = obj.getVar(monster_Name[ui]).get_obj_vector_size(); if(number > 0) num = num + number; } if(num < 1) bonusRate = bonusRate * (1000 + 500) / 1000; } //print("bonusRate6 = "+bonusRate); if((sq_GetLevelData(obj, SKILL_BYKK_SUMMONCASILLAS, 19, sq_GetSkillLevel(obj, SKILL_BYKK_SUMMONCASILLAS)) > 0 && obj.getVar("CassillasObj").get_obj_vector_size() > 0) || (sq_GetLevelData(obj, SKILL_BYKK_SUMMONRAMOS, 27, sq_GetSkillLevel(obj, SKILL_BYKK_SUMMONRAMOS)) > 0 && obj.getVar("RamosObj").get_obj_vector_size() > 0)) monster_Name = ["SandorObj","AuxoObj","LuisObj","EcheverraObj","DarkhigherspiritObj","LighthigherspiritObj","WaterhigherspiritObj","FirehigherspiritObj","BabydragonObj","KrutaObj","HodorObj","SpiritDarkObj","SpiritFireObj","SpiritLightObj","SpiritWaterObj"]; else monster_Name = []; if(monster_Name.len() > 0){ for(local ui = 0; ui < monster_Name.len(); ui++){ local number = obj.getVar(monster_Name[ui]).get_obj_vector_size(); if(number > 0) num = num + number; } if(num < 1) bonusRate = bonusRate * (1000 + 500) / 1000; } print("bonusRate final = "+bonusRate); obj.getVar("setSkillBonusRate").setInt(0, bonusRate.tointeger()); } function summonmonster_by_kwk(obj,skillIndex) { if(!obj) return; local state = 22; switch(skillIndex){ case SKILL_BYKK_SUMMONHODOR: case SKILL_BYKK_SUMMONSANDOR: case SKILL_BYKK_SUMMONAUXO: case SKILL_BYKK_SUMMONLUIS: case SKILL_BYKK_SUMMONBABYDRAGON: case SKILL_BYKK_SUMMONCASILLAS: case SKILL_BYKK_SUMMONKRUTA: case SKILL_BYKK_SUMMONRAMOS: state = 20; break; } obj.sq_IntVectClear(); obj.sq_IntVectPush(state); obj.sq_IntVectPush(skillIndex); obj.sq_AddSetStatePacket(SKILL_BYKK_RINGOFDOMINATION , STATE_PRIORITY_IGNORE_FORCE, true); return; } function onStartDungeon_summoner_bykk(obj) { if(!obj) return; local loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_MOONSHADOW); if(loadSlot) obj.sq_RemoveSkillLoad(SKILL_BYKK_MOONSHADOW); setEclipsehive_summoner_bykk(obj); summoners_kuk_setbonusRate(obj); } function reset_summoner_bykk(obj) { local addAppendage = CNSquirrelAppendage.sq_GetAppendage(obj,"character/mage/k_k_made/appendage/aptomonster/skill_ap/ap_waterhigherspirit_skill.nut"); if(!addAppendage) return; CNSquirrelAppendage.sq_RemoveAppendage(obj, "character/mage/k_k_made/appendage/aptomonster/skill_ap/ap_waterhigherspirit_skill.nut"); setEclipsehive_summoner_bykk(obj); summoners_kuk_setbonusRate(obj); } function summoner_kak_monsterSkill(obj,skillIndex,monstername,attackIndex) { if(!obj.isMyControlObject()) return; local number = obj.getVar(monstername).get_obj_vector_size(); if(number > 0 && !sq_GetSkill(obj, skillIndex).isInCoolTime()){ if(obj.getVar("eclipsehive_select").getBool(0) == false) number = 0; if(skillIndex == SKILL_BYKK_SUMMONSANDOR && sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 35) > 0){ local sub = sq_getRandom(1, 3); local direction = sq_GetDirection(obj); switch(sub){ case 1: for(local i = 0; i < number; i++){ local monsterObj = sq_GetCNRDObjectToActiveObject(obj.getVar(monstername).get_obj_vector(i)); if(monsterObj){ monsterObj.getVar("teleport").setInt(10, direction); monsterObj.getVar("teleport").setInt(11, sq_GetDistancePos(sq_GetXPos(obj), direction, 50)); monsterObj.getVar("teleport").setInt(12, sq_GetYPos(obj)); monsterattack_ksk(monsterObj,attackIndex); } } break; case 2: local randomnumber = sq_getRandom(0, 90); for(local i = 0; i < number; i++){ local angle = 360 / number * i + randomnumber; local x = (sq_Cos(sq_ToRadian(angle.tofloat())) * 100.0).tointeger(); local y = (sq_Sin(sq_ToRadian(angle.tofloat())) * 50.0).tointeger(); local monsterObj = sq_GetCNRDObjectToActiveObject(obj.getVar(monstername).get_obj_vector(i)); if(monsterObj){ monsterObj.getVar("teleport").setInt(10, direction); monsterObj.getVar("teleport").setInt(11, sq_GetXPos(obj) + x); monsterObj.getVar("teleport").setInt(12, sq_GetYPos(obj) + y); monsterattack_ksk(monsterObj,attackIndex); } } break; case 3: for(local i = 0; i < number; i++){ local x = 0, y = 10 * i; if(i % 2 == 0) y = -y; else y = 10 * (i + 1); if(number % 2 == 0 && number > 5) x = -40 * (i / 2); //print(x+" && "+y); local monsterObj = sq_GetCNRDObjectToActiveObject(obj.getVar(monstername).get_obj_vector(i)); if(monsterObj){ monsterObj.getVar("teleport").setInt(10, direction); monsterObj.getVar("teleport").setInt(11, sq_GetDistancePos(sq_GetXPos(obj), direction, 100 + x)); monsterObj.getVar("teleport").setInt(12, sq_GetYPos(obj) + y); monsterattack_ksk(monsterObj,attackIndex); } } break; } } else{ for(local i = 0; i < number; i++){ local monsterObj = sq_GetCNRDObjectToActiveObject(obj.getVar(monstername).get_obj_vector(i)); if(monsterObj){ if(skillIndex == SKILL_BYKK_SUMMONKRUTA) monsterObj.getVar("skillIndex").set_vector(0, 4); if(skillIndex == SKILL_BYKK_SUMMONSANDOR){ monsterObj.getVar("teleport").setInt(10, obj.getDirection()); monsterObj.getVar("teleport").setInt(11, sq_GetDistancePos(sq_GetXPos(obj), obj.getDirection(), 50)); monsterObj.getVar("teleport").setInt(12, sq_GetYPos(obj)); } monsterattack_ksk(monsterObj,attackIndex); if(((skillIndex == 80 && sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 29) > 0) || ((skillIndex == 45 || skillIndex == 46) && sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 23) > 0)) && obj.getVar("eclipsehive_select").getBool(0)){ number = 1; monsterObj.getVar("ronghe_bool").setBool(0, true); break; } } } } local state = obj.getState(); if(state == 14 || state == 0){ obj.sq_IntVectClear(); obj.sq_AddSetStatePacket(state, STATE_PRIORITY_IGNORE_FORCE, true); } // obj.startSkillCoolTime(skillIndex, sq_GetSkillLevel(obj, skillIndex), -1); return 1; } return 0; } function setEclipsehive_summoner_bykk(obj) { local stage = sq_GetGlobaludpModuleStage(); local mapIndex = sq_GetMapIndex(stage); if(obj.getVar("map").getInt(10) == mapIndex || obj.getVar("map").getBool(0) == false){ obj.getVar("map").setBool(0, true); local skill = sq_GetSkill(obj, SKILL_BYKK_ECLIPSEHIVE), skill_level = sq_GetSkillLevel(obj, SKILL_BYKK_ECLIPSEHIVE); if(skill.isSealFunction()){ obj.getVar("eclipsehive_select").setBool(0, false); obj.getVar("eclipsehive_bonus").setInt(10, (1000 + sq_GetLevelData(obj, SKILL_BYKK_ECLIPSEHIVE, 6, skill_level)) / 10); obj.getVar("eclipsehive_bonus").setInt(11, 100); obj.getVar("eclipsehive_cooltime").setInt(10, 100); if(sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 16) > 0){ obj.getVar("eclipsehive_bonus").setInt(10, (1000 + sq_GetLevelData(obj, SKILL_BYKK_ECLIPSEHIVE, 6, skill_level)) / 10 + 8); } /*local addAppendage = CNSquirrelAppendage.sq_GetAppendage(obj, "character/mage/k_k_made/appendage/aptosummoner/ap_eclipsehive.nut"); if(addAppendage){ local change_appendage = addAppendage.sq_getChangeStatus("eclipsehive"); if(change_appendage) change_appendage.clearParameter(); }*/ local addAppendage2 = CNSquirrelAppendage.sq_GetAppendage(obj, "character/mage/elementalmaster_bykk/ap/ap_magicaltempoup.nut"); if(addAppendage2){ CNSquirrelAppendage.sq_RemoveAppendage(obj, "character/mage/elementalmaster_bykk/ap/ap_magicaltempoup.nut"); //local skillLevel = sq_GetSkillLevel(obj, 2); //local lifeTime = sq_GetLevelData(obj, 2, 0, skillLevel); //addAppendage2.getAppendageInfo().setValidTime(lifeTime); //addAppendage2.setAppendCauseSkill(BUFF_CAUSE_SKILL, ENUM_CHARACTERJOB_MAGE, 2, skillLevel); } } else{ obj.getVar("eclipsehive_select").setBool(0, true); obj.getVar("eclipsehive_bonus").setInt(10, (1000 - sq_GetLevelData(obj, SKILL_BYKK_ECLIPSEHIVE, 4, skill_level)) / 10); obj.getVar("eclipsehive_bonus").setInt(11, (1000 + sq_GetLevelData(obj, SKILL_BYKK_ECLIPSEHIVE, 2, skill_level)) / 10); obj.getVar("eclipsehive_cooltime").setInt(10, 100 + sq_GetLevelData(obj, SKILL_BYKK_ECLIPSEHIVE, 3, skill_level)); if(sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 16) > 0){ obj.getVar("eclipsehive_bonus").setInt(11, (1000 + sq_GetLevelData(obj, SKILL_BYKK_ECLIPSEHIVE, 2, skill_level)) / 10 + 15); } /*local addAppendage = CNSquirrelAppendage.sq_GetAppendage(obj, "character/mage/k_k_made/appendage/aptosummoner/ap_eclipsehive.nut"); if(addAppendage){ local skillLevel = obj.sq_GetSkillLevel(SKILL_BYKK_ECLIPSEHIVE); local value1 = sq_GetLevelData(obj, SKILL_BYKK_ECLIPSEHIVE, 0, skillLevel); local change_appendage = addAppendage.sq_getChangeStatus("eclipsehive"); if(!change_appendage) change_appendage = addAppendage.sq_AddChangeStatus("eclipsehive",obj, obj, 0, CHANGE_STATUS_TYPE_PHYSICAL_ATTACK, true, value1); if(change_appendage){ change_appendage.clearParameter(); change_appendage.addParameter(CHANGE_STATUS_TYPE_COOLTIME_DECLINE, true, -value1.tofloat()); } }*/ local addAppendage2 = CNSquirrelAppendage.sq_GetAppendage(obj, "character/mage/elementalmaster_bykk/ap/ap_magicaltempoup.nut"); if(addAppendage2){ CNSquirrelAppendage.sq_RemoveAppendage(obj, "character/mage/elementalmaster_bykk/ap/ap_magicaltempoup.nut"); } } } else obj.getVar("map").setInt(10, mapIndex); } function getImmuneTypeDamageRate_appendage_sandor_protect_bykk(appendage, damageRate, attacker) { //print("damageRate = "+damageRate); local newRate = 10; return newRate; } function startSkillCoolTime_summoner_bykk(obj, skillIndex, skillLevel, currentCoolTime) { local newCoolTime = 0; switch(skillIndex){ case 49: if(obj.getVar("eclipsehive_select").getBool(0)){ local decreaseRate = 0; if(sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 36) > 0) decreaseRate = decreaseRate - 10; if(sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 37) > 0) decreaseRate = decreaseRate - 10; if(sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 38) > 0) decreaseRate = decreaseRate - 30; if(decreaseRate < 0){ newCoolTime = currentCoolTime * (100 + decreaseRate) / 100; return newCoolTime; } } else return currentCoolTime; break; case 46: break; case 2: print("currentCoolTime ="+currentCoolTime); if(currentCoolTime < 40000) return 40000; break; } } function onAfterSetState_Throw_summoner_bykk(obj, state, datas, isResetTimer) { local ThrowIndex = obj.getThrowIndex(); local ThrowState = obj.getThrowState(); if(ThrowIndex == 49){ if (obj.getThrowState() == 0){ if(sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 36) > 0 && obj.getVar("eclipsehive_select").getBool(0)){ if(obj.getHp() < obj.getHpMax() * 5 / 100){ if (obj.isMessage()) sq_AddMessage(3599); obj.sq_IntVectClear(); obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_USER, false); return; } else{ obj.sq_SendSetHpPacket(obj.getHp() - obj.getHpMax() * 5 / 100, true, obj); } local monstername = ["SpiritDarkObj","SpiritFireObj","SpiritLightObj","SpiritWaterObj"], skillIndex = [53, 51, 54, 52], bonusNum = [20, 7, 26, 15]; local num = 0; local totalDamage = 0; for(local ui = 0; ui < monstername.len(); ui++){ local number = obj.getVar(monstername[ui]).get_obj_vector_size(); if(number > 0){ if(sq_GetSkillLevel(obj, skillIndex[ui]) > 0) totalDamage = totalDamage + sq_GetLevelData(obj, skillIndex[ui], 1, sq_GetSkillLevel(obj, skillIndex[ui])) * number; else totalDamage = totalDamage + sq_GetLevelData(obj, 49, bonusNum[ui], sq_GetSkillLevel(obj, 49)) * number; } num = num + number; } if(num > 0){ local sizeRate = 100, bonusRate = 0; if(sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 37) > 0){sizeRate = sizeRate + 10; bonusRate = bonusRate + 10;} if(sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 38) > 0){sizeRate = sizeRate + 20; bonusRate = bonusRate + 10;} totalDamage = totalDamage * (100 + bonusRate) / 100; // print("totalDamage = "+totalDamage); createPassiveObject_k_k(obj, obj,SKILL_BYKK_SUMMONSPIRITCOMMON,2001,150,0,0,totalDamage,sizeRate,0,0,0); } return; } // print("test"); local num = 0; local monstername = ["SpiritDarkObj","SpiritFireObj","SpiritLightObj","SpiritWaterObj"]; local monsternumber = [0,1,2,3]; for(local ui = 0; ui < monstername.len(); ui++){ local number = obj.getVar(monstername[ui]).get_obj_vector_size(); if(number > 0){ obj.getVar("sacrifice").setBool(monsternumber[ui], true); for(local i = 0; i < number; i++){ local monsterObj = sq_GetCNRDObjectToActiveObject(obj.getVar(monstername[ui]).get_obj_vector(i)); if(monsterObj){ monsterattack_ksk(monsterObj,3); num = num + 1; } } } } if(num > 0 && sq_GetLevelData(obj, 49, 31, sq_GetSkillLevel(obj, 49)) > 0){ obj.sq_SendSetHpPacket(obj.getHp() + obj.getHpMax() * 2 / 100 * num, true, obj); obj.sq_SendSetMpPacket(obj.getHp() + obj.getMpMax() * 2 / 100 * num, true, obj); } } } else if(ThrowIndex == 81){ if (obj.getThrowState() == 1){ if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, "character/mage/k_k_made/appendage/aptosummoner/ap_masterreckless.nut")) CNSquirrelAppendage.sq_RemoveAppendage(obj, "character/mage/k_k_made/appendage/aptosummoner/ap_masterreckless.nut"); local AddAppendage = CNSquirrelAppendage.sq_AppendAppendage(obj, obj, 81, false, "character/mage/k_k_made/appendage/aptosummoner/ap_masterreckless.nut", true); local rad = sq_GetLevelData(obj, 81, 5, sq_GetSkillLevel(obj, 81)) / 10; obj.getVar("apGetSetbyKK").setInt(0, rad); } } }