Rindro-Sqr/user/114.66.51.249/6_mage_8.c

3092 lines
133 KiB
C

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 skill = sq_GetSkill(obj, 150);
if(skill.isSealFunction()) 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);
}
}
}