Rindro-Sqr/user/114.66.51.249/8_thief_2.c

2597 lines
131 KiB
C

//obj
function setCustomData_po_thief_bykk(obj, receiveData)
{
if(!obj) return;
local sqrChr = sq_GetCNRDObjectToSQRCharacter(obj.getTopCharacter());
if(!sqrChr) return;
local job = receiveData.readDword();
local skillIndex = receiveData.readDword();
local subtype = receiveData.readDword();
obj.getVar("job").setInt(0, job);
obj.getVar("skillIndex").setInt(0, skillIndex);
obj.getVar("subtype").setInt(0, subtype);
switch(job){
case 0:
break;
case 1:
break;
case 2:
switch(skillIndex){
case SKILL_BYKK_SUMMONNICOLAS:
switch(subtype){
case 1:
case 3:
local totalDamage = receiveData.readDword();
local hitTime = receiveData.readDword();
local aniPath = "passiveobject/6_thief_bykk/necromancer_bykk/animation/nicolas/animation/throw_object.ani", attackIndex = 35;
if(subtype == 3){aniPath = "passiveobject/6_thief_bykk/necromancer_bykk/animation/nicolas/animation/nicolasspider_tp_spider.ani"; attackIndex = 22;}
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
if(subtype == 1){
local currentAni = obj.getCurrentAnimation();
currentAni.addLayerAnimation(-1,sq_CreateAnimation("","passiveobject/6_thief_bykk/necromancer_bykk/animation/nicolas/animation/throw_object2.ani"),true);
}
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, attackIndex));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
obj.setTimeEvent(0, hitTime, -1, true);
if(subtype == 1) obj.sq_SetMoveParticle("particle/dagger.ptl", 0.0, 0.0);
else obj.sq_SetMoveParticle("particle/tp_throw.ptl", 0.0, 0.0);
break;
case 2:
local totalDamage = receiveData.readDword();
local totalDamage2 = receiveData.readDword();
obj.getVar("custom").setInt(10, totalDamage2);
local aniPath = "passiveobject/6_thief_bykk/necromancer_bykk/animation/nicolas/animation/spikefalling.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
local currentAni = obj.getCurrentAnimation();
currentAni.addLayerAnimation(1,sq_CreateAnimation("","passiveobject/6_thief_bykk/necromancer_bykk/animation/nicolas/animation/burrowend.ani"),true);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 34));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
obj.setTimeEvent(10, 200, 1, false);
break;
case 4:
local totalDamage = receiveData.readDword();
local aniPath = "passiveobject/6_thief_bykk/necromancer_bykk/animation/nicolas/animation/spark.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 33));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
sq_SetShake(obj, 1, 500);
break;
case 5:
local totalDamage = receiveData.readDword();
obj.getVar("custom").setInt(10, totalDamage);
obj.setTimeEvent(11, 200, 1, false);
break;
case 6:
local totalDamage = receiveData.readDword();
local aniPath = "monster/character/thief/2_necromancer_bykk/nicolas/animation/attack_obj_nicolas.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 33));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
break;
case 10:
local speedRate = receiveData.readDword();
// local aniPath = ["monster/character/thief/2_necromancer_bykk/nicolas/animation/throw_circle.ani", "monster/character/thief/2_necromancer_bykk/nicolas/animation/throw_circle2.ani"];
local aniPath = "monster/character/thief/2_necromancer_bykk/nicolas/animation/throw_circle.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
local currentAni = obj.getCurrentAnimation();
currentAni.addLayerAnimation(1,sq_CreateAnimation("","monster/character/thief/2_necromancer_bykk/nicolas/animation/throw_circle2.ani"),true);
currentAni.setSpeedRate(speedRate.tofloat());
break;
}
break;
case SKILL_BYKK_NICOLASBLACKAREA:
switch(subtype){
case 1:
local totalDamage = receiveData.readDword();
local lifeTime = receiveData.readDword();
local hitTime = receiveData.readDword();
local sizeRate = receiveData.readDword();
obj.getVar("custom").setInt(0, sizeRate);
local group = receiveData.readDword();
local uniqueId = receiveData.readDword();
local targetObj = sq_GetObject(obj, group, uniqueId);
if(targetObj){
obj.getVar("tar").clear_obj_vector();
obj.getVar("tar").push_obj_vector(targetObj);
local aniPath = "passiveobject/6_thief_bykk/necromancer_bykk/animation/blackarea/floornormalbottom.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
local attackBox = [-200,-50,-20,400,100,350];
local pAni = obj.getCurrentAnimation();
if(sizeRate > 200){
sizeRate = sizeRate.tofloat() / 200.0;
pAni.setImageRateFromOriginal(sizeRate, sizeRate);
pAni.setAutoLayerWorkAnimationAddSizeRate(sizeRate);
for(local i = 0; i < attackBox.len(); i++){
attackBox[i] = (attackBox[i].tofloat() * sizeRate).tointeger();
}
}
sq_AddAttackBox(pAni, attackBox[0], attackBox[1], attackBox[2], attackBox[3], attackBox[4], attackBox[5]);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 30));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
obj.setTimeEvent(0, hitTime, -1, false);
obj.setTimeEvent(1, lifeTime, 1, false);
obj.setTimeEvent(10, 50, 10, false);
obj.setTimeEvent(11, 10, -1, false);
obj.getVar("custom").setInt(0, 0);
sq_ChangeDrawLayer(obj, ENUM_DRAWLAYER_BOTTOM);
}
else sq_SendDestroyPacketPassiveObject(obj);
break;
}
break;
case SKILL_BYKK_NICOLASSUMMONZOMBIE:
switch(subtype){
case 1:
local level = receiveData.readDword();
local summonTime = receiveData.readDword();
local summonMax = receiveData.readDword();
obj.getVar("custom").setInt(0, level);
obj.getVar("custom").setInt(1, summonTime);
obj.getVar("custom").setInt(2, summonMax);
obj.addSetStatePacket(20, null, STATE_PRIORITY_AUTO, false, "");
break;
case 2:
local totalDamage = receiveData.readDword();
local level = receiveData.readDword();
local time = receiveData.readDword();
local prob = receiveData.readDword();
local group = receiveData.readDword();
local uniqueId = receiveData.readDword();
local targetObj = sq_GetObject(obj, group, uniqueId);
if(targetObj){
obj.getVar("targetObj").clear_obj_vector();
obj.getVar("targetObj").push_obj_vector(targetObj);
local aniPath = "monster/character/thief/2_necromancer_bykk/nicolas_zombie/nzanimation/trybite_obj.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 18));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
local attackInfo = sq_GetCurrentAttackInfo(obj);
if(attackInfo) sq_SetChangeStatusIntoAttackInfo(attackInfo, 0, ACTIVESTATUS_CURSE, prob, level, time);
}
else sq_SendDestroyPacketPassiveObject(obj);
break;
case 3:
local totalDamage = receiveData.readDword();
local sizeRate = receiveData.readDword();
obj.getVar("custom").setInt(0, sizeRate);
local aniPath = "passiveobject/common/animation/darkexplosion.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 8));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
sizeRate = sizeRate.tofloat() / 100.0;
local currentAni = obj.getCurrentAnimation();
sq_SetAttackBoundingBoxSizeRate(currentAni, sizeRate, sizeRate, sizeRate);
obj.setTimeEvent(11, 200, 1, true);
obj.setTimeEvent(12, 50, 2, true);
obj.setTimeEvent(13, 15, 2, true);
obj.setTimeEvent(14, 100, 1, true);
break;
}
break;
case SKILL_BYKK_NICOLASBLACKWAVE:
switch(subtype){
case 1:
local totalDamage = receiveData.readDword();
local hitTime = receiveData.readDword();
local aniPath = "monster/character/thief/2_necromancer_bykk/nicolas/animation/casting2_obj.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 39));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
obj.setTimeEvent(0, hitTime, -1, false);
break;
}
break;
case SKILL_BYKK_NICOLASBLACKARACHNIA:
switch(subtype){
case 1:
case 2:
local totalDamage = receiveData.readDword();
local sizeRate = receiveData.readDword();
local totalDamage2 = receiveData.readDword();
local holdTime = receiveData.readDword();
local hitTime = receiveData.readDword();
local sub = receiveData.readDword();
obj.getVar("custom").setInt(0, totalDamage2);
obj.getVar("custom").setInt(1, holdTime);
obj.getVar("custom").setInt(2, hitTime);
obj.getVar("custom").setInt(3, sub);
local aniPath = "monster/character/thief/2_necromancer_bykk/nicolas/animation/effect/blackarachnia/attack_nicolas_pahse1.ani";
if(subtype == 2) aniPath = "monster/character/thief/2_necromancer_bykk/nicolas/animation/effect/blackarachnia/attack_nicolas_pahse2.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 30));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
local currentAni = obj.getCurrentAnimation();
sizeRate = sizeRate.tofloat() / 100.0;
sq_SetAttackBoundingBoxSizeRate(currentAni, sizeRate, sizeRate, sizeRate);
break;
case 3:
local totalDamage = receiveData.readDword();
local holdTime = receiveData.readDword();
local hitTime = receiveData.readDword();
obj.getVar("custom").setInt(1, holdTime);
local group = receiveData.readDword();
local uniqueId = receiveData.readDword();
local sub = receiveData.readDword();
obj.getVar("custom").setInt(2, sub);
local targetObj = sq_GetObject(obj, group, uniqueId);
if(targetObj){
sq_moveWithParent(targetObj, obj);
obj.getVar("tar").clear_obj_vector();
obj.getVar("tar").push_obj_vector(targetObj);
local AddAppendage = CNSquirrelAppendage.sq_AppendAppendage(targetObj, obj, -1, false, APDPATH_NICOLAS_BLACKWAVE, true);
sq_HoldAndDelayDie(targetObj, obj, true, true, true, 200, 200, ENUM_DIRECTION_NEUTRAL , AddAppendage);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 30));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
obj.setTimeEvent(10, hitTime, -1, false);
obj.addSetStatePacket(20, null, STATE_PRIORITY_AUTO, false, "");
}
break;
case 4:
local totalDamage = receiveData.readDword();
local sizeRate = receiveData.readDword();
local totalDamage2 = receiveData.readDword();
local holdTime = receiveData.readDword();
local hitTime = receiveData.readDword();
obj.getVar("custom").setInt(0, totalDamage2);
obj.getVar("custom").setInt(1, holdTime);
obj.getVar("custom").setInt(2, hitTime);
obj.getVar("custom").setInt(3, totalDamage);
obj.getVar("custom").setInt(4, sizeRate);
local aniPath = "passiveobject/6_thief_bykk/necromancer_bykk/animation/nicolasblackarachnia/talisman/black_last.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
break;
}
break;
case SKILL_BYKK_APPORTBALLACRE:
switch(subtype){
case 1:
sqrChr.getVar("ballacreObj").push_obj_vector(obj);
obj.setMapFollowParent(sqrChr);
obj.setMapFollowType(1);
obj.addSetStatePacket(20, null, STATE_PRIORITY_AUTO, false, "");
break;
case 2:
local totalDamage = receiveData.readDword();
local hitMax = receiveData.readDword();
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 54));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
obj.sq_SetMaxHitCounterPerObject(hitMax);
obj.getVar("move").setInt(0, sq_GetXPos(obj));
obj.addSetStatePacket(20, null, STATE_PRIORITY_AUTO, false, "");
break;
}
break;
case SKILL_BYKK_AMBITIONOFBALLACRE:
switch(subtype){
case 1:
sqrChr.getVar("ambitionObj").push_obj_vector(obj);
local totalDamage = receiveData.readDword();
local totalDamage2 = receiveData.readDword();
local sizeRate = receiveData.readDword();
local speedRate = receiveData.readDword();
obj.getVar("custom").setInt(0, totalDamage);
obj.getVar("custom").setInt(1, totalDamage2);
obj.getVar("custom").setInt(2, sizeRate);
obj.getVar("custom").setInt(3, speedRate);
obj.addSetStatePacket(20, null, STATE_PRIORITY_AUTO, false, "");
break;
case 2:
local totalDamage = receiveData.readDword();
local sizeRate = receiveData.readDword();
local speedRate = receiveData.readDword();
local aniPath = "passiveobject/6_thief_bykk/necromancer_bykk/animation/ambitionofballacre/talisman/ambitionofballacre_talismangrab_talismangrab.ani_hand_grab_normal.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 42));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
local currentAni = obj.getCurrentAnimation();
sizeRate = sizeRate.tofloat() / 100.0;
currentAni.setImageRateFromOriginal(sizeRate, sizeRate);
currentAni.setAutoLayerWorkAnimationAddSizeRate(sizeRate);
sq_SetAttackBoundingBoxSizeRate(currentAni, sizeRate, sizeRate, sizeRate);
currentAni.setSpeedRate(speedRate.tofloat() / 100.0);
break;
}
break;
case SKILL_BYKK_GUILLOTINE:
switch(subtype){
case 1:
local totalDamage = receiveData.readDword();
local sizeRate = receiveData.readDword();
local sub = receiveData.readDword();
local aniPath = "passiveobject/6_thief_bykk/necromancer_bykk/animation/guillotinesub/guilllotine_sub_normal.ani";
if(sub > 0) aniPath = "passiveobject/6_thief_bykk/necromancer_bykk/animation/guillotinesub/guilllotine_sub_normal_big.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
local attackIndex = 60;
if(sub > 0) attackIndex = 56;
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, attackIndex));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
local currentAni = obj.getCurrentAnimation();
sizeRate = sizeRate.tofloat() / 100.0;
currentAni.setImageRateFromOriginal(sizeRate, sizeRate);
currentAni.setAutoLayerWorkAnimationAddSizeRate(sizeRate);
sq_SetAttackBoundingBoxSizeRate(currentAni, sizeRate, sizeRate, sizeRate);
sq_ChangeDrawLayer(obj, ENUM_DRAWLAYER_BOTTOM);
switch(sub){
case 0:
local aniPath = ["passiveobject/6_thief_bykk/necromancer_bykk/animation/guillotinesub/guillotine_sub_dust.ani","passiveobject/6_thief_bykk/necromancer_bykk/animation/guillotinesub/guillotine_sub_spark.ani"];
local direction = sq_GetDirection(obj), xPos = sq_GetXPos(obj), yPos = sq_GetYPos(obj);
for(local i = 0; i < aniPath.len(); i++){
createOnlyDrawObject_Theif_bykk(obj,aniPath[i],true,direction,xPos,yPos + 1,0,ENUM_DRAWLAYER_NORMAL);
}
break;
case 1:
sq_CreateParticle("passiveobject/character/thief/particle/guillotinesub.ptl", obj, 0, 1, 1, true, 30, 0, 1);
break;
}
break;
}
break;
case SKILL_BYKK_PHANTOMSTROM:
switch(subtype){
case 1:
local totalDamage1 = receiveData.readDword();
local totalDamage2 = receiveData.readDword();
local totalDamage3 = receiveData.readDword();
local stromTime = receiveData.readDword();
local stromHitTime = receiveData.readDword();
local strom2Time = receiveData.readDword();
local strom2HitTime = receiveData.readDword();
obj.getVar("custom").setInt(0, totalDamage1);
obj.getVar("custom").setInt(1, totalDamage2);
obj.getVar("custom").setInt(2, totalDamage3);
obj.getVar("custom").setInt(3, stromTime);
obj.getVar("custom").setInt(4, stromHitTime);
obj.getVar("custom").setInt(5, strom2Time);
obj.getVar("custom").setInt(6, strom2HitTime);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 32));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage1);
obj.setTimeEvent(0, stromHitTime, -1, true);
obj.sq_PlaySound("ADESPHANTOM_STAR");
obj.addSetStatePacket(20, null, STATE_PRIORITY_AUTO, false, "");
break;
case 2:
local totalDamage = receiveData.readDword();
local totalDamage2 = receiveData.readDword();
local strom2Time = receiveData.readDword();
local strom2HitTime = receiveData.readDword();
obj.getVar("custom").setInt(1, totalDamage2);
obj.getVar("custom").setInt(2, strom2Time);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 32));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
obj.setTimeEvent(0, strom2HitTime, -1, true);
obj.sq_PlaySound("ADESPHANTOM_ADD");
obj.sq_PlaySound("ADESPHANTOM_SWISH");
obj.addSetStatePacket(20, null, STATE_PRIORITY_AUTO, false, "");
break;
case 3:
local totalDamage = receiveData.readDword();
local aniPath = "passiveobject/6_thief_bykk/necromancer_bykk/animation/darkexplosionphantomstrom.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
local currentAni = obj.getCurrentAnimation();
currentAni.addLayerAnimation(-1000,sq_CreateAnimation("","character/thief/effect/animation/2_necromancer_bykk/phantomstrom/back_normal.ani"),true);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 31));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
obj.setTimeEvent(12, 200, 2, true);
obj.setTimeEvent(13, 50, 4, true);
obj.setTimeEvent(14, 15, 4, true);
obj.setTimeEvent(15, 100, 2, true);
obj.sq_PlaySound("DARK_EXPLOSION");
obj.sq_PlaySound("BALAC_FANTOM_EXP");
break;
}
break;
case SKILL_BYKK_EXECUTIONERSLASH:
switch(subtype){
case 1:
case 2:
local totalDamage = receiveData.readDword();
local sizeRate = receiveData.readDword();
local speedRate = receiveData.readDword();
local aniPath = "passiveobject/6_thief_bykk/necromancer_bykk/animation/ballacre/executionerslash/newexecutionerslash_body_atk.ani";
if(subtype == 2) aniPath = "passiveobject/6_thief_bykk/necromancer_bykk/animation/ballacre/talisman/executionerslash/executionerslashtalisman_body_atk.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 55));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
local currentAni = obj.getCurrentAnimation();
sizeRate = sizeRate.tofloat() / 100.0;
sq_SetAttackBoundingBoxSizeRate(currentAni, sizeRate, sizeRate, sizeRate);
currentAni.setSpeedRate(speedRate.tofloat() / 100.0);
break;
}
break;
case SKILL_BYKK_BALLACREADVENT:
switch(subtype){
case 1:
local totalDamage_start = receiveData.readDword();
local totalDamage_multihit = receiveData.readDword();
local totalDamage_finish = receiveData.readDword();
local hitMax = receiveData.readDword();
local speedRate = receiveData.readDword();
obj.getVar("custom").setInt(0, totalDamage_start);
obj.getVar("custom").setInt(1, totalDamage_multihit);
obj.getVar("custom").setInt(2, totalDamage_finish);
obj.getVar("custom").setInt(3, hitMax);
obj.getVar("custom").setInt(4, speedRate);
local aniPath = "passiveobject/6_thief_bykk/necromancer_bykk/animation/ballacreadvent/ballacrecast02_set08n.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 7));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage_start);
local pAni = obj.getCurrentAnimation();
pAni.setSpeedRate(speedRate.tofloat() / 100.0);
break;
case 2:
sqrChr.getVar("Ballacreadvent_Attract").push_obj_vector(obj);
local speedRate = receiveData.readDword();
obj.getVar("custom").setInt(0, speedRate);
sq_ChangeDrawLayer(obj, ENUM_DRAWLAYER_COVER);
obj.addSetStatePacket(20, null, STATE_PRIORITY_AUTO, false, "");
break;
case 3:
local totalDamage = receiveData.readDword();
local hitMax = receiveData.readDword();
local speedRate = receiveData.readDword();
local totalDamage2 = receiveData.readDword();
obj.getVar("custom").setInt(0, hitMax);
obj.getVar("custom").setInt(1, totalDamage);
obj.getVar("custom").setInt(2, speedRate);
obj.getVar("custom").setInt(3, totalDamage2);
local aniPath = "passiveobject/6_thief_bykk/necromancer_bykk/animation/ballacreadvent/bigballacre02_finger.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
local pAni = obj.getCurrentAnimation();
pAni.setSpeedRate(speedRate.tofloat() / 100.0);
local flashScreenObj = sq_flashScreen(obj,80,99990,0,255, sq_RGB(0,0,0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
sqrChr.getVar("flashobj").clear_obj_vector();
sqrChr.getVar("flashobj").push_obj_vector(flashScreenObj);
break;
case 4:
local speedRate = receiveData.readDword();
local aniPath = "passiveobject/6_thief_bykk/necromancer_bykk/animation/ballacreadvent/bigballacre01_hand.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
local pAni = obj.getCurrentAnimation();
pAni.setSpeedRate(speedRate.tofloat() / 100.0);
break;
case 5:
local totalDamage = receiveData.readDword();
local aniPath = "passiveobject/6_thief_bykk/necromancer_bykk/animation/ballacreadvent/lasteffect_set02d15.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 4));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
break;
case 6:
sqrChr.getVar("Ballacreadvent_Background").push_obj_vector(obj);
local speedRate = receiveData.readDword();
obj.getVar("custom").setInt(0, speedRate);
obj.addSetStatePacket(20, null, STATE_PRIORITY_AUTO, false, "");
break;
case 7:
local delay = receiveData.readDword();
local sub = receiveData.readDword();
local aniPath = "passiveobject/6_thief_bykk/necromancer_bykk/animation/ballacreadvent/ballacrebeadfocus/beadfocusa_05.ani";
if(sub > 0) local aniPath = "passiveobject/6_thief_bykk/necromancer_bykk/animation/ballacreadvent/ballacrebeadfocus/beadfocusb_05.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
obj.setTimeEvent(1, delay, 1, false);
sq_ChangeDrawLayer(obj, ENUM_DRAWLAYER_COVER);
break;
}
break;
case SKILL_BYKK_DARKSOUL:
local totalDamage = receiveData.readDword();
local totalDamage_exp = receiveData.readDword();
local hitMax = receiveData.readDword();
local offsetY = receiveData.readDword();
local hitTime = receiveData.readDword();
obj.getVar("custom").setInt(0, totalDamage);
obj.getVar("custom").setInt(1, totalDamage_exp);
obj.getVar("custom").setInt(2, hitMax);
obj.getVar("custom").setInt(3, offsetY);
obj.getVar("custom").setInt(4, hitTime);
switch(subtype){
case 1:
local aniPath = "passiveobject/6_thief_bykk/necromancer_bykk/animation/darksoul/darksoul.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
obj.sq_SetMoveParticle("particle/darksoul.ptl", 0.0, 0.0);
obj.setTimeEvent(10, 100, -1, false);
break;
case 2:
local aniPath = "passiveobject/6_thief_bykk/necromancer_bykk/animation/darksoul/darksoulcharge.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
obj.sq_SetMoveParticle("particle/darksoul.ptl", 0.0, 0.0);
obj.setTimeEvent(10, 100, -1, false);
break;
case 3:
obj.addSetStatePacket(20, null, STATE_PRIORITY_AUTO, false, "");
break;
case 4:
local group = receiveData.readDword();
local uniqueId = receiveData.readDword();
local targetObj = sq_GetObject(obj, group, uniqueId);
if(targetObj){
obj.getVar("tat").clear_obj_vector();
obj.getVar("tat").push_obj_vector(targetObj);
sq_moveWithParent(targetObj, obj);
obj.setTimeEvent(14, hitTime, hitMax - 1, false);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 20));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
obj.addSetStatePacket(20, null, STATE_PRIORITY_AUTO, false, "");
}
break;
}
break;
case SKILL_BYKK_DARKNAIL:
local totalDamage = receiveData.readDword();
local sizeRate = receiveData.readDword();
local speedRate = receiveData.readDword();
local aniPath = "passiveobject/6_thief_bykk/necromancer_bykk/animation/darknail/dark_normal.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 18));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
sizeRate = sizeRate.tofloat() / 100.0;
local currentAni = obj.getCurrentAnimation();
currentAni.setImageRateFromOriginal(sizeRate, sizeRate);
currentAni.setAutoLayerWorkAnimationAddSizeRate(sizeRate);
sq_SetAttackBoundingBoxSizeRate(currentAni, sizeRate, sizeRate, sizeRate);
currentAni.setSpeedRate(speedRate.tofloat());
break;
case SKILL_BYKK_DARKLURE:
switch(subtype){
case 1://totalDamage,lifeTime,hitTime,increaseRate,increaseRate_cur,sizeRate,autoTime
sqrChr.getVar("darklure_obj").push_obj_vector(obj);
local totalDamage = receiveData.readDword();
local lifeTime = receiveData.readDword();
local hitTime = receiveData.readDword();
local increaseRate = receiveData.readDword();
local increaseRate_cur = receiveData.readDword();
local sizeRate = receiveData.readDword();
local autoTime = receiveData.readDword();
obj.getVar("custom").setInt(0, totalDamage);
obj.getVar("custom").setInt(1, lifeTime);
obj.getVar("custom").setInt(2, hitTime);
obj.getVar("custom").setInt(3, increaseRate);
obj.getVar("custom").setInt(4, increaseRate_cur);
obj.getVar("custom").setInt(5, sizeRate);
obj.getVar("custom").setInt(6, autoTime);
obj.addSetStatePacket(20, null, STATE_PRIORITY_AUTO, false, "");
break;
case 2:
local totalDamage = receiveData.readDword();
local lifeTime = receiveData.readDword();
local hitTime = receiveData.readDword();
local sizeRate = receiveData.readDword();
local sub = receiveData.readDword();
local aniPath = "passiveobject/6_thief_bykk/necromancer_bykk/animation/darklure/darklurenormal/floor/ghost_floor.ani", attackIndex = 15;
if(sub == 1) aniPath = "passiveobject/6_thief_bykk/necromancer_bykk/animation/darklure/darklurenormal/sky/ghost_sky.ani";
if(sub == 2){aniPath = "passiveobject/6_thief_bykk/necromancer_bykk/animation/darklure/darklurecharge/floor/ghost_floor.ani"; attackIndex = 16;}
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, attackIndex));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
sizeRate = sizeRate.tofloat() / 100.0;
local currentAni = obj.getCurrentAnimation();
currentAni.setImageRateFromOriginal(sizeRate, sizeRate);
currentAni.setAutoLayerWorkAnimationAddSizeRate(sizeRate);
sq_SetAttackBoundingBoxSizeRate(currentAni, sizeRate, sizeRate, sizeRate);
obj.setTimeEvent(0, hitTime, -1, false);
obj.setTimeEvent(1, lifeTime, 1, false);
break;
}
break;
case SKILL_BYKK_BLAMEOFDEAD:
switch(subtype){
case 1:
local totalDamage = receiveData.readDword();
local lifeTime = receiveData.readDword();
local hitMax = receiveData.readDword();
local sizeRate = receiveData.readDword();
obj.getVar("custom").setInt(0, totalDamage);
obj.getVar("custom").setInt(1, lifeTime);
obj.getVar("custom").setInt(2, hitMax);
obj.getVar("custom").setInt(3, sizeRate);
local skillLevel = sq_GetSkillLevel(sqrChr, SKILL_BYKK_BLAMEOFDEAD);
local level = sq_GetSkillLevel(sqrChr, 174);
local prob = sq_GetLevelData(sqrChr, SKILL_BYKK_BLAMEOFDEAD, 1, skillLevel);
local time = sq_GetLevelData(sqrChr, SKILL_BYKK_BLAMEOFDEAD, 3, skillLevel);
local aniPath = "passiveobject/6_thief_bykk/necromancer_bykk/animation/blameofdead/floornormal.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 10));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
local attackInfo = sq_GetCurrentAttackInfo(obj);
if(attackInfo) sq_SetChangeStatusIntoAttackInfo(attackInfo, 0, ACTIVESTATUS_SLOW, prob, level, time);
sizeRate = sizeRate.tofloat() / 100.0;
// print("sizeRate = "+sizeRate);
local currentAni = obj.getCurrentAnimation();
currentAni.setImageRateFromOriginal(sizeRate, sizeRate);
currentAni.setAutoLayerWorkAnimationAddSizeRate(sizeRate);
sq_SetAttackBoundingBoxSizeRate(currentAni, sizeRate, sizeRate, sizeRate);
break;
case 2:
local totalDamage = receiveData.readDword();
local lifeTime = receiveData.readDword();
local hitMax = receiveData.readDword();
local group = receiveData.readDword();
local uniqueId = receiveData.readDword();
obj.getVar("custom").setInt(0, hitMax);
local targetObj = sq_GetObject(obj, group, uniqueId);
if(targetObj){
obj.getVar("tar").clear_obj_vector();
obj.getVar("tar").push_obj_vector(targetObj);
obj.setTimeEvent(10, lifeTime / (hitMax + 2), hitMax, false);
//obj.setTimeEvent(1, lifeTime + 100, 1, false);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 10));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
}
break;
}
break;
case SKILL_BYKK_LIVINGDEAD:
switch(subtype){
case 1:
local totalDamage = receiveData.readDword();
local lifeTime = receiveData.readDword();
local hitTime = receiveData.readDword();
local sizeRate = receiveData.readDword();
local increaseRate = receiveData.readDword();
local addSizeRate = receiveData.readDword();
obj.getVar("custom").setInt(0, totalDamage);
obj.getVar("custom").setInt(1, lifeTime);
obj.getVar("custom").setInt(2, hitTime);
obj.getVar("custom").setInt(3, sizeRate);
obj.getVar("custom").setInt(4, increaseRate);
obj.getVar("custom").setInt(5, addSizeRate);
obj.addSetStatePacket(20, null, STATE_PRIORITY_AUTO, false, "");
break;
case 2://totalDamage,lifeTime,hitTime,sizeRate,sub
local totalDamage = receiveData.readDword();
local lifeTime = receiveData.readDword();
local hitTime = receiveData.readDword();
local sizeRate = receiveData.readDword();
local sub = receiveData.readDword();
local isAttack = receiveData.readDword();
obj.getVar("custom").setInt(0, lifeTime);
obj.getVar("custom").setInt(1, sizeRate);
obj.getVar("custom").setInt(2, sub);
local aniPath = "passiveobject/6_thief_bykk/necromancer_bykk/animation/livingdead/darkmatter/newdarkmatter2_01.ani", attackIndex = 28;
if(sub > 0){aniPath = "passiveobject/6_thief_bykk/necromancer_bykk/animation/livingdead/darkmatter/newdarkmatter2_01.ani"; attackIndex = 29;}
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
if(isAttack > 0){
local currentAni = obj.getCurrentAnimation();
switch(sub){
case 0: sq_AddAttackBox(currentAni, 0, -50, -50, 200, 100, 100); break;
case 1: sq_AddAttackBox(currentAni, 0, -50, -50, 300, 100, 100); break;
}
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, attackIndex));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
obj.setTimeEvent(0, hitTime, -1, false);
}
sizeRate = sizeRate.tofloat() / 100.0;
local currentAni = obj.getCurrentAnimation();
currentAni.setImageRateFromOriginal(sizeRate, sizeRate);
currentAni.setAutoLayerWorkAnimationAddSizeRate(sizeRate);
sq_SetAttackBoundingBoxSizeRate(currentAni, sizeRate, sizeRate, sizeRate);
obj.setTimeEvent(1, lifeTime, 1, false);
obj.setTimeEvent(11, currentAni.getDelaySum(false) / 4, 2, false);
currentAni.setSpeedRate(250.0);
break;
case 3:
local totalDamage = receiveData.readDword();
local sizeRate = receiveData.readDword();
local speedRate = receiveData.readDword();
obj.getVar("custom").setInt(0, totalDamage);
obj.getVar("custom").setInt(1, sizeRate);
obj.getVar("custom").setInt(2, speedRate);
obj.addSetStatePacket(21, null, STATE_PRIORITY_AUTO, false, "");
break;
case 4:
local totalDamage = receiveData.readDword();
local sizeRate = receiveData.readDword();
local aniPath = "passiveobject/6_thief_bykk/necromancer_bykk/animation/livingdead/110lvepicweapona/boomeffect_15.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 27));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
local aniPath = "passiveobject/6_thief_bykk/necromancer_bykk/animation/livingdead/110lvepicweapona/boombottom_exp.ani";
createOnlyDrawObjectEX_Theif_bykk(obj,aniPath,true,obj.getDirection(),sq_GetXPos(obj),sq_GetYPos(obj),0,ENUM_DRAWLAYER_BOTTOM,sizeRate,sizeRate);
sizeRate = sizeRate.tofloat() / 100.0;
local currentAni = obj.getCurrentAnimation();
currentAni.setImageRateFromOriginal(sizeRate, sizeRate);
currentAni.setAutoLayerWorkAnimationAddSizeRate(sizeRate);
sq_SetAttackBoundingBoxSizeRate(currentAni, sizeRate, sizeRate, sizeRate);
obj.sq_PlaySound("R_LIVINGDEAD_OVEREAT");
obj.sq_PlaySound("DARK_EXPLOSION");
break;
case 5:
local lifeTime = receiveData.readDword();
local sizeRate = receiveData.readDword();
local aniPath = "passiveobject/6_thief_bykk/necromancer_bykk/animation/livingdead/darkmatter/newdarkmatter2_01.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
sizeRate = sizeRate.tofloat() / 100.0;
local currentAni = obj.getCurrentAnimation();
currentAni.setImageRateFromOriginal(sizeRate, sizeRate);
currentAni.setAutoLayerWorkAnimationAddSizeRate(sizeRate);
sq_SetAttackBoundingBoxSizeRate(currentAni, sizeRate, sizeRate, sizeRate);
obj.setTimeEvent(1, lifeTime, 1, false);
currentAni.setSpeedRate(250.0);
break;
}
break;
case SKILL_BYKK_BLAMEOFDEADEX:
switch(subtype){
case 1://totalDamage,lifeTime,hitTime,prob,sizeRate
local totalDamage = receiveData.readDword();
local lifeTime = receiveData.readDword();
local hitTime = receiveData.readDword();
local prob = receiveData.readDword();
local sizeRate = receiveData.readDword();
obj.getVar("custom").setInt(0, totalDamage);
obj.getVar("custom").setInt(1, lifeTime);
obj.getVar("custom").setInt(2, hitTime);
obj.getVar("custom").setInt(3, sizeRate);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 10));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
local attackInfo = sq_GetCurrentAttackInfo(obj);
if(attackInfo) sq_SetChangeStatusIntoAttackInfo(attackInfo, 0, ACTIVESTATUS_HOLD, prob, sq_GetSkillLevel(sqrChr, 174), lifeTime + 2000);
sq_ChangeDrawLayer(obj, ENUM_DRAWLAYER_BOTTOM);
obj.addSetStatePacket(20, null, STATE_PRIORITY_AUTO, false, "");
break;
case 2:
local totalDamage = receiveData.readDword();
local totalDamage2 = receiveData.readDword();
local sizeRate = receiveData.readDword();
obj.getVar("custom").setInt(0, totalDamage2);
local range = 500 * sizeRate / 100;
local aniPath = "passiveobject/6_thief_bykk/necromancer_bykk/animation/blameofdeadex/talisman/blameofdeadex_talisman_torment_start_effc05.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 10));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
sizeRate = sizeRate.tofloat() / 100.0;
local currentAni = obj.getCurrentAnimation();
currentAni.setImageRateFromOriginal(sizeRate, sizeRate);
currentAni.setAutoLayerWorkAnimationAddSizeRate(sizeRate);
sq_SetAttackBoundingBoxSizeRate(currentAni, sizeRate, sizeRate, sizeRate);
sq_ChangeDrawLayer(obj, ENUM_DRAWLAYER_BOTTOM);
local appendage = CNSquirrelAppendage.sq_AppendAppendage(sqrChr, obj, -1, false, "appendage/character/ap_common_suck.nut", false);
if(appendage){
CNSquirrelAppendage.sq_Append(appendage, sqrChr, obj);
local auraAppendage = appendage.sq_getAuraMaster("auraMaster");
if(!auraAppendage) auraAppendage = appendage.sq_AddAuraMaster("auraMaster", sqrChr, obj, 1200, 18, 5, 0);
if(auraAppendage) auraAppendage.setAttractionInfo(600, 600, range, 100);
}
break;
case 3:
local lifeTime = receiveData.readDword();
local sub = receiveData.readDword();
local aniPath = ["passiveobject/6_thief_bykk/necromancer_bykk/animation/blameofdeadex/headstart.ani", "passiveobject/6_thief_bykk/necromancer_bykk/animation/blameofdeadex/smallbonehandn.ani"];
local ani = sq_CreateAnimation("",aniPath[sub]);
obj.setCurrentAnimation(ani);
obj.setTimeEvent(1, lifeTime, 1, false);
break;
}
break;
case SKILL_BYKK_HATEFULGHOST:
switch(subtype){
case 1:
sqrChr.getVar("hatefulGhostObj").push_obj_vector(obj);
local totalDamage_1st = receiveData.readDword();
local totalDamage_2nd = receiveData.readDword();
local totalDamage_3th1 = receiveData.readDword();
local totalDamage_3th2 = receiveData.readDword();
local lifeTime = receiveData.readDword();
local sizeRate = receiveData.readDword();
local isAuto = receiveData.readDword();
obj.getVar("custom").setInt(0, totalDamage_1st);
obj.getVar("custom").setInt(1, totalDamage_2nd);
obj.getVar("custom").setInt(2, totalDamage_3th1);
obj.getVar("custom").setInt(3, totalDamage_3th2);
obj.getVar("custom").setInt(4, lifeTime);
obj.getVar("custom").setInt(5, sizeRate);
obj.getVar("custom").setInt(6, isAuto);
obj.getVar("phaseSet").setInt(0, 0);
sq_ChangeDrawLayer(obj, ENUM_DRAWLAYER_BOTTOM);
obj.setTimeEvent(10, lifeTime, 1, false);
obj.addSetStatePacket(22, null, STATE_PRIORITY_AUTO, false, "");
break;
case 2:
local totalDamage = receiveData.readDword();
local sizeRate = receiveData.readDword();
local aniPath = "passiveobject/6_thief_bykk/necromancer_bykk/animation/hatefulghost/dummyattackbox.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 26));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
sizeRate = sizeRate.tofloat() / 100.0;
local currentAni = obj.getCurrentAnimation();
currentAni.setImageRateFromOriginal(sizeRate, sizeRate);
currentAni.setAutoLayerWorkAnimationAddSizeRate(sizeRate);
sq_SetAttackBoundingBoxSizeRate(currentAni, sizeRate, sizeRate, sizeRate);
break;
case 3:
local targetObj = sqrChr.getVar("hatefulGhostObj").get_obj_vector(0);
sq_moveWithParent(targetObj, obj);
local sub = receiveData.readDword();
if(sub == 0) obj.addSetStatePacket(20, null, STATE_PRIORITY_AUTO, false, "");
else if(sub == 2) obj.addSetStatePacket(23, null, STATE_PRIORITY_AUTO, false, "");
else obj.addSetStatePacket(21, null, STATE_PRIORITY_AUTO, false, "");
break;
}
break;
case SKILL_BYKK_COCONOFUNDEAD:
switch(subtype){
case 1:
sqrChr.getVar("coconofundeadObj").push_obj_vector(obj);
local totalDamage = receiveData.readDword();
local totalDamage_exp = receiveData.readDword();
local lifeTime = receiveData.readDword();
obj.getVar("custom").setInt(0, totalDamage);
obj.getVar("custom").setInt(1, totalDamage_exp);
obj.getVar("custom").setInt(2, lifeTime);
obj.addSetStatePacket(20, null, STATE_PRIORITY_AUTO, false, "");
break;
case 2:
case 3:
sqrChr.getVar("coconofundeadObj_b").push_obj_vector(obj);
local lifeTime = receiveData.readDword();
obj.setTimeEvent(1, lifeTime, 1, false);
sq_ChangeDrawLayer(obj, ENUM_DRAWLAYER_BOTTOM);
obj.addSetStatePacket(20, null, STATE_PRIORITY_AUTO, false, "");
break;
}
break;
}
break;
case 3:
local skillLevel = sq_GetSkillLevel(sqrChr, SKILL_THBYKK_MARKOFFLAME);
if(skillLevel > 0){
local sklIndex = [SKILL_THBYKK_FLAMEBALL,
SKILL_THBYKK_BIGKUNAI,
SKILL_THBYKK_FLAMETORNADO,
SKILL_THBYKK_GASOLINEFIRE,
SKILL_THBYKK_ILUSIONSHURIKEN,
SKILL_THBYKK_SKYROADS,
SKILL_THBYKK_FLAMEFLOWER,
SKILL_THBYKK_DOOMFIELD
];
for(local i = 0; i < sklIndex.len(); i++){
if(sklIndex[i] == skillIndex){
// print("settest");
local burnDamageRate = sq_GetLevelData(sqrChr, SKILL_THBYKK_MARKOFFLAME, 1, skillLevel);
local burnTime = sq_GetIntData(sqrChr, SKILL_THBYKK_MARKOFFLAME, 0);
local decreaseBurnDamageRate = burnDamageRate;
if(CNSquirrelAppendage.sq_IsAppendAppendage(sqrChr, APDPATH_SWORDOFKUSANAGI_BUFF)){
burnDamageRate = burnDamageRate + sq_GetIntData(sqrChr, SKILL_THBYKK_SWORDOFKUSANAGI, 20) / 4;
}
obj.getVar("markofFlame").setBool(0, true);
obj.getVar("markofFlameSet").setInt(0, burnDamageRate);
obj.getVar("markofFlameSet").setInt(1, decreaseBurnDamageRate);
obj.getVar("markofFlameSet").setInt(2, burnTime);
// print("settest");
}
}
if(skillIndex == SKILL_THBYKK_LEAVETRACE && subtype == SKILL_THBYKK_FLAMEFLOWER){
local burnDamageRate = sq_GetLevelData(sqrChr, SKILL_THBYKK_MARKOFFLAME, 1, skillLevel);
local burnTime = sq_GetIntData(sqrChr, SKILL_THBYKK_MARKOFFLAME, 0);
local decreaseBurnDamageRate = burnDamageRate;
if(CNSquirrelAppendage.sq_IsAppendAppendage(sqrChr, APDPATH_SWORDOFKUSANAGI_BUFF)){
burnDamageRate = burnDamageRate + sq_GetIntData(sqrChr, SKILL_THBYKK_SWORDOFKUSANAGI, 20) / 4;
}
obj.getVar("markofFlame").setBool(0, true);
obj.getVar("markofFlameSet").setInt(0, burnDamageRate);
obj.getVar("markofFlameSet").setInt(1, decreaseBurnDamageRate);
obj.getVar("markofFlameSet").setInt(2, burnTime);
// print("settest");
}
}
switch(skillIndex){
case SKILL_THBYKK_FLAMEBALL:
switch(subtype){
case 1:
sqrChr.getVar("FlameBall").push_obj_vector(obj);
local totalDamage = receiveData.readDword();
local totalDamage_exp = receiveData.readDword();
local hitTime = receiveData.readDword();
local lifeTime = receiveData.readDword();
local sizeRate = receiveData.readDword();
local speedRate = receiveData.readDword();
local isBlue = receiveData.readDword();
obj.getVar("custom").setInt(0, totalDamage);
obj.getVar("custom").setInt(1, totalDamage_exp);
obj.getVar("custom").setInt(2, hitTime);
obj.getVar("custom").setInt(3, lifeTime);
obj.getVar("custom").setInt(4, sizeRate);
obj.getVar("custom").setInt(5, speedRate);
obj.getVar("custom").setInt(6, isBlue);
obj.addSetStatePacket(20, null, STATE_PRIORITY_AUTO, false, "");
break;
case 2:
local totalDamage = receiveData.readDword();
if(obj.getVar("markofFlame").getBool(0)){
local burnDamage = totalDamage * obj.getVar("markofFlameSet").getInt(0) / 100;
obj.getVar("markofFlameSet").setInt(3, burnDamage);
totalDamage = totalDamage * obj.getVar("markofFlameSet").getInt(1) / 100;
}
local isBlue = receiveData.readDword();
local aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/flameball/end_flameball_end_dodge.ani";
if(isBlue > 0) aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/flameball/end_01.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 75));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
break;
}
break;
case SKILL_THBYKK_BIGKUNAI:
switch(subtype){
case 1:
case 2:
local totalDamage = receiveData.readDword();
local totalDamage_exp = receiveData.readDword();
local hitTime = receiveData.readDword();
local lifeTime = receiveData.readDword();
local sizeRate = receiveData.readDword();
local isBlue = receiveData.readDword();
local moveBool = receiveData.readDword();
obj.getVar("custom").setInt(0, totalDamage);
obj.getVar("custom").setInt(1, totalDamage_exp);
obj.getVar("custom").setInt(2, hitTime);
obj.getVar("custom").setInt(3, lifeTime);
obj.getVar("custom").setInt(4, sizeRate);
obj.getVar("custom").setInt(8, isBlue);
obj.getVar("custom").setInt(9, moveBool);
obj.addSetStatePacket(20, null, STATE_PRIORITY_AUTO, false, "");
break;
case 3://totalDamage,sizeRate,subtype,isBlue
local totalDamage = receiveData.readDword();
if(obj.getVar("markofFlame").getBool(0)){
local burnDamage = totalDamage * obj.getVar("markofFlameSet").getInt(0) / 100;
obj.getVar("markofFlameSet").setInt(3, burnDamage);
totalDamage = totalDamage * obj.getVar("markofFlameSet").getInt(1) / 100;
}
local sizeRate = receiveData.readDword();
local subState = receiveData.readDword();
local isBlue = receiveData.readDword();
local aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/bigkunai/bigkunai/groundatkfinish_e_bomal.ani";
if(subState > 1) aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/bigkunai/bigkunaijump/airatkfinish_e_bomal.ani";
if(isBlue > 0){
if(subState > 1) aniPath = "passiveobject/z_ninja/animation/bigkunai/swordofkusanagi/airatkfinish_e_bomal_blue.ani";
else aniPath = "passiveobject/z_ninja/animation/bigkunai/swordofkusanagi/groundatkfinish_e_bomal_blue.ani";
}
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 64));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
local currentAni = obj.getCurrentAnimation();
if(sizeRate > 100){
sizeRate = sizeRate.tofloat() / 100.0;
currentAni.setImageRateFromOriginal(sizeRate, sizeRate);
currentAni.setAutoLayerWorkAnimationAddSizeRate(sizeRate);
sq_SetAttackBoundingBoxSizeRate(currentAni, sizeRate, sizeRate, sizeRate);
}
sq_SetMyShake(obj, 6, 200);
break;
}
break;
case SKILL_THBYKK_FLAMETORNADO:
switch(subtype){
case 1:
sqrChr.getVar("FlameTornadoObj").push_obj_vector(obj);
local totalDamage = receiveData.readDword();
local totalDamage_exp = receiveData.readDword();
local hitTime = receiveData.readDword();
local lifeTime = receiveData.readDword();
local sizeRate = receiveData.readDword();
local range = receiveData.readDword();
local expSizeRate = receiveData.readDword();
local isBlue = receiveData.readDword();
obj.getVar("custom").setInt(0, totalDamage);
obj.getVar("custom").setInt(1, totalDamage_exp);
obj.getVar("custom").setInt(2, hitTime);
obj.getVar("custom").setInt(3, lifeTime);
obj.getVar("custom").setInt(4, sizeRate);
obj.getVar("custom").setInt(5, range);
obj.getVar("custom").setInt(6, expSizeRate);
obj.getVar("custom").setInt(7, isBlue);
obj.addSetStatePacket(20, null, STATE_PRIORITY_AUTO, false, "");
break;
case 2:
local totalDamage = receiveData.readDword();
if(obj.getVar("markofFlame").getBool(0)){
local burnDamage = totalDamage * obj.getVar("markofFlameSet").getInt(0) / 100;
obj.getVar("markofFlameSet").setInt(3, burnDamage);
totalDamage = totalDamage * obj.getVar("markofFlameSet").getInt(1) / 100;
}
local sizeRate = receiveData.readDword();
local isBlue = receiveData.readDword();
// print("sizeRate = "+sizeRate);
local aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/flametornado/explosion/explosion_fire01.ani";
if(isBlue > 0) aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/flametornado/blueexplosion/blueexplosion_fire01.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 78));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
local currentAni = obj.getCurrentAnimation();
if(sizeRate > 100){
sizeRate = sizeRate.tofloat() / 100.0;
currentAni.setImageRateFromOriginal(sizeRate, sizeRate);
currentAni.setAutoLayerWorkAnimationAddSizeRate(sizeRate);
sq_SetAttackBoundingBoxSizeRate(currentAni, sizeRate, sizeRate, sizeRate);
}
sq_SetMyShake(obj, 6, 200);
break;
}
break;
case SKILL_THBYKK_GASOLINEFIRE:
switch(subtype){
case 1:
local totalDamage_shockwave = receiveData.readDword();
local totalDamage_ball = receiveData.readDword();
local totalDamage_ballexp = receiveData.readDword();
local totalDamage_disexp = receiveData.readDword();
local sizeRate = receiveData.readDword();
local sockwaveSizeRate = receiveData.readDword();
local speedRate = receiveData.readDword();
local toadSizeRate = receiveData.readDword();
obj.getVar("custom").setInt(0, totalDamage_shockwave);
obj.getVar("custom").setInt(1, totalDamage_ball);
obj.getVar("custom").setInt(2, totalDamage_ballexp);
obj.getVar("custom").setInt(3, totalDamage_disexp);
obj.getVar("custom").setInt(4, sizeRate);
obj.getVar("custom").setInt(5, sockwaveSizeRate);
obj.getVar("custom").setInt(6, toadSizeRate);
local skillLevel = sq_GetSkillLevel(sqrChr, SKILL_THBYKK_KURVEJADE);
if(skillLevel > 0){
local addSpeedRate = sq_GetLevelData(sqrChr, SKILL_THBYKK_KURVEJADE, 3, skillLevel);
addSpeedRate = addSpeedRate * 60 / 100;
obj.getVar("custom").setInt(7, addSpeedRate);
}
else obj.getVar("custom").setInt(7, 0);
local isBlue = 0;
if(CNSquirrelAppendage.sq_IsAppendAppendage(sqrChr, APDPATH_SWORDOFKUSANAGI_BUFF)) isBlue = 1;
obj.getVar("custom").setInt(7, isBlue);
local aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/gasolinefire/toad/gasolinefireact_toad.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
local currentAni = obj.getCurrentAnimation();
currentAni.setSpeedRate(speedRate.tofloat());
if(toadSizeRate > 100){
local currentAni = obj.getCurrentAnimation();
local sizeRate = toadSizeRate.tofloat() / 100.0;
currentAni.setImageRateFromOriginal(sizeRate, sizeRate);
currentAni.setAutoLayerWorkAnimationAddSizeRate(sizeRate);
}
break;
case 2:
local totalDamage_shockwave = receiveData.readDword();
if(obj.getVar("markofFlame").getBool(0)){
local burnDamage = totalDamage_shockwave * obj.getVar("markofFlameSet").getInt(0) / 100;
obj.getVar("markofFlameSet").setInt(3, burnDamage);
totalDamage_shockwave = totalDamage_shockwave * obj.getVar("markofFlameSet").getInt(1) / 100;
}
local sockwaveSizeRate = receiveData.readDword();
local aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/gasolinefire/shockwave/gasolinefireshockwave_eff_a.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 93));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage_shockwave);
sq_ChangeDrawLayer(obj, ENUM_DRAWLAYER_BOTTOM);
if(sockwaveSizeRate > 100){
local currentAni = obj.getCurrentAnimation();
local sizeRate = sockwaveSizeRate.tofloat() / 100.0;
currentAni.setImageRateFromOriginal(sizeRate, sizeRate);
currentAni.setAutoLayerWorkAnimationAddSizeRate(sizeRate);
sq_SetAttackBoundingBoxSizeRate(currentAni, sizeRate, sizeRate, sizeRate);
}
sq_SetMyShake(obj, 3, 120);
break;
case 3:
local totalDamage_ball = receiveData.readDword();
if(obj.getVar("markofFlame").getBool(0)){
local burnDamage = totalDamage_ball * obj.getVar("markofFlameSet").getInt(0) / 100;
obj.getVar("markofFlameSet").setInt(3, burnDamage);
totalDamage_ball = totalDamage_ball * obj.getVar("markofFlameSet").getInt(1) / 100;
}
local totalDamage_ballexp = receiveData.readDword();
local sizeRate = receiveData.readDword();
local isBlue = receiveData.readDword();
obj.getVar("custom").setInt(0, totalDamage_ballexp);
obj.getVar("custom").setInt(1, sizeRate);
obj.getVar("custom").setInt(2, isBlue);
local aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/gasolinefire/ball/gasolinefirefireball_eff_a.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 88));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage_ball);
obj.sq_SetMoveParticle("particle/kunoichi_bykk/gasolinefire.ptl", 0.0, 0.0);
sq_SetSpeedToMoveParticle(obj,2,300);
break;
case 4:
local totalDamage_ballexp = receiveData.readDword();
if(obj.getVar("markofFlame").getBool(0)){
local burnDamage = totalDamage_ballexp * obj.getVar("markofFlameSet").getInt(0) / 100;
obj.getVar("markofFlameSet").setInt(3, burnDamage);
totalDamage_ballexp = totalDamage_ballexp * obj.getVar("markofFlameSet").getInt(1) / 100;
}
local sizeRate = receiveData.readDword();// * 150 / 100
local isBlue = receiveData.readDword();
local aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/gasolinefire/lowlevelballexp/gasolinefirefinish_b_ground_a.ani";
if(isBlue > 0){
aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/gasolinefire/lowlevelballexp/swordofkusanagi/gasolinefirefinish_b_blacksmoke.ani";
createOnlyDrawObjectEX_Theif_bykk(obj,"passiveobject/6_thief_bykk/kunoichi_bykk/animation/gasolinefire/lowlevelballexp/swordofkusanagi/gasolinefirefinishbottom_b_ground_b.ani",true,sq_GetDirection(obj),sq_GetXPos(obj),sq_GetYPos(obj),0,ENUM_DRAWLAYER_BOTTOM,sizeRate,sizeRate)
}
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 92));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage_ballexp);
if(sizeRate > 100){
local currentAni = obj.getCurrentAnimation();
sizeRate = sizeRate.tofloat() / 100.0;
currentAni.setImageRateFromOriginal(sizeRate, sizeRate);
currentAni.setAutoLayerWorkAnimationAddSizeRate(sizeRate);
sq_SetAttackBoundingBoxSizeRate(currentAni, sizeRate, sizeRate, sizeRate);
}
obj.sq_PlaySound("GASOLINEFIRE_BALL_EXP");
sq_SetMyShake(obj, 12, 600);
break;
case 5:
local totalDamage_disexp = receiveData.readDword();
if(obj.getVar("markofFlame").getBool(0)){
local burnDamage = totalDamage_disexp * obj.getVar("markofFlameSet").getInt(0) / 100;
obj.getVar("markofFlameSet").setInt(3, burnDamage);
totalDamage_disexp = totalDamage_disexp * obj.getVar("markofFlameSet").getInt(1) / 100;
}
local aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/gasolinefire/disappearexp/gasolinefireactfireb_blacksmoke.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 91));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage_disexp);
sq_SetMyShake(obj, 3, 80);
break;
}
break;
case SKILL_THBYKK_ILUSIONSHURIKEN:
switch(subtype){
case 1:
local totalDamage = receiveData.readDword();
if(obj.getVar("markofFlame").getBool(0)){
local burnDamage = totalDamage * obj.getVar("markofFlameSet").getInt(0) / 100;
obj.getVar("markofFlameSet").setInt(3, burnDamage);
totalDamage = totalDamage * obj.getVar("markofFlameSet").getInt(1) / 100;
}
local reboundCount = receiveData.readDword();
local isBlue = receiveData.readDword();
obj.getVar("custom").setInt(0, reboundCount);
local aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/illusionshuriken/shoot_b_kunai.ani";
if(isBlue > 0) aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/illusionshuriken/swordofkusanagi/shoot_b_kunai.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 94));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
local speed = 1000.0;
if(sq_GetDirection(obj) == ENUM_DIRECTION_RIGHT) sq_SetVelocity(obj, 0, speed);
else sq_SetVelocity(obj, 0, -speed);
break;
case 2:
local totalDamage = receiveData.readDword();
if(obj.getVar("markofFlame").getBool(0)){
local burnDamage = totalDamage * obj.getVar("markofFlameSet").getInt(0) / 100;
obj.getVar("markofFlameSet").setInt(3, burnDamage);
totalDamage = totalDamage * obj.getVar("markofFlameSet").getInt(1) / 100;
}
local isBlue = receiveData.readDword();
local aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/illusionshuriken/shootair_b_kunai.ani";
if(isBlue > 0) aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/illusionshuriken/swordofkusanagi/shootair_b_kunai.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 94));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
local speed = 1000.0;
if(sq_GetDirection(obj) == ENUM_DIRECTION_RIGHT) sq_SetVelocity(obj, 0, speed);
else sq_SetVelocity(obj, 0, -speed);
sq_SetVelocity(obj, 2, -speed);
break;
case 3:
case 4:
sqrChr.getVar("IlusionShuriken").push_obj_vector(obj);
local totalDamage = receiveData.readDword();
local reboundCount = receiveData.readDword();
local createMax = receiveData.readDword();
local speedRate = receiveData.readDword();
local isBlue = receiveData.readDword();
local isIllusion = receiveData.readDword();
obj.getVar("custom").setInt(0, totalDamage);
obj.getVar("custom").setInt(1, reboundCount);
obj.getVar("custom").setInt(2, createMax);
obj.getVar("custom").setInt(3, 0);
obj.getVar("custom").setInt(4, speedRate);
obj.getVar("custom").setInt(5, isBlue);
local ani = sq_GetCustomAni(sqrChr, ANI_THBYKK_ILLUSIONSHURIKENGROUNDATTACK);
local ani2 = sq_GetCustomAni(sqrChr, ANI_THBYKK_ILLUSIONSHURIKENGROUNDATTACK2);
local ani3 = sq_GetCustomAni(sqrChr, ANI_THBYKK_ILLUSIONSHURIKENGROUNDATTACK3);
if(isIllusion > 0){
ani = sq_CreateAnimation("","passiveobject/6_thief_bykk/kunoichi_bykk/animation/leavetrace/illusionshuriken/illusionshuriken.ani");
ani2 = sq_CreateAnimation("","passiveobject/6_thief_bykk/kunoichi_bykk/animation/leavetrace/illusionshuriken/illusionshuriken2.ani");
ani3 = sq_CreateAnimation("","passiveobject/6_thief_bykk/kunoichi_bykk/animation/leavetrace/illusionshuriken/illusionshuriken3.ani");
}
if(subtype == 4){
ani = sq_GetCustomAni(sqrChr, ANI_THBYKK_ILLUSIONSHURIKENAIRATTACK);
ani2 = sq_GetCustomAni(sqrChr, ANI_THBYKK_ILLUSIONSHURIKENAIRATTACK2);
ani3 = sq_GetCustomAni(sqrChr, ANI_THBYKK_ILLUSIONSHURIKENAIRATTACK3);
}
obj.getVar("saveAni").clear_ani_vector();
obj.getVar("saveAni").push_ani_vector(ani);
obj.getVar("saveAni").push_ani_vector(ani2);
obj.getVar("saveAni").push_ani_vector(ani3);
if(subtype == 3) sq_AddDrawOnlyAniFromParent(obj, "character/thief/effect/animation/3kunoichi_bykk/illusionshuriken/groundatk/ilusion_groundatkstart_a_boom.ani", 0, 1, 0);
else sq_AddDrawOnlyAniFromParent(obj, "character/thief/effect/animation/3kunoichi_bykk/illusionshuriken/airatk/ilusion_airatkstart_boom.ani", 0, 1, 0);
obj.sq_PlaySound("GHOSTKUNAI_CAST");
obj.addSetStatePacket(20, null, STATE_PRIORITY_AUTO, false, "");
break;
}
break;
case SKILL_THBYKK_MIGAWARI:
switch(subtype){
case 1:
local totalDamage = receiveData.readDword();
local sizeRate = receiveData.readDword();
local speedRate = receiveData.readDword();
obj.getVar("custom").setInt(0, speedRate);
local aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/migawari/migawariatka_eff_a.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 106));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
if(sizeRate > 100){
local currentAni = obj.getCurrentAnimation();
local sizeRate = sizeRate.tofloat() / 100.0;
currentAni.setImageRateFromOriginal(sizeRate, sizeRate);
currentAni.setAutoLayerWorkAnimationAddSizeRate(sizeRate);
sq_SetAttackBoundingBoxSizeRate(currentAni, sizeRate, sizeRate, sizeRate);
}
sq_SetMyShake(obj, 3, 120);
break;
case 2:
local totalDamage = receiveData.readDword();
local totalDamage_exp = receiveData.readDword();
local sizeRate = receiveData.readDword();
local aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/migawari/migawariwood_surikenhitbox.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 107));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
if(sizeRate > 100){
local currentAni = obj.getCurrentAnimation();
local sizeRate = sizeRate.tofloat() / 100.0;
sq_SetAttackBoundingBoxSizeRate(currentAni, sizeRate, sizeRate, sizeRate);
}
createSkillPassive_Theif_bykk(obj,obj,PASSIVEOBJ_NUM_THIEF, 0, 1, -30,sq_GetDirection(obj),3,SKILL_THBYKK_MIGAWARI,21,totalDamage_exp,sizeRate,0,0,0,0,0,0);
sq_AddDrawOnlyAniFromParent(obj, "passiveobject/6_thief_bykk/kunoichi_bykk/animation/migawari/migawariwood_surikeneff.ani", 0, 1, 0);
// sq_SetMyShake(obj, 3, 120);
break;
case 3:
local totalDamage = receiveData.readDword();
local sizeRate = receiveData.readDword();
local aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/migawari/migawariwood_explosion_a.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 105));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
if(sizeRate > 100){
local currentAni = obj.getCurrentAnimation();
local sizeRate = sizeRate.tofloat() / 100.0;
currentAni.setImageRateFromOriginal(sizeRate, sizeRate);
currentAni.setAutoLayerWorkAnimationAddSizeRate(sizeRate);
sq_SetAttackBoundingBoxSizeRate(currentAni, sizeRate, sizeRate, sizeRate);
}
sq_flashScreen(obj,0,0,400,204,sq_RGB(255,255,255), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
sq_SetMyShake(obj, 2, 200);
break;
case 21:
local totalDamage_exp = receiveData.readDword();
local sizeRate = receiveData.readDword();
obj.getVar("custom").setInt(0, totalDamage_exp);
obj.getVar("custom").setInt(1, sizeRate);
sqrChr.getVar("MigawariObj").push_obj_vector(obj);
local aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/migawari/migawariwood_suriken.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
sq_AddDrawOnlyAniFromParent(obj, "passiveobject/6_thief_bykk/kunoichi_bykk/animation/migawari/migawarifinish_eff_b.ani", -50, 1, 30);
// obj.setTimeEvent(1, 300, 1, false);
break;
}
break;
case SKILL_THBYKK_SKYROADS:
switch(subtype){
case 1:
local totalDamage = receiveData.readDword();
if(obj.getVar("markofFlame").getBool(0)){
local burnDamage = totalDamage * obj.getVar("markofFlameSet").getInt(0) / 100;
obj.getVar("markofFlameSet").setInt(3, burnDamage);
totalDamage = totalDamage * obj.getVar("markofFlameSet").getInt(1) / 100;
}
local sizeRate = receiveData.readDword();
local aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/skyroads/smoke/skyroadsact_smoke_a.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 112));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
if(sizeRate > 100){
local currentAni = obj.getCurrentAnimation();
local sizeRate = sizeRate.tofloat() / 100.0;
currentAni.setImageRateFromOriginal(sizeRate, sizeRate);
currentAni.setAutoLayerWorkAnimationAddSizeRate(sizeRate);
sq_SetAttackBoundingBoxSizeRate(currentAni, sizeRate, sizeRate, sizeRate);
}
sq_SetMyShake(obj, 3, 80);
break;
case 2:
local totalDamage = receiveData.readDword();
if(obj.getVar("markofFlame").getBool(0)){
local burnDamage = totalDamage * obj.getVar("markofFlameSet").getInt(0) / 100;
obj.getVar("markofFlameSet").setInt(3, burnDamage);
totalDamage = totalDamage * obj.getVar("markofFlameSet").getInt(1) / 100;
}
local aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/skyroads/airflame/back/skyroadsact_blacksmoke.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
local currentAni = obj.getCurrentAnimation();
currentAni.addLayerAnimation(10001,sq_CreateAnimation("","passiveobject/6_thief_bykk/kunoichi_bykk/animation/skyroads/airflame/front/skyroadsact_ball_a.ani"),true);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 112));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
sq_SetMyShake(obj, 3, 80);
break;
case 3:
local totalDamage = receiveData.readDword();
if(obj.getVar("markofFlame").getBool(0)){
local burnDamage = totalDamage * obj.getVar("markofFlameSet").getInt(0) / 100;
obj.getVar("markofFlameSet").setInt(3, burnDamage);
totalDamage = totalDamage * obj.getVar("markofFlameSet").getInt(1) / 100;
}
local sizeRate = receiveData.readDword();
local xPos = receiveData.readDword();
local zPos = receiveData.readDword();
local aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/skyroads/beam/hand_a.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 109));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
local baseX = sq_GetXPos(obj), baseZ = sq_GetZPos(obj);
local currentAni = obj.getCurrentAnimation();
local sizeRate = baseZ.tofloat() / 420.0;
currentAni.setImageRateFromOriginal(sizeRate, 1.0);
sq_SetAttackBoundingBoxSizeRate(currentAni, sizeRate, 1.0, 1.1);
local atan = sq_Atan2((225 * 1.2).tofloat(), zPos.tofloat());
sq_SetCustomRotate(obj, -atan);
break;
case 4:
local totalDamage = receiveData.readDword();
if(obj.getVar("markofFlame").getBool(0)){
local burnDamage = totalDamage * obj.getVar("markofFlameSet").getInt(0) / 100;
obj.getVar("markofFlameSet").setInt(3, burnDamage);
totalDamage = totalDamage * obj.getVar("markofFlameSet").getInt(1) / 100;
}
local sizeRate = receiveData.readDword();
local isTalisman = receiveData.readDword();
local isBlue = receiveData.readDword();
obj.getVar("custom").setInt(1, totalDamage * 8 / 100);
obj.getVar("custom").setInt(2, sizeRate);
local aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/skyroads/exp/skyroadsfinisheff_blacksmoke.ani";
if(isBlue > 0) aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/skyroads/exp/swordofkusanagi/blueskyroadsfinish_00.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 110));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
createOnlyDrawObjectEX_Theif_bykk(obj,"passiveobject/6_thief_bykk/kunoichi_bykk/animation/skyroads/exp/swordofkusanagi/blueskyroadsfinishfloor_floor_a.ani",true,sq_GetDirection(obj),sq_GetXPos(obj),sq_GetYPos(obj),0,ENUM_DRAWLAYER_BOTTOM,sizeRate,sizeRate);
if(sizeRate > 100){
local currentAni = obj.getCurrentAnimation();
local sizeRate = sizeRate.tofloat() / 100.0;
currentAni.setImageRateFromOriginal(sizeRate, sizeRate);
currentAni.setAutoLayerWorkAnimationAddSizeRate(sizeRate);
sq_SetAttackBoundingBoxSizeRate(currentAni, sizeRate, sizeRate, sizeRate);
}
sq_SetMyShake(obj, 6, 300);
if(isTalisman > 0){
local currentAni = obj.getCurrentAnimation();
local delay = currentAni.getDelaySum(0, 4);
obj.getVar("custom").setInt(3, currentAni.getDelaySum(false) - delay);
obj.setTimeEvent(1, delay, 1, false);
}
break;
case 5:
local totalDamage = receiveData.readDword();
local sizeRate = receiveData.readDword();
local time = receiveData.readDword();
local aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/skyroads/firegound/skyroadsfinisheff_ground_a.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 111));
local currentAni = obj.getCurrentAnimation();
local delay = currentAni.getDelaySum(false);
local speedRate = delay * 100 / (2500 + time);
currentAni.setSpeedRate(speedRate.tofloat());
sq_ChangeDrawLayer(obj, ENUM_DRAWLAYER_BOTTOM);
if(sizeRate > 100){
local sizeRate = sizeRate.tofloat() / 100.0;
currentAni.setImageRateFromOriginal(sizeRate, sizeRate);
currentAni.setAutoLayerWorkAnimationAddSizeRate(sizeRate);
sq_SetAttackBoundingBoxSizeRate(currentAni, sizeRate, sizeRate, sizeRate);
}
break;
}
break;
case SKILL_THBYKK_FLAMEFLOWER:
switch(subtype){
case 1:
local totalDamage = receiveData.readDword();
if(obj.getVar("markofFlame").getBool(0)){
local burnDamage = totalDamage * obj.getVar("markofFlameSet").getInt(0) / 100;
obj.getVar("markofFlameSet").setInt(3, burnDamage);
totalDamage = totalDamage * obj.getVar("markofFlameSet").getInt(1) / 100;
}
local sizeRate = receiveData.readDword();
local isBlue = receiveData.readDword();
local aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/flameflower/flameflowerexp.ani";
if(isBlue > 0) aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/flameflower/swordofkusanagi/bluelast_last.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 76));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
if(sizeRate > 100){
local currentAni = obj.getCurrentAnimation();
local sizeRate = sizeRate.tofloat() / 100.0;
currentAni.setImageRateFromOriginal(sizeRate, sizeRate);
currentAni.setAutoLayerWorkAnimationAddSizeRate(sizeRate);
sq_SetAttackBoundingBoxSizeRate(currentAni, sizeRate, sizeRate, sizeRate);
}
sq_SetMyShake(obj, 10, 300);
break;
}
break;
case SKILL_THBYKK_FLYINGSWALLOW:
switch(subtype){
case 1:
local totalDamage = receiveData.readDword();
local sizeRate = receiveData.readDword();
local aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/flyingswallow/swallowatka_eff_a.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 76));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
local currentAni = obj.getCurrentAnimation();
sq_SetAttackBoundingBoxSizeRate(currentAni, 2.0, 2.0, 2.0);
sq_SetMyShake(obj, 3, 80);
break;
case 2:
local group = receiveData.readDword();
local uniqueId = receiveData.readDword();
local targetObj = sq_GetObject(obj, group, uniqueId);
if(targetObj && targetObj.getState() != STATE_DIE){
obj.getVar("tar").clear_obj_vector();
obj.getVar("tar").push_obj_vector(targetObj);
sq_moveWithParent(targetObj, obj);
obj.setTimeEvent(1, 200, 1, false);
}
break;
case 3:
local totalDamage_shuriken = receiveData.readDword();
local totalDamage_exp = receiveData.readDword();
local createMax = receiveData.readDword();
local sub = receiveData.readDword();
obj.getVar("custom").setInt(0, totalDamage_shuriken);
obj.getVar("custom").setInt(1, totalDamage_exp);
obj.getVar("custom").setInt(2, createMax);
obj.getVar("custom").setInt(3, sub);
switch(sub){
case 1:
case 3:
local ani = sq_GetCustomAni(sqrChr, ANI_THBYKK_FLYINGSWALLOWMOVING);
sq_Rewind(ani);
obj.setCurrentAnimation(ani);
break;
case 2:
case 4:
local aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/flyingswallow/swallowmovingtrace.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
sq_SetCurrentDirection(obj, sq_GetOppositeDirection(sq_GetDirection(obj)));
break;
}
break;
case 4:
local totalDamage_exp = receiveData.readDword();
local sub = receiveData.readDword();
local num = receiveData.readDword();
obj.getVar("custom").setInt(0, totalDamage_exp);
obj.getVar("custom").setInt(1, sub);
obj.getVar("custom").setInt(2, num);
obj.addSetStatePacket(20, null, STATE_PRIORITY_AUTO, false, "");
break;
case 5:
local totalDamage_shuriken = receiveData.readDword();
obj.getVar("custom").setInt(0, totalDamage_shuriken);
obj.setTimeEvent(3, 100, 1, false);
break;
case 6:
local totalDamage = receiveData.readDword();
local sizeRate = receiveData.readDword();
local sub = receiveData.readDword();
obj.getVar("custom").setInt(0, sub);
local aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/flyingswallow/swallow_boom2_normal_attack.ani";
if(sub > 0) aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/flyingswallow/swallow_boom2_jump_attack.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, sub>0?81:80));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
if(sub > 0 && sizeRate > 100){
local currentAni = obj.getCurrentAnimation();
sizeRate = sizeRate.tofloat() / 100.0;
sq_SetAttackBoundingBoxSizeRate(currentAni, sizeRate, sizeRate, sizeRate);
}
sq_SetMyShake(obj, 5, 80);
break;
case 7:
local totalDamage_exp = receiveData.readDword();
local sizeRate = receiveData.readDword();
local num = receiveData.readDword();
local numMax = receiveData.readDword();
obj.getVar("custom").setInt(0, totalDamage_exp);
obj.getVar("custom").setInt(1, sizeRate);
obj.getVar("custom").setInt(2, num);
obj.getVar("custom").setInt(3, numMax);
obj.addSetStatePacket(20, null, STATE_PRIORITY_AUTO, false, "");
break;
case 8:
local totalDamage = receiveData.readDword();
local sub = receiveData.readDword();
local aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/flyingswallow/swallow_light_line.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 82));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
local angle = -35.0;
switch(sub){
case 2: angle = 35.0; break;
case 3: angle = -70.0; break;
case 4: angle = 60.0; break;
case 5: angle = 90.0; break;
}
sq_SetCustomRotate(obj, sq_ToRadian(angle));
local currentAni = obj.getCurrentAnimation();
currentAni.setImageRateFromOriginal(2.0, 1.0);
sq_SetAttackBoundingBoxSizeRate(currentAni, 1.0, 1.0, 1.0);
break;
}
break;
case SKILL_THBYKK_DOOMFIELD:
switch(subtype){
case 1:
local totalDamage = receiveData.readDword();
if(obj.getVar("markofFlame").getBool(0)){
local burnDamage = totalDamage * obj.getVar("markofFlameSet").getInt(0) / 100;
obj.getVar("markofFlameSet").setInt(3, burnDamage);
totalDamage = totalDamage * obj.getVar("markofFlameSet").getInt(1) / 100;
}
local speedRate = receiveData.readDword();
local sizeRate = receiveData.readDword();
local isBlue = receiveData.readDword();
local aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/doomfield/floor/doomfiledfloor_floor02.ani";
if(isBlue > 0) aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/doomfield/swordofkusanagi/floor/doomfiledfloor_floor02.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 68));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
local currentAni = obj.getCurrentAnimation();
currentAni.setSpeedRate(speedRate.tofloat());
if(sizeRate > 100){
sizeRate = sizeRate.tofloat() / 100.0;
currentAni.setImageRateFromOriginal(sizeRate, sizeRate);
currentAni.setAutoLayerWorkAnimationAddSizeRate(sizeRate);
sq_SetAttackBoundingBoxSizeRate(currentAni, sizeRate, sizeRate, sizeRate);
}
sq_ChangeDrawLayer(obj, ENUM_DRAWLAYER_BOTTOM);
break;
case 2:
local totalDamage = receiveData.readDword();
if(obj.getVar("markofFlame").getBool(0)){
local burnDamage = totalDamage * obj.getVar("markofFlameSet").getInt(0) / 100;
obj.getVar("markofFlameSet").setInt(3, burnDamage);
totalDamage = totalDamage * obj.getVar("markofFlameSet").getInt(1) / 100;
}
local sizeRate = receiveData.readDword();
local aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/doomfield/ninjacircle/ninjacircleexpattackbox.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 68));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
obj.setTimeEvent(2, 50, 10, true);
break;
case 3:
local totalDamage = receiveData.readDword();
if(obj.getVar("markofFlame").getBool(0)){
local burnDamage = totalDamage * obj.getVar("markofFlameSet").getInt(0) / 100;
obj.getVar("markofFlameSet").setInt(3, burnDamage);
totalDamage = totalDamage * obj.getVar("markofFlameSet").getInt(1) / 100;
}
local totalDamage_exp = receiveData.readDword();
local speedRate = receiveData.readDword();
local sizeRate = receiveData.readDword();
obj.getVar("custom").setInt(0, totalDamage_exp);
obj.getVar("custom").setInt(1, speedRate);
obj.getVar("custom").setInt(2, sizeRate);
local aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/doomfield/startflame/doomfiledcreate_flame01.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 71));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
local currentAni = obj.getCurrentAnimation();
currentAni.setSpeedRate(speedRate.tofloat());
if(sizeRate > 100){
sizeRate = sizeRate.tofloat() / 100.0;
currentAni.setImageRateFromOriginal(sizeRate, sizeRate);
currentAni.setAutoLayerWorkAnimationAddSizeRate(sizeRate);
sq_SetAttackBoundingBoxSizeRate(currentAni, sizeRate, sizeRate, sizeRate);
}
break;
case 4:
local totalDamage = receiveData.readDword();
if(obj.getVar("markofFlame").getBool(0)){
local burnDamage = totalDamage * obj.getVar("markofFlameSet").getInt(0) / 100;
obj.getVar("markofFlameSet").setInt(3, burnDamage);
totalDamage = totalDamage * obj.getVar("markofFlameSet").getInt(1) / 100;
}
local speedRate = receiveData.readDword();
local sizeRate = receiveData.readDword();
local aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/doomfield/startexplosion/doomfiledexplosion_flameex02.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 72));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
local currentAni = obj.getCurrentAnimation();
currentAni.setSpeedRate(speedRate.tofloat());
if(sizeRate > 100){
sizeRate = sizeRate.tofloat() / 100.0;
currentAni.setImageRateFromOriginal(sizeRate, sizeRate);
currentAni.setAutoLayerWorkAnimationAddSizeRate(sizeRate);
sq_SetAttackBoundingBoxSizeRate(currentAni, sizeRate, sizeRate, sizeRate);
}
break;
case 5:
sqrChr.getVar("DoomFieldObj").push_obj_vector(obj);
local totalDamage = receiveData.readDword();
local phaseSet = receiveData.readDword();
local sub = receiveData.readDword();
local sizeRate = receiveData.readDword();
local isBlue = receiveData.readDword();
obj.getVar("custom").setInt(0, totalDamage);
obj.getVar("custom").setInt(1, phaseSet);
obj.getVar("custom").setInt(2, sizeRate);
obj.getVar("custom").setInt(3, isBlue);
local aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/doomfield/ninjacircle/ninjacircle0"+sub.tostring()+"_set01.ani";
if(isBlue > 0) aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/doomfield/swordofkusanagi/ninjacircle/ninjacircle0"+sub.tostring()+"_set01.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
if(sizeRate > 100){
local currentAni = obj.getCurrentAnimation();
sizeRate = sizeRate.tofloat() / 100.0;
currentAni.setImageRateFromOriginal(sizeRate, sizeRate);
currentAni.setAutoLayerWorkAnimationAddSizeRate(sizeRate);
}
break;
case 6:
local totalDamage = receiveData.readDword();
local sizeRate = receiveData.readDword();
local isBlue = receiveData.readDword();
local aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/doomfield/lastexplosion/lastexplosion_normal09.ani";
if(isBlue > 0) aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/doomfield/swordofkusanagi/lastexplosion/lastexplosion_normal09.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
sq_flashScreen(obj,0,120,10,255, sq_RGB(255,255,255), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
sq_SetMyShake(obj, 5, 200);
createSkillPassive_Theif_bykk(sqrChr,sqrChr,PASSIVEOBJ_NUM_THIEF, 0, 0, 0,sq_GetDirection(obj),3,SKILL_THBYKK_DOOMFIELD,8,totalDamage,sizeRate,0,0,0,0,0,0);
if(sizeRate > 100){
local currentAni = obj.getCurrentAnimation();
sizeRate = sizeRate.tofloat() / 100.0;
currentAni.setImageRateFromOriginal(sizeRate, sizeRate);
currentAni.setAutoLayerWorkAnimationAddSizeRate(sizeRate);
}
break;
case 7:
local totalDamage = receiveData.readDword();
if(obj.getVar("markofFlame").getBool(0)){
local burnDamage = totalDamage * obj.getVar("markofFlameSet").getInt(0) / 100;
obj.getVar("markofFlameSet").setInt(3, burnDamage);
totalDamage = totalDamage * obj.getVar("markofFlameSet").getInt(1) / 100;
}
local sizeRate = receiveData.readDword();
local aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/doomfield/ninjacircle/ninjacircleattackbox.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 69));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
if(sizeRate > 100){
local currentAni = obj.getCurrentAnimation();
sizeRate = sizeRate.tofloat() / 100.0;
sq_SetAttackBoundingBoxSizeRate(currentAni, sizeRate, sizeRate, sizeRate);
}
obj.setTimeEvent(2, 12, 6, true);
break;
case 8:
local totalDamage = receiveData.readDword();
if(obj.getVar("markofFlame").getBool(0)){
local burnDamage = totalDamage * obj.getVar("markofFlameSet").getInt(0) / 100;
obj.getVar("markofFlameSet").setInt(3, burnDamage);
totalDamage = totalDamage * obj.getVar("markofFlameSet").getInt(1) / 100;
}
local sizeRate = receiveData.readDword();
local aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/doomfield/ninjacircle/ninjacircleexpattackbox.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 70));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
if(sizeRate > 100){
local currentAni = obj.getCurrentAnimation();
sizeRate = sizeRate.tofloat() / 100.0;
sq_SetAttackBoundingBoxSizeRate(currentAni, sizeRate, sizeRate, sizeRate);
}
break;
}
break;
case SKILL_THBYKK_YAMATAOROCHI:
switch(subtype){
case 1:
local totalDamage = receiveData.readDword();
local totalDamage_loop = receiveData.readDword();
local hitMax = receiveData.readDword();
local sizeRate = receiveData.readDword();
obj.getVar("custom").setInt(0, totalDamage);
obj.getVar("custom").setInt(1, totalDamage_loop);
obj.getVar("custom").setInt(2, hitMax);
obj.getVar("custom").setInt(3, sizeRate);
obj.addSetStatePacket(20, null, STATE_PRIORITY_AUTO, false, "");
break;
case 2:
local totalDamage = receiveData.readDword();
local lifeTime = receiveData.readDword();
local sizeRate = receiveData.readDword();
obj.getVar("custom").setInt(0, totalDamage);
obj.getVar("custom").setInt(1, lifeTime);
obj.getVar("custom").setInt(2, sizeRate);
sq_ChangeDrawLayer(obj, ENUM_DRAWLAYER_BOTTOM);
obj.addSetStatePacket(20, null, STATE_PRIORITY_AUTO, false, "");
break;
case 3:
local totalDamage_loop = receiveData.readDword();
local lifeTime = receiveData.readDword();
local sizeRate = receiveData.readDword();
obj.getVar("custom").setInt(0, totalDamage_loop);
obj.getVar("custom").setInt(1, lifeTime);
obj.getVar("custom").setInt(2, sizeRate);
obj.addSetStatePacket(20, null, STATE_PRIORITY_AUTO, false, "");
break;
case 4:
local totalDamage_loop = receiveData.readDword();
local lifeTime = receiveData.readDword();
local sizeRate = receiveData.readDword();
obj.getVar("custom").setInt(0, totalDamage_loop);
obj.getVar("custom").setInt(1, lifeTime);
obj.getVar("custom").setInt(2, sizeRate);
obj.addSetStatePacket(20, null, STATE_PRIORITY_AUTO, false, "");
break;
}
break;
case SKILL_THBYKK_AMATERAS:
switch(subtype){
case 1:
sqrChr.getVar("Amateras").push_obj_vector(obj);
local totalDamage = receiveData.readDword();
local totalDamage_laser = receiveData.readDword();
local laserMax = receiveData.readDword();
local range = receiveData.readDword();
obj.getVar("custom").setInt(0, totalDamage);
obj.getVar("custom").setInt(1, totalDamage_laser);
obj.getVar("custom").setInt(2, laserMax);
obj.getVar("custom").setInt(3, range);
obj.addSetStatePacket(20, null, STATE_PRIORITY_AUTO, false, "");
break;
case 2:
local totalDamage = receiveData.readDword();
local range = receiveData.readDword();
local totalDamage_laser = receiveData.readDword();
local laserMax = receiveData.readDword();
obj.getVar("custom").setInt(1, totalDamage_laser);
obj.getVar("custom").setInt(2, laserMax);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 61));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
local objectManager = obj.getObjectManager();
for (local i = 0; i < objectManager.getCollisionObjectNumber(); i++){
local object = objectManager.getCollisionObject(i);
if (object && object.isObjectType(OBJECTTYPE_ACTIVE) && obj.isEnemy(object) && object.isInDamagableState(obj) && sq_GetDistance(sq_GetXPos(obj), sq_GetYPos(obj), sq_GetXPos(object), sq_GetYPos(object), true) <= range && sq_Abs(sq_GetYPos(obj) - sq_GetYPos(object)) <= 500){
local activeObj = sq_GetCNRDObjectToActiveObject(object);
sq_SendHitObjectPacket(obj,activeObj,0,0,sq_GetObjectHeight(activeObj) / 2);
}
}
local delay = 300;
local skillLevel = sq_GetSkillLevel(sqrChr, SKILL_THBYKK_KURVEJADE);
if(skillLevel > 0){
delay = delay * (100 - sq_GetLevelData(sqrChr, SKILL_THBYKK_KURVEJADE, 15, skillLevel) * 60 / 100) / 100;
}
obj.setTimeEvent(4, delay, 1, false);
break;
case 3:
local totalDamage = receiveData.readDword();
local sub = receiveData.readDword();
obj.getVar("custom").setInt(0, totalDamage);
obj.setTimeEvent(5, sub * 150, 1, false);
break;
case 4:
local group = receiveData.readDword();
local uniqueId = receiveData.readDword();
local targetObj = sq_GetObject(obj, group, uniqueId);
if(targetObj && targetObj.getState() != STATE_DIE){
obj.getVar("tar").clear_obj_vector();
obj.getVar("tar").push_obj_vector(targetObj);
local aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/amateras/laser/beam1.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
obj.getVar("custom").setInt(0, sq_GetXPos(obj));
obj.getVar("custom").setInt(1, sq_GetYPos(obj));
obj.getVar("custom").setInt(2, sq_GetZPos(obj));
obj.getVar("custom").setInt(3, sq_GetHeightObject(targetObj) / 2);
obj.setTimeEvent(6, 8, 10, true);
}
break;
}
break;
case SKILL_THBYKK_FUUMASHURIKEN:
switch(subtype){
case 1:
sqrChr.getVar("FuumaShuriken").push_obj_vector(obj);
local totalDamage = receiveData.readDword();
local hitMax = receiveData.readDword();
local isIllusion = receiveData.readDword();
local aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/fuumashuriken/shurikensmalldummy.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 84));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
obj.sq_SetMaxHitCounterPerObject(hitMax);
obj.setTimeEvent(1, 50, -1, true);
if(isIllusion < 1) obj.setTimeEvent(0, 3000, 1, false);
else obj.setTimeEvent(0, 2000, 1, false);
break;
case 2:
local sub = receiveData.readDword();
local hitMax = receiveData.readDword();
local isIllusion = receiveData.readDword();
local time = (60 * hitMax - 100) / 2;
obj.getVar("custom").setInt(0, time);
obj.getVar("custom").setInt(1, sq_GetXPos(obj));
obj.getVar("custom").setInt(2, sq_GetYPos(obj));
obj.getVar("custom").setInt(5, isIllusion);
local aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/fuumashuriken/funmasuriken_smallsuriken_suriken.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
local speed = 350.0 * 2;
if(sub == 1) speed = speed * 1.25;
if(sq_GetDirection(obj) == ENUM_DIRECTION_RIGHT) sq_SetVelocity(obj, 0, speed);
else sq_SetVelocity(obj, 0, -speed);
switch(sub){
case 0: sq_SetVelocity(obj, 1, -speed * 0.2); break;
case 2: sq_SetVelocity(obj, 1, speed * 0.2); break;
case 3: sq_SetVelocity(obj, 1, speed * 0.4); break;
}
obj.setTimeEvent(2, time, 1, false);
break;
case 3:
local totalDamage = receiveData.readDword();
local hitMax = receiveData.readDword();
local totalDamage_exp = receiveData.readDword();
local sizeRate = receiveData.readDword();
local sizeRate_shuriken = receiveData.readDword();
local isBlue = receiveData.readDword();
obj.getVar("custom").setInt(0, totalDamage_exp);
obj.getVar("custom").setInt(1, sizeRate);
obj.getVar("custom").setInt(2, isBlue);
local aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/fuumashuriken/shurikenbigdummy.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 85));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
obj.sq_SetMaxHitCounterPerObject(hitMax);
obj.setTimeEvent(1, 80, -1, true);
obj.setTimeEvent(5, 80 * (hitMax + 1), 1, false);
local currentAni = obj.getCurrentAnimation();
if(sizeRate_shuriken > 100){
sizeRate = sizeRate_shuriken.tofloat() / 100.0;
currentAni.setImageRateFromOriginal(sizeRate, sizeRate);
currentAni.setAutoLayerWorkAnimationAddSizeRate(sizeRate);
sq_SetAttackBoundingBoxSizeRate(currentAni, sizeRate, sizeRate, sizeRate);
}
break;
case 4:
local hitMax = receiveData.readDword();
local sizeRate_shuriken = receiveData.readDword();
local isBlue = receiveData.readDword();
// print(sizeRate_shuriken);
local aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/fuumashuriken/funmasuriken_big_suriken.ani";
if(isBlue > 0) aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/fuumashuriken/talismansurikenloop_03.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
obj.sq_SetMoveParticle("particle/kunoichi_bykk/fuumashuriken01.ptl", 0.0, 0.0);
obj.setTimeEvent(0, 80 * (hitMax + 1), 1, false);
local currentAni = obj.getCurrentAnimation();
if(sizeRate_shuriken > 100){
local sizeRate = sizeRate_shuriken.tofloat() / 100.0;
currentAni.setImageRateFromOriginal(sizeRate, sizeRate);
currentAni.setAutoLayerWorkAnimationAddSizeRate(sizeRate);
sq_SetAttackBoundingBoxSizeRate(currentAni, sizeRate, sizeRate, sizeRate);
}
break;
case 5:
local totalDamage = receiveData.readDword();
local sizeRate = receiveData.readDword();
local sub = receiveData.readDword();
local isBlue = receiveData.readDword();
local aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/fuumashuriken/funmasurikenexplosion_05.ani";
if(sub == 1) aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/fuumashuriken/funmasurikenexplosion_jump_05.ani";
if(isBlue > 0){
aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/fuumashuriken/funmasurikentalismanexplosion_05.ani";
if(sub == 1) aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/fuumashuriken/funmasurikentalismanexplosion_jump_05.ani";
}
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 86));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
local currentAni = obj.getCurrentAnimation();
if(sizeRate > 100){
sizeRate = sizeRate.tofloat() / 100.0;
currentAni.setImageRateFromOriginal(sizeRate, sizeRate);
currentAni.setAutoLayerWorkAnimationAddSizeRate(sizeRate);
sq_SetAttackBoundingBoxSizeRate(currentAni, sizeRate, sizeRate, sizeRate);
}
break;
case 6:
local totalDamage = receiveData.readDword();
local sizeRate = receiveData.readDword();
local isBlue = receiveData.readDword();
obj.getVar("custom").setInt(0, totalDamage);
obj.getVar("custom").setInt(1, sizeRate);
obj.getVar("custom").setInt(2, isBlue);
local aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/fuumashuriken/funmasuriken_big_jump_suriken.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
local speed = 600.0;
if(sq_GetDirection(obj) == ENUM_DIRECTION_RIGHT) sq_SetVelocity(obj, 0, speed);
else sq_SetVelocity(obj, 0, -speed);
sq_SetVelocity(obj, 2, -speed);
break;
}
break;
case SKILL_THBYKK_JADEKAMAITACHI:
switch(subtype){
case 1:
local totalDamage = receiveData.readDword();
local totalDamage_exp = receiveData.readDword();
local addNumber = receiveData.readDword();
local hitMax = receiveData.readDword();
obj.getVar("custom").setInt(0, totalDamage_exp);
obj.getVar("custom").setInt(1, addNumber);
local aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/jadekamaitachi/renewal/tornado_03.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 98));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
obj.sq_SetMaxHitCounterPerObject(hitMax);
local currentAni = obj.getCurrentAnimation();
local delay = currentAni.getDelaySum(0, 15) / 20;
obj.setTimeEvent(1, delay, -1, false);
obj.setTimeEvent(2, currentAni.getDelaySum(0, 14), 1, false);
obj.setTimeEvent(3, currentAni.getDelaySum(0, 15), 1, false);
obj.sq_PlaySound("JADE_KAMAITACHI_SWIRL");
break;
case 2:
local totalDamage = receiveData.readDword();
local addNumber = receiveData.readDword();
local aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/jadekamaitachi/renewal/finalattack_finish_attackdummy.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 96));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
obj.sq_PlaySound("JADE_KAMAITACHI_FINISH");
break;
case 3:
local aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/jadekamaitachi/renewal/finalattack_31.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
local currentAni = obj.getCurrentAnimation();
obj.setTimeEvent(4, currentAni.getDelaySum(0, 1), 1, false);
// obj.sq_PlaySound("JADE_KAMAITACHI_FIRELOOP_END");
break;
}
break;
case SKILL_THBYKK_SWORDOFKUSANAGI:
switch(subtype){
case 1:
sqrChr.getVar("SwordOfKusanagi").push_obj_vector(obj);
local totalDamage = receiveData.readDword();
local totalDamage_loop = receiveData.readDword();
local lifeTime = receiveData.readDword();
obj.getVar("custom").setInt(0, totalDamage);
obj.getVar("custom").setInt(1, totalDamage_loop);
obj.getVar("custom").setInt(2, lifeTime);
obj.addSetStatePacket(20, null, STATE_PRIORITY_AUTO, false, "");
break;
case 2:
local totalDamage = receiveData.readDword();
local aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/swordofkusanagi/kkboom_00.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 113));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
sq_AddDrawOnlyAniFromParent(obj, "passiveobject/6_thief_bykk/kunoichi_bykk/animation/swordofkusanagi/kkboomfront_04.ani", 0, 1, 0);
sq_AddDrawOnlyAniFromParent(obj, "passiveobject/6_thief_bykk/kunoichi_bykk/animation/swordofkusanagi/kkboomback_07.ani", 0, -1, 0);
break;
case 3://
local totalDamage = receiveData.readDword();
local totalDamage_exp = receiveData.readDword();
obj.getVar("custom").setInt(0, totalDamage);
obj.getVar("custom").setInt(1, totalDamage_exp);
local aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/swordofkusanagi/ff_body.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
break;
case 4:
local totalDamage = receiveData.readDword();
local totalDamage_exp = receiveData.readDword();
obj.getVar("custom").setInt(0, totalDamage);
obj.getVar("custom").setInt(1, totalDamage_exp);
local aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/swordofkusanagi/kuskyroads_01.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 116));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
local speed = 600.0;
if(sq_GetDirection(obj) == ENUM_DIRECTION_RIGHT) sq_SetVelocity(obj, 0, speed);
else sq_SetVelocity(obj, 0, -speed);
sq_SetVelocity(obj, 2, -speed);
sq_SetCustomRotate(obj, sq_ToRadian(-45.0));
break;
case 5:
local totalDamage = receiveData.readDword();
local aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/swordofkusanagi/kkfinish_01.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 115));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
local aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/swordofkusanagi/kkfinish_01_background_01.ani";
local pooledObj = sq_AddDrawOnlyAniFromParent(obj, aniPath, 0, 0, 0);
sq_ChangeDrawLayer(pooledObj, ENUM_DRAWLAYER_BOTTOM);
local currentAni = obj.getCurrentAnimation();
obj.setTimeEvent(4, currentAni.getDelaySum(0, 8), 1, false);
obj.setTimeEvent(5, currentAni.getDelaySum(0, 16), 1, false);
break;
}
break;
case SKILL_THBYKK_SHURIKENIMPROVE:
switch(subtype){
case 1:
local attackIndex = receiveData.readDword();
local aniPath = "equipment/character/thief/weapon/chakraweapon/chakraweaponc2/throwchakraweapon.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
local currentAni = obj.getCurrentAnimation();
currentAni.addLayerAnimation(100001,sq_CreateAnimation("","passiveobject/6_thief_bykk/kunoichi_bykk/animation/throwchakraweapon/chakraweaponlineeff.ani"),true);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, attackIndex));
obj.sq_SetMoveParticle("particle/kunoichi_bykk/chakraweapon.ptl", 0.0, 0.0);
break;
case 2:
local attackIndex = receiveData.readDword();
local aniPath = "equipment/character/thief/weapon/chakraweapon/chakraweaponc2/throwchakraweapon.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
local currentAni = obj.getCurrentAnimation();
currentAni.addLayerAnimation(100001,sq_CreateAnimation("","passiveobject/6_thief_bykk/kunoichi_bykk/animation/throwchakraweapon/chakraweaponlineeff.ani"),true);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, attackIndex));
obj.sq_SetMoveParticle("particle/kunoichi_bykk/chakraweaponjump1.ptl", 0.0, 0.0);
sq_SetCustomRotate(obj, sq_ToRadian(-45.0));
break;
}
break;
case SKILL_THBYKK_FIREHIDE:
sqrChr.getVar("firehide").push_obj_vector(obj);
obj.setMapFollowParent(sqrChr);
obj.setMapFollowType(1);
local sub = receiveData.readDword();
obj.getVar("custom").setInt(0, sub);
obj.addSetStatePacket(20, null, STATE_PRIORITY_AUTO, false, "");
break;
case SKILL_THBYKK_KURVEJADE:
obj.setMapFollowParent(sqrChr);
obj.setMapFollowType(1);
switch(subtype){
case 1:
sqrChr.getVar("kurvejadeFireObj").push_obj_vector(obj);
obj.getVar("custom").setInt(0, 0);
obj.getVar("custom").setInt(1, 0);
obj.addSetStatePacket(20, null, STATE_PRIORITY_AUTO, false, "");
break;
case 2:
sqrChr.getVar("kurvejadeDarkObj").push_obj_vector(obj);
obj.getVar("custom").setInt(0, 1);
obj.getVar("custom").setInt(1, 0);
obj.addSetStatePacket(20, null, STATE_PRIORITY_AUTO, false, "");
break;
case 3:
sqrChr.getVar("kurvejadeLightObj").push_obj_vector(obj);
obj.getVar("custom").setInt(0, 2);
obj.getVar("custom").setInt(1, 0);
obj.addSetStatePacket(20, null, STATE_PRIORITY_AUTO, false, "");
break;
}
break;
case SKILL_THBYKK_LEAVETRACE:
local state = receiveData.readDword();
local startFrameIndex = receiveData.readDword();
local ninjutsuPhase = receiveData.readDword();
local speedRate = receiveData.readDword();
local bonusRate = receiveData.readDword();
local set_1 = receiveData.readDword();
local set_2 = receiveData.readDword();
obj.getVar("custom").setInt(0, state);
obj.getVar("custom").setInt(1, startFrameIndex);
obj.getVar("custom").setInt(2, ninjutsuPhase);
obj.getVar("custom").setInt(3, speedRate);
obj.getVar("custom").setInt(4, bonusRate);
obj.getVar("custom").setInt(5, set_1);
obj.getVar("custom").setInt(6, set_2);
switch(subtype){
case SKILL_THBYKK_BIGKUNAI:
bonusRate = bonusRate.tofloat() / 100.0;
local totalDamage = sqrChr.sq_GetBonusRateWithPassive(SKILL_THBYKK_BIGKUNAI, -1, 0, bonusRate);
local totalDamage_exp = sqrChr.sq_GetBonusRateWithPassive(SKILL_THBYKK_BIGKUNAI, -1, 1, bonusRate);
local skillLevel = sq_GetSkillLevel(sqrChr, SKILL_THBYKK_BIGKUNAI);
local hitTime = sq_GetLevelData(sqrChr, SKILL_THBYKK_BIGKUNAI, 2, skillLevel);
local lifeTime = sq_GetLevelData(sqrChr, SKILL_THBYKK_BIGKUNAI, 3, skillLevel);
local sizeRate = sq_GetLevelData(sqrChr, SKILL_THBYKK_BIGKUNAI, 4, skillLevel);
local addSizeRate = sq_GetLevelData(sqrChr, SKILL_THBYKK_BIGKUNAI, 5, skillLevel);
sizeRate = sizeRate + addSizeRate * ninjutsuPhase;
local isBlue = 0, moveBool = 0;
if(CNSquirrelAppendage.sq_IsAppendAppendage(sqrChr, APDPATH_SWORDOFKUSANAGI_BUFF)) isBlue = 1;
obj.getVar("custom").setInt(7, totalDamage);
obj.getVar("custom").setInt(8, totalDamage_exp);
obj.getVar("custom").setInt(9, hitTime);
obj.getVar("custom").setInt(10, lifeTime);
obj.getVar("custom").setInt(11, sizeRate);
obj.getVar("custom").setInt(12, isBlue);
obj.getVar("custom").setInt(13, moveBool);
break;
case SKILL_THBYKK_ILUSIONSHURIKEN:
bonusRate = bonusRate.tofloat() / 100.0;
local totalDamage = sqrChr.sq_GetBonusRateWithPassive(SKILL_THBYKK_ILUSIONSHURIKEN, -1, 0, bonusRate);
local reboundCount = sqrChr.sq_GetBonusRateWithPassive(SKILL_THBYKK_ILUSIONSHURIKEN, -1, 4, 1.0) + 100;
local isBlue = 0;
if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, APDPATH_SWORDOFKUSANAGI_BUFF)) isBlue = 1;
obj.getVar("custom").setInt(7, totalDamage);
obj.getVar("custom").setInt(8, reboundCount);
obj.getVar("custom").setInt(9, isBlue);
break;
case SKILL_THBYKK_FLAMETORNADO:
bonusRate = bonusRate.tofloat() / 100.0;
local totalDamage = sqrChr.sq_GetBonusRateWithPassive(SKILL_THBYKK_FLAMETORNADO, -1, 0, bonusRate);
local totalDamage_exp = sqrChr.sq_GetBonusRateWithPassive(SKILL_THBYKK_FLAMETORNADO, -1, 1, bonusRate);
local skillLevel = sq_GetSkillLevel(sqrChr, SKILL_THBYKK_FLAMETORNADO);
local hitTime = sq_GetLevelData(sqrChr, SKILL_THBYKK_FLAMETORNADO, 3, skillLevel);
local lifeTime = sq_GetLevelData(sqrChr, SKILL_THBYKK_FLAMETORNADO, 2, skillLevel);
local sizeRate = sq_GetLevelData(sqrChr, SKILL_THBYKK_FLAMETORNADO, 6, skillLevel);
local addSizeRate = sq_GetLevelData(sqrChr, SKILL_THBYKK_FLAMETORNADO, 5, skillLevel);
local addExpSizeRate = sq_GetLevelData(sqrChr, SKILL_THBYKK_FLAMETORNADO, 7, skillLevel);
sizeRate = sizeRate + addSizeRate * ninjutsuPhase;
local range = sq_GetIntData(sqrChr, SKILL_THBYKK_FLAMETORNADO, 2);
local addRangeRate = sq_GetLevelData(sqrChr, SKILL_THBYKK_FLAMETORNADO, 9, skillLevel);
range = range * (100 + addRangeRate * ninjutsuPhase) / 100;
local expSizeRate = sizeRate + addExpSizeRate * ninjutsuPhase;
local isBlue = 0;
if(CNSquirrelAppendage.sq_IsAppendAppendage(sqrChr, APDPATH_SWORDOFKUSANAGI_BUFF)) isBlue = 1;
obj.getVar("custom").setInt(7, totalDamage);
obj.getVar("custom").setInt(8, totalDamage_exp);
obj.getVar("custom").setInt(9, hitTime);
obj.getVar("custom").setInt(10, lifeTime);
obj.getVar("custom").setInt(11, sizeRate);
obj.getVar("custom").setInt(12, range);
obj.getVar("custom").setInt(13, expSizeRate);
obj.getVar("custom").setInt(14, isBlue);
break;
case SKILL_THBYKK_SKYROADS:
bonusRate = bonusRate.tofloat() / 100.0;
local totalDamage = sqrChr.sq_GetBonusRateWithPassive(SKILL_THBYKK_SKYROADS, -1, 0, bonusRate);
local sizeRate = sq_GetIntData(sqrChr, SKILL_THBYKK_SKYROADS, 13);
if(ninjutsuPhase > 1) sizeRate = sq_GetIntData(sqrChr, SKILL_THBYKK_SKYROADS, 12 + ninjutsuPhase);
local isBlue = 0;
if(CNSquirrelAppendage.sq_IsAppendAppendage(sqrChr, APDPATH_SWORDOFKUSANAGI_BUFF)) isBlue = 1;
obj.getVar("custom").setInt(7, totalDamage);
obj.getVar("custom").setInt(8, sizeRate);
obj.getVar("custom").setInt(9, isBlue);
local totalDamage = sqrChr.sq_GetBonusRateWithPassive(SKILL_THBYKK_SKYROADS, -1, 1, bonusRate);
obj.getVar("custom").setInt(10, totalDamage);
local totalDamage = sqrChr.sq_GetBonusRateWithPassive(SKILL_THBYKK_SKYROADS, -1, 2, bonusRate);
local totalDamage_exp = sqrChr.sq_GetBonusRateWithPassive(SKILL_THBYKK_SKYROADS, -1, 3, bonusRate);
local sizeRate = sq_GetIntData(sqrChr, SKILL_THBYKK_SKYROADS, 13);
if(ninjutsuPhase > 1) sizeRate = sq_GetIntData(sqrChr, SKILL_THBYKK_SKYROADS, 12 + ninjutsuPhase);
local xPos = sq_GetDistancePos(sq_GetXPos(obj), sq_GetDirection(obj), 225);
local zPos = sq_GetZPos(obj);
local isTalisman = 0;
obj.getVar("custom").setInt(11, totalDamage);
obj.getVar("custom").setInt(12, totalDamage_exp);
obj.getVar("custom").setInt(13, sizeRate);
obj.getVar("custom").setInt(14, xPos);
obj.getVar("custom").setInt(15, zPos);
obj.getVar("custom").setInt(16, isTalisman);
break;
case SKILL_THBYKK_GASOLINEFIRE:
bonusRate = bonusRate.tofloat() / 100.0;
local totalDamage_shockwave = sqrChr.sq_GetBonusRateWithPassive(SKILL_THBYKK_GASOLINEFIRE, -1, 0, bonusRate);
local totalDamage_ball = sqrChr.sq_GetBonusRateWithPassive(SKILL_THBYKK_GASOLINEFIRE, -1, 1, bonusRate);
local totalDamage_ballexp = sqrChr.sq_GetBonusRateWithPassive(SKILL_THBYKK_GASOLINEFIRE, -1, 2, bonusRate);
local totalDamage_disexp = sqrChr.sq_GetBonusRateWithPassive(SKILL_THBYKK_GASOLINEFIRE, -1, 9, bonusRate);
local sizeRate = sq_GetIntData(sqrChr, SKILL_THBYKK_GASOLINEFIRE, 4);
if(ninjutsuPhase > 1) sizeRate = sq_GetIntData(sqrChr, SKILL_THBYKK_GASOLINEFIRE, 3 + ninjutsuPhase);
local sockwaveSizeRate = sq_GetIntData(sqrChr, SKILL_THBYKK_GASOLINEFIRE, 0);
local isTalisman = 0;
obj.getVar("custom").setInt(7, totalDamage_shockwave);
obj.getVar("custom").setInt(8, totalDamage_ball);
obj.getVar("custom").setInt(9, totalDamage_ballexp);
obj.getVar("custom").setInt(10, totalDamage_disexp);
obj.getVar("custom").setInt(11, sizeRate);
obj.getVar("custom").setInt(12, sockwaveSizeRate);
obj.getVar("custom").setInt(13, isTalisman);
break;
case SKILL_THBYKK_FLAMEFLOWER:
bonusRate = bonusRate.tofloat() / 100.0;
local totalDamage = sqrChr.sq_GetBonusRateWithPassive(SKILL_THBYKK_FLAMEFLOWER, -1, 0, bonusRate);
local totalDamage_loop = sqrChr.sq_GetBonusRateWithPassive(SKILL_THBYKK_FLAMEFLOWER, -1, 1, 1.0);
local skillLevel = sq_GetSkillLevel(sqrChr, SKILL_THBYKK_FLAMEFLOWER);
local lifeTime = sq_GetLevelData(sqrChr, SKILL_THBYKK_FLAMEFLOWER, 4, skillLevel) * 100 / speedRate;
local hitTime = sq_GetLevelData(sqrChr, SKILL_THBYKK_FLAMEFLOWER, 2, skillLevel) * 100 / speedRate;
obj.getVar("custom").setInt(7, totalDamage);
obj.getVar("custom").setInt(8, totalDamage_loop);
obj.getVar("custom").setInt(9, lifeTime);
obj.getVar("custom").setInt(10, hitTime);
local totalDamage_exp = sqrChr.sq_GetBonusRateWithPassive(SKILL_THBYKK_FLAMEFLOWER, -1, 5, bonusRate);
local sizeRate = sq_GetIntData(sqrChr, SKILL_THBYKK_FLAMEFLOWER, 13) / 10;
local isBlue = 0;
if(CNSquirrelAppendage.sq_IsAppendAppendage(sqrChr, APDPATH_SWORDOFKUSANAGI_BUFF)) isBlue = 1;
obj.getVar("custom").setInt(11, totalDamage_exp);
obj.getVar("custom").setInt(12, sizeRate);
obj.getVar("custom").setInt(13, isBlue);
break;
case SKILL_THBYKK_DOOMFIELD:
bonusRate = bonusRate.tofloat() / 100.0;
local totalDamage = sqrChr.sq_GetBonusRateWithPassive(SKILL_THBYKK_DOOMFIELD, -1, 0, bonusRate);
local sizeRate = 100;
if(sq_GetSkillLevel(sqrChr, SKILL_THBYKK_DOOMFIELD) >= 9) sizeRate = 120;
local isBlue = 0;
if(CNSquirrelAppendage.sq_IsAppendAppendage(sqrChr, APDPATH_SWORDOFKUSANAGI_BUFF)) isBlue = 1;
obj.getVar("custom").setInt(7, totalDamage);
obj.getVar("custom").setInt(8, sizeRate);
obj.getVar("custom").setInt(9, isBlue);
local totalDamage = sqrChr.sq_GetBonusRateWithPassive(SKILL_THBYKK_DOOMFIELD, -1, 4, bonusRate);
local totalDamage_exp = sqrChr.sq_GetBonusRateWithPassive(SKILL_THBYKK_DOOMFIELD, -1, 1, bonusRate);
obj.getVar("custom").setInt(10, totalDamage);
obj.getVar("custom").setInt(11, totalDamage_exp);
local bonusRateGet = 1.0;
if(sq_GetSkillLevel(sqrChr, SKILL_THBYKK_DOOMFIELD) >= 6) bonusRateGet = 1.1;
local totalDamage = sqrChr.sq_GetBonusRateWithPassive(SKILL_THBYKK_DOOMFIELD, -1, 9, bonusRate * bonusRateGet);
obj.getVar("custom").setInt(12, totalDamage);
local totalDamage = sqrChr.sq_GetBonusRateWithPassive(SKILL_THBYKK_DOOMFIELD, -1, 2, bonusRate);
local totalDamage_exp = sqrChr.sq_GetBonusRateWithPassive(SKILL_THBYKK_DOOMFIELD, -1, 3, bonusRate);
obj.getVar("custom").setInt(13, totalDamage);
obj.getVar("custom").setInt(14, totalDamage_exp);
local skillLevel = sq_GetSkillLevel(sqrChr, SKILL_THBYKK_DOOMFIELD);
obj.getVar("custom").setInt(15, skillLevel);
break;
case SKILL_THBYKK_FUUMASHURIKEN:
bonusRate = bonusRate.tofloat() / 100.0;
local totalDamage = sqrChr.sq_GetBonusRateWithPassive(SKILL_THBYKK_FUUMASHURIKEN, -1, 0, bonusRate);
local hitMax = sq_GetIntData(sqrChr, SKILL_THBYKK_FUUMASHURIKEN, 13);
obj.getVar("custom").setInt(7, totalDamage);
obj.getVar("custom").setInt(8, hitMax);
local totalDamage = sqrChr.sq_GetBonusRateWithPassive(SKILL_THBYKK_FUUMASHURIKEN, -1, 1, bonusRate);
local totalDamage_exp = sqrChr.sq_GetBonusRateWithPassive(SKILL_THBYKK_FUUMASHURIKEN, -1, 2, bonusRate);
local hitMax = sq_GetIntData(sqrChr, SKILL_THBYKK_FUUMASHURIKEN, 20);
local sizeRate = sq_GetIntData(sqrChr, SKILL_THBYKK_FUUMASHURIKEN, 31);
if(ninjutsuPhase <= 3) sizeRate = sizeRate * sq_GetIntData(sqrChr, SKILL_THBYKK_FUUMASHURIKEN, 32) / 100;
else if(ninjutsuPhase > 3) sizeRate = sizeRate * sq_GetIntData(sqrChr, SKILL_THBYKK_FUUMASHURIKEN, 33) / 100;
local sizeRate_shuriken = 100;
local isBlue = 0;
if(CNSquirrelAppendage.sq_IsAppendAppendage(sqrChr, APDPATH_SWORDOFKUSANAGI_BUFF)) isBlue = 1;
obj.getVar("custom").setInt(9, totalDamage);
obj.getVar("custom").setInt(10, totalDamage_exp);
obj.getVar("custom").setInt(11, hitMax);
obj.getVar("custom").setInt(12, sizeRate);
obj.getVar("custom").setInt(13, sizeRate_shuriken);
obj.getVar("custom").setInt(14, isBlue);
local totalDamage_exp = sqrChr.sq_GetBonusRateWithPassive(SKILL_THBYKK_FUUMASHURIKEN, -1, 2, bonusRate);
local sizeRate = sq_GetIntData(sqrChr, SKILL_THBYKK_FUUMASHURIKEN, 31);
local isTalisman = 0;
if(isTalisman > 1){
sizeRate = sizeRate * 130 / 100;
}
obj.getVar("custom").setInt(15, totalDamage_exp);
obj.getVar("custom").setInt(16, sizeRate);
break;
case SKILL_THBYKK_YAMATAOROCHI:
bonusRate = bonusRate.tofloat() / 100.0;
local totalDamage_loop = sqrChr.sq_GetBonusRateWithPassive(SKILL_THBYKK_YAMATAOROCHI, -1, 1, bonusRate);
local lifeTime = sq_GetIntData(sqrChr, SKILL_THBYKK_YAMATAOROCHI, 3)
local sizeRate = 100;
if(ninjutsuPhase > 0){
switch(ninjutsuPhase){
case 4:
case 5:
case 6:
lifeTime = lifeTime * (110) / 100;
break;
}
}
local isTalisman = 0;
if(isTalisman > 0) sizeRate = 120;
obj.getVar("custom").setInt(7, totalDamage_loop);
obj.getVar("custom").setInt(8, lifeTime);
obj.getVar("custom").setInt(9, sizeRate);
obj.getVar("custom").setInt(10, isTalisman);
local totalDamage = sqrChr.sq_GetBonusRateWithPassive(SKILL_THBYKK_YAMATAOROCHI, -1, 0, bonusRate);
local totalDamage_loop = sqrChr.sq_GetBonusRateWithPassive(SKILL_THBYKK_YAMATAOROCHI, -1, 1, bonusRate);
local hitMax = sq_GetIntData(sqrChr, SKILL_THBYKK_YAMATAOROCHI, 1);
local sizeRate = sq_GetIntData(sqrChr, SKILL_THBYKK_YAMATAOROCHI, 15);
obj.getVar("custom").setInt(11, totalDamage);
obj.getVar("custom").setInt(12, totalDamage_loop);
obj.getVar("custom").setInt(13, hitMax);
obj.getVar("custom").setInt(14, sizeRate);
local totalDamage = sqrChr.sq_GetBonusRateWithPassive(SKILL_THBYKK_YAMATAOROCHI, -1, 2, bonusRate);
local skillLevel = sq_GetSkillLevel(sqrChr, SKILL_THBYKK_YAMATAOROCHI);
local lifeTime = sq_GetLevelData(sqrChr, SKILL_THBYKK_YAMATAOROCHI, 3, skillLevel);
if(ninjutsuPhase > 0){
switch(ninjutsuPhase){
case 1:
case 2:
case 3:
local addRate = sq_GetLevelData(sqrChr, SKILL_THBYKK_YAMATAOROCHI, 4, skillLevel);
lifeTime = lifeTime * (100 + addRate) / 100;
break;
case 4:
case 5:
case 6:
local addRate = sq_GetLevelData(sqrChr, SKILL_THBYKK_YAMATAOROCHI, 4, skillLevel);
lifeTime = lifeTime * (100 + addRate) / 100;
break;
}
}
local sizeRate = 100;
local kurv_skillLevel = sq_GetSkillLevel(sqrChr, SKILL_THBYKK_KURVEJADE);
if(kurv_skillLevel > 0) sizeRate = sizeRate + sq_GetLevelData(sqrChr, SKILL_THBYKK_KURVEJADE, 7, kurv_skillLevel) * 60 / 100;
obj.getVar("custom").setInt(15, totalDamage);
obj.getVar("custom").setInt(16, lifeTime);
obj.getVar("custom").setInt(17, sizeRate);
break;
case SKILL_THBYKK_AMATERAS:
bonusRate = bonusRate.tofloat() / 100.0;
local totalDamage = sqrChr.sq_GetBonusRateWithPassive(SKILL_THBYKK_AMATERAS, -1, 0, bonusRate);
local totalDamage_laser = sqrChr.sq_GetBonusRateWithPassive(SKILL_THBYKK_AMATERAS, -1, 1, bonusRate);
local laserMax = sqrChr.sq_GetBonusRateWithPassive(SKILL_THBYKK_AMATERAS, -1, 2, 1.0) + 100;
local skillLevel = sq_GetSkillLevel(sqrChr, SKILL_THBYKK_AMATERAS);
if(ninjutsuPhase > 0){
switch(ninjutsuPhase){
case 1:
case 2:
case 3:
local addRate = sq_GetLevelData(sqrChr, SKILL_THBYKK_YAMATAOROCHI, 6, skillLevel);
totalDamage = totalDamage * (100 + addRate) / 100;
totalDamage_laser = totalDamage_laser * (100 + addRate) / 100;
break;
case 4:
case 5:
case 6:
local addRate = sq_GetLevelData(sqrChr, SKILL_THBYKK_YAMATAOROCHI, 9, skillLevel);
totalDamage = totalDamage * (100 + addRate) / 100;
totalDamage_laser = totalDamage_laser * (100 + addRate) / 100;
break;
}
}
local range = sq_GetIntData(sqrChr, SKILL_THBYKK_AMATERAS, 7);
obj.getVar("custom").setInt(7, totalDamage);
obj.getVar("custom").setInt(8, totalDamage_laser);
obj.getVar("custom").setInt(9, laserMax);
obj.getVar("custom").setInt(10, range);
break;
}
obj.addSetStatePacket(20 + state, null, STATE_PRIORITY_AUTO, false, "");
break;
case SKILL_THBYKK_DEITIESREBIRTH:
switch(subtype){
case 1:
local totalDamage = receiveData.readDword();
local sizeRate = receiveData.readDword();
local speedRate = receiveData.readDword();
obj.getVar("custom").setInt(0, totalDamage);
obj.getVar("custom").setInt(1, sizeRate);
obj.getVar("custom").setInt(2, speedRate);
local aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/deitiesrebirth/avatardashstart_00.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
local currentAni = obj.getCurrentAnimation();
currentAni.setSpeedRate(speedRate.tofloat());
break;
case 2:
local totalDamage = receiveData.readDword();
local sizeRate = receiveData.readDword();
local speedRate = receiveData.readDword();
obj.getVar("custom").setInt(0, totalDamage);
obj.getVar("custom").setInt(1, sizeRate);
obj.getVar("custom").setInt(2, speedRate);
local aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/deitiesrebirth/deitiesrebirthattacka_44.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
totalDamage = totalDamage * 6 / 100;
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 67));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
local currentAni = obj.getCurrentAnimation();
currentAni.setSpeedRate(speedRate.tofloat());
obj.sq_PlaySound("DEITIES_REBIRTH_FIRELOOP");
break;
case 3:
local totalDamage = receiveData.readDword();
local sizeRate = receiveData.readDword();
local speedRate = receiveData.readDword();
obj.getVar("custom").setInt(0, totalDamage);
obj.getVar("custom").setInt(1, sizeRate);
obj.getVar("custom").setInt(2, speedRate);
local aniPath = "passiveobject/6_thief_bykk/kunoichi_bykk/animation/deitiesrebirth/deitiesrebirthattackb_00.ani";
local ani = sq_CreateAnimation("",aniPath);
obj.setCurrentAnimation(ani);
totalDamage = totalDamage * 70 / 100;
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 66));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
local currentAni = obj.getCurrentAnimation();
currentAni.setSpeedRate(speedRate.tofloat());
sq_SetMyShake(obj, 20, 150);
createOnlyDrawObjectEX_Theif_bykk(obj,"passiveobject/6_thief_bykk/kunoichi_bykk/animation/deitiesrebirth/deitiesrebirthattackbbottom_00.ani",true,sq_GetDirection(obj),sq_GetXPos(obj),sq_GetYPos(obj),0,ENUM_DRAWLAYER_BOTTOM,sizeRate,sizeRate);
if(sizeRate > 100){
sizeRate = sizeRate.tofloat() / 100.0;
currentAni.setImageRateFromOriginal(sizeRate, sizeRate);
currentAni.setAutoLayerWorkAnimationAddSizeRate(sizeRate);
sq_SetAttackBoundingBoxSizeRate(currentAni, sizeRate, sizeRate, sizeRate);
}
break;
}
break;
case SKILL_THBYKK_FIREMARK:
switch(subtype){
case 1:
local rangeNear = receiveData.readDword();
local totalDamageNear = receiveData.readDword();
local totalDamageExpNear = receiveData.readDword();
local hitTimeNear = receiveData.readDword();
local lifeTimeNear = receiveData.readDword();
local rangeFar = receiveData.readDword();
local totalDamageFar = receiveData.readDword();
local totalDamageExpFar = receiveData.readDword();
local hitTimeFar = receiveData.readDword();
local lifeTimeFar = receiveData.readDword();
obj.getVar("custom").setInt(0, rangeNear);
obj.getVar("custom").setInt(1, totalDamageNear);
obj.getVar("custom").setInt(2, totalDamageExpNear);
obj.getVar("custom").setInt(3, hitTimeNear);
obj.getVar("custom").setInt(4, lifeTimeNear);
obj.getVar("custom").setInt(5, rangeFar);
obj.getVar("custom").setInt(6, totalDamageFar);
obj.getVar("custom").setInt(7, totalDamageExpFar);
obj.getVar("custom").setInt(8, hitTimeFar);
obj.getVar("custom").setInt(9, lifeTimeFar);
local currentAni = obj.getCurrentAnimation();
sq_AddAttackBox(currentAni, -rangeFar, -rangeFar / 2, -20, rangeFar * 2, rangeFar * 2, 320);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 130));
sq_SetCurrentAttackeDamageAct(sq_GetCurrentAttackInfo(obj), 0);
sq_SetCurrentDirection(obj, ENUM_DIRECTION_RIGHT);
obj.setTimeEvent(1, 100, 1, false);
break;
case 2:
case 3:
local totalDamage = receiveData.readDword();
local totalDamage_exp = receiveData.readDword();
local hitTime = receiveData.readDword();
local lifeTime = receiveData.readDword();
local group = receiveData.readDword();
local uniqueId = receiveData.readDword();
local targetObj = sq_GetObject(obj, group, uniqueId);
if(targetObj && targetObj.getState() != STATE_DIE){
obj.getVar("tar").clear_obj_vector();
obj.getVar("tar").push_obj_vector(targetObj);
sq_moveWithParent(targetObj, obj);
obj.getVar("custom").setInt(1, totalDamage);
obj.getVar("custom").setInt(2, totalDamage_exp);
obj.getVar("custom").setInt(3, hitTime);
obj.getVar("custom").setInt(4, lifeTime);
obj.addSetStatePacket(20, null, STATE_PRIORITY_AUTO, false, "");
}
break;
}
break;
case 255:
switch(subtype){
case 1:
local group = receiveData.readDword();
local uniqueId = receiveData.readDword();
local time = receiveData.readDword();
local damage = receiveData.readDword();
local targetObj = sq_GetObject(obj, group, uniqueId);
if(targetObj && targetObj.getState() != STATE_DIE){
local activeObj = sq_GetCNRDObjectToActiveObject(targetObj);
activeObj.getVar("markofFlameObj").clear_obj_vector();
activeObj.getVar("markofFlameObj").push_obj_vector(obj);
obj.getVar("tar").clear_obj_vector();
obj.getVar("tar").push_obj_vector(activeObj);
sq_moveWithParent(activeObj, obj);
obj.getVar("custom").setInt(0, group);
obj.getVar("custom").setInt(1, uniqueId);
local count = time / 500;
obj.getVar("custom").setInt(2, count);
obj.getVar("time").setInt(0, time);
obj.getVar("damage").setInt(0, damage);
obj.getVar("damage").setInt(1, damage);
if(damage > 0){
obj.setTimeEvent(1, 500, count, false);
}
}
break;
case 2:
local group = receiveData.readDword();
local uniqueId = receiveData.readDword();
local totalDamage = receiveData.readDword();
local targetObj = sq_GetObject(obj, group, uniqueId);
if(targetObj && targetObj.getState() != STATE_DIE){
obj.getVar("tar").clear_obj_vector();
obj.getVar("tar").push_obj_vector(targetObj);
sq_moveWithParent(targetObj, obj);
local ani = sq_CreateAnimation("","common/commoneffect/animation/decreaseeffect/reactionburn_00.ani");
obj.setCurrentAnimation(ani);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 131));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
obj.setTimeEvent(2, 250, 1, false);
}
break;//
}
break;
}
break;
case 4:
break;
}
}