2388 lines
106 KiB
C
2388 lines
106 KiB
C
|
||
function setState_po_atswordman_bykk_kak(obj, state, datas)
|
||
{
|
||
if(!obj) return;
|
||
|
||
local sqrChr = sq_GetCNRDObjectToSQRCharacter(obj.getTopCharacter());
|
||
local job = obj.getVar("job").getInt(0);
|
||
local skillIndex = obj.getVar("skillIndex").getInt(0);
|
||
local subtype = obj.getVar("subtype").getInt(0);
|
||
obj.getVar("state").setInt(0,state);
|
||
|
||
switch(job){
|
||
case 0:
|
||
switch(skillIndex){
|
||
case 34:
|
||
switch(state){
|
||
case 20:
|
||
local aniPath = "passiveobject/atswordman_bykk/common/atexecution/start_md.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 190));
|
||
local currentAni = obj.getCurrentAnimation();
|
||
currentAni.addLayerAnimation(-1,sq_CreateAnimation("","passiveobject/atswordman_bykk/common/atexecution/haze_create_haze2.ani"),true);
|
||
break;
|
||
case 21:
|
||
local aniPath = "passiveobject/atswordman_bykk/common/atexecution/loop_md.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
local currentAni = obj.getCurrentAnimation();
|
||
currentAni.addLayerAnimation(-1,sq_CreateAnimation("","passiveobject/atswordman_bykk/common/atexecution/haze_loop_haze2.ani"),true);
|
||
break;
|
||
case 22:
|
||
local aniPath = "passiveobject/atswordman_bykk/common/atexecution/end_md.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
local currentAni = obj.getCurrentAnimation();
|
||
currentAni.addLayerAnimation(-1,sq_CreateAnimation("","passiveobject/atswordman_bykk/common/atexecution/haze_destroy_haze2.ani"),true);
|
||
break;
|
||
}
|
||
break;
|
||
}
|
||
break;
|
||
case 1:
|
||
switch(skillIndex){
|
||
case SKILL_SWORDMASTER_BYKK_ATFLASH://瞬影三絕斬
|
||
break;
|
||
case SKILL_SWORDMASTER_BYKK_BLADESOUL://斬魂術
|
||
break;
|
||
case SKILL_SWORDMASTER_BYKK_BREAKSWORDDANCE://極 · 馭劍術 (破劍陣)
|
||
switch(subtype){
|
||
case 1:
|
||
switch(state){
|
||
case 20:
|
||
case 21:
|
||
local aniPath = "passiveobject/atswordman_bykk/swordmaster/animation/atbreaksworddance/atbreaksworddance_magic_circle_3.ani";
|
||
if(state == 21) aniPath = "passiveobject/atswordman_bykk/swordmaster/animation/atbreaksworddance/atbreaksworddance_magic_circle_end_1.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
break;
|
||
}
|
||
break;
|
||
case 2:
|
||
switch(state){
|
||
case 20:
|
||
case 21:
|
||
local sub = obj.getVar("custom").getInt(10);
|
||
local aniPath = "passiveobject/atswordman_bykk/swordmaster/animation/atbreaksworddance/atbreaksworddance_casting_sword"+sub.tostring()+"_4.ani";
|
||
if(state == 21) aniPath = "passiveobject/atswordman_bykk/swordmaster/animation/atbreaksworddance/atbreaksworddance_disappear.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
local currentAni = obj.getCurrentAnimation();
|
||
if(state == 20) currentAni.addLayerAnimation(-1,sq_CreateAnimation("","passiveobject/atswordman_bykk/swordmaster/animation/atbreaksworddance/atbreaksworddance_bottom_2.ani"),true);
|
||
else currentAni.addLayerAnimation(-1,sq_CreateAnimation("","passiveobject/atswordman_bykk/swordmaster/animation/atbreaksworddance/atbreaksworddance_disappear_2.ani"),true);
|
||
break;
|
||
}
|
||
break;
|
||
}
|
||
break;
|
||
case SKILL_SWORDMASTER_BYKK_CHANGESWORD://魔劍降臨
|
||
switch(subtype){
|
||
case 0:
|
||
local aniPath = "passiveobject/atswordman_bykk/swordmaster/animation/atelementaleffect/thunder_dodge.ani";//
|
||
switch(state){
|
||
case 100: aniPath = "passiveobject/atswordman_bykk/swordmaster/animation/atelementalsword/fire/fireswordstart_01.ani";obj.getVar("custom").setInt(10, 0); break;
|
||
case 110: aniPath = "passiveobject/atswordman_bykk/swordmaster/animation/atelementalsword/fire/fireswordloop_01.ani";obj.getVar("custom").setInt(10, 0); break;
|
||
case 101: aniPath = "passiveobject/atswordman_bykk/swordmaster/animation/atelementalsword/ice/iceswordstart_01.ani";obj.getVar("custom").setInt(10, 1); break;
|
||
case 111: aniPath = "passiveobject/atswordman_bykk/swordmaster/animation/atelementalsword/ice/iceswordloop_01.ani";obj.getVar("custom").setInt(10, 1); break;
|
||
case 102: aniPath = "passiveobject/atswordman_bykk/swordmaster/animation/atelementalsword/dark/darkswordstart_01.ani";obj.getVar("custom").setInt(10, 2); break;
|
||
case 112: aniPath = "passiveobject/atswordman_bykk/swordmaster/animation/atelementalsword/dark/darkswordloop_01.ani";obj.getVar("custom").setInt(10, 2); break;
|
||
case 103: aniPath = "passiveobject/atswordman_bykk/swordmaster/animation/atelementalsword/light/lightswordstart_01.ani";obj.getVar("custom").setInt(10, 3); break;
|
||
case 113: aniPath = "passiveobject/atswordman_bykk/swordmaster/animation/atelementalsword/light/lightswordloop_01.ani";obj.getVar("custom").setInt(10, 3); break;
|
||
}
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
if(state == 110 || state == 111 || state == 112 || state == 113){
|
||
if(!obj.isExistTimeEvent(10)) obj.setTimeEvent(10, 15, -1, true);
|
||
}
|
||
break;
|
||
}
|
||
break;
|
||
case SKILL_SWORDMASTER_BYKK_DEVILSLASH://惡即斬
|
||
break;
|
||
case SKILL_SWORDMASTER_BYKK_DRAGONUPEX://裂刃天衝
|
||
switch(subtype){
|
||
case 1:
|
||
switch(state){
|
||
case 20:
|
||
local aniPath = "passiveobject/atswordman_bykk/swordmaster/animation/atdragonup/newdragonup/up_4sword.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
local currentAni = obj.getCurrentAnimation();
|
||
local delay = currentAni.getDelaySum(0, 6);
|
||
obj.setTimeEvent(1, delay, 1, false);
|
||
break;
|
||
case 21:
|
||
local aniPath = "passiveobject/atswordman_bykk/swordmaster/animation/atdragonup/newdragonup/blast_blast_normal.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
sq_SetShake(obj, 16, 200);
|
||
local totalDamage = obj.getVar("custom").getInt(12);
|
||
local sizeRate = obj.getVar("custom").getInt(13);
|
||
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 118));
|
||
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);
|
||
break;
|
||
}
|
||
break;
|
||
case 3:
|
||
local aniPath = "passiveobject/atswordman_bykk/swordmaster/animation/atdragonup/casting_start_sword_0.ani";
|
||
switch(state){
|
||
case 21: aniPath = "passiveobject/atswordman_bykk/swordmaster/animation/atdragonup/casting_start_sword_1.ani"; break;
|
||
case 22: aniPath = "passiveobject/atswordman_bykk/swordmaster/animation/atdragonup/casting_start_sword_2.ani"; break;
|
||
case 23: aniPath = "passiveobject/atswordman_bykk/swordmaster/animation/atdragonup/casting_start_sword_disapear.ani"; break;
|
||
}
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
break;
|
||
}
|
||
break;
|
||
case SKILL_SWORDMASTER_BYKK_EXCALIBUR://雷鳴千軍破
|
||
switch(subtype){
|
||
case 1:
|
||
switch(state){
|
||
case 20:
|
||
local aniPath = "passiveobject/atswordman_bykk/swordmaster/animation/atexcalibur/sword_start_dust1.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
local element = obj.getVar("custom").getInt(11);
|
||
local currentAni = obj.getCurrentAnimation();
|
||
switch(element){
|
||
case 0: currentAni.addLayerAnimation(-1, sq_CreateAnimation("","passiveobject/atswordman_bykk/swordmaster/animation/atexcalibur/excalibur_sword_start_fire_fire_glow.ani"),true); break;
|
||
case 1: currentAni.addLayerAnimation(-1, sq_CreateAnimation("","passiveobject/atswordman_bykk/swordmaster/animation/atexcalibur/excalibur_sword_start_ice_ice_glow.ani"),true); break;
|
||
case 2: currentAni.addLayerAnimation(-1, sq_CreateAnimation("","passiveobject/atswordman_bykk/swordmaster/animation/atexcalibur/excalibur_sword_start_dark_dark_glow.ani"),true); break;
|
||
case 3: currentAni.addLayerAnimation(-1, sq_CreateAnimation("","passiveobject/atswordman_bykk/swordmaster/animation/atexcalibur/excalibur_sword_start_light_light_glow.ani"),true); break;
|
||
case 4: currentAni.addLayerAnimation(-1, sq_CreateAnimation("","passiveobject/atswordman_bykk/swordmaster/animation/atexcalibur/excalibur_sword_start_mu_mu_glow.ani"),true); break;
|
||
}
|
||
local totalDamage = obj.getVar("custom").getInt(13);
|
||
local sub = obj.getVar("custom").getInt(14);
|
||
local sizeRate = obj.getVar("custom").getInt(15);
|
||
cearteSkillPassiveObj_AtSwordMan_bykk(sqrChr,obj,PASSIVEOBJECT_BYKK_SWORDMASTER,0,0,0,obj.getDirection(),1,SKILL_SWORDMASTER_BYKK_EXCALIBUR,2,totalDamage,sub,sizeRate,0,0,0,0,0,1);
|
||
break;
|
||
case 21:
|
||
local aniPath = "passiveobject/atswordman_bykk/swordmaster/animation/atexcalibur/excalibur_sword_loop_saberglowa.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
local element = obj.getVar("custom").getInt(11);
|
||
local currentAni = obj.getCurrentAnimation();
|
||
switch(element){
|
||
case 0: currentAni.addLayerAnimation(-1, sq_CreateAnimation("","passiveobject/atswordman_bykk/swordmaster/animation/atexcalibur/excalibur_sword_loop_fire_fire_glow.ani"),true); break;
|
||
case 1: currentAni.addLayerAnimation(-1, sq_CreateAnimation("","passiveobject/atswordman_bykk/swordmaster/animation/atexcalibur/excalibur_sword_loop_ice_ice_glow.ani"),true); break;
|
||
case 2: currentAni.addLayerAnimation(-1, sq_CreateAnimation("","passiveobject/atswordman_bykk/swordmaster/animation/atexcalibur/excalibur_sword_loop_dark_dark_glow.ani"),true); break;
|
||
case 3: currentAni.addLayerAnimation(-1, sq_CreateAnimation("","passiveobject/atswordman_bykk/swordmaster/animation/atexcalibur/excalibur_sword_loop_light_light_glow.ani"),true); break;
|
||
case 4: currentAni.addLayerAnimation(-1, sq_CreateAnimation("","passiveobject/atswordman_bykk/swordmaster/animation/atexcalibur/excalibur_sword_loop_mu_mu_glow.ani"),true); break;
|
||
}
|
||
obj.setTimeEvent(1, obj.getVar("custom").getInt(12), 1, false);
|
||
break;
|
||
case 22:
|
||
local aniPath = "passiveobject/atswordman_bykk/swordmaster/animation/atexcalibur/excalibur_sword_exp_attack.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
local element = obj.getVar("custom").getInt(11);
|
||
local currentAni = obj.getCurrentAnimation();
|
||
switch(element){
|
||
case 0: currentAni.addLayerAnimation(-1, sq_CreateAnimation("","passiveobject/atswordman_bykk/swordmaster/animation/atexcalibur/excalibur_sword_end_bottom_normal.ani"),true); currentAni.addLayerAnimation(1, sq_CreateAnimation("","passiveobject/atswordman_bykk/swordmaster/animation/atexcalibur/excalibur_sword_end_fire_ex_saberboom_fire.ani"),true); break;
|
||
case 1: currentAni.addLayerAnimation(-1, sq_CreateAnimation("","passiveobject/atswordman_bykk/swordmaster/animation/atexcalibur/excalibur_sword_end_bottom_normal.ani"),true); currentAni.addLayerAnimation(1, sq_CreateAnimation("","passiveobject/atswordman_bykk/swordmaster/animation/atexcalibur/excalibur_sword_end_ice_ex_saberboom_ice.ani"),true); break;
|
||
case 2: currentAni.addLayerAnimation(-1, sq_CreateAnimation("","passiveobject/atswordman_bykk/swordmaster/animation/atexcalibur/excalibur_sword_end_bottom_normal.ani"),true); currentAni.addLayerAnimation(1, sq_CreateAnimation("","passiveobject/atswordman_bykk/swordmaster/animation/atexcalibur/excalibur_sword_end_dark_ex_saberboom_dark.ani"),true); break;
|
||
case 3: currentAni.addLayerAnimation(-1, sq_CreateAnimation("","passiveobject/atswordman_bykk/swordmaster/animation/atexcalibur/excalibur_sword_end_bottom_normal.ani"),true); currentAni.addLayerAnimation(1, sq_CreateAnimation("","passiveobject/atswordman_bykk/swordmaster/animation/atexcalibur/excalibur_sword_end_light_ex_saberboom_light.ani"),true); break;
|
||
case 4: currentAni.addLayerAnimation(-1, sq_CreateAnimation("","passiveobject/atswordman_bykk/swordmaster/animation/atexcalibur/excalibur_sword_end_bottom_normal.ani"),true); currentAni.addLayerAnimation(1, sq_CreateAnimation("","passiveobject/atswordman_bykk/swordmaster/animation/atexcalibur/excalibur_sword_end_mu_ex_saberboom_mu.ani"),true); break;
|
||
}
|
||
local totalDamage = obj.getVar("custom").getInt(10);
|
||
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 119));
|
||
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
|
||
local currentAni = obj.getCurrentAnimation();
|
||
local delay = currentAni.getDelaySum(false);
|
||
sq_SetMyShake(obj, 4, delay);
|
||
local sizeRate = 1.5;
|
||
currentAni.setImageRateFromOriginal(sizeRate, sizeRate);
|
||
currentAni.setAutoLayerWorkAnimationAddSizeRate(sizeRate);
|
||
sq_SetAttackBoundingBoxSizeRate(currentAni, sizeRate, sizeRate, sizeRate);
|
||
break;
|
||
}
|
||
break;
|
||
}
|
||
break;
|
||
case SKILL_SWORDMASTER_BYKK_FUSIONBLADE://極詣 · 馭劍術 : 聚魔劍
|
||
switch(subtype){
|
||
case 3:
|
||
local element = obj.getVar("custom").getInt(10);
|
||
local aniSet = [["passiveobject/atswordman_bykk/swordmaster/animation/atfusionblade/atfusionbladesummonfirestart_00.ani",
|
||
"passiveobject/atswordman_bykk/swordmaster/animation/atfusionblade/atfusionbladesummonicestart_00.ani",
|
||
"passiveobject/atswordman_bykk/swordmaster/animation/atfusionblade/atfusionbladesummondarkstart_00.ani",
|
||
"passiveobject/atswordman_bykk/swordmaster/animation/atfusionblade/atfusionbladesummonlightningstart_00.ani"],
|
||
["passiveobject/atswordman_bykk/swordmaster/animation/atfusionblade/atfusionbladesummonfireloop_00.ani",
|
||
"passiveobject/atswordman_bykk/swordmaster/animation/atfusionblade/atfusionbladesummoniceloop_00.ani",
|
||
"passiveobject/atswordman_bykk/swordmaster/animation/atfusionblade/atfusionbladesummondarkloop_00.ani",
|
||
"passiveobject/atswordman_bykk/swordmaster/animation/atfusionblade/atfusionbladesummonlightningloop_00.ani"],
|
||
["passiveobject/atswordman_bykk/swordmaster/animation/atfusionblade/atfusionbladesummonfireend_00.ani",
|
||
"passiveobject/atswordman_bykk/swordmaster/animation/atfusionblade/atfusionbladesummoniceend_00.ani",
|
||
"passiveobject/atswordman_bykk/swordmaster/animation/atfusionblade/atfusionbladesummondarkend_00.ani",
|
||
"passiveobject/atswordman_bykk/swordmaster/animation/atfusionblade/atfusionbladesummonlightningend_00.ani"]];
|
||
local ani = sq_CreateAnimation("",aniSet[state - 20][element]);
|
||
obj.setCurrentAnimation(ani);
|
||
if(state == 20) obj.setTimeEvent(1, obj.getVar("custom").getInt(11), 1, false);
|
||
else if(state == 22){
|
||
local totalDamage = obj.getVar("custom").getInt(13);
|
||
cearteSkillPassiveObj_AtSwordMan_bykk(sqrChr,obj,PASSIVEOBJECT_BYKK_SWORDMASTER,0,0,75,obj.getDirection(),1,SKILL_SWORDMASTER_BYKK_FUSIONBLADE,2,totalDamage,0,0,0,0,0,0,0,1);
|
||
}
|
||
break;
|
||
}
|
||
break;
|
||
case SKILL_SWORDMASTER_BYKK_HALFMOON://破軍旋舞斬
|
||
break;
|
||
case SKILL_SWORDMASTER_BYKK_ILLUSIONBLADE://幻劍術
|
||
switch(subtype){
|
||
case 1:
|
||
local aniPath = "";
|
||
switch(state){
|
||
case 20: aniPath = "passiveobject/atswordman_bykk/swordmaster/animation/atillusionblade/illusion_move1.ani"; break;
|
||
case 21: aniPath = "passiveobject/atswordman_bykk/swordmaster/animation/atillusionblade/illusion_attack1.ani"; break;
|
||
case 22: aniPath = "passiveobject/atswordman_bykk/swordmaster/animation/atillusionblade/illusion_attack2.ani"; break;
|
||
case 23: aniPath = "passiveobject/atswordman_bykk/swordmaster/animation/atillusionblade/illusion_attack3.ani"; break;
|
||
}
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
if(state > 20){
|
||
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, state + 104));
|
||
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), obj.getVar("custom").getInt(10));
|
||
}
|
||
else obj.setTimeEvent(1, 10, 35, true);
|
||
local speedRate = obj.getVar("custom").getInt(15);
|
||
local currentAni = obj.getCurrentAnimation();
|
||
currentAni.setSpeedRate(speedRate.tofloat());
|
||
break;
|
||
case 2:
|
||
local aniPath = "passiveobject/atswordman_bykk/swordmaster/animation/atillusionblade/illusion_move1.ani";
|
||
if(state == 21) aniPath = "passiveobject/atswordman_bykk/swordmaster/animation/atillusionblade/illusion_attack3.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
if(state == 21){
|
||
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 127));
|
||
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), obj.getVar("custom").getInt(10));
|
||
}
|
||
else obj.setTimeEvent(1, 10, 35, true);
|
||
local speedRate = obj.getVar("custom").getInt(17);
|
||
local currentAni = obj.getCurrentAnimation();
|
||
currentAni.setSpeedRate(speedRate.tofloat());
|
||
break;
|
||
}
|
||
break;
|
||
case SKILL_SWORDMASTER_BYKK_JACKCATCH://極 · 馭劍術 (幻劍陣)
|
||
switch(subtype){
|
||
case 1:
|
||
case 4:
|
||
local aniPath = "passiveobject/atswordman_bykk/swordmaster/animation/atjackcatch/circle_start_circle1.ani";
|
||
switch(state){
|
||
case 21: aniPath = "passiveobject/atswordman_bykk/swordmaster/animation/atjackcatch/circle_loop_circle2.ani"; break;
|
||
case 22: aniPath = "passiveobject/atswordman_bykk/swordmaster/animation/atjackcatch/circle_end_circle2.ani"; break;
|
||
}
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
if(subtype == 4 && state == 21){
|
||
obj.setTimeEvent(1, obj.getVar("custom").getInt(10), 1, false);
|
||
}
|
||
if(state == 22) obj.stopTimeEvent(4);
|
||
if(subtype == 1 && state == 20){
|
||
local pAni = obj.getCurrentAnimation();
|
||
local speedRate = obj.getVar("custom").getInt(11);
|
||
pAni.setSpeedRate(speedRate.tofloat());
|
||
}
|
||
break;
|
||
case 2:
|
||
local aniPath1 = "passiveobject/atswordman_bykk/swordmaster/animation/atjackcatch/";//
|
||
local aniPath2 = [["firesword_start_fire_appear_8.ani",
|
||
"icesword_start_ice_appear_8.ani",
|
||
"darksword_start_dark_appear_8.ani",
|
||
"lightsword_start_light_appear_8.ani"],
|
||
["circleglow_loop_circle_fire.ani",
|
||
"circleglow_loop_circle_ice.ani",
|
||
"circleglow_loop_circle_dark.ani",
|
||
"circleglow_loop_circle_light.ani"],
|
||
["circleglow_end_circle_fire.ani",
|
||
"circleglow_end_circle_ice.ani",
|
||
"circleglow_end_circle_dark.ani",
|
||
"circleglow_end_circle_light.ani"]]
|
||
local element = obj.getVar("custom").getInt(10);
|
||
local aniPath = aniPath1 + aniPath2[state - 20][element];
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
if(state == 21){
|
||
local currentAni = obj.getCurrentAnimation();
|
||
currentAni.setLoop(true);
|
||
local aniPath = ["passiveobject/atswordman_bykk/swordmaster/animation/atjackcatch/firesword_fire_sword_3.ani","passiveobject/atswordman_bykk/swordmaster/animation/atjackcatch/icesword_ice_sword3.ani","passiveobject/atswordman_bykk/swordmaster/animation/atjackcatch/darksword_dark_sword3.ani","passiveobject/atswordman_bykk/swordmaster/animation/atjackcatch/lightsword_light_sword3.ani"];
|
||
currentAni.addLayerAnimation(1,sq_CreateAnimation("",aniPath[element]),true);
|
||
}
|
||
else if(state == 22){
|
||
local currentAni = obj.getCurrentAnimation();
|
||
local aniPath = ["passiveobject/atswordman_bykk/swordmaster/animation/atjackcatch/firesword_end_fire_sword_3.ani","passiveobject/atswordman_bykk/swordmaster/animation/atjackcatch/icesword_end_ice_sword3.ani","passiveobject/atswordman_bykk/swordmaster/animation/atjackcatch/darksword_end_dark_sword3.ani","passiveobject/atswordman_bykk/swordmaster/animation/atjackcatch/lightsword_end_light_sword3.ani"];
|
||
currentAni.addLayerAnimation(1,sq_CreateAnimation("",aniPath[element]),true);
|
||
}
|
||
else if(state == 20){
|
||
local pAni = obj.getCurrentAnimation();
|
||
local speedRate = obj.getVar("custom").getInt(11);
|
||
pAni.setSpeedRate(speedRate.tofloat());
|
||
}
|
||
break;
|
||
case 5:
|
||
local aniPath = [["passiveobject/atswordman_bykk/swordmaster/animation/atjackcatch/firesword_start_fire_appear_8.ani",
|
||
"passiveobject/atswordman_bykk/swordmaster/animation/atjackcatch/icesword_start_ice_appear_8.ani",
|
||
"passiveobject/atswordman_bykk/swordmaster/animation/atjackcatch/darksword_start_dark_appear_8.ani",
|
||
"passiveobject/atswordman_bykk/swordmaster/animation/atjackcatch/lightsword_start_light_appear_8.ani"],
|
||
["passiveobject/atswordman_bykk/swordmaster/animation/atjackcatch/new_atjackcatch/fire/magicswordshot_shoot_loop_fire.ani",
|
||
"passiveobject/atswordman_bykk/swordmaster/animation/atjackcatch/new_atjackcatch/ice/magicswordshot_shoot_loop_frozen.ani",
|
||
"passiveobject/atswordman_bykk/swordmaster/animation/atjackcatch/new_atjackcatch/dark/magicswordshot_shoot_loop_shadow.ani",
|
||
"passiveobject/atswordman_bykk/swordmaster/animation/atjackcatch/new_atjackcatch/light/magicswordshot_shoot_loop_light.ani"],
|
||
["passiveobject/atswordman_bykk/swordmaster/animation/atjackcatch/new_atjackcatch/fire/magicswordshot_explosion_fire.ani",
|
||
"passiveobject/atswordman_bykk/swordmaster/animation/atjackcatch/new_atjackcatch/ice/magicswordshot_explosion_frozen.ani",
|
||
"passiveobject/atswordman_bykk/swordmaster/animation/atjackcatch/new_atjackcatch/dark/magicswordshot_explosion_shadow.ani",
|
||
"passiveobject/atswordman_bykk/swordmaster/animation/atjackcatch/new_atjackcatch/light/magicswordshot_explosion_light.ani"]];
|
||
local element = obj.getVar("custom").getInt(11);
|
||
local ani = sq_CreateAnimation("",aniPath[state - 20][element]);
|
||
obj.setCurrentAnimation(ani);
|
||
local delay = [1300,1600,1900,1000];
|
||
switch(state){
|
||
case 20:
|
||
obj.setTimeEvent(2, delay[element], 1, false);
|
||
local effPath = ["passiveobject/atswordman_bykk/swordmaster/animation/atjackcatch/firesword_fire_sword_3.ani",
|
||
"passiveobject/atswordman_bykk/swordmaster/animation/atjackcatch/icesword_ice_sword3.ani",
|
||
"passiveobject/atswordman_bykk/swordmaster/animation/atjackcatch/darksword_dark_sword3.ani",
|
||
"passiveobject/atswordman_bykk/swordmaster/animation/atjackcatch/lightsword_light_sword3.ani"];
|
||
local currentAni = obj.getCurrentAnimation();
|
||
currentAni.addLayerAnimation(1,sq_CreateAnimation("",effPath[element]),true);
|
||
break;
|
||
case 21:
|
||
obj.setTimeEvent(3, 5, 20, false);
|
||
obj.getVar("custom").setInt(14, sq_GetXPos(obj));
|
||
obj.getVar("custom").setInt(15, sq_GetYPos(obj));
|
||
switch(element){
|
||
case 0: sq_SetCustomRotate(obj, sq_ToRadian(90.0)); break;
|
||
case 1: sq_SetCustomRotate(obj, sq_ToRadian(180.0)); break;
|
||
case 3: sq_SetCustomRotate(obj, sq_ToRadian(270.0)); break;
|
||
}
|
||
break;
|
||
case 22:
|
||
local totalDamage = obj.getVar("custom").getInt(10);
|
||
local atkIndex = [131,132,130,133];
|
||
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, atkIndex[element]));
|
||
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
|
||
local currentAni = obj.getCurrentAnimation();
|
||
local sizeRate = 1.3;
|
||
currentAni.setImageRateFromOriginal(sizeRate, sizeRate);
|
||
currentAni.setAutoLayerWorkAnimationAddSizeRate(sizeRate);
|
||
sq_SetAttackBoundingBoxSizeRate(currentAni, sizeRate, sizeRate, sizeRate);
|
||
break;
|
||
}
|
||
break;
|
||
}
|
||
break;
|
||
case SKILL_SWORDMASTER_BYKK_LAEVATEINN://誓約之劍 : 雷沃汀
|
||
break;
|
||
case SKILL_SWORDMASTER_BYKK_MAGICSWORDSHOOT://颶風魔劍
|
||
switch(subtype){
|
||
case 1:
|
||
local element = obj.getVar("custom").getInt(11);
|
||
local aniPath = [["passiveobject/atswordman_bykk/swordmaster/animation/atmagicswordshoot/fire/magicswordshot_shoot_loop_fire.ani","passiveobject/atswordman_bykk/swordmaster/animation/atmagicswordshoot/ice/magicswordshot_shoot_loop_frozen.ani","passiveobject/atswordman_bykk/swordmaster/animation/atmagicswordshoot/dark/magicswordshot_shoot_loop_shadow.ani","passiveobject/atswordman_bykk/swordmaster/animation/atmagicswordshoot/light/magicswordshot_shoot_loop_light.ani"],["passiveobject/atswordman_bykk/swordmaster/animation/atmagicswordshoot/fire/magicswordshot_explosion_fire.ani","passiveobject/atswordman_bykk/swordmaster/animation/atmagicswordshoot/ice/magicswordshot_explosion_frozen.ani","passiveobject/atswordman_bykk/swordmaster/animation/atmagicswordshoot/dark/magicswordshot_explosion_shadow.ani","passiveobject/atswordman_bykk/swordmaster/animation/atmagicswordshoot/light/magicswordshot_explosion_light.ani"]];
|
||
local atkIndex = [[136,138,134,140],[137,139,135,141]];
|
||
local bonus = [10,12];
|
||
local ani = sq_CreateAnimation("",aniPath[state - 20][element]);
|
||
obj.setCurrentAnimation(ani);
|
||
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, atkIndex[state - 20][element]));
|
||
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), obj.getVar("custom").getInt(bonus[state - 20]));
|
||
if(state == 21){
|
||
if(obj.getVar("move").getBool(0)) obj.sq_RemoveMoveParticle();
|
||
}
|
||
break;
|
||
}
|
||
break;
|
||
case SKILL_SWORDMASTER_BYKK_MAGICSWORDUP://魔劍奧義
|
||
switch(subtype){
|
||
case 1:
|
||
switch(state){
|
||
case 20:
|
||
local aniPath = "passiveobject/atswordman_bykk/swordmaster/animation/atmagicswordup/p_ice_lance_00.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
local pAni = obj.getCurrentAnimation();
|
||
pAni.setSpeedRate(300.0);
|
||
break;
|
||
case 21:
|
||
local aniPath = "passiveobject/atswordman_bykk/swordmaster/animation/atmagicswordup/p_ice_lance_end_01.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
break;
|
||
}
|
||
break;
|
||
case 3:
|
||
switch(state){
|
||
case 20:
|
||
local aniPath = "passiveobject/atswordman_bykk/swordmaster/animation/atmagicswordup/p_light_on_01.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
break;
|
||
case 21:
|
||
local aniPath = "passiveobject/atswordman_bykk/swordmaster/animation/atmagicswordup/p_light_expl.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
break;
|
||
}
|
||
break;
|
||
}
|
||
break;
|
||
case SKILL_SWORDMASTER_BYKK_THUNDERSLASH://穿雲破空劍
|
||
break;
|
||
case SKILL_SWORDMASTER_BYKK_TIMESLASH://極 · 馭劍術 (時空斬)
|
||
switch(subtype){
|
||
case 1:
|
||
switch(state){
|
||
case 20:
|
||
case 21:
|
||
local aniPath = "passiveobject/atswordman_bykk/swordmaster/animation/attimeslash/start_timeslash_ground.ani";
|
||
if(state == 21) aniPath = "passiveobject/atswordman_bykk/swordmaster/animation/attimeslash/slash_timeslash_ground.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
break;
|
||
}
|
||
break;
|
||
}
|
||
break;
|
||
case SKILL_SWORDMASTER_BYKK_UPPERSLASH://升龍劍
|
||
break;
|
||
case SKILL_SWORDMASTER_BYKK_WEAPONCOMBO://帝國劍術
|
||
break;
|
||
}
|
||
break;
|
||
case 2:
|
||
switch(skillIndex){
|
||
case SKILL_DEMONSLAYER_BLOODDANCE://血飲狂舞
|
||
break;
|
||
case SKILL_DEMONSLAYER_BLOODDEMONSWORD://汲血魔劍
|
||
break;
|
||
case SKILL_DEMONSLAYER_BLOODOCTOPUSSWORD://蛇舞血輪劍
|
||
break;
|
||
case SKILL_DEMONSLAYER_BLOODSEAL://喚魔 : 封之印
|
||
switch(subtype){
|
||
case 2:
|
||
local aniPath = "passiveobject/atswordman_bykk/demonslayer/animation/atbloodseal/bloodseal_deb_b_00.ani";
|
||
switch(state){
|
||
case 20:
|
||
obj.setTimeEvent(4, obj.getVar("custom").getInt(10), 1, false);
|
||
obj.setTimeEvent(5, obj.getVar("custom").getInt(13), 1, false);
|
||
obj.setTimeEvent(6, obj.getVar("custom").getInt(20), -1, false);
|
||
break;
|
||
case 21:
|
||
obj.removeAllTimeEvent();
|
||
aniPath = "passiveobject/atswordman_bykk/demonslayer/animation/atbloodseal/blood_finish_12.ani";
|
||
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 67));
|
||
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), obj.getVar("custom").getInt(12));
|
||
break;
|
||
}
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
if(state == 20){
|
||
local currentAni = obj.getCurrentAnimation();
|
||
local sizeRate = 2.0;
|
||
currentAni.setImageRateFromOriginal(sizeRate, sizeRate);
|
||
currentAni.setAutoLayerWorkAnimationAddSizeRate(sizeRate);
|
||
}
|
||
break;
|
||
case 3:
|
||
local aniPath = "passiveobject/atswordman_bykk/demonslayer/animation/atbloodseal/blood_drop_01.ani";
|
||
switch(state){
|
||
case 20:
|
||
obj.getVar("move").setInt(10, sq_GetZPos(obj));
|
||
obj.setTimeEvent(1, 15, 20, false);
|
||
break;
|
||
case 21: aniPath = "passiveobject/atswordman_bykk/demonslayer/animation/atbloodseal/blood_droptotile_blood_tile_00.ani"; break;
|
||
case 22:
|
||
aniPath = "passiveobject/atswordman_bykk/demonslayer/animation/atbloodseal/blood_tile_00.ani";
|
||
obj.setTimeEvent(2, obj.getVar("custom").getInt(21), 1, false);
|
||
obj.setTimeEvent(3, obj.getVar("custom").getInt(24), -1, false);
|
||
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 66));
|
||
sq_SetCurrentAttackPower(sq_GetCurrentAttackInfo(obj), obj.getVar("custom").getInt(22));
|
||
break;
|
||
case 23: aniPath = "passiveobject/atswordman_bykk/demonslayer/animation/atbloodseal/blood_tile_off_00.ani"; break;
|
||
}
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
if(state != 20){
|
||
local sizeRate = obj.getVar("custom").getInt(23).tofloat() / 1000.0;
|
||
local pAni = obj.getCurrentAnimation();
|
||
pAni.setImageRateFromOriginal(sizeRate, sizeRate);
|
||
pAni.setAutoLayerWorkAnimationAddSizeRate(sizeRate);
|
||
sq_SetAttackBoundingBoxSizeRate(pAni, sizeRate, sizeRate, sizeRate);
|
||
}
|
||
break;
|
||
}
|
||
break;
|
||
case SKILL_DEMONSLAYER_CLAWBLADE://蛇腹劍 : 纏
|
||
switch(subtype){
|
||
case 2:
|
||
switch(state){
|
||
case 20:
|
||
local aniPath = "passiveobject/atswordman_bykk/demonslayer/animation/atclawblade/devilswordtech/atclawblade_devilswordtechforce.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
break;
|
||
case 21:
|
||
local aniPath = "passiveobject/atswordman_bykk/demonslayer/animation/atclawblade/devilswordtech/atclawblade_devilswordtechboom7.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
local totalDamage = obj.getVar("custom").getInt(11) * 3;
|
||
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 69));
|
||
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
|
||
break;
|
||
}
|
||
break;
|
||
}
|
||
break;
|
||
case SKILL_DEMONSLAYER_DARKSTRIKE://喚魔 : 塔莫斯之襲
|
||
switch(subtype){
|
||
case 1:
|
||
switch(state){
|
||
case 20:
|
||
local aniPath = "passiveobject/atswordman_bykk/demonslayer/animation/atdarkstrike/create/2_daimus.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
sq_AddDrawOnlyAniFromParent(obj, "passiveobject/atswordman_bykk/demonslayer/animation/atdarkstrike/create/dust.ani", 0, 0, -sq_GetZPos(obj));
|
||
break;
|
||
case 21:
|
||
local aniPath = "passiveobject/atswordman_bykk/demonslayer/animation/atdarkstrike/loop/2_daimus_back.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
local pAni = obj.getCurrentAnimation();
|
||
pAni.addLayerAnimation(1, sq_CreateAnimation("","passiveobject/atswordman_bykk/demonslayer/animation/atdarkstrike/loop/2_daimus.ani"), true);
|
||
local totalDamage = obj.getVar("custom").getInt(10);
|
||
local hitMax = obj.getVar("custom").getInt(11);
|
||
local hitTime = obj.getVar("custom").getInt(12);
|
||
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 70));
|
||
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
|
||
obj.setTimeEvent(1, hitTime, hitMax - 1, false);
|
||
break;
|
||
case 22:
|
||
local aniPath = "passiveobject/atswordman_bykk/demonslayer/animation/atdarkstrike/end/2_daimus_back.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
local pAni = obj.getCurrentAnimation();
|
||
pAni.addLayerAnimation(1,sq_CreateAnimation("","passiveobject/atswordman_bykk/demonslayer/animation/atdarkstrike/end/2_daimus.ani"), true);
|
||
local totalDamage = obj.getVar("custom").getInt(15);
|
||
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 71));
|
||
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
|
||
break;
|
||
}
|
||
local currentAni = obj.getCurrentAnimation();
|
||
local sizeRate = obj.getVar("custom").getInt(13).tofloat() / 100.0;
|
||
currentAni.setImageRateFromOriginal(sizeRate, sizeRate);
|
||
currentAni.setAutoLayerWorkAnimationAddSizeRate(sizeRate);
|
||
sq_SetAttackBoundingBoxSizeRate(currentAni, sizeRate, sizeRate, sizeRate);
|
||
break;
|
||
}
|
||
break;
|
||
case SKILL_DEMONSLAYER_GIGABLADE://空絕斬 : 仟刃
|
||
break;
|
||
case SKILL_DEMONSLAYER_GIGASLASH://空絕斬 : 地裂
|
||
break;
|
||
case SKILL_DEMONSLAYER_GREED://貪欲之燔祭
|
||
break;
|
||
case SKILL_DEMONSLAYER_GROUPDANCE://群魔亂舞
|
||
switch(subtype){
|
||
case 1:
|
||
local aniPath = "passiveobject/atswordman_bykk/demonslayer/animation/atgroupdance/stay.ani";
|
||
switch(state){
|
||
case 20:
|
||
break;
|
||
case 21:
|
||
aniPath = "passiveobject/atswordman_bykk/demonslayer/animation/atgroupdance/dash.ani";
|
||
break;
|
||
case 22:
|
||
switch(obj.getVar("custom").getInt(11)){
|
||
case 0: aniPath = "passiveobject/atswordman_bykk/demonslayer/animation/atgroupdance_whipswordbal/whipswordbal1.ani"; break;
|
||
case 1: aniPath = "passiveobject/atswordman_bykk/demonslayer/animation/atgroupdance_snakedance/snakedance1.ani"; break;
|
||
case 2: aniPath = "passiveobject/atswordman_bykk/demonslayer/animation/atgroupdance_pikesword/pikesword.ani"; break;
|
||
case 3: aniPath = "passiveobject/atswordman_bykk/demonslayer/animation/atgroupdance_wildwhip/wildwhip1.ani"; break;
|
||
case 4: aniPath = "passiveobject/atswordman_bykk/demonslayer/animation/atgroupdance_blooddance/blooddancestart.ani"; break;
|
||
}
|
||
break;
|
||
case 23:
|
||
switch(obj.getVar("custom").getInt(11)){
|
||
case 0: aniPath = "passiveobject/atswordman_bykk/demonslayer/animation/atgroupdance_whipswordbal/whipswordbal2.ani"; break;
|
||
case 1: aniPath = "passiveobject/atswordman_bykk/demonslayer/animation/atgroupdance_snakedance/snakedance2.ani"; break;
|
||
case 2: aniPath = "passiveobject/atswordman_bykk/demonslayer/animation/atgroupdance_pikesword/pikesworddrag.ani"; break;
|
||
case 3: aniPath = "passiveobject/atswordman_bykk/demonslayer/animation/atgroupdance_wildwhip/wildwhip2.ani"; break;
|
||
case 4:
|
||
aniPath = "passiveobject/atswordman_bykk/demonslayer/animation/atgroupdance_blooddance/blooddanceloop.ani";
|
||
obj.setTimeEvent(1, 1010, 1, false);
|
||
obj.setTimeEvent(2, 25, 40, true);
|
||
break;
|
||
}
|
||
break;
|
||
case 24:
|
||
switch(obj.getVar("custom").getInt(11)){
|
||
case 0: aniPath = "passiveobject/atswordman_bykk/demonslayer/animation/atgroupdance_whipswordbal/whipswordbal3.ani"; break;
|
||
case 1: aniPath = "passiveobject/atswordman_bykk/demonslayer/animation/atgroupdance_snakedance/snakedance3.ani"; break;
|
||
case 2: break;
|
||
case 3: aniPath = "passiveobject/atswordman_bykk/demonslayer/animation/atgroupdance_wildwhip/wildwhip3.ani"; break;
|
||
case 4: aniPath = "passiveobject/atswordman_bykk/demonslayer/animation/atgroupdance_blooddance/blooddancefinish.ani"; break;
|
||
}
|
||
break;
|
||
}
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
if(state == 21){
|
||
local currentAni = obj.getCurrentAnimation();
|
||
currentAni.setSpeedRate(150.0);
|
||
local pAni = obj.getCurrentAnimation();
|
||
local delaySum = pAni.getDelaySum(false);
|
||
obj.setTimeEvent(3, delaySum / 10, 8, false);
|
||
local drawObj = createOnlyDrawObject_AtSwordMan_bykk(obj, "passiveobject/atswordman_bykk/demonslayer/animation/atgroupdance/dance_move_dodge.ani", true, obj.getDirection(), sq_GetXPos(obj), sq_GetYPos(obj), 0, ENUM_DRAWLAYER_BOTTOM);
|
||
sq_moveWithParent(obj, drawObj);
|
||
local targetObj = obj.getVar("target").get_obj_vector(0);
|
||
if(targetObj) setGroupdance_AtSwordman_bykk(obj, drawObj, targetObj);
|
||
sq_SetCurrentDirection(obj, obj.getVar("move").getInt(13));
|
||
}
|
||
break;
|
||
}
|
||
break;
|
||
case SKILL_DEMONSLAYER_PHNOM://喚魔 : 逆天之普諾
|
||
switch(subtype){
|
||
case 1:
|
||
local aniPath = "passiveobject/atswordman_bykk/demonslayer/animation/atphnom/boom1_phnom_smallboom_normal.ani";
|
||
switch(state){
|
||
case 21:
|
||
aniPath = "passiveobject/atswordman_bykk/demonslayer/animation/atphnom/boom2_phnom_smallboom_normal.ani";
|
||
break;
|
||
case 22:
|
||
aniPath = "passiveobject/atswordman_bykk/demonslayer/animation/atphnom/boom3_phnom_smallboom_normal.ani";
|
||
break;
|
||
case 23:
|
||
aniPath = "passiveobject/atswordman_bykk/demonslayer/animation/atphnom/boom4_phnom_smallboom_normal.ani";
|
||
break;
|
||
case 24:
|
||
aniPath = "passiveobject/atswordman_bykk/demonslayer/animation/atphnom/finish_phnomexplosion.ani";
|
||
break;
|
||
}
|
||
local ani = sq_CreateAnimation("", aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
local speedRate = obj.getVar("custom").getInt(14);
|
||
local pAni = obj.getCurrentAnimation();
|
||
local totalDamage = obj.getVar("custom").getInt(10);
|
||
local attackIndex = 75;
|
||
if(state == 24){
|
||
totalDamage = obj.getVar("custom").getInt(11);
|
||
attackIndex = 77;
|
||
local sizeRate = obj.getVar("custom").getInt(13).tofloat() / 100.0;
|
||
pAni.setImageRateFromOriginal(sizeRate, sizeRate);
|
||
pAni.setAutoLayerWorkAnimationAddSizeRate(sizeRate);
|
||
sq_SetAttackBoundingBoxSizeRate(pAni, sizeRate, sizeRate, sizeRate);
|
||
}
|
||
pAni.setSpeedRate(speedRate.tofloat());
|
||
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, attackIndex));
|
||
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
|
||
break;
|
||
case 2:
|
||
break;
|
||
}
|
||
break;
|
||
case SKILL_DEMONSLAYER_PIKESWORD://蛇腹劍 : 刺
|
||
break;
|
||
case SKILL_DEMONSLAYER_PREDATORGALOA://貪食者迦羅亞
|
||
switch(subtype){
|
||
case 1:
|
||
switch(state){
|
||
case 20://普通
|
||
local aniPath = "passiveobject/atswordman_bykk/demonslayer/animation/atpredatorgaloa/g_eater_main_body.ani";
|
||
local ani = sq_CreateAnimation("", aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
obj.getVar("tar").clear_obj_vector();
|
||
local sub = obj.getVar("custom").getInt(16);
|
||
obj.setTimeEvent(2, obj.getVar("custom").getInt(13) + sub * 100, 1, false);
|
||
break;
|
||
case 21://EAT01
|
||
case 26:
|
||
local aniPath = "passiveobject/atswordman_bykk/demonslayer/animation/atpredatorgaloa/g_eater_eat_a_normal.ani";
|
||
local ani = sq_CreateAnimation("", aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
obj.getVar("move").setInt(10, sq_GetXPos(obj));
|
||
obj.getVar("move").setInt(11, sq_GetYPos(obj));
|
||
obj.getVar("move").setInt(12, sq_GetZPos(obj));
|
||
break;
|
||
case 22://EAT02
|
||
local aniPath = "passiveobject/atswordman_bykk/demonslayer/animation/atpredatorgaloa/g_eater_eat_b_normal.ani";
|
||
local ani = sq_CreateAnimation("", aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
break;
|
||
case 23://EAT03
|
||
local aniPath = "passiveobject/atswordman_bykk/demonslayer/animation/atpredatorgaloa/g_eater_eat_c_normal.ani";
|
||
local ani = sq_CreateAnimation("", aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
break;
|
||
case 24://附上
|
||
local aniPath = "passiveobject/atswordman_bykk/demonslayer/animation/atpredatorgaloa/g_eater_attach_body.ani";
|
||
local ani = sq_CreateAnimation("", aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
local targetObj = obj.getVar("tar").get_obj_vector(0);
|
||
sq_setCurrentAxisPos(obj, 2, sq_GetZPos(targetObj) + sq_GetObjectHeight(targetObj));
|
||
local totalDamage = obj.getVar("custom").getInt(10);
|
||
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 79));
|
||
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
|
||
local hitTime = obj.getVar("custom").getInt(15);
|
||
local hitMax = obj.getVar("custom").getInt(13);
|
||
obj.setTimeEvent(3, hitTime, hitMax, true);
|
||
break;
|
||
case 25://結束
|
||
obj.removeAllTimeEvent();
|
||
local aniPath = "passiveobject/atswordman_bykk/demonslayer/animation/atpredatorgaloa/g_eater_finish_29.ani";
|
||
local ani = sq_CreateAnimation("", aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
local totalDamage = obj.getVar("custom").getInt(11);
|
||
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 80));
|
||
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
|
||
local targetObj = sq_GetCNRDObjectToActiveObject(obj.getVar("tar").get_obj_vector(0));
|
||
if(targetObj) targetObj.getVar("predatorgaloa").setBool(0, false);
|
||
break;
|
||
}
|
||
if(state == 21 || state == 22 || state == 23 || state == 26){
|
||
local pAni = obj.getCurrentAnimation();
|
||
pAni.setSpeedRate(200.0);
|
||
}
|
||
break;
|
||
}
|
||
break;
|
||
case SKILL_DEMONSLAYER_RAGNAROK://弒神劍 : 諸神獻祭
|
||
break;
|
||
case SKILL_DEMONSLAYER_SNAKEDANCE://蛇腹劍 : 舞
|
||
break;
|
||
case SKILL_DEMONSLAYER_ULTIMATEBLADE://弒神劍 : 極
|
||
break;
|
||
case SKILL_DEMONSLAYER_WHIPSWORDBAL://蛇腹劍 : 破
|
||
break;
|
||
case SKILL_DEMONSLAYER_WILDWHIP://蛇腹劍 : 滅
|
||
break;
|
||
}
|
||
local attackInfo = sq_GetCurrentAttackInfo(obj);
|
||
if(attackInfo && sq_GetSkillLevel(sqrChr, SKILL_DEMONSLAYER_CALLDAIMUS) > 0){
|
||
local bleedingProb = sq_GetLevelData(sqrChr, SKILL_DEMONSLAYER_CALLDAIMUS, 0, sq_GetSkillLevel(sqrChr, SKILL_DEMONSLAYER_CALLDAIMUS));
|
||
local bleedingTime = sq_GetLevelData(sqrChr, SKILL_DEMONSLAYER_CALLDAIMUS, 1, sq_GetSkillLevel(sqrChr, SKILL_DEMONSLAYER_CALLDAIMUS));
|
||
local bleedingDamage = sq_GetLevelData(sqrChr, SKILL_DEMONSLAYER_CALLDAIMUS, 2, sq_GetSkillLevel(sqrChr, SKILL_DEMONSLAYER_CALLDAIMUS));
|
||
sq_SetChangeStatusIntoAttackInfo(attackInfo, 0, ACTIVESTATUS_BLEEDING,bleedingProb,sq_GetSkillLevel(sqrChr, 174) + 10, bleedingTime, bleedingDamage);
|
||
}
|
||
break;
|
||
case 3://vagabond
|
||
switch(skillIndex){
|
||
case SKILL_VAGABOND_BIGJANG://如來神掌
|
||
switch(subtype){
|
||
case 1:
|
||
case 2:
|
||
local aniPath1 = "passiveobject/atswordman_bykk/vagabond/animation/atbigjang/skillcustomizing/";
|
||
switch(state){
|
||
case 20:
|
||
local aniPath = aniPath1 + "normal_throw_hand.ani";
|
||
if(subtype == 2) aniPath = "passiveobject/atswordman_bykk/vagabond/animation/atbigjang/jump_throw_hand.ani";
|
||
print("aniPath = "+aniPath);
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
|
||
local pAni = obj.getCurrentAnimation();
|
||
local delaySum = pAni.getDelaySum(false);
|
||
local timeIndex = 1;
|
||
if(subtype == 2){timeIndex = 2; delaySum = 150;}
|
||
obj.setTimeEvent(timeIndex, delaySum / 20, 20, false);
|
||
break;
|
||
case 21:
|
||
local aniPath = aniPath1 + "normal_throw_hand.ani";
|
||
if(subtype == 2) aniPath = aniPath1 + "jump_bomb_hand.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
break;
|
||
case 22:
|
||
obj.removeAllTimeEvent();
|
||
local aniPath = aniPath1 + "normal_bomb_d.ani";
|
||
if(subtype == 2) aniPath = aniPath1 + "jump_bomb_a.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
|
||
local totalDamage = obj.getVar("custom").getInt(20);
|
||
local attackIndex = 43;
|
||
if(subtype == 2) attackIndex = 41;
|
||
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, attackIndex));
|
||
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
|
||
break;
|
||
}
|
||
local currentAni = obj.getCurrentAnimation();
|
||
local sizeRate = obj.getVar("custom").getInt(13) / 100.0;
|
||
currentAni.setImageRateFromOriginal(sizeRate, sizeRate);
|
||
currentAni.setAutoLayerWorkAnimationAddSizeRate(sizeRate);
|
||
sq_SetAttackBoundingBoxSizeRate(currentAni, sizeRate, sizeRate, sizeRate);
|
||
break;
|
||
}
|
||
break;
|
||
case SKILL_VAGABOND_BLASTSWORD://回天璇鳴劍
|
||
break;
|
||
case SKILL_VAGABOND_COALBAN://遊龍掌
|
||
break;
|
||
case SKILL_VAGABOND_COMETBLADE://花舞仟魂殺
|
||
break;
|
||
case SKILL_VAGABOND_DUALWEAPON://兩儀功
|
||
break;
|
||
case SKILL_VAGABOND_EARTHPRESSURE://碎巖裂地掌
|
||
break;
|
||
case SKILL_VAGABOND_FATALFLOWER://花開寒影
|
||
break;
|
||
case SKILL_VAGABOND_FISTOFEXPLOSION://湮烈掌
|
||
switch(subtype){
|
||
case 2:
|
||
switch(state){
|
||
case 20:
|
||
local aniPath = "character/swordman/effect/animation/atfistofexplosion/hit01.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
break;
|
||
case 21:
|
||
local aniPath = "character/swordman/effect/animation/atfistofexplosion/hit02loop.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
local lifeTime = obj.getVar("custom").getInt(11);
|
||
local hitMax = obj.getVar("custom").getInt(12);
|
||
obj.setTimeEvent(1, lifeTime, 1, false);
|
||
if(obj.getVar("custom").getInt(13) < 1) obj.setTimeEvent(2, lifeTime / (hitMax + 2), hitMax, false);
|
||
break;
|
||
case 22:
|
||
local aniPath = "character/swordman/effect/animation/atfistofexplosion/hit03explosion.ani";
|
||
if(obj.getVar("custom").getInt(13) > 0) aniPath = "character/swordman/effect/animation/atfistofexplosion/talisman/atfistofexplosiontalismaneffect_04.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
local totalDamage = obj.getVar("custom").getInt(10);
|
||
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 60));
|
||
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
|
||
if(obj.getVar("custom").getInt(13) > 0){
|
||
local currentAni = obj.getCurrentAnimation();
|
||
local sizeRate = 1.5;
|
||
currentAni.setImageRateFromOriginal(sizeRate, sizeRate);
|
||
currentAni.setAutoLayerWorkAnimationAddSizeRate(sizeRate);
|
||
sq_SetAttackBoundingBoxSizeRate(currentAni, sizeRate, sizeRate, sizeRate);
|
||
}
|
||
break;
|
||
}
|
||
break;
|
||
}
|
||
break;
|
||
case SKILL_VAGABOND_FLOWERBLADEDANCE://蓮花劍舞
|
||
break;
|
||
case SKILL_VAGABOND_GONEWITHTHEPETAL://落英驚鴻掌
|
||
switch(subtype){
|
||
case 1:
|
||
switch(state){
|
||
case 20:
|
||
local aniPath = "character/swordman/effect/animation/atgonewiththepetal/blockedforce.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
break;
|
||
case 21:
|
||
local aniPath = "character/swordman/effect/animation/atgonewiththepetal/blockedforceend.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
break;
|
||
case 22:
|
||
// sq_setCurrentAxisPos(obj, 2, 0);
|
||
local aniPath = "passiveobject/atswordman_bykk/vagabond/animation/atgonewiththepetal/explosiona2_02.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
local totalDamage = obj.getVar("custom").getInt(10);
|
||
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 51));
|
||
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
|
||
sq_AddDrawOnlyAniFromParent(obj, "passiveobject/atswordman_bykk/vagabond/animation/atgonewiththepetal/explosionb_01.ani", 0, -2, 0);
|
||
local aniPath = "passiveobject/atswordman_bykk/vagabond/animation/atgonewiththepetal/explosionc_00.ani";
|
||
createOnlyDrawObject_AtSwordMan_bykk(obj, aniPath, true, obj.getDirection(), sq_GetXPos(obj), sq_GetYPos(obj), 0, ENUM_DRAWLAYER_BOTTOM);
|
||
break;
|
||
}
|
||
break;
|
||
}
|
||
break;
|
||
case SKILL_VAGABOND_HERMITTRIPLESTEP://櫻花劫
|
||
break;
|
||
case SKILL_VAGABOND_INHALATION://四象引
|
||
break;
|
||
case SKILL_VAGABOND_MOONLIGHTSLASH://飛花逐月
|
||
break;
|
||
case SKILL_VAGABOND_NEARBLOW://圓舞斬
|
||
break;
|
||
case SKILL_VAGABOND_OVERBLOWSLASH://亂花葬
|
||
break;
|
||
case SKILL_VAGABOND_RAPIDSTEP://一花渡江
|
||
break;
|
||
case SKILL_VAGABOND_REVOLVINGSWORD://輪回劍
|
||
break;
|
||
case SKILL_VAGABOND_SOARCUT://櫻落斬
|
||
break;
|
||
case SKILL_VAGABOND_THREESIDE://三連斬
|
||
switch(subtype){
|
||
case 1:
|
||
break;
|
||
case 2:
|
||
break;
|
||
}
|
||
break;
|
||
case SKILL_VAGABOND_ZWEIVOLTAGEEX://嘯空十字斬
|
||
switch(subtype){
|
||
case 1:
|
||
case 2:
|
||
local aniPath1 = "passiveobject/atswordman_bykk/vagabond/animation/atzweivoltage/cross/";
|
||
switch(state){
|
||
case 20:
|
||
local aniPath = aniPath1 + "zweivoltage_cross_b_start_leaf_d.ani";
|
||
if(subtype == 2) aniPath = aniPath1 + "zweivoltage_crossstart_leaf_d.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
break;
|
||
case 21:
|
||
local aniPath = aniPath1 + "zweivoltage_cross_b_loop_00.ani";
|
||
if(subtype == 2) aniPath = aniPath1 + "zweivoltage_crossloop_00.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
if(subtype == 1) obj.setTimeEvent(1, obj.getVar("custom").getInt(11) / 2, 1, false);
|
||
if(obj.getVar("custom").getInt(12) > 0) obj.setTimeEvent(1, obj.getVar("custom").getInt(11), 1, false);
|
||
break;
|
||
case 22:
|
||
local aniPath = aniPath1 + "zweivoltage_cross_c_loop_00.ani";
|
||
if(subtype == 2) aniPath = aniPath1 + "zweivoltage_cross_d_loop_00.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
break;
|
||
case 23:
|
||
local aniPath = aniPath1 + "zweivoltage_cross_b_end_d.ani";
|
||
if(subtype == 2) aniPath = aniPath1 + "zweivoltage_crossend_d.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
break;
|
||
}
|
||
break;
|
||
}
|
||
break;
|
||
}
|
||
break;
|
||
case 4:
|
||
switch(skillIndex){
|
||
case SKILL_DARKEMPLER_BLACKMIRROR://魔鏡幻影陣
|
||
switch(subtype){
|
||
case 2:
|
||
local aniPath1 = "passiveobject/atswordman_bykk/darktempler/animation/atblackmirror/mirror0";
|
||
local sub = obj.getVar("custom").getInt(0);
|
||
if(sub > 9) aniPath1 = "passiveobject/atswordman_bykk/darktempler/animation/atblackmirror/mirror";
|
||
switch(state){
|
||
case 20://start
|
||
local aniPath = aniPath1+sub.tostring()+"_start_09.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
break;
|
||
case 21://loop
|
||
local aniPath = aniPath1+sub.tostring()+"_loop_05.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
obj.setTimeEvent(1,500,1,false);
|
||
break;
|
||
case 22://attack
|
||
local aniPath = aniPath1+sub.tostring()+"_attack_05.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
local totalDamage = obj.getVar("custom").getInt(1);
|
||
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 0));
|
||
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
|
||
break;
|
||
case 23://end
|
||
local aniPath = aniPath1+sub.tostring()+"_end_00.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
break;
|
||
}
|
||
break;
|
||
}
|
||
break;
|
||
case SKILL_DARKEMPLER_BUCKSHOT://釋魂飛彈
|
||
switch(subtype){
|
||
case 1:
|
||
switch(state){
|
||
case 20:
|
||
local aniPath = "passiveobject/atswordman_bykk/darktempler/animation/atbuckshot/buckshot_bulletdummy.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
obj.setTimeEvent(3,10,-1,true);
|
||
obj.setTimeEvent(2,600,1,false);
|
||
break;
|
||
case 22:
|
||
obj.removeAllTimeEvent();
|
||
local targetObj = obj.getVar().get_obj_vector(0);
|
||
if(targetObj && targetObj.getState() != STATE_DIE){
|
||
sq_setCurrentAxisPos(obj, 1, sq_GetYPos(targetObj) + 1);
|
||
}
|
||
else{
|
||
sq_SendDestroyPacketPassiveObject(obj);
|
||
break;
|
||
}
|
||
local randomnumber = sq_getRandom(1,100),aniPath = "";
|
||
if(randomnumber > 55) aniPath = "passiveobject/atswordman_bykk/darktempler/animation/atbuckshot/buckshot_expl_a_eff_01.ani";
|
||
else if(randomnumber > 10 && randomnumber <= 55) aniPath = "passiveobject/atswordman_bykk/darktempler/animation/atbuckshot/buckshot_expl_b_eff_02.ani";
|
||
else aniPath = "passiveobject/atswordman_bykk/darktempler/animation/atbuckshot/buckshot_expl_c_eff_08.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
local totalDamage = obj.getVar("custom").getInt(10);
|
||
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 3));
|
||
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
|
||
break;
|
||
}
|
||
break;
|
||
}
|
||
break;
|
||
case SKILL_DARKEMPLER_DEADLYCAPE://暗影囚殺
|
||
switch(subtype){
|
||
case 1:
|
||
switch(state){
|
||
case 20:
|
||
local aniPath = "passiveobject/atswordman_bykk/darktempler/animation/atdeadlycape/mass_start.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
break;
|
||
case 21:
|
||
local aniPath = "passiveobject/atswordman_bykk/darktempler/animation/atdeadlycape/mass_loop.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
break;
|
||
case 22:
|
||
local aniPath = "passiveobject/atswordman_bykk/darktempler/animation/atdeadlycape/mass_end.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
break;
|
||
case 23:
|
||
local aniPath = "passiveobject/atswordman_bykk/darktempler/animation/atdeadlycape/mass_fail.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
break;
|
||
}
|
||
break;
|
||
}
|
||
break;
|
||
case SKILL_DARKEMPLER_DESTROYER://暗影盛宴
|
||
switch(subtype){
|
||
case 2:
|
||
switch(state){
|
||
case 20:
|
||
local aniPath = "passiveobject/atswordman_bykk/darktempler/animation/atdestroyer/exray/spherestart_06.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
local delay = obj.getVar("custom").getInt(11);
|
||
local speedRate = 12000.0 / delay.tofloat();
|
||
local pAni = obj.getCurrentAnimation();
|
||
pAni.setSpeedRate(speedRate);
|
||
break;
|
||
case 21:
|
||
local aniPath = "passiveobject/atswordman_bykk/darktempler/animation/atdestroyer/exray/sphereloop1_06.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
sq_AddDrawOnlyAniFromParent(obj,"passiveobject/atswordman_bykk/darktempler/animation/atdestroyer/exray/spherecharge1_06.ani",0,0,0);
|
||
break;
|
||
case 22:
|
||
local aniPath = "passiveobject/atswordman_bykk/darktempler/animation/atdestroyer/exray/exrayexplosoin_05.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
local currentAni = obj.getCurrentAnimation();
|
||
currentAni.addLayerAnimation(6,sq_CreateAnimation("","passiveobject/atswordman_bykk/darktempler/animation/atdestroyer/exray/exrayexplosoin.ani"),true);
|
||
local totalDamage = obj.getVar("custom").getInt(10);
|
||
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 6));
|
||
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
|
||
sq_SetMyShake(obj, 5, 300);
|
||
break;
|
||
}
|
||
break;
|
||
}
|
||
break;
|
||
case SKILL_DARKEMPLER_DEUSEXRAY://天罰死光
|
||
switch(subtype){
|
||
case 1:
|
||
switch(state){
|
||
case 20:
|
||
local aniPath = "passiveobject/atswordman_bykk/darktempler/animation/atdeusexray/spherestart_06.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
break;
|
||
case 21:
|
||
local aniPath = "passiveobject/atswordman_bykk/darktempler/animation/atdeusexray/sphereloop1_06.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
break;
|
||
case 22:
|
||
local aniPath = "passiveobject/atswordman_bykk/darktempler/animation/atdeusexray/sphereloop2_09.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
break;
|
||
case 23:
|
||
local aniPath = "passiveobject/atswordman_bykk/darktempler/animation/atdeusexray/spherecharge1_06.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
break;
|
||
}
|
||
break;
|
||
}
|
||
break;
|
||
case SKILL_DARKEMPLER_DOOMSDAY://末日殺戮
|
||
switch(subtype){
|
||
case 2:
|
||
switch(state){
|
||
case 20:
|
||
local aniPath = "passiveobject/atswordman_bykk/darktempler/animation/atdoomsday/beginningup_01.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
break;
|
||
case 21:
|
||
local aniPath = "passiveobject/atswordman_bykk/darktempler/animation/atdoomsday/domeloopup_01.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
break;
|
||
case 22:
|
||
local aniPath = "passiveobject/atswordman_bykk/darktempler/animation/atdoomsday/domeboom_06.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
break;
|
||
}
|
||
break;
|
||
case 3:
|
||
switch(state){
|
||
case 20:
|
||
local aniPath = "passiveobject/atswordman_bykk/darktempler/animation/atdoomsday/beginningdown_02.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
break;
|
||
case 21:
|
||
local aniPath = "passiveobject/atswordman_bykk/darktempler/animation/atdoomsday/domeloopdown_01.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
break;
|
||
}
|
||
break;
|
||
}
|
||
break;
|
||
case SKILL_DARKEMPLER_EVOLVE://汲魂之力
|
||
break;
|
||
case SKILL_DARKEMPLER_HIDDENBLADE://影刃
|
||
break;
|
||
case SKILL_DARKEMPLER_IMMOLATION://死亡獻祭
|
||
switch(subtype){
|
||
case 2:
|
||
switch(state){
|
||
case 20:
|
||
local aniPath = "character/swordman/effect/animation/atimmolation/cast222_05.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
break;
|
||
case 21:
|
||
local aniPath = "character/swordman/effect/animation/atimmolation/loop_02.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
break;
|
||
case 22:
|
||
local aniPath = "character/swordman/effect/animation/atimmolation/end_magiccircle_01.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
break;
|
||
}
|
||
break;
|
||
case 3:
|
||
switch(state){
|
||
case 20:
|
||
local aniPath = "passiveobject/atswordman_bykk/darktempler/animation/atimmolation/alter/start_03.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
local pAni = obj.getCurrentAnimation();
|
||
pAni.addLayerAnimation(-1,sq_CreateAnimation("","character/swordman/effect/animation/atimmolation/cast222_05.ani"),true);
|
||
break;
|
||
case 21:
|
||
local aniPath = "passiveobject/atswordman_bykk/darktempler/animation/atimmolation/alter/loop_02.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
local pAni = obj.getCurrentAnimation();
|
||
pAni.addLayerAnimation(-1,sq_CreateAnimation("","character/swordman/effect/animation/atimmolation/loop_02.ani"),true);
|
||
local lifeTime = obj.getVar("custom").getInt(11);
|
||
local delaySum = pAni.getDelaySum(false);
|
||
if(delaySum < lifeTime) sq_SetFrameDelayTime(pAni, 0, lifeTime);
|
||
break;
|
||
case 22:
|
||
local aniPath = "passiveobject/atswordman_bykk/darktempler/animation/atimmolation/alter/end_03.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
local pAni = obj.getCurrentAnimation();
|
||
pAni.addLayerAnimation(-1,sq_CreateAnimation("","character/swordman/effect/animation/atimmolation/end_magiccircle_01.ani"),true);
|
||
local delaySum = pAni.getDelaySum(0,2);
|
||
obj.setTimeEvent(2, delaySum, 1, false);
|
||
// if(!sqrChr) break;
|
||
// CNSquirrelAppendage.sq_RemoveAppendage(sqrChr, "character/atswordman/4_darktempler/shadowharvest/ap_shadowharvest.nut");
|
||
break;
|
||
}
|
||
break;
|
||
}
|
||
break;
|
||
case SKILL_DARKEMPLER_JIHAD://天罰之劍
|
||
switch(subtype){
|
||
case 1:
|
||
switch(state){
|
||
case 20:
|
||
local aniPath = "passiveobject/atswordman_bykk/darktempler/animation/atjihad/jihad_startmagiccircle_a.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
break;
|
||
case 21:
|
||
local aniPath = "passiveobject/atswordman_bykk/darktempler/animation/atjihad/jihad_magiccircleloop_a.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
local totalDamage = obj.getVar("custom").getInt(10);
|
||
cearteSkillPassiveObj_AtSwordMan_bykk(obj,obj,PASSIVEOBJECT_BYKK_DARKEMPLER,0,0,0,ENUM_DIRECTION_RIGHT,4,SKILL_DARKEMPLER_JIHAD,2,totalDamage,0,0,0,0,0,0,0,0);
|
||
break;
|
||
case 22:
|
||
local aniPath = "passiveobject/atswordman_bykk/darktempler/animation/atjihad/jihad_magiccircleend_a.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
break;
|
||
}
|
||
break;
|
||
case 2:
|
||
switch(state){
|
||
case 20:
|
||
local aniPath = "passiveobject/atswordman_bykk/darktempler/animation/atjihad/jihad_summon_a.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
sq_setCurrentAxisPos(obj, 2, 350);
|
||
break;
|
||
case 21:
|
||
local aniPath = "passiveobject/atswordman_bykk/darktempler/animation/atjihad/jihad_attack_sword.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
sq_flashScreen(obj, 0, 80, 480, 255, sq_RGB(0,0,0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
|
||
sq_setCurrentAxisPos(obj, 2, 0);
|
||
local pAni = obj.getCurrentAnimation();
|
||
local delaySum = pAni.getDelaySum(0,0);
|
||
obj.setTimeEvent(1, delaySum, 1, false);
|
||
break;
|
||
}
|
||
break;
|
||
}
|
||
break;
|
||
case SKILL_DARKEMPLER_LACERTHORNS://暗影綻放:死亡荊棘
|
||
break;
|
||
case SKILL_DARKEMPLER_LOYALSLAVE://靈魂傀儡
|
||
switch(subtype){
|
||
case 1:
|
||
switch(state){
|
||
case 20:
|
||
local aniPath = "passiveobject/atswordman_bykk/darktempler/animation/atloyalslave/loyalservant_start_body.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
break;
|
||
case 21:
|
||
local aniPath = "passiveobject/atswordman_bykk/darktempler/animation/atloyalslave/loyalservant_repeat_body.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
local lifeTime = obj.getVar("custom").getInt(10);
|
||
local hitTime = obj.getVar("custom").getInt(11);
|
||
obj.setTimeEvent(1, lifeTime, 1, false);
|
||
obj.setTimeEvent(2, hitTime, -1, true);
|
||
break;
|
||
case 22:
|
||
obj.removeAllTimeEvent();
|
||
local aniPath = "passiveobject/atswordman_bykk/darktempler/animation/atloyalslave/loyalservant_end_body.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
break;
|
||
}
|
||
break;
|
||
}
|
||
break;
|
||
case SKILL_DARKEMPLER_MADNESS://釋魂狂怒
|
||
switch(subtype){
|
||
case 2:
|
||
switch(state){
|
||
case 20:
|
||
local aniPath = "passiveobject/atswordman_bykk/darktempler/animation/atmadness/madness_laser_02.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
obj.setTimeEvent(10, 3, -1, true);
|
||
obj.setTimeEvent(11, 240 / obj.getVar("custom").getInt(10) * 100, 1, false);
|
||
break;
|
||
case 21:
|
||
obj.removeAllTimeEvent();
|
||
local aniPath = "passiveobject/atswordman_bykk/darktempler/animation/atmadness/madness_explo_a.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
sq_SetCustomRotate(obj, sq_ToRadian(-45.0));
|
||
break;
|
||
}
|
||
break;
|
||
case 3:
|
||
switch(state){
|
||
case 20:
|
||
local aniPath = "passiveobject/atswordman_bykk/darktempler/animation/atmadness/explosion.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 23));
|
||
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), obj.getVar("custom").getInt(11));
|
||
local currentAni = obj.getCurrentAnimation();
|
||
local sizeRate = obj.getVar("custom").getInt(12).tofloat() / 112.5;
|
||
currentAni.setImageRateFromOriginal(sizeRate, sizeRate);
|
||
currentAni.setAutoLayerWorkAnimationAddSizeRate(sizeRate);
|
||
sq_SetAttackBoundingBoxSizeRate(currentAni, sizeRate, sizeRate, sizeRate);
|
||
print("test = "+ obj.getVar("custom").getInt(11));
|
||
print("test2 = "+ obj.getVar("custom").getInt(12));
|
||
break;
|
||
}
|
||
break;
|
||
}
|
||
break;
|
||
case SKILL_DARKEMPLER_PUNISHMENT://神罰·滅世裁決
|
||
break;
|
||
case SKILL_DARKEMPLER_SCAFFOLD://暗影禁錮
|
||
local aniPath1 = "passiveobject/atswordman_bykk/darktempler/animation/atscaffold/";
|
||
switch(subtype){
|
||
case 1:
|
||
switch(state){
|
||
case 20:
|
||
local aniPath = aniPath1 + "marble_00.ani";
|
||
local ani = sq_CreateAnimation("", aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
obj.sq_SetMoveParticle("particle/scaffold.ptl", 0.0, 0.0);
|
||
// sq_SetSpeedToMoveParticle(obj,0,1200);
|
||
// sq_SetSpeedToMoveParticle(obj,2,-1200);
|
||
break;
|
||
case 21:
|
||
local aniPath = aniPath1 + "up_00.ani";
|
||
local ani = sq_CreateAnimation("", aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
local totalDamage = obj.getVar("custom").getInt(0);
|
||
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 25));
|
||
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
|
||
break;
|
||
}
|
||
break;
|
||
case 2:
|
||
switch(state){
|
||
case 20:
|
||
local aniPath = aniPath1 + "newcatchmarble_06.ani";
|
||
local ani = sq_CreateAnimation("", aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
local lifeTime = obj.getVar("custom").getInt(1);
|
||
obj.setTimeEvent(1, lifeTime, 1, false);
|
||
break;
|
||
case 21:
|
||
local aniPath = aniPath1 + "boom_11.ani";
|
||
local ani = sq_CreateAnimation("", aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
local totalDamage = obj.getVar("custom").getInt(0);
|
||
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 24));
|
||
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
|
||
break;
|
||
}
|
||
break;
|
||
}
|
||
break;
|
||
case SKILL_DARKEMPLER_SHADOWBINDING://暗影纏襲
|
||
switch(subtype){
|
||
case 1:
|
||
local aniPath1 = "passiveobject/atswordman_bykk/darktempler/animation/atshadowbinding/";
|
||
switch(state){
|
||
case 20:
|
||
local aniPath = aniPath1+"casting_shadowbinding_shadow.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
break;
|
||
case 21:
|
||
local aniPath = aniPath1+"loop_shadowbinding_shadow.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
local lifeTime = obj.getVar("custom").getInt(2);
|
||
obj.setTimeEvent(1,lifeTime,1,false);
|
||
|
||
local totalDamage = obj.getVar("custom").getInt(0);
|
||
obj.getVar("targetObj").clear_obj_vector();
|
||
local objectManager = obj.getObjectManager();
|
||
local objectNumber = objectManager.getCollisionObjectNumber();
|
||
for(local i = 0; i < objectNumber; i++){
|
||
local object = objectManager.getCollisionObject(i);
|
||
if(object && object.isObjectType(OBJECTTYPE_ACTIVE) && obj.isEnemy(object)){
|
||
local activeObj = sq_GetCNRDObjectToActiveObject(object);
|
||
if(sq_Abs(sq_GetYPos(activeObj) - sq_GetYPos(obj)) <= 15 && isFrontObject(obj,activeObj)){
|
||
local AddAppendage = CNSquirrelAppendage.sq_AppendAppendage(activeObj, obj, -1, false, "character/atswordman/4_darktempler/shadowbinding/ap_shadowbinding.nut", true);
|
||
sq_HoldAndDelayDie(activeObj, obj, true, true, true, 0, 20, ENUM_DIRECTION_NEUTRAL , AddAppendage);
|
||
local uniqueId = sq_GetObjectId(activeObj);
|
||
obj.getVar("targetObj").push_obj_vector(activeObj);
|
||
cearteSkillPassiveObj_AtSwordMan_bykk(obj,activeObj,PASSIVEOBJECT_BYKK_DARKEMPLER,0,0,0,obj.getDirection(),4,SKILL_DARKEMPLER_SHADOWBINDING,2,totalDamage,uniqueId,0,0,0,0,0,0,1);
|
||
}
|
||
}
|
||
}
|
||
break;
|
||
case 22:
|
||
local aniPath = aniPath1+"end_shadowbinding_shadow.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
break;
|
||
}
|
||
local pAni = obj.getCurrentAnimation();
|
||
local sizeRate = obj.getVar("custom").getInt(3).tofloat() / 100.0;
|
||
pAni.setImageRateFromOriginal(sizeRate, 1.0);
|
||
break;
|
||
}
|
||
break;
|
||
case SKILL_DARKEMPLER_SHADOWHARVEST://暗影旋渦
|
||
local aniPath1 = "passiveobject/atswordman_bykk/darktempler/animation/atshadowharvest/";
|
||
switch(subtype){
|
||
case 1:
|
||
switch(state){
|
||
case 20://fly
|
||
local aniPath = aniPath1+"flyingkal_shadowharvest_flyingkal_normal.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
obj.sq_SetMoveParticle("particle/shadowharvest.ptl", 0.0, 0.0);
|
||
sq_SetSpeedToMoveParticle(obj,0,1200);
|
||
sq_SetSpeedToMoveParticle(obj,2,-1200);
|
||
break;
|
||
case 21://start
|
||
sq_SetMyShake(obj,5,100);
|
||
obj.sq_RemoveMoveParticle();
|
||
local aniPath = aniPath1+"startcircle_shadowharvestrenewal_sword.ani";
|
||
if(obj.getVar("custom").getInt(10) > 0) aniPath = aniPath1+"lv95passive/startcircle_shadowharvestlv95passive_sword.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
local totalDamage = obj.getVar("custom").getInt(0);
|
||
local range = obj.getVar("custom").getInt(1);
|
||
local lifeTime = obj.getVar("custom").getInt(2);
|
||
local hitTime = obj.getVar("custom").getInt(3);
|
||
local isSeal = obj.getVar("custom").getInt(4);
|
||
cearteSkillPassiveObj_AtSwordMan_bykk(sqrChr,obj,PASSIVEOBJECT_BYKK_DARKEMPLER,0,0,0,obj.getDirection(),4,SKILL_DARKEMPLER_SHADOWHARVEST,2,totalDamage,range,lifeTime,hitTime,isSeal,0,0,0,1);
|
||
obj.setTimeEvent(1, lifeTime, 1, false);
|
||
break;
|
||
case 22://loop
|
||
local aniPath = aniPath1+"loopcircle_shadowharvestrenewal_sword.ani";
|
||
if(obj.getVar("custom").getInt(10) > 0) aniPath = aniPath1+"lv95passive/loopcircle_shadowharvestlv95passive_sword.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
break;
|
||
case 23://end
|
||
local aniPath = aniPath1+"endcircle_shadowharvestrenewal_sword.ani";
|
||
if(obj.getVar("custom").getInt(10) > 0) aniPath = aniPath1+"lv95passive/endcircle_shadowharvestlv95passive_end_sword.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
break;
|
||
case 24://explosion
|
||
local aniPath = aniPath1+"lv95passive/explosion_shadowharvestlv95passive_explosion.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
local totalDamage = obj.getVar("custom").getInt(5);
|
||
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 28));
|
||
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
|
||
break;
|
||
}
|
||
break;
|
||
case 2:
|
||
switch(state){
|
||
case 20://start
|
||
local aniPath = aniPath1+"startcircle_shadowharvest_magiccircle_normal.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
break;
|
||
case 21://loop
|
||
local aniPath = aniPath1+"loopcircle_shadowharvest_magiccircle_normal.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
local totalDamage = obj.getVar("custom").getInt(0);
|
||
local lifeTime = obj.getVar("custom").getInt(2);
|
||
local hitTime = obj.getVar("custom").getInt(3);
|
||
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 30));
|
||
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
|
||
obj.setTimeEvent(1, lifeTime, 1, false);
|
||
obj.setTimeEvent(2, hitTime, -1, false);
|
||
local isSeal = obj.getVar("custom").getInt(4);
|
||
if(isSeal > 0){
|
||
if(!sqrChr) break;
|
||
local appendage = CNSquirrelAppendage.sq_AppendAppendage(sqrChr, obj, -1, false, "character/atswordman/4_darktempler/shadowharvest/ap_shadowharvest.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);
|
||
local range = obj.getVar("custom").getInt(1);
|
||
if(auraAppendage) auraAppendage.setAttractionInfo(100, 100, range, 100);
|
||
}
|
||
}
|
||
break;
|
||
case 22://end
|
||
local aniPath = aniPath1+"endcircle_shadowharvest_magiccircle_normal.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
if(!sqrChr) break;
|
||
CNSquirrelAppendage.sq_RemoveAppendage(sqrChr, "character/atswordman/4_darktempler/shadowharvest/ap_shadowharvest.nut");
|
||
break;
|
||
}
|
||
local range = obj.getVar("custom").getInt(1);
|
||
local currentAni = obj.getCurrentAnimation();//得到當前ani
|
||
local sizeRate = range.tofloat() / 170.0;//轉換浮點數運算
|
||
currentAni.setImageRateFromOriginal(sizeRate, sizeRate);//增加ani 寬度跟高度率
|
||
currentAni.setAutoLayerWorkAnimationAddSizeRate(sizeRate);//增加ani als附加 ani大小比例
|
||
sq_SetAttackBoundingBoxSizeRate(currentAni, sizeRate, sizeRate, sizeRate);//攻擊框,x y z比率
|
||
break;
|
||
}
|
||
break;
|
||
case SKILL_DARKEMPLER_SHADOWLANCER://暗影之矛
|
||
break;
|
||
case SKILL_DARKEMPLER_SHADOWPUPPET://魅影暗魂斬
|
||
switch(subtype){
|
||
case 2:
|
||
switch(state){
|
||
case 20:
|
||
local aniPath = "passiveobject/atswordman_bykk/darktempler/animation/atshadowpuppet/summon_shadowpuppet_puppet.ani";
|
||
if(obj.getVar("custom").getInt(4) > 0) aniPath = "passiveobject/atswordman_bykk/darktempler/animation/atshadowpuppet/lv95passive/shadowpuppetbody_00.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
break;
|
||
case 21:
|
||
local aniPath = "passiveobject/atswordman_bykk/darktempler/animation/atshadowpuppet/puppetdash_shadowpuppet_puppet.ani";
|
||
if(obj.getVar("custom").getInt(4) > 0) aniPath = "passiveobject/atswordman_bykk/darktempler/animation/atshadowpuppet/lv95passive/shadowpuppetdisappear_00.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
if(obj.getVar("custom").getInt(4) < 1){
|
||
sq_AddDrawOnlyAniFromParent(obj,"passiveobject/atswordman_bykk/darktempler/animation/atshadowpuppet/puppetdash_shadowpuppet_dash.ani",-250,0,20);
|
||
sq_AddDrawOnlyAniFromParent(obj,"passiveobject/atswordman_bykk/darktempler/animation/atshadowpuppet/puppetdash_shadowpuppet_dust.ani",0,0,0);
|
||
}
|
||
break;
|
||
}
|
||
break;
|
||
}
|
||
break;
|
||
case SKILL_DARKEMPLER_SOULDRAIN://靈魂攝取
|
||
switch(subtype){
|
||
case 1:
|
||
local aniPath1 = "passiveobject/atswordman_bykk/darktempler/animation/atsouldrain/";
|
||
switch(state){
|
||
case 20:
|
||
local aniPath = aniPath1 + "start_03.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
break;
|
||
case 21:
|
||
local aniPath = aniPath1 + "loop_02.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
local lifeTime = obj.getVar("custom").getInt(1);
|
||
local hitTime = obj.getVar("custom").getInt(5);
|
||
obj.setTimeEvent(1, lifeTime, 1, false);
|
||
obj.setTimeEvent(2, hitTime, -1, true);
|
||
obj.getVar("targetObj").clear_obj_vector();
|
||
break;
|
||
case 22:
|
||
obj.removeAllTimeEvent();
|
||
local aniPath = aniPath1 + "end_03.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
local size = obj.getVar("targetObj").get_obj_vector_size();
|
||
local number = obj.getVar("custom").getInt(6);
|
||
if(size < 1) break;
|
||
for(local i = 0; i < size; i++){
|
||
local targetObj = obj.getVar("targetObj").get_obj_vector(i);
|
||
if(targetObj){
|
||
local activeObj = sq_GetCNRDObjectToActiveObject(targetObj);
|
||
activeObj.getVar("hit").setInt(number,0);
|
||
}
|
||
}
|
||
break;
|
||
}
|
||
break;
|
||
}
|
||
break;
|
||
case SKILL_DARKEMPLER_STARFALL://魔影轟殺
|
||
switch(subtype){
|
||
case 1:
|
||
switch(state){
|
||
case 20:
|
||
local aniPath = "passiveobject/atswordman_bykk/darktempler/animation/atstarfall/rush_01.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
local targetObj = obj.getVar("target").get_obj_vector(0);
|
||
if(targetObj) obj.getVar("custom").setInt(12, sq_Abs(sq_GetXPos(targetObj) - sq_GetXPos(obj)));
|
||
obj.setTimeEvent(1,5,-1,false);
|
||
local pAni = obj.getCurrentAnimation();
|
||
sq_ClearAttackBox(pAni);
|
||
break;
|
||
case 21:
|
||
obj.removeAllTimeEvent();
|
||
local aniPath = "passiveobject/atswordman_bykk/darktempler/animation/atstarfall/floor.ani";
|
||
local ani = sq_CreateAnimation("",aniPath);
|
||
obj.setCurrentAnimation(ani);
|
||
local totalDamage = obj.getVar("custom").getInt(10);
|
||
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 24));
|
||
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
|
||
break;
|
||
}
|
||
break;
|
||
}
|
||
break;
|
||
}
|
||
break;
|
||
}
|
||
|
||
local attackInfo = sq_GetCurrentAttackInfo(obj);
|
||
if(attackInfo){
|
||
local element_kk_fire = sqrChr.getVar("element_kk").getInt(0);
|
||
local element_kk_water = sqrChr.getVar("element_kk").getInt(1);
|
||
local element_kk_dark = sqrChr.getVar("element_kk").getInt(2);
|
||
local element_kk_light = sqrChr.getVar("element_kk").getInt(3);
|
||
if(!attackInfo.isValidElement(ENUM_ELEMENT_FIRE) && element_kk_fire > 0) attackInfo.setElement(ENUM_ELEMENT_FIRE);
|
||
if(!attackInfo.isValidElement(ENUM_ELEMENT_WATER) && element_kk_water > 0) attackInfo.setElement(ENUM_ELEMENT_WATER);
|
||
if(!attackInfo.isValidElement(ENUM_ELEMENT_DARK) && element_kk_dark > 0) attackInfo.setElement(ENUM_ELEMENT_DARK);
|
||
if(!attackInfo.isValidElement(ENUM_ELEMENT_LIGHT) && element_kk_light > 0) attackInfo.setElement(ENUM_ELEMENT_LIGHT);
|
||
}
|
||
}
|
||
|
||
function onEndCurrentAni_po_atswordman_bykk_kak(obj)
|
||
{
|
||
if(!obj) return;
|
||
local sqrChr = sq_GetCNRDObjectToSQRCharacter(obj.getTopCharacter());
|
||
local job = obj.getVar("job").getInt(0);
|
||
local skillIndex = obj.getVar("skillIndex").getInt(0);
|
||
local subtype = obj.getVar("subtype").getInt(0);
|
||
local state = obj.getVar("state").getInt(0);
|
||
|
||
switch(job){
|
||
case 0:
|
||
switch(skillIndex){
|
||
case 94: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
case 87: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
case 34:
|
||
switch(state){
|
||
case 20: obj.addSetStatePacket(21, null, STATE_PRIORITY_AUTO, false, ""); break;
|
||
case 22: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
}
|
||
break;
|
||
}
|
||
break;
|
||
case 1:
|
||
switch(skillIndex){
|
||
case SKILL_SWORDMASTER_BYKK_ATFLASH://瞬影三絕斬
|
||
sq_SendDestroyPacketPassiveObject(obj);
|
||
break;
|
||
case SKILL_SWORDMASTER_BYKK_BLADESOUL://斬魂術
|
||
break;
|
||
case SKILL_SWORDMASTER_BYKK_BREAKSWORDDANCE://極 · 馭劍術 (破劍陣)
|
||
switch(subtype){
|
||
case 1:
|
||
case 2:
|
||
if(state == 21) sq_SendDestroyPacketPassiveObject(obj);
|
||
break;
|
||
case 10: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
case 11: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
case 20: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
}
|
||
break;
|
||
case SKILL_SWORDMASTER_BYKK_CHANGESWORD://魔劍降臨
|
||
switch(subtype){
|
||
case 0:
|
||
switch(state){
|
||
case 100:
|
||
case 101:
|
||
case 102:
|
||
case 103:
|
||
obj.addSetStatePacket(state + 10, null, STATE_PRIORITY_AUTO, false, "");
|
||
break;
|
||
}
|
||
break;
|
||
case 1: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
}
|
||
break;
|
||
case SKILL_SWORDMASTER_BYKK_DEVILSLASH://惡即斬
|
||
sq_SendDestroyPacketPassiveObject(obj);
|
||
break;
|
||
case SKILL_SWORDMASTER_BYKK_DRAGONUPEX://裂刃天衝
|
||
switch(subtype){
|
||
case 1:
|
||
switch(state){
|
||
case 20: obj.addSetStatePacket(21, null, STATE_PRIORITY_AUTO, false, ""); break;
|
||
case 21: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
}
|
||
break;
|
||
case 3:
|
||
switch(state){
|
||
case 20: obj.addSetStatePacket(21, null, STATE_PRIORITY_AUTO, false, ""); break;
|
||
case 21: obj.addSetStatePacket(22, null, STATE_PRIORITY_AUTO, false, ""); break;
|
||
case 22: obj.addSetStatePacket(23, null, STATE_PRIORITY_AUTO, false, ""); break;
|
||
case 23: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
}
|
||
break;
|
||
case 2:
|
||
case 4:
|
||
if(subtype == 2){
|
||
local totalDamage = obj.getVar("custom").getInt(12);
|
||
local sizeRate = obj.getVar("custom").getInt(13);
|
||
cearteSkillPassiveObj_AtSwordMan_bykk(obj,obj,PASSIVEOBJECT_BYKK_SWORDMASTER,125,0,25,obj.getDirection(),1,SKILL_SWORDMASTER_BYKK_DRAGONUPEX,4,totalDamage,sizeRate,0,0,0,0,0,0,1);
|
||
}
|
||
sq_SendDestroyPacketPassiveObject(obj);
|
||
break;
|
||
}
|
||
break;
|
||
case SKILL_SWORDMASTER_BYKK_EXCALIBUR://雷鳴千軍破
|
||
switch(subtype){
|
||
case 1:
|
||
switch(state){
|
||
case 20: obj.addSetStatePacket(21, null, STATE_PRIORITY_AUTO, false, ""); break;
|
||
case 22: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
}
|
||
break;
|
||
case 2: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
case 3: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
case 10: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
}
|
||
break;
|
||
case SKILL_SWORDMASTER_BYKK_FUSIONBLADE://極詣 · 馭劍術 : 聚魔劍
|
||
switch(subtype){
|
||
case 1: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
case 2: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
case 3:
|
||
switch(state){
|
||
case 20: obj.addSetStatePacket(21, null, STATE_PRIORITY_AUTO, false, ""); break;
|
||
case 22: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
}
|
||
break;
|
||
}
|
||
break;
|
||
case SKILL_SWORDMASTER_BYKK_HALFMOON://破軍旋舞斬
|
||
sq_SendDestroyPacketPassiveObject(obj);
|
||
break;
|
||
case SKILL_SWORDMASTER_BYKK_ILLUSIONBLADE://幻劍術
|
||
switch(subtype){
|
||
case 1:
|
||
switch(state){
|
||
case 20: obj.addSetStatePacket(21, null, STATE_PRIORITY_AUTO, false, ""); break;
|
||
case 21:
|
||
case 22:
|
||
if(obj.getVar("custom").getInt(14) >= obj.getVar("custom").getInt(11) - 2){
|
||
obj.addSetStatePacket(23, null, STATE_PRIORITY_AUTO, false, "");
|
||
}
|
||
else{
|
||
obj.getVar("custom").setInt(14, obj.getVar("custom").getInt(14) + 1);
|
||
local addstate = 22;
|
||
if(state == 22) addstate = 21;
|
||
obj.addSetStatePacket(addstate, null, STATE_PRIORITY_AUTO, false, "");
|
||
}
|
||
break;
|
||
case 23: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
}
|
||
break;
|
||
case 2:
|
||
switch(state){
|
||
case 20: obj.addSetStatePacket(21, null, STATE_PRIORITY_AUTO, false, ""); break;
|
||
case 21:
|
||
if(obj.getVar("custom").getInt(14) >= obj.getVar("custom").getInt(11) - 1) sq_SendDestroyPacketPassiveObject(obj);
|
||
else{
|
||
obj.getVar("custom").setInt(14, obj.getVar("custom").getInt(14) + 1);
|
||
obj.addSetStatePacket(21, null, STATE_PRIORITY_AUTO, false, "");
|
||
}
|
||
break;
|
||
}
|
||
break;
|
||
case 3: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
}
|
||
break;
|
||
case SKILL_SWORDMASTER_BYKK_JACKCATCH://極 · 馭劍術 (幻劍陣)
|
||
switch(subtype){
|
||
case 1:
|
||
case 4:
|
||
switch(state){
|
||
case 20: obj.addSetStatePacket(21, null, STATE_PRIORITY_AUTO, false, ""); break;
|
||
case 22: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
}
|
||
break;
|
||
case 2:
|
||
switch(state){
|
||
case 20: obj.addSetStatePacket(21, null, STATE_PRIORITY_AUTO, false, ""); break;
|
||
case 22: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
}
|
||
break;
|
||
case 3: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
}
|
||
break;
|
||
case SKILL_SWORDMASTER_BYKK_LAEVATEINN://誓約之劍 : 雷沃汀
|
||
sq_SendDestroyPacketPassiveObject(obj);
|
||
break;
|
||
case SKILL_SWORDMASTER_BYKK_MAGICSWORDSHOOT://颶風魔劍
|
||
sq_SendDestroyPacketPassiveObject(obj);
|
||
break;
|
||
case SKILL_SWORDMASTER_BYKK_MAGICSWORDUP://魔劍奧義
|
||
switch(subtype){
|
||
case 0:
|
||
case 2:
|
||
sq_SendDestroyPacketPassiveObject(obj);
|
||
break;
|
||
case 1:
|
||
// switch(state){
|
||
// case 20: obj.addSetStatePacket(21, null, STATE_PRIORITY_AUTO, false, ""); break;
|
||
// case 21: obj.addSetStatePacket(22, null, STATE_PRIORITY_AUTO, false, ""); break;
|
||
// case 22: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
// }
|
||
// break;
|
||
case 2:
|
||
switch(state){
|
||
case 20: obj.addSetStatePacket(21, null, STATE_PRIORITY_AUTO, false, ""); break;
|
||
case 21: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
}
|
||
break;
|
||
}
|
||
break;
|
||
case SKILL_SWORDMASTER_BYKK_THUNDERSLASH://穿雲破空劍
|
||
sq_SendDestroyPacketPassiveObject(obj);
|
||
break;
|
||
case SKILL_SWORDMASTER_BYKK_TIMESLASH://極 · 馭劍術 (時空斬)
|
||
switch(subtype){
|
||
case 1:
|
||
switch(state){
|
||
case 20: obj.addSetStatePacket(21, null, STATE_PRIORITY_AUTO, false, ""); break;
|
||
case 21: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
}
|
||
break;
|
||
case 2: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
case 3: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
}
|
||
break;
|
||
case SKILL_SWORDMASTER_BYKK_UPPERSLASH://升龍劍
|
||
break;
|
||
case SKILL_SWORDMASTER_BYKK_WEAPONCOMBO://帝國劍術
|
||
sq_SendDestroyPacketPassiveObject(obj);
|
||
break;
|
||
}
|
||
break;
|
||
case 2:
|
||
switch(skillIndex){
|
||
case SKILL_DEMONSLAYER_BLOODDANCE://血飲狂舞
|
||
sq_SendDestroyPacketPassiveObject(obj);
|
||
break;
|
||
case SKILL_DEMONSLAYER_BLOODDEMONSWORD://汲血魔劍
|
||
break;
|
||
case SKILL_DEMONSLAYER_BLOODOCTOPUSSWORD://蛇舞血輪劍
|
||
sq_SendDestroyPacketPassiveObject(obj);
|
||
break;
|
||
case SKILL_DEMONSLAYER_BLOODSEAL://喚魔 : 封之印
|
||
switch(subtype){
|
||
case 2:
|
||
switch(state){
|
||
case 21: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
}
|
||
break;
|
||
case 3:
|
||
switch(state){
|
||
case 21: obj.addSetStatePacket(22, null, STATE_PRIORITY_AUTO, false, ""); break;
|
||
case 23: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
}
|
||
break;
|
||
}
|
||
break;
|
||
case SKILL_DEMONSLAYER_CLAWBLADE://蛇腹劍 : 纏
|
||
switch(subtype){
|
||
case 1: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
case 2:
|
||
if(state == 21) sq_SendDestroyPacketPassiveObject(obj);
|
||
break;
|
||
}
|
||
break;
|
||
case SKILL_DEMONSLAYER_DARKSTRIKE://喚魔 : 塔莫斯之襲
|
||
switch(subtype){
|
||
case 1:
|
||
switch(state){
|
||
case 20:
|
||
if(obj.getVar("custom").getInt(14) > 0)obj.addSetStatePacket(22, null, STATE_PRIORITY_AUTO, false, "");
|
||
else obj.addSetStatePacket(21, null, STATE_PRIORITY_AUTO, false, "");
|
||
break;
|
||
case 22: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
}
|
||
break;
|
||
}
|
||
break;
|
||
case SKILL_DEMONSLAYER_GIGABLADE://空絕斬 : 仟刃
|
||
sq_SendDestroyPacketPassiveObject(obj);
|
||
break;
|
||
case SKILL_DEMONSLAYER_GIGASLASH://空絕斬 : 地裂
|
||
sq_SendDestroyPacketPassiveObject(obj);
|
||
break;
|
||
case SKILL_DEMONSLAYER_GREED://貪欲之燔祭
|
||
break;
|
||
case SKILL_DEMONSLAYER_GROUPDANCE://群魔亂舞
|
||
switch(subtype){
|
||
case 1:
|
||
switch(state){
|
||
case 20: obj.addSetStatePacket(21, null, STATE_PRIORITY_AUTO, false, ""); break;
|
||
case 21: obj.addSetStatePacket(22, null, STATE_PRIORITY_AUTO, false, ""); break;
|
||
case 22: obj.addSetStatePacket(23, null, STATE_PRIORITY_AUTO, false, ""); break;
|
||
case 23:
|
||
if(obj.getVar("custom").getInt(11) == 2){
|
||
sq_AddDrawOnlyAniFromParent(obj, "passiveobject/atswordman_bykk/demonslayer/animation/atgroupdance/disappear_dance_fog.ani", 0, 0, 0);
|
||
sq_SendDestroyPacketPassiveObject(obj);
|
||
}
|
||
else obj.addSetStatePacket(24, null, STATE_PRIORITY_AUTO, false, "");
|
||
break;
|
||
case 24:
|
||
sq_AddDrawOnlyAniFromParent(obj, "passiveobject/atswordman_bykk/demonslayer/animation/atgroupdance/disappear_dance_fog.ani", 0, 0, 0);
|
||
sq_SendDestroyPacketPassiveObject(obj);
|
||
break;
|
||
}
|
||
break;
|
||
}
|
||
break;
|
||
case SKILL_DEMONSLAYER_PHNOM://喚魔 : 逆天之普諾
|
||
switch(subtype){
|
||
case 1:
|
||
if(state < 24){
|
||
if(obj.getVar("custom").getInt(15) + 1 == obj.getVar("custom").getInt(12)) obj.addSetStatePacket(24, null, STATE_PRIORITY_AUTO, false, "");
|
||
else{
|
||
obj.getVar("custom").setInt(15, obj.getVar("custom").getInt(15) + 1);
|
||
switch(state){
|
||
case 20: obj.addSetStatePacket(21, null, STATE_PRIORITY_AUTO, false, ""); break;
|
||
case 21: obj.addSetStatePacket(22, null, STATE_PRIORITY_AUTO, false, ""); break;
|
||
case 22: obj.addSetStatePacket(23, null, STATE_PRIORITY_AUTO, false, ""); break;
|
||
case 23: obj.addSetStatePacket(20, null, STATE_PRIORITY_AUTO, false, ""); break;
|
||
}
|
||
}
|
||
}
|
||
else sq_SendDestroyPacketPassiveObject(obj);
|
||
break;
|
||
case 2:
|
||
break;
|
||
}
|
||
break;
|
||
case SKILL_DEMONSLAYER_PIKESWORD://蛇腹劍 : 刺
|
||
break;
|
||
case SKILL_DEMONSLAYER_PREDATORGALOA://貪食者迦羅亞
|
||
switch(subtype){
|
||
case 1:
|
||
switch(state){
|
||
case 21: obj.setTimeEvent(1, 10, 20, true); break;
|
||
case 22:
|
||
case 23:
|
||
obj.addSetStatePacket(state + 1, null, STATE_PRIORITY_AUTO, false, "");
|
||
break;
|
||
case 25: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
case 26: obj.setTimeEvent(6, 10, 20, true); break;
|
||
|
||
}
|
||
break;
|
||
}
|
||
break;
|
||
case SKILL_DEMONSLAYER_RAGNAROK://弒神劍 : 諸神獻祭
|
||
sq_SendDestroyPacketPassiveObject(obj);
|
||
break;
|
||
case SKILL_DEMONSLAYER_SNAKEDANCE://蛇腹劍 : 舞
|
||
break;
|
||
case SKILL_DEMONSLAYER_ULTIMATEBLADE://弒神劍 : 極
|
||
sq_SendDestroyPacketPassiveObject(obj);
|
||
break;
|
||
case SKILL_DEMONSLAYER_WHIPSWORDBAL://蛇腹劍 : 破
|
||
sq_SendDestroyPacketPassiveObject(obj);
|
||
break;
|
||
case SKILL_DEMONSLAYER_WILDWHIP://蛇腹劍 : 滅
|
||
sq_SendDestroyPacketPassiveObject(obj);
|
||
break;
|
||
}
|
||
break;
|
||
case 3://vagabond
|
||
switch(skillIndex){
|
||
case SKILL_VAGABOND_BIGJANG://如來神掌
|
||
switch(subtype){
|
||
case 1:
|
||
switch(state){
|
||
case 20:
|
||
//obj.addSetStatePacket(21, null, STATE_PRIORITY_AUTO, false, "");
|
||
break;
|
||
case 21:
|
||
break;
|
||
case 22:
|
||
sq_SendDestroyPacketPassiveObject(obj);
|
||
break;
|
||
}
|
||
break;
|
||
case 2:
|
||
switch(state){
|
||
case 20:
|
||
break;
|
||
case 21:
|
||
case 22:
|
||
sq_SendDestroyPacketPassiveObject(obj);
|
||
break;
|
||
}
|
||
break;
|
||
}
|
||
break;
|
||
case SKILL_VAGABOND_BLASTSWORD://回天璇鳴劍
|
||
sq_SendDestroyPacketPassiveObject(obj);
|
||
break;
|
||
case SKILL_VAGABOND_COALBAN://遊龍掌
|
||
sq_SendDestroyPacketPassiveObject(obj);
|
||
break;
|
||
case SKILL_VAGABOND_COMETBLADE://花舞仟魂殺
|
||
sq_SendDestroyPacketPassiveObject(obj);
|
||
break;
|
||
case SKILL_VAGABOND_DUALWEAPON://兩儀功
|
||
break;
|
||
case SKILL_VAGABOND_EARTHPRESSURE://碎巖裂地掌
|
||
sq_SendDestroyPacketPassiveObject(obj);
|
||
break;
|
||
case SKILL_VAGABOND_FATALFLOWER://花開寒影
|
||
sq_SendDestroyPacketPassiveObject(obj);
|
||
break;
|
||
case SKILL_VAGABOND_FISTOFEXPLOSION://湮烈掌
|
||
switch(subtype){
|
||
case 1: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
case 2:
|
||
switch(state){
|
||
case 20: obj.addSetStatePacket(21, null, STATE_PRIORITY_AUTO, false, ""); break;
|
||
case 22: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
}
|
||
}
|
||
break;
|
||
case SKILL_VAGABOND_FLOWERBLADEDANCE://蓮花劍舞
|
||
break;
|
||
case SKILL_VAGABOND_GONEWITHTHEPETAL://落英驚鴻掌
|
||
switch(subtype){
|
||
case 1:
|
||
switch(state){
|
||
case 21: obj.addSetStatePacket(22, null, STATE_PRIORITY_AUTO, false, ""); break;
|
||
case 22: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
}
|
||
break;
|
||
}
|
||
break;
|
||
case SKILL_VAGABOND_HERMITTRIPLESTEP://櫻花劫
|
||
break;
|
||
case SKILL_VAGABOND_INHALATION://四象引
|
||
switch(subtype){
|
||
case 1: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
case 2: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
}
|
||
break;
|
||
case SKILL_VAGABOND_MOONLIGHTSLASH://飛花逐月
|
||
break;
|
||
case SKILL_VAGABOND_NEARBLOW://圓舞斬
|
||
sq_SendDestroyPacketPassiveObject(obj);
|
||
break;
|
||
case SKILL_VAGABOND_OVERBLOWSLASH://亂花葬
|
||
sq_SendDestroyPacketPassiveObject(obj);
|
||
break;
|
||
case SKILL_VAGABOND_RAPIDSTEP://一花渡江
|
||
switch(subtype){
|
||
case 1: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
}
|
||
break;
|
||
case SKILL_VAGABOND_REVOLVINGSWORD://輪回劍
|
||
break;
|
||
case SKILL_VAGABOND_SOARCUT://櫻落斬
|
||
break;
|
||
case SKILL_VAGABOND_THREESIDE://三連斬
|
||
switch(subtype){
|
||
case 1: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
case 2: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
}
|
||
break;
|
||
case SKILL_VAGABOND_ZWEIVOLTAGEEX://嘯空十字斬
|
||
switch(subtype){
|
||
case 1:
|
||
case 2:
|
||
switch(state){
|
||
case 20: obj.addSetStatePacket(21, null, STATE_PRIORITY_AUTO, false, ""); break;
|
||
case 22:
|
||
if(subtype == 2){
|
||
local size = sqrChr.getVar("zwei_tar").get_obj_vector_size();
|
||
if(size > 0){
|
||
for(local i = 0; i < size; i++){
|
||
local targetObj = sqrChr.getVar("zwei_tar").get_obj_vector(i);
|
||
if(targetObj){
|
||
local activeObj = sq_GetCNRDObjectToActiveObject(targetObj);
|
||
CNSquirrelAppendage.sq_RemoveAppendage(activeObj, "character/atswordman/3_vagabond/zweivoltageex/ap_zweivoltageex.nut");
|
||
local totalDamage = obj.getVar("custom").getInt(10);
|
||
cearteSkillPassiveObj_AtSwordMan_bykk(obj, activeObj, PASSIVEOBJECT_BYKK_VAGABOND, 0, 0, sq_GetObjectHeight(activeObj) / 2, obj.getDirection(), 3, SKILL_VAGABOND_ZWEIVOLTAGEEX, 3, totalDamage, 0, 0, 0, 0, 0, 0, 0, 0);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
obj.addSetStatePacket(23, null, STATE_PRIORITY_AUTO, false, "");
|
||
break;
|
||
case 23:
|
||
local size = sqrChr.getVar("zwei_tar").get_obj_vector_size();
|
||
if(size > 0){
|
||
for(local i = 0; i < size; i++){
|
||
local targetObj = sqrChr.getVar("zwei_tar").get_obj_vector(i);
|
||
if(targetObj){
|
||
local activeObj = sq_GetCNRDObjectToActiveObject(targetObj);
|
||
CNSquirrelAppendage.sq_RemoveAppendage(activeObj, "character/atswordman/3_vagabond/zweivoltageex/ap_zweivoltageex.nut");
|
||
}
|
||
}
|
||
}
|
||
sq_SendDestroyPacketPassiveObject(obj);
|
||
break;
|
||
}
|
||
break;
|
||
case 3: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
}
|
||
break;
|
||
}
|
||
break;
|
||
case 4:
|
||
switch(skillIndex){
|
||
case SKILL_DARKEMPLER_BLACKMIRROR://魔鏡幻影陣
|
||
switch(subtype){
|
||
case 2:
|
||
switch(state){
|
||
case 20: obj.addSetStatePacket(21, null, STATE_PRIORITY_AUTO, false, ""); break;
|
||
case 22: obj.addSetStatePacket(21, null, STATE_PRIORITY_AUTO, false, ""); break;
|
||
case 23: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
}
|
||
break;
|
||
}
|
||
break;
|
||
case SKILL_DARKEMPLER_BUCKSHOT://釋魂飛彈
|
||
switch(subtype){
|
||
case 1:
|
||
switch(state){
|
||
case 22: sq_SendDestroyPacketPassiveObject(obj);
|
||
}
|
||
break;
|
||
case 3: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
}
|
||
break;
|
||
case SKILL_DARKEMPLER_DEADLYCAPE://暗影囚殺
|
||
switch(subtype){
|
||
case 1:
|
||
switch(state){
|
||
case 20: obj.addSetStatePacket(21, null, STATE_PRIORITY_AUTO, false, ""); break;
|
||
case 22:
|
||
case 23:
|
||
sq_SendDestroyPacketPassiveObject(obj);
|
||
break;
|
||
}
|
||
break;
|
||
case 2: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
}
|
||
break;
|
||
case SKILL_DARKEMPLER_DESTROYER://暗影盛宴
|
||
switch(subtype){
|
||
case 1: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
case 2:
|
||
switch(state){
|
||
case 20:
|
||
case 21:
|
||
obj.addSetStatePacket(state + 1, null, STATE_PRIORITY_AUTO, false, "");
|
||
break;
|
||
case 22: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
}
|
||
}
|
||
break;
|
||
case SKILL_DARKEMPLER_DEUSEXRAY://天罰死光
|
||
switch(subtype){
|
||
case 1:
|
||
switch(state){
|
||
case 20:
|
||
case 21:
|
||
obj.addSetStatePacket(state + 1, null, STATE_PRIORITY_AUTO, false, "");
|
||
break;
|
||
case 22: obj.addSetStatePacket(21, null, STATE_PRIORITY_AUTO, false, ""); break;
|
||
case 23: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
}
|
||
break;
|
||
case 2: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
case 3: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
}
|
||
break;
|
||
case SKILL_DARKEMPLER_DOOMSDAY://末日殺戮
|
||
switch(subtype){
|
||
case 1:
|
||
local hitMax = obj.getVar("custom").getInt(10);
|
||
obj.setTimeEvent(1,80,hitMax - 1, true);
|
||
break;
|
||
case 2:
|
||
switch(state){
|
||
case 20: obj.addSetStatePacket(21, null, STATE_PRIORITY_AUTO, false, ""); break;
|
||
case 22: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
}
|
||
break;
|
||
case 3:
|
||
if(state == 20) obj.addSetStatePacket(21, null, STATE_PRIORITY_AUTO, false, ""); break;
|
||
break;
|
||
}
|
||
break;
|
||
case SKILL_DARKEMPLER_EVOLVE://汲魂之力
|
||
break;
|
||
case SKILL_DARKEMPLER_HIDDENBLADE://影刃
|
||
break;
|
||
case SKILL_DARKEMPLER_IMMOLATION://死亡獻祭
|
||
switch(subtype){
|
||
case 1: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
case 2:
|
||
switch(state){
|
||
case 20: obj.addSetStatePacket(21, null, STATE_PRIORITY_AUTO, false, ""); break;
|
||
case 22: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
}
|
||
break;
|
||
case 3:
|
||
switch(state){
|
||
case 20: obj.addSetStatePacket(21, null, STATE_PRIORITY_AUTO, false, ""); break;
|
||
case 21: obj.addSetStatePacket(22, null, STATE_PRIORITY_AUTO, false, ""); break;
|
||
case 22: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
}
|
||
break;
|
||
}
|
||
break;
|
||
case SKILL_DARKEMPLER_JIHAD://天罰之劍
|
||
switch(subtype){
|
||
case 1:
|
||
switch(state){
|
||
case 20:
|
||
case 21:
|
||
obj.addSetStatePacket(state + 1, null, STATE_PRIORITY_AUTO, false, "");
|
||
break;
|
||
case 22: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
}
|
||
break;
|
||
case 2:
|
||
switch(state){
|
||
case 20: obj.addSetStatePacket(state + 1, null, STATE_PRIORITY_AUTO, false, ""); break;
|
||
case 21: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
}
|
||
break;
|
||
}
|
||
break;
|
||
case SKILL_DARKEMPLER_LACERTHORNS://暗影綻放:死亡荊棘
|
||
switch(subtype){
|
||
case 1: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
case 2: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
}
|
||
break;
|
||
case SKILL_DARKEMPLER_LOYALSLAVE://靈魂傀儡
|
||
switch(subtype){
|
||
case 1:
|
||
switch(state){
|
||
case 20: obj.addSetStatePacket(21, null, STATE_PRIORITY_AUTO, false, ""); break;
|
||
case 22:
|
||
local targetObj = obj.getVar().get_obj_vector(0);
|
||
if(targetObj){
|
||
local activeObj = sq_GetCNRDObjectToActiveObject(targetObj);
|
||
local timer = activeObj.getVar("loyalslave").get_ct_vector(0);
|
||
timer.Reset();
|
||
timer.Start(10000,0);
|
||
activeObj.getVar("loyalslave").setBool(0, false);
|
||
}
|
||
sq_SendDestroyPacketPassiveObject(obj);
|
||
break;
|
||
}
|
||
break;
|
||
}
|
||
break;
|
||
case SKILL_DARKEMPLER_MADNESS://釋魂狂怒
|
||
switch(subtype){
|
||
case 1: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
case 2:
|
||
switch(state){
|
||
case 20: obj.addSetStatePacket(21, null, STATE_PRIORITY_AUTO, false, ""); break;
|
||
case 21: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
}
|
||
break;
|
||
case 3:
|
||
switch(state){
|
||
case 20: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
}
|
||
break;
|
||
}
|
||
break;
|
||
case SKILL_DARKEMPLER_PUNISHMENT://神罰·滅世裁決
|
||
switch(subtype){
|
||
case 1: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
case 2: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
case 3: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
}
|
||
break;
|
||
case SKILL_DARKEMPLER_SCAFFOLD://暗影禁錮
|
||
switch(subtype){
|
||
case 1:
|
||
case 2:
|
||
if(state == 21) sq_SendDestroyPacketPassiveObject(obj);
|
||
break;
|
||
}
|
||
break;
|
||
case SKILL_DARKEMPLER_SHADOWBINDING://暗影纏襲
|
||
switch(subtype){
|
||
case 1:
|
||
switch(state){
|
||
case 20: obj.addSetStatePacket(21, null, STATE_PRIORITY_AUTO, false, ""); break;
|
||
case 22:
|
||
local size = obj.getVar("targetObj").get_obj_vector_size();
|
||
for(local i = 0; i < size; i++){
|
||
local activeObj = sq_GetCNRDObjectToActiveObject(obj.getVar("targetObj").get_obj_vector(i));
|
||
if(activeObj){
|
||
CNSquirrelAppendage.sq_RemoveAppendage(activeObj, "character/atswordman/4_darktempler/shadowbinding/ap_shadowbinding.nut");
|
||
}
|
||
}
|
||
sq_SendDestroyPacketPassiveObject(obj);
|
||
break;
|
||
}
|
||
break;
|
||
}
|
||
break;
|
||
case SKILL_DARKEMPLER_SHADOWHARVEST://暗影旋渦
|
||
switch(subtype){
|
||
case 1:
|
||
switch(state){
|
||
case 20: obj.addSetStatePacket(21, null, STATE_PRIORITY_AUTO, false, ""); break;
|
||
case 21: obj.addSetStatePacket(22, null, STATE_PRIORITY_AUTO, false, ""); break;
|
||
case 23:
|
||
if(obj.getVar("custom").getInt(10) > 0){obj.addSetStatePacket(24, null, STATE_PRIORITY_AUTO, false, "");break;}
|
||
sq_SendDestroyPacketPassiveObject(obj);
|
||
break;
|
||
}
|
||
break;
|
||
case 2:
|
||
switch(state){
|
||
case 20: obj.addSetStatePacket(21, null, STATE_PRIORITY_AUTO, false, ""); break;
|
||
case 22: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
}
|
||
break;
|
||
}
|
||
break;
|
||
case SKILL_DARKEMPLER_SHADOWLANCER://暗影之矛
|
||
sq_SendDestroyPacketPassiveObject(obj);
|
||
break;
|
||
case SKILL_DARKEMPLER_SHADOWPUPPET://魅影暗魂斬
|
||
switch(subtype){
|
||
case 2:
|
||
switch(state){
|
||
case 20: obj.addSetStatePacket(21, null, STATE_PRIORITY_AUTO, false, ""); break;
|
||
case 21: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
}
|
||
break;
|
||
}
|
||
break;
|
||
case SKILL_DARKEMPLER_SOULDRAIN://靈魂攝取
|
||
switch(subtype){
|
||
case 1:
|
||
switch(state){
|
||
case 20: obj.addSetStatePacket(21, null, STATE_PRIORITY_AUTO, false, ""); break;
|
||
case 22: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
}
|
||
break;
|
||
case 2:
|
||
case 3:
|
||
case 4:
|
||
sq_SendDestroyPacketPassiveObject(obj);
|
||
break;
|
||
}
|
||
break;
|
||
case SKILL_DARKEMPLER_STARFALL://魔影轟殺
|
||
switch(subtype){
|
||
case 1:
|
||
switch(state){
|
||
case 21: sq_SendDestroyPacketPassiveObject(obj); break;
|
||
}
|
||
break;
|
||
}
|
||
break;
|
||
}
|
||
break;
|
||
}
|
||
}
|