Rindro-Sqr/user/114.66.51.249/3_atswordman_6.c

3325 lines
130 KiB
C

function checkExecutableSkill_Darkstrike_bykk(obj)
{
if (!obj) return false;
if(obj.getVar("darkstrike_tar").get_obj_vector_size() > 0) return false;
local isUse = obj.sq_IsUseSkill(SKILL_DEMONSLAYER_DARKSTRIKE);
if (isUse){
obj.getVar("Darkstrike").setBool(0, false);
obj.getVar("darkstrike_bool").setBool(0, false);
obj.getVar("Darkstrike_Target").clear_obj_vector();
obj.sq_IntVectClear();
if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_UP, ENUM_SUBKEY_TYPE_ALL)) obj.sq_IntVectPush(1);
else if(obj.sq_GetState() == 6) obj.sq_IntVectPush(2);
else obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(SKILL_DEMONSLAYER_DARKSTRIKE, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_Darkstrike_bykk(obj)
{
if (!obj) return false;
if(sq_GetIntData(obj, SKILL_DEMONSLAYER_DARKSTRIKE, 8) > 0 || DARKSTRIKE_STONE > 0) return false;
return true;
}
function onSetState_Darkstrike_bykk(obj, state, datas, isResetTimer)
{
if(!obj) return;
local subState = obj.sq_GetVectorData(datas, 0);
obj.setSkillSubState(subState);
obj.sq_StopMove();
obj.sq_ZStop();
switch(subState){
case 0:
obj.sq_SetCurrentAnimation(ANIMATION_DEMONSLAYER_DARKSTRIKELANDATTAK_BODY);
break;
case 1:
obj.sq_SetCurrentAnimation(ANIMATION_DEMONSLAYER_DARKSTRIKEJUMP);
obj.sq_PlaySound("SUMMONDAIMUS_JUMP");
break;
case 2:
obj.sq_SetCurrentAnimation(ANIMATION_DEMONSLAYER_DARKSTRIKEFLYING);
obj.getVar("darkstrike_move").setInt(10, sq_GetXPos(obj));
obj.getVar("darkstrike_move").setInt(11, sq_GetZPos(obj));
obj.setTimeEvent(2, 5, 60, false);
break;
case 3:
obj.sq_SetCurrentAnimation(ANIMATION_DEMONSLAYER_DARKSTRIKELANDING);
obj.sq_PlaySound("SUMMONDAIMUS_LANDING");
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/atdarkstrike/slash_floor_dust.ani", 0, 1, 0);
local currentAni = obj.getCurrentAnimation();
obj.setTimeEvent(1, currentAni.getDelaySum(false) / 11, 10, false);
if(obj.getVar("darkstrike_bool").getBool(0) == false){
local skill_level = sq_GetSkillLevel(obj, SKILL_DEMONSLAYER_DARKSTRIKE);
local hitMax = sq_GetLevelData(obj, SKILL_DEMONSLAYER_DARKSTRIKE, 0, skill_level);
local hitTime = sq_GetIntData(obj, SKILL_DEMONSLAYER_DARKSTRIKE, 2);
local sizeRate = sq_GetIntData(obj, SKILL_DEMONSLAYER_DARKSTRIKE, 3);
local totalDamage = sq_GetLevelData(obj, SKILL_DEMONSLAYER_DARKSTRIKE, 1, skill_level);
local totalDamage2 = sq_GetLevelData(obj, SKILL_DEMONSLAYER_DARKSTRIKE, 2, skill_level);
local sub = sq_GetIntData(obj, SKILL_DEMONSLAYER_DARKSTRIKE, 6);
local damageRate = (totalDamage2.tofloat() / totalDamage.tofloat() * 100.0).tointeger();
cearteSkillPassiveObj_AtSwordMan_bykk(obj, obj, PASSIVEOBJECT_BYKK_DEMONSLAYER, -175, -1, 70, obj.getDirection(), 2, SKILL_DEMONSLAYER_DARKSTRIKE, 1, totalDamage, hitMax, hitTime, sizeRate, sub, damageRate, 0, 0, 1);
}
break;
case 4:
obj.sq_SetCurrentAnimation(ANIMATION_DEMONSLAYER_DARKSTRIKEATTACK);
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
obj.sq_PlaySound("SUMMONDAIMUS_SWISH");
break;
}
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
if(subState == 0 || subState == 4){
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_DEMONSLAYER_DARKSTRIKE, -1, 3, 1.0) + 100;
//if(sq_GetIntData(obj, SKILL_DEMONSLAYER_BLOODDANCE, 5) > 0 || BLOODDANCE_STONE > 0) totalDamage = totalDamage * 225 / 100;
if(subState == 0) sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 99));
else sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 100));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
}
}
function onEndCurrentAni_Darkstrike_bykk(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
case 3:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_IGNORE_FORCE, true);
break;
}
}
function onTimeEvent_Darkstrike_bykk(obj, timeEventIndex, timeEventCount)
{
switch(timeEventIndex){
case 1:
local offsetX = sq_GetDistancePos(sq_GetXPos(obj), obj.getDirection(), 9);
sq_setCurrentAxisPos(obj, 0, offsetX);
break;
case 2:
local baseX = obj.getVar("darkstrike_move").getInt(10);
local moveX = sq_GetIntData(obj, SKILL_DEMONSLAYER_DARKSTRIKE, 0) / 60;
local moveZ = sq_GetAccel(obj.getVar("darkstrike_move").getInt(11), 100, timeEventCount, 30, true);
if(timeEventCount > 30) moveZ = sq_GetAccel(100, 0, timeEventCount - 30, 30, false);
local offsetX = sq_GetDistancePos(baseX, obj.getDirection(), moveX * timeEventCount);
if(obj.isMovablePos(offsetX, sq_GetYPos(obj))) sq_setCurrentAxisPos(obj, 0, offsetX);
sq_setCurrentAxisPos(obj, 2, moveZ);
if(timeEventCount == 60){
obj.sq_IntVectClear();
obj.sq_IntVectPush(3);
obj.sq_AddSetStatePacket(SKILL_DEMONSLAYER_DARKSTRIKE, STATE_PRIORITY_IGNORE_FORCE, true);
}
break;
}
}
function onAttack_Darkstrike_bykk(obj, damager, boundingBox, isStuck)
{
if(!obj || isStuck) return false;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
if(damager.isObjectType(OBJECTTYPE_ACTIVE)){
sq_AddDrawOnlyAniFromParent(damager, "character/swordman/effect/animation/atdarkstrike/hit1.ani", 0, 0, sq_GetCenterZPos(boundingBox));
if(!obj.getVar("Darkstrike_Target").is_obj_vector(damager)) obj.getVar("Darkstrike_Target").push_obj_vector(damager);
}
break;
case 4:
if(damager.isObjectType(OBJECTTYPE_ACTIVE)){
sq_AddDrawOnlyAniFromParent(damager, "character/swordman/effect/animation/atdarkstrike/hit1.ani", 0, 0, sq_GetCenterZPos(boundingBox));
if(obj.getVar("darkstrike_bool").getBool(0) == false){
obj.getVar("darkstrike_bool").setBool(0, true);
local skill_level = sq_GetSkillLevel(obj, SKILL_DEMONSLAYER_DARKSTRIKE);
local hitMax = sq_GetLevelData(obj, SKILL_DEMONSLAYER_DARKSTRIKE, 0, skill_level);
local hitTime = sq_GetIntData(obj, SKILL_DEMONSLAYER_DARKSTRIKE, 2);
local sizeRate = sq_GetIntData(obj, SKILL_DEMONSLAYER_DARKSTRIKE, 3);
local totalDamage = sq_GetLevelData(obj, SKILL_DEMONSLAYER_DARKSTRIKE, 1, skill_level);
local totalDamage2 = sq_GetLevelData(obj, SKILL_DEMONSLAYER_DARKSTRIKE, 2, skill_level);
local sub = sq_GetIntData(obj, SKILL_DEMONSLAYER_DARKSTRIKE, 6);
local damageRate = (totalDamage2.tofloat() / totalDamage.tofloat() * 100.0).tointeger();
local id = sq_GetObjectId(damager);
cearteSkillPassiveObj_AtSwordMan_bykk(obj, damager, PASSIVEOBJECT_BYKK_DEMONSLAYER, 0, -1, sq_GetZPos(damager) + sq_GetObjectHeight(damager) / 2, obj.getDirection(), 2, SKILL_DEMONSLAYER_DARKSTRIKE, 1, totalDamage, hitMax, hitTime, sizeRate, sub, damageRate, id, 0, 1);
}
}
break;
}
}
function onEnterFrame_Darkstrike_bykk(obj, frameIndex)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
switch(frameIndex){
case 4:
obj.sq_PlaySound("CLAWBLADE_01");
if(obj.isMyControlObject()){
sq_flashScreen(obj, 1, 30, 40, 63, sq_RGB(255, 255, 255), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
sq_SetMyShake(obj, 3, 200);
}
break;
case 6:
//`MakeForceDaimus` 175 -1 70
local skill_level = sq_GetSkillLevel(obj, SKILL_DEMONSLAYER_DARKSTRIKE);
local hitMax = sq_GetLevelData(obj, SKILL_DEMONSLAYER_DARKSTRIKE, 0, skill_level);
local hitTime = sq_GetIntData(obj, SKILL_DEMONSLAYER_DARKSTRIKE, 2);
local sizeRate = sq_GetIntData(obj, SKILL_DEMONSLAYER_DARKSTRIKE, 3);
local totalDamage = sq_GetLevelData(obj, SKILL_DEMONSLAYER_DARKSTRIKE, 1, skill_level);
local totalDamage2 = sq_GetLevelData(obj, SKILL_DEMONSLAYER_DARKSTRIKE, 2, skill_level);
local sub = sq_GetIntData(obj, SKILL_DEMONSLAYER_DARKSTRIKE, 6);
local damageRate = (totalDamage2.tofloat() / totalDamage.tofloat() * 100.0).tointeger();
local offsetX = 175, offsetZ = 70, id = 0, offsetObj = obj;
if(obj.getVar("Darkstrike_Target").get_obj_vector_size() > 0){
local targetObj = obj.getVar("Darkstrike_Target").get_obj_vector(0);
if(targetObj){
offsetX = 0; offsetZ = sq_GetZPos(targetObj) + sq_GetObjectHeight(targetObj) / 2; offsetObj = targetObj;
id = sq_GetObjectId(targetObj);
}
}
cearteSkillPassiveObj_AtSwordMan_bykk(obj, offsetObj, PASSIVEOBJECT_BYKK_DEMONSLAYER, offsetX, -1, offsetZ, obj.getDirection(), 2, SKILL_DEMONSLAYER_DARKSTRIKE, 1, totalDamage, hitMax, hitTime, sizeRate, sub, damageRate, id, 0, 1);
break;
}
break;
}
}
function onEndState_Darkstrike_bykk(obj, newState)
{
if(!obj) return;
}
function onProc_Darkstrike_bykk(obj)
{
if(!obj) return;
}
function onKeyFrameFlag_Darkstrike_bykk(obj, flagIndex)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 1:
if(flagIndex == 1){
obj.sq_IntVectClear();
obj.sq_IntVectPush(2);
obj.sq_AddSetStatePacket(SKILL_DEMONSLAYER_DARKSTRIKE, STATE_PRIORITY_IGNORE_FORCE, true);
}
break;
}
}
function onProcCon_Darkstrike_bykk(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 2:
if(obj.getVar("Darkstrike").getBool(0) == false){
obj.setSkillCommandEnable(SKILL_DEMONSLAYER_DARKSTRIKE, true);
local EnterSkill = obj.sq_IsEnterSkill(SKILL_DEMONSLAYER_DARKSTRIKE);
if(EnterSkill != -1){
obj.getVar("Darkstrike").setBool(0, true);
obj.sq_IntVectClear();
obj.sq_IntVectPush(4);
obj.sq_AddSetStatePacket(SKILL_DEMONSLAYER_DARKSTRIKE, STATE_PRIORITY_IGNORE_FORCE, true);
}
}
break;
}
}
function darkStrike_Attack(obj, damager)
{
if(sq_GetIntData(obj, SKILL_DEMONSLAYER_DARKSTRIKE, 8) < 1 && DARKSTRIKE_STONE < 1) return;
if(obj.getVar("darkstrike_tar").get_obj_vector_size() > 0){
if(obj.getVar("darkstrike_tar").is_obj_vector(damager)) obj.getVar("darkstrike_tar").push_obj_vector(damager);
}
else{
obj.getVar("darkstrike_tar").clear_obj_vector();
obj.getVar("darkstrike_tar").push_obj_vector(damager);
}
if(obj.getVar("darkStrike_Attack").get_obj_vector_size() < 1){
cearteSkillPassiveObj_AtSwordMan_bykk(obj, obj, PASSIVEOBJECT_BYKK_DEMONSLAYER, 0, -1, 0, obj.getDirection(), 2, SKILL_DEMONSLAYER_DARKSTRIKE, 2, 100, 0, 0, 0, 0, 0, 0, 0, 0);
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function checkExecutableSkill_Phnom_bykk(obj)
{
if (!obj) return false;
local isUse = obj.sq_IsUseSkill(SKILL_DEMONSLAYER_PHNOM);
if (isUse){
obj.sq_IntVectClear();
if(sq_GetIntData(obj, SKILL_DEMONSLAYER_PHNOM, 8) > 0 || PHNUM_STONE > 0) obj.sq_IntVectPush(4);
else obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(SKILL_DEMONSLAYER_PHNOM, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_Phnom_bykk(obj)
{
if (!obj) return false;
if(obj.getHp() < sq_GetLevelData(obj, SKILL_DEMONSLAYER_PHNOM, 0, sq_GetSkillLevel(obj, SKILL_DEMONSLAYER_PHNOM))) return false;
local state = obj.sq_GetState();
if(state == 0 || state == 108 || state == 14) return true;
return false;
}
function onSetState_Phnom_bykk(obj, state, datas, isResetTimer)
{
if(!obj) return;
local subState = obj.sq_GetVectorData(datas, 0);
obj.setSkillSubState(subState);
obj.sq_StopMove();
switch(subState){
case 0:
obj.sq_SetCurrentAnimation(ANIMATION_DEMONSLAYER_PHNOMCAST);
sq_SetCustomDamageType(obj, true, 1);
break;
case 1:
obj.sq_SetCurrentAnimation(ANIMATION_DEMONSLAYER_PHNOMKELKUS);
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_DEMONSLAYER_PHNOM, -1, 1, 1.0) + 100;
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 107));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
break;
case 2:
obj.sq_SetCurrentAnimation(ANIMATION_DEMONSLAYER_PHNOMDAIMUS);
break;
case 3:
obj.stopTimeEvent(4);
obj.sq_SetCurrentAnimation(ANIMATION_DEMONSLAYER_PHNOMEXPLOSION);
break;
case 4:
obj.sq_SetCurrentAnimation(ANIMATION_DEMONSLAYER_PHNOMFIXINGCAST);
sq_SetCustomDamageType(obj, true, 1);
break;
}
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED,SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
if(subState == 1){
local currentAni = obj.getCurrentAnimation();
local delaySum = currentAni.getDelaySum(0, 7);
obj.setTimeEvent(1, delaySum, 1, false);
}
}
function onEndCurrentAni_Phnom_bykk(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
case 1:
obj.sq_IntVectClear();
obj.sq_IntVectPush(subState + 1);
obj.sq_AddSetStatePacket(SKILL_DEMONSLAYER_PHNOM, STATE_PRIORITY_IGNORE_FORCE, true);
break;
case 3:
case 4:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_IGNORE_FORCE, true);
break;
}
}
function onAttack_Phnom_bykk(obj, damager, boundingBox, isStuck)
{
if(!obj || isStuck) return false;
}
function onTimeEvent_Phnom_bykk(obj, timeEventIndex, timeEventCount)
{
if(!obj) return;
switch(timeEventIndex){
case 1:
local currentAni = obj.getCurrentAnimation();
local delaySum = currentAni.getDelaySum(8, 31);
local hitMax = sq_GetIntData(obj, SKILL_DEMONSLAYER_PHNOM, 1);
if(sq_GetIntData(obj, SKILL_DEMONSLAYER_PHNOM, 4) > 0){
hitMax = hitMax + 7;
}
obj.setTimeEvent(2, delaySum / hitMax, hitMax -1, false);
break;
case 2:
obj.resetHitObjectList();
break;
case 3:
obj.sq_IntVectClear();
obj.sq_IntVectPush(3);
obj.sq_AddSetStatePacket(SKILL_DEMONSLAYER_PHNOM, STATE_PRIORITY_IGNORE_FORCE, true);
break;
case 4:
local pooledObj = sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/atphnom/daimus1_phnom_daimus.ani", 0, -1, 0);
local speedRate = obj.getVar("phnomSet").getInt(10);
local pAni = pooledObj.getCurrentAnimation();
pAni.setSpeedRate(speedRate.tofloat());
break;
}
}
function onEnterFrame_Phnom_bykk(obj, frameIndex)
{
if(!obj) return;
}
function onEndState_Phnom_bykk(obj, newState)
{
if(!obj) return;
if(newState != SKILL_DEMONSLAYER_PHNOM){
sq_SetCustomDamageType(obj, true, 0);
}
}
function onProc_Phnom_bykk(obj)
{
if(!obj) return;
}
function onKeyFrameFlag_Phnom_bykk(obj, flagIndex)
{
if (!obj) return false;
switch(flagIndex){
case 1000:
//`SUMMONDAIMUS_APPEAR`
local hitMax = sq_GetIntData(obj, SKILL_DEMONSLAYER_PHNOM, 0);
local currentAni = obj.getCurrentAnimation();
local delay = currentAni.getDelaySum(37, 37);
local speedRate = 6000 / delay;
obj.getVar("phnomSet").setInt(10, speedRate);
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_DEMONSLAYER_PHNOM, -1, 2, 1.0) + 100;
local totalDamage2 = obj.sq_GetBonusRateWithPassive(SKILL_DEMONSLAYER_PHNOM, -1, 4, 1.0) + 100;
local damageRate = (totalDamage2.tofloat() / totalDamage.tofloat() * 100.0).tointeger();
local sizeRate = 100;
if(sq_GetIntData(obj, SKILL_DEMONSLAYER_PHNOM, 4) > 0){
sizeRate = sizeRate + 30;
hitMax = hitMax + 3;
}
obj.setTimeEvent(3, delay / 30 * 200 * hitMax, 1, false);
obj.setTimeEvent(4, delay / 30 * 200, hitMax, false);
cearteSkillPassiveObj_AtSwordMan_bykk(obj, obj, PASSIVEOBJECT_BYKK_DEMONSLAYER, 0, 1, 70, obj.getDirection(), 2, SKILL_DEMONSLAYER_PHNOM, 1, totalDamage, hitMax, sizeRate, damageRate, speedRate, 0, 0, 0, 1);
break;
}
return true;
}
function onProcCon_Phnom_bykk(obj)
{
if(!obj) return;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function checkExecutableSkill_Blooddemonsword_bykk(obj)
{
if (!obj) return false;
local isUse = obj.sq_IsUseSkill(SKILL_DEMONSLAYER_BLOODDEMONSWORD);
if (isUse){
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(SKILL_DEMONSLAYER_BLOODDEMONSWORD, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_Blooddemonsword_bykk(obj)
{
if (!obj) return false;
return true;
}
function onSetState_Blooddemonsword_bykk(obj, state, datas, isResetTimer)
{
if(!obj) return;
local subState = obj.sq_GetVectorData(datas, 0);
obj.setSkillSubState(subState);
obj.sq_StopMove();
switch(subState){
case 0:
obj.sq_PlaySound("DL_QUICKPUNTO");
//BodyCalldaimus(obj, "blooddemonswordcast_body");
obj.sq_SetCurrentAnimation(ANIMATION_DEMONSLAYER_BLOODDEMONSWORDCAST_BODY);
// local dago = obj.sq_CreateCNRDAnimation("effect/animation/atblooddemonsword/daimus/daimuscast_body.ani");
// obj.sq_AddStateLayerAnimation(-1,dago, 0, 0);
break;
case 1:
//BodyCalldaimus(obj, "blooddemonswordhit_body");
obj.sq_PlaySound("SW_MOON_LIGHT_SLASH_05");
obj.sq_SetCurrentAnimation(ANIMATION_DEMONSLAYER_BLOODDEMONSWORDHIT_BODY);
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_DEMONSLAYER_BLOODDEMONSWORD, -1, 0, 1.0) + 100;
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 110));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
local appath = [
"effect/animation/atblooddemonsword/daimus/daimushitback_00.ani",
"effect/animation/atblooddemonsword/hitback_dust.ani",
"effect/animation/atblooddemonsword/hitfront_07.ani",
"effect/animation/atblooddemonsword/daimus/daimushit_body.ani"
];
foreach(path in appath)
obj.sq_AddStateLayerAnimation(-1,obj.sq_CreateCNRDAnimation(path), 0, 0);
break;
}
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED,SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
}
function onEndCurrentAni_Blooddemonsword_bykk(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
obj.sq_IntVectClear();
obj.sq_IntVectPush(1);
obj.sq_AddSetStatePacket(SKILL_DEMONSLAYER_BLOODDEMONSWORD, STATE_PRIORITY_IGNORE_FORCE, true);
break;
case 1:
local aniPath = "character/swordman/effect/animation/atblooddemonsword/daimus/daimusdisappear_body.ani";
sq_AddDrawOnlyAniFromParent(obj, aniPath, 0, 0, 0);
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_IGNORE_FORCE, true);
break;
}
}
function onAttack_Blooddemonsword_bykk(obj, damager, boundingBox, isStuck)
{
if(!obj || isStuck) return false;
}
function onEnterFrame_Blooddemonsword_bykk(obj, frameIndex)
{
if(!obj || !obj.isMyControlObject()) return;
local subState = obj.getSkillSubState();
switch(subState){
case 1:
switch(frameIndex){
case 1:
sq_SetMyShake(obj,7,200);
sq_flashScreen(obj,0,120,400,204,sq_RGB(255,255,255),GRAPHICEFFECT_NONE,ENUM_DRAWLAYER_CLOSEBACK);
break;
}
}
}
function onEndState_Blooddemonsword_bykk(obj, newState)
{
if(!obj) return;
}
function onProc_Blooddemonsword_bykk(obj)
{
if(!obj) return;
}
function onKeyFrameFlag_Blooddemonsword_bykk(obj, flagIndex)
{
if (!obj) return;
}
function onProcCon_Blooddemonsword_bykk(obj)
{
if(!obj) return;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function checkExecutableSkill_Gigaslash_bykk(obj)
{
if (!obj) return false;
local isUse = obj.sq_IsUseSkill(SKILL_DEMONSLAYER_GIGASLASH);
if (isUse){
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(SKILL_DEMONSLAYER_GIGASLASH, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_Gigaslash_bykk(obj)
{
if (!obj) return false;
return true;
}
function onSetState_Gigaslash_bykk(obj, state, datas, isResetTimer)
{
if(!obj) return;
local subState = obj.sq_GetVectorData(datas, 0);
obj.setSkillSubState(subState);
obj.sq_StopMove();
obj.sq_ZStop();
switch(subState){
case 0:
obj.sq_SetCurrentAnimation(ANIMATION_DEMONSLAYER_GIGASLASHREADY);
obj.getVar("gigaslashmove").setInt(11, sq_GetXPos(obj));
obj.getVar("gigaslashBool").setBool(0, false);
break;
case 1:
obj.sq_SetCurrentAnimation(ANIMATION_DEMONSLAYER_GIGASLASHSTART);
obj.sq_PlaySound("SW_GIGASLASH");
obj.sq_PlaySound("GIGASLASH_JUMP");
sq_flashScreen(obj, 200, 550, 100, 102, sq_RGB(0, 0, 0), GRAPHICEFFECT_NONE,ENUM_DRAWLAYER_BOTTOM);
break;
case 2:
obj.sq_SetCurrentAnimation(ANIMATION_DEMONSLAYER_GIGASLASHBLOW);
obj.sq_PlaySound("GIGASLASH_SMASH");
break;
}
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED,SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
switch(subState){
case 1:
local currentAni = obj.getCurrentAnimation();
local delaySum = currentAni.getDelaySum(0, 3);
obj.setTimeEvent(1, delaySum / 10, 10, true);
obj.setTimeEvent(3, delaySum, 1, false);
break;
}
}
function onEndCurrentAni_Gigaslash_bykk(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
case 1:
obj.sq_IntVectClear();
obj.sq_IntVectPush(subState + 1);
obj.sq_AddSetStatePacket(SKILL_DEMONSLAYER_GIGASLASH, STATE_PRIORITY_IGNORE_FORCE, true);
break;
case 2:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_IGNORE_FORCE, true);
break;
}
}
function onAttack_Gigaslash_bykk(obj, damager, boundingBox, isStuck)
{
if(!obj || isStuck) return false;
//Calldaimus_onAttack(obj,damager, boundingBox, isStuck);
}
function onEnterFrame_Gigaslash_bykk(obj, frameIndex)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 2:
if(frameIndex == 1){
sq_SetMyShake(obj, 8, 200);
sq_flashScreen(obj, 40, 100, 0, 155, sq_RGB(255, 255, 255), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
}
else if(frameIndex == 2){
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_DEMONSLAYER_GIGASLASH, -1, 0, 1.0) + 100;
local xpos = 0;
if(obj.getVar("gigaslashBool").getBool(0)) xpos = 30;
cearteSkillPassiveObj_AtSwordMan_bykk(obj, obj, PASSIVEOBJECT_BYKK_DEMONSLAYER, xpos, 0, 0, obj.getDirection(), 2, SKILL_DEMONSLAYER_GIGASLASH, 1, totalDamage, 0, 0, 0, 0, 0, 0, 0, 1);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/atgigaslash/atgigaslash_blow_front_crack02.ani", 0, 1, 0);
createOnlyDrawObject_AtSwordMan_bykk(obj,"character/swordman/effect/animation/atgigaslash/screeneffect/atgigaslash_screen01.ani",true,obj.getDirection(),sq_GetXPos(obj),sq_GetYPos(obj),sq_GetZPos(obj),ENUM_DRAWLAYER_BOTTOM);
}
break;
}
}
function onEndState_Gigaslash_bykk(obj, newState)
{
if(!obj) return;
}
function onProc_Gigaslash_bykk(obj)
{
if(!obj) return;
}
function onKeyFrameFlag_Gigaslash_bykk(obj, flagIndex)
{
if (!obj) return;
}
function onTimeEvent_Gigaslash_bykk(obj, timeEventIndex, timeEventCount)
{
switch(timeEventIndex){
case 1:
local z = sq_GetUniformVelocity(0, 180, timeEventCount, 10);
sq_setCurrentAxisPos(obj, 2, z);
if(obj.getVar("gigaslashBool").getBool(0)){
local x = sq_GetUniformVelocity(0, obj.getVar("gigaslashmove").getInt(10) / 2, timeEventCount, 10);
local xpos = sq_GetDistancePos(obj.getVar("gigaslashmove").getInt(11), obj.getDirection(), x);
if(obj.isMovablePos(xpos, sq_GetYPos(obj))) sq_setCurrentAxisPos(obj, 0, xpos);
}
if(timeEventCount >= 10) obj.getVar("gigaslashmove").setInt(11, sq_GetXPos(obj));
break;
case 2:
local z = sq_GetUniformVelocity(180, 0, timeEventCount, 10);
sq_setCurrentAxisPos(obj, 2, z);
if(obj.getVar("gigaslashBool").getBool(0)){
local x = sq_GetUniformVelocity(0, obj.getVar("gigaslashmove").getInt(10) / 2, timeEventCount, 10);
local xpos = sq_GetDistancePos(obj.getVar("gigaslashmove").getInt(11), obj.getDirection(), x);
if(obj.isMovablePos(xpos, sq_GetYPos(obj))) sq_setCurrentAxisPos(obj, 0, xpos);
}
break;
case 3:
local currentAni = obj.getCurrentAnimation();
local delaySum = currentAni.getDelaySum(4, 6);
obj.setTimeEvent(2, delaySum / 10, 10, true);
break;
}
}
function onProcCon_Gigaslash_bykk(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
if(obj.getVar("gigaslashBool").getBool(0) == false){
if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_UP , ENUM_SUBKEY_TYPE_ALL)){
obj.getVar("gigaslashmove").setInt(10, 300);
obj.getVar("gigaslashBool").setBool(0, true);
}
else if((sq_IsKeyDown(OPTION_HOTKEY_MOVE_LEFT , ENUM_SUBKEY_TYPE_ALL) && obj.getDirection() == 0) || (sq_IsKeyDown(OPTION_HOTKEY_MOVE_RIGHT , ENUM_SUBKEY_TYPE_ALL) && obj.getDirection() == 1)){
obj.getVar("gigaslashmove").setInt(10, 200);
obj.getVar("gigaslashBool").setBool(0, true);
}
}
break;
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function checkExecutableSkill_Ultimateblade_bykk(obj)
{
if (!obj) return false;
local isUse = obj.sq_IsUseSkill(SKILL_DEMONSLAYER_ULTIMATEBLADE);
if (isUse){
obj.getVar("Ultimateblade_target").clear_obj_vector();
obj.getVar("Ultimateblade_fixtarget").clear_obj_vector();
obj.getVar("Ultimateblade_bool").setBool(0, false);
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(SKILL_DEMONSLAYER_ULTIMATEBLADE, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_Ultimateblade_bykk(obj)
{
if (!obj) return false;
return true;
}
function onSetState_Ultimateblade_bykk(obj, state, datas, isResetTimer)
{
if(!obj) return;
local subState = obj.sq_GetVectorData(datas, 0);
obj.setSkillSubState(subState);
obj.sq_StopMove();
switch(subState){
case 0://640
obj.sq_SetCurrentAnimation(ANIMATION_DEMONSLAYER_ULTIMATEBLADE_START_GRAB);
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED,SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 111));
local currentAni = obj.getCurrentAnimation();
local delaySum = currentAni.getDelaySum(false);
local speedRate = 64000.0 / delaySum.tofloat();
if(speedRate > 150) speedRate = 150.0;
currentAni.setSpeedRate(speedRate);
local pooledObj = sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/atultimateblade/start/start_grab_clawn02.ani", 0, 0, 0);
local pAni = pooledObj.getCurrentAnimation();
pAni.setSpeedRate(speedRate);
local pooledObj2 = sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/atultimateblade/start/start_grab_floor01.ani", 0, 0, 0);
local pAni2 = pooledObj2.getCurrentAnimation();
pAni2.setSpeedRate(speedRate);
break;
case 1://320
obj.sq_SetCurrentAnimation(ANIMATION_DEMONSLAYER_ULTIMATEBLADE_START_PULL);
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED,SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
local currentAni = obj.getCurrentAnimation();
local delaySum = currentAni.getDelaySum(false);
local speedRate = 32000.0 / delaySum.tofloat();
if(speedRate > 150) speedRate = 150.0;
currentAni.setSpeedRate(speedRate);
local pooledObj = sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/atultimateblade/start/start_pull_floorn01.ani", 0, 0, 0);
local pAni = pooledObj.getCurrentAnimation();
pAni.setSpeedRate(speedRate);
local pooledObj2 = sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/atultimateblade/start/start_pull_clawn02.ani", 0, 0, 0);
local pAni2 = pooledObj2.getCurrentAnimation();
pAni2.setSpeedRate(speedRate);
break;
case 2:
obj.sq_SetCurrentAnimation(ANIMATION_DEMONSLAYER_ULTIMATEBLADE_BASIC_ATTACK01);
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED,SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
local currentAni = obj.getCurrentAnimation();
local delaySum = currentAni.getDelaySum(false);
local speedRate = 24000.0 / delaySum.tofloat();
if(speedRate > 150) speedRate = 150.0;
currentAni.setSpeedRate(speedRate);
local pooledObj = sq_AddDrawOnlyAniFromParent(obj,"character/swordman/effect/animation/atultimateblade/attackbasic/basic_attack01_clawn03.ani", 0, 0, 0);
local pAni = pooledObj.getCurrentAnimation();
pAni.setSpeedRate(speedRate);
break;
case 3:
obj.sq_SetCurrentAnimation(ANIMATION_DEMONSLAYER_ULTIMATEBLADE_BASIC_ATTACK02);
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED,SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
local currentAni = obj.getCurrentAnimation();
local delaySum = currentAni.getDelaySum(false);
local speedRate = 24000.0 / delaySum.tofloat();
if(speedRate > 150) speedRate = 150.0;
currentAni.setSpeedRate(speedRate);
local pooledObj = sq_AddDrawOnlyAniFromParent(obj,"character/swordman/effect/animation/atultimateblade/attackbasic/basic_attack02_clawn03.ani", 0, 0, 0);
local pAni = pooledObj.getCurrentAnimation();
pAni.setSpeedRate(speedRate);
break;
case 4:
// BodyCalldaimus(obj, "ultimateblade_basic_attack03");
obj.sq_SetCurrentAnimation(ANIMATION_DEMONSLAYER_ULTIMATEBLADE_BASIC_ATTACK03);
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED,SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
local currentAni = obj.getCurrentAnimation();
local delaySum = currentAni.getDelaySum(false);
local speedRate = 24000.0 / delaySum.tofloat();
if(speedRate > 150) speedRate = 150.0;
currentAni.setSpeedRate(speedRate);
local pooledObj = sq_AddDrawOnlyAniFromParent(obj,"character/swordman/effect/animation/atultimateblade/attackbasic/basic_attack03_clawn03.ani", 0, 0, 0);
local pAni = pooledObj.getCurrentAnimation();
pAni.setSpeedRate(speedRate);
break;
case 5:
obj.sq_SetCurrentAnimation(ANIMATION_DEMONSLAYER_ULTIMATEBLADE_BASIC_ATTACK04);
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED,SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
local currentAni = obj.getCurrentAnimation();
local delaySum = currentAni.getDelaySum(false);
local speedRate = 24000.0 / delaySum.tofloat();
if(speedRate > 150) speedRate = 150.0;
currentAni.setSpeedRate(speedRate);
local pooledObj = sq_AddDrawOnlyAniFromParent(obj,"character/swordman/effect/animation/atultimateblade/attackbasic/basic_attack02_clawn03.ani", 0, 0, 0);
local pAni = pooledObj.getCurrentAnimation();
pAni.setSpeedRate(speedRate);
break;
case 6:
obj.sq_SetCurrentAnimation(ANIMATION_DEMONSLAYER_ULTIMATEBLADE_FINISH);
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED,SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
local currentAni = obj.getCurrentAnimation();
local delaySum = currentAni.getDelaySum(false);
local speedRate = 76000.0 / delaySum.tofloat();
if(speedRate > 150) speedRate = 150.0;
currentAni.setSpeedRate(speedRate);
local pooledObj = sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/atultimateblade/finish/finish_floorn01.ani", 0, 0, 0);
local pAni = pooledObj.getCurrentAnimation();
pAni.setSpeedRate(speedRate);
local pooledObj2 = sq_AddDrawOnlyAniFromParent(obj,"character/swordman/effect/animation/atultimateblade/finish/finish_dust02.ani", 0, 0, 0);
local pAni2 = pooledObj2.getCurrentAnimation();
pAni2.setSpeedRate(speedRate);
break;
case 10:
obj.sq_SetCurrentAnimation(ANIMATION_DEMONSLAYER_ULTIMATEBLADE_FAIL_FINISH);
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED,SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
break;
}
}
function onEndCurrentAni_Ultimateblade_bykk(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
local size = obj.getVar("Ultimateblade_target").get_obj_vector_size(),sub = 10;
if(obj.getVar("Ultimateblade_fixtarget").get_obj_vector_size() > 0) sub = 1;
else if(size > 0) sub = 1;
obj.sq_IntVectClear();
obj.sq_IntVectPush(sub);
obj.sq_AddSetStatePacket(SKILL_DEMONSLAYER_ULTIMATEBLADE, STATE_PRIORITY_IGNORE_FORCE, true);
break;
case 1:
case 2:
case 3:
case 4:
case 5:
obj.sq_IntVectClear();
obj.sq_IntVectPush(subState + 1);
obj.sq_AddSetStatePacket(SKILL_DEMONSLAYER_ULTIMATEBLADE, STATE_PRIORITY_IGNORE_FORCE, true);
break;
case 6:
case 10:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_IGNORE_FORCE, true);
break;
}
}
function onAttack_Ultimateblade_bykk(obj, damager, boundingBox, isStuck)
{
if(!obj || isStuck) return false;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
if(damager.isObjectType(OBJECTTYPE_ACTIVE)){
// if(sq_IsHoldable(obj,damager) && sq_IsGrabable(obj,damager) && !sq_IsFixture(damager)){
if(!obj.getVar("Ultimateblade_target").is_obj_vector(damager)) obj.getVar("Ultimateblade_target").push_obj_vector(damager);
local apPath = "character/atswordman/2_demonslayer/ultimateblade/ap_ultimateblade.nut";
local addAppendage = CNSquirrelAppendage.sq_AppendAppendage(damager, obj, -1, false, apPath, true);
sq_HoldAndDelayDie(damager, obj, true, true, true, 100, 300, ENUM_DIRECTION_NEUTRAL, addAppendage);
// }
// else if(sq_IsFixture(damager)){
// if(!obj.getVar("Ultimateblade_fixtarget").is_obj_vector(damager)) obj.getVar("Ultimateblade_fixtarget").push_obj_vector(damager);
// }
}
break;
}
}
function onEnterFrame_Ultimateblade_bykk(obj, frameIndex)
{
if(!obj || !obj.isMyControlObject()) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
switch(frameIndex){
case 0:
obj.sq_PlaySound("SW_ULTIMATE_BLADE_01");
sq_flashScreen(obj, 160, 0, 0, 102, sq_RGB(0, 0, 0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
break;
case 2:
obj.sq_PlaySound("ULTIMATE_BLADE_WALE");
sq_flashScreen(obj, 0, 0, 160, 102, sq_RGB(0, 0, 0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
break;
case 3: obj.sq_PlaySound("ULTIMATE_BLADE_WALE"); break;
case 4:
sq_SetMyShake(obj, 4, 160);
sq_flashScreen(obj, 0, 0, 160, 51, sq_RGB(255, 255, 255), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
break;
}
break;
case 1:
switch(frameIndex){
case 0: sq_SetMyShake(obj, 3, 40); break;
case 1: sq_SetMyShake(obj, 2, 80); break;
case 2: sq_SetMyShake(obj, 1, 180); break;
case 3:
case 4:
local sub = 0;
if(frameIndex == 4) sub = 1;
local currentAni = obj.getCurrentAnimation();
local delaySum = currentAni.getDelaySum(frameIndex, frameIndex);
Ultimateblade_bykk_pulltarget(obj,sub,delaySum);
break;
}
break;
case 2:
switch(frameIndex){
case 0:
obj.sq_PlaySound("SW_ULTIMATE_BLADE_02");
obj.sq_PlaySound("ULTIMATE_BLADE_LASHING");
sq_flashScreen(obj, 0, 0, 40, 25, sq_RGB(255, 255, 255), GRAPHICEFFECT_LINEARDODGE, ENUM_DRAWLAYER_BOTTOM);
sq_SetMyShake(obj, 3, 40);
Ultimateblade_bykk_rotate(obj, 1, -36, 0, 41);
break;
case 1:
case 2:
local sub = 2;
if(frameIndex == 2) sub = 3;
local currentAni = obj.getCurrentAnimation();
local delaySum = currentAni.getDelaySum(frameIndex, frameIndex);
Ultimateblade_bykk_pulltarget(obj,sub,delaySum);
break;
}
break;
case 3:
case 4:
case 5:
switch(frameIndex){
case 0:
obj.sq_PlaySound("ULTIMATE_BLADE_LASHING");
sq_flashScreen(obj, 0, 0, 40, 25, sq_RGB(255, 255, 255), GRAPHICEFFECT_LINEARDODGE, ENUM_DRAWLAYER_BOTTOM);
sq_SetMyShake(obj, 3, 40);
switch(subState){
case 3: Ultimateblade_bykk_rotate(obj, 1, 124, 0, 49); break;
case 4: Ultimateblade_bykk_rotate(obj, 1, -88, 0, 43); break;
case 5: Ultimateblade_bykk_rotate(obj, 1, 116, 0, 45); break;
}
break;
case 1:
case 2:
local sub = 4 + (subState - 3) * 2;
if(frameIndex == 2) sub = 5 + (subState - 3) * 2;
local currentAni = obj.getCurrentAnimation();
local delaySum = currentAni.getDelaySum(frameIndex, frameIndex);
Ultimateblade_bykk_pulltarget(obj,sub,delaySum);
break;
}
break;
case 6:
switch(frameIndex){
case 0:
obj.sq_PlaySound("SW_ULTIMATE_BLADE_03");
sq_flashScreen(obj, 160, 0, 0, 153, sq_RGB(0, 0, 0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
local currentAni = obj.getCurrentAnimation();
local delaySum = currentAni.getDelaySum(0, 0);
Ultimateblade_bykk_pulltarget(obj, 10, delaySum);
break;
case 1:
local currentAni = obj.getCurrentAnimation();
local delaySum = currentAni.getDelaySum(frameIndex, frameIndex);
Ultimateblade_bykk_pulltarget(obj,11,delaySum);
break;
case 2:
obj.sq_PlaySound("ULTIMATE_BLADE_FINISH");
sq_flashScreen(obj, 0, 0, 160, 153, sq_RGB(255, 255, 255), GRAPHICEFFECT_LINEARDODGE, ENUM_DRAWLAYER_BOTTOM);
sq_SetMyShake(obj, 6, 240);
local currentAni = obj.getCurrentAnimation();
local delaySum = currentAni.getDelaySum(0, 0);
Ultimateblade_bykk_pulltarget(obj, 12, delaySum);
Ultimateblade_bykk_rotate(obj, 2, 204, 0, 41);
break;
case 5:
local size = obj.getVar("Ultimateblade_target").get_obj_vector_size();
if(size > 0){
for(local i = 0; i < size; i++){
local targetObj = obj.getVar("Ultimateblade_target").get_obj_vector(i);
if(targetObj) CNSquirrelAppendage.sq_RemoveAppendage(targetObj, "character/atswordman/2_demonslayer/ultimateblade/ap_ultimateblade.nut");
}
}
break;
}
break;
}
}
function onChangeSkillEffect_Ultimateblade_bykk(obj, skillIndex, receiveData)
{
if(!obj || skillIndex != 165) return;
}
function onEndState_Ultimateblade_bykk(obj, newState)
{
if(!obj) return;
if(newState != SKILL_DEMONSLAYER_ULTIMATEBLADE){
local size = obj.getVar("Ultimateblade_target").get_obj_vector_size();
if(size > 0){
for(local i = 0; i < size; i++){
local targetObj = obj.getVar("Ultimateblade_target").get_obj_vector(i);
if(targetObj) CNSquirrelAppendage.sq_RemoveAppendage(targetObj, "character/atswordman/2_demonslayer/ultimateblade/ap_ultimateblade.nut");
}
}
}
}
function onProc_Ultimateblade_bykk(obj)
{
if(!obj) return;
if(obj.isMyControlObject()){
if(obj.getVar("Ultimateblade_bool").getBool(0) == false){
if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_LEFT , ENUM_SUBKEY_TYPE_ALL)){
obj.getVar("Ultimateblade_dir").setInt(10, ENUM_DIRECTION_LEFT);
obj.getVar("Ultimateblade_bool").setBool(0, true);
}
else if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_RIGHT ,ENUM_SUBKEY_TYPE_ALL)){
obj.getVar("Ultimateblade_dir").setInt(10, ENUM_DIRECTION_RIGHT);
obj.getVar("Ultimateblade_bool").setBool(0, true);
}
}
}
}
function onKeyFrameFlag_Ultimateblade_bykk(obj, flagIndex)
{
if (!obj) return;
}
function onBeforeAttack_Ultimateblade_bykk(obj,damager,boundingBox,isStuck)
{
local subState = obj.getSkillSubState();
switch(subState){
case 0:
if(sq_IsFixture(damager)){
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_DEMONSLAYER_ULTIMATEBLADE, -1, 1, 1.0) + 100;
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
}
else{
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_DEMONSLAYER_ULTIMATEBLADE, -1, 0, 1.0) + 100;
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
}
break;
}
}
function Ultimateblade_bykk_pulltarget(obj,sub,time)
{
local xpos = [-37,-27,133,156,-87,-132,155,149,-90,-127,-47,-25,228];
local zpos = [148,182,130,197,166,171,124,171,168,170,-224,242,10];
local size = obj.getVar("Ultimateblade_target").get_obj_vector_size();
if(size > 0){
for(local i = 0; i < size; i++){
local targetObj = obj.getVar("Ultimateblade_target").get_obj_vector(i);
local activeObj = sq_GetCNRDObjectToActiveObject(targetObj);
local addAppendage = CNSquirrelAppendage.sq_GetAppendage(activeObj, "character/atswordman/2_demonslayer/ultimateblade/ap_ultimateblade.nut");
if(activeObj && addAppendage && !sq_IsFixture(activeObj)){
sq_MoveToAppendageForce(activeObj, obj, obj, xpos[sub], 0, zpos[sub], time / 4, true, addAppendage);
}
}
}
}
function Ultimateblade_bykk_rotate(obj,sub,x,y,z)
{
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_DEMONSLAYER_ULTIMATEBLADE, -1, 2, 1.0) + 100;
if(sub > 1) totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_DEMONSLAYER_ULTIMATEBLADE, -1, 4, 1.0) + 100;
cearteSkillPassiveObj_AtSwordMan_bykk(obj, obj, PASSIVEOBJECT_BYKK_DEMONSLAYER, x, y, z, obj.getDirection(), 2, SKILL_DEMONSLAYER_ULTIMATEBLADE, sub, totalDamage, 0, 0, 0, 0, 0, 0, 0, 1);
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function checkExecutableSkill_Bloodoctopussword_bykk(obj)
{
if (!obj) return false;
local isUse = obj.sq_IsUseSkill(SKILL_DEMONSLAYER_BLOODOCTOPUSSWORD);
if (isUse){
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(SKILL_DEMONSLAYER_BLOODOCTOPUSSWORD, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_Bloodoctopussword_bykk(obj)
{
if (!obj) return false;
return true;
}
function onSetState_Bloodoctopussword_bykk(obj, state, datas, isResetTimer)
{
if(!obj) return;
local subState = obj.sq_GetVectorData(datas, 0);
obj.setSkillSubState(subState);
obj.sq_StopMove();
switch(subState){
case 0:
obj.sq_SetCurrentAnimation(ANIMATION_DEMONSLAYER_BLOODOCTOPUSSWORDBODY_BODY);
break;
}
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED,SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
}
function onEndCurrentAni_Bloodoctopussword_bykk(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_IGNORE_FORCE, true);
break;
}
}
function onAttack_Bloodoctopussword_bykk(obj, damager, boundingBox, isStuck)
{
if(!obj || isStuck) return false;
}
function onEnterFrame_Bloodoctopussword_bykk(obj, frameIndex)
{
if(!obj || !obj.isMyControlObject()) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
switch(frameIndex){
case 1:
obj.sq_PlaySound("BLOOD_OCTOPUSSWORD_START");
obj.sq_PlaySound("R_SW_BLOOD_OCTOPUSSWORD_01");
break;
case 12:
local currentAni = obj.getCurrentAnimation();
local delaySum = currentAni.getDelaySum(12, 14);
obj.sq_SetXScrollStart(400, delaySum);
break;
case 13:
local currentAni = obj.getCurrentAnimation();
local delaySum = currentAni.getDelaySum(13, 13);
local speedRate = 4000.0 / delaySum.tofloat();
local pooledObj = sq_AddDrawOnlyAniFromParent(obj, "passiveobject/atswordman_bykk/demonslayer/animation/atbloodoctopussword/bloodoctopusswordbottom_21.ani", 0, 0, 0);
local pAni = pooledObj.getCurrentAnimation();
pAni.setSpeedRate(speedRate);
break;
case 14:
sq_flashScreen(obj, 0, 40, 0, 153, sq_RGB(255, 0, 0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
sq_SetMyShake(obj, 5, 200);
local currentAni = obj.getCurrentAnimation();
local delaySum = currentAni.getDelaySum(14, 14);
local speedRate = 4000.0 / delaySum.tofloat();
local pooledObj = sq_AddDrawOnlyAniFromParent(obj, "passiveobject/atswordman_bykk/demonslayer/animation/atbloodoctopussword/bloodoctopussword02_00.ani", 0, 50, 0);
local pooledObj2 = sq_AddDrawOnlyAniFromParent(obj, "passiveobject/atswordman_bykk/demonslayer/animation/atbloodoctopussword/bloodoctopussword03_13.ani", 0, 1, 0);
local pAni = pooledObj.getCurrentAnimation();
local pAni2 = pooledObj2.getCurrentAnimation();
pAni.setSpeedRate(speedRate);
pAni2.setSpeedRate(speedRate);
break;
case 15:
//`createSwordObject` 0 -1 0
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_DEMONSLAYER_BLOODOCTOPUSSWORD, -1, 0, 1.0) + 100;
local hitMax = sq_GetIntData(obj, SKILL_DEMONSLAYER_BLOODOCTOPUSSWORD, 1);
local currentAni = obj.getCurrentAnimation();
local delaySum = currentAni.getDelaySum(15, 15);
local speedRate = (4000.0 / delaySum.tofloat()).tointeger();
cearteSkillPassiveObj_AtSwordMan_bykk(obj, obj, PASSIVEOBJECT_BYKK_DEMONSLAYER, 0, -1, 0, obj.getDirection(), 2, SKILL_DEMONSLAYER_BLOODOCTOPUSSWORD, 1, totalDamage, hitMax, speedRate, 0, 0, 0, 0, 0, 1);
//`createBackSwordEffect` 0 -90 0
local pooledObj = sq_AddDrawOnlyAniFromParent(obj, "passiveobject/atswordman_bykk/demonslayer/animation/atbloodoctopussword/bloodoctopusswordbottom_21.ani", 0, -90, 0);
local pAni = pooledObj.getCurrentAnimation();
pAni.setSpeedRate(speedRate.tofloat());
break;
case 16: sq_flashScreen(obj, 0, 40, 0, 153, sq_RGB(255, 255, 255), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM); break;
case 19: sq_flashScreen(obj, 0, 40, 0, 153, sq_RGB(255, 0, 0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM); break;
case 35: sq_SetMyShake(obj, 2, 280);
case 42:
obj.sq_PlaySound("R_SW_BLOOD_OCTOPUSSWORD_02");
obj.sq_PlaySound("BLOOD_OCTOPUSSWORD_FIN");
sq_flashScreen(obj, 0, 40, 0, 153, sq_RGB(255, 0, 0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
sq_SetMyShake(obj, 12, 300);
//`createExpObject` 0 51 0
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_DEMONSLAYER_BLOODOCTOPUSSWORD, -1, 1, 1.0) + 100;
local currentAni = obj.getCurrentAnimation();
local delaySum = currentAni.getDelaySum(42, 42);
local speedRate = (4000.0 / delaySum.tofloat()).tointeger();
cearteSkillPassiveObj_AtSwordMan_bykk(obj, obj, PASSIVEOBJECT_BYKK_DEMONSLAYER, 0, 51, 0, obj.getDirection(), 2, SKILL_DEMONSLAYER_BLOODOCTOPUSSWORD, 2, totalDamage, speedRate, 0, 0, 0, 0, 0, 0, 1);
break;
case 43: obj.sq_SetXScrollStop(0); break;
case 44:
sq_flashScreen(obj, 0, 40, 0, 153, sq_RGB(255, 255, 255), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
//`EnableWhipSwordBal`
break;
}
break;
}
}
function onEndState_Bloodoctopussword_bykk(obj, newState)
{
if(!obj) return;
if(newState != SKILL_DEMONSLAYER_BLOODOCTOPUSSWORD) obj.sq_SetXScrollStop(0);
}
function onProc_Bloodoctopussword_bykk(obj)
{
if(!obj) return;
}
function onKeyFrameFlag_Bloodoctopussword_bykk(obj, flagIndex)
{
if (!obj) return;
}
function onProcCon_Bloodoctopussword_bykk(obj)
{
if(!obj) return;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function checkExecutableSkill_Gigablade_bykk(obj)
{
if (!obj) return false;
local isUse = obj.sq_IsUseSkill(SKILL_DEMONSLAYER_GIGABLADE);
if (isUse){
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(SKILL_DEMONSLAYER_GIGABLADE, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_Gigablade_bykk(obj)
{
if (!obj) return false;
if(sq_GetSkillLevel(obj, SKILL_DEMONSLAYER_DEVILSWORDTECH) < 1){
local state = obj.sq_GetState();
if(state == 0 || state == 108 || state == 14) return true;
else return false;
}
return true;
}
function onSetState_Gigablade_bykk(obj, state, datas, isResetTimer)
{
if(!obj) return;
local subState = obj.sq_GetVectorData(datas, 0);
obj.setSkillSubState(subState);
obj.sq_StopMove();
local add_bonus = 1.0;
if(sq_GetSkillLevel(obj, SKILL_DEMONSLAYER_GIGABLADE) >= 3) add_bonus = 1.1;
switch(subState){
case 0:
obj.sq_SetCurrentAnimation(ANIMATION_DEMONSLAYER_GIGABLADEGATE);
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_DEMONSLAYER_GIGABLADE, -1, 4, add_bonus) + 100;
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 104));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
break;
case 1:
obj.sq_SetCurrentAnimation(ANIMATION_DEMONSLAYER_GIGABLADEDASH);
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_DEMONSLAYER_GIGABLADE, -1, 0, add_bonus) + 100;
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 102));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
obj.getVar("gigablade_mive").setInt(10, sq_GetXPos(obj));
obj.getVar("gigablade_mive").setInt(11, 250);
break;
case 2:
obj.sq_SetCurrentAnimation(ANIMATION_DEMONSLAYER_GIGABLADERETURNSWORD);
obj.getVar("gigablade_mive").setInt(10, sq_GetXPos(obj));
obj.getVar("gigablade_mive").setInt(11, -250);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/atgigablade/gigablade_dash_eff_d.ani", 0, 1, 0);
break;
case 3:
obj.sq_SetCurrentAnimation(ANIMATION_DEMONSLAYER_GIGABLADEPOWERSLASH);
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_DEMONSLAYER_GIGABLADE, -1, 1, add_bonus) + 100;
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 105));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
break;
}
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED,SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
if(subState == 1 || subState == 2){
local currentAni = obj.getCurrentAnimation();
local delaySum = currentAni.getDelaySum(false);
obj.setTimeEvent(2, delaySum / 10, 9, false);
}
}
function onEndCurrentAni_Gigablade_bykk(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState)
{
case 0:
case 1:
case 2:
obj.sq_IntVectClear();
obj.sq_IntVectPush(subState + 1);
obj.sq_AddSetStatePacket(SKILL_DEMONSLAYER_GIGABLADE, STATE_PRIORITY_IGNORE_FORCE, true);
break;
case 3:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_IGNORE_FORCE, true);
break;
}
}
function onTimeEvent_Gigablade_bykk(obj, timeEventIndex, timeEventCount)
{
if(!obj) return;
switch(timeEventIndex){
case 1:
obj.resetHitObjectList();
break;
case 2:
local srcX = obj.getVar("gigablade_mive").getInt(10);
local moveX = obj.getVar("gigablade_mive").getInt(11);
local v = sq_GetUniformVelocity(0, moveX, timeEventCount, 9);
local dstX = sq_GetDistancePos(srcX, obj.getDirection(), v);
sq_setCurrentAxisPos(obj, 0, dstX);
break;
}
}
function onAttack_Gigablade_bykk(obj, damager, boundingBox, isStuck)
{
if(!obj || isStuck) return false;
local subState = obj.getSkillSubState();
//Calldaimus_onAttack(obj,damager, boundingBox, isStuck);
local add_bonus = 1.0;
if(sq_GetSkillLevel(obj, 160) >= 3) add_bonus = 1.1;
switch(subState){
case 0:
if(sq_GetSkillLevel(obj, SKILL_DEMONSLAYER_GIGABLADE) >= 6){
if(damager.isObjectType(OBJECTTYPE_ACTIVE)){
//creat_exp_obj
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_DEMONSLAYER_GIGABLADE, -1, 7, add_bonus) + 100;
cearteSkillPassiveObj_AtSwordMan_bykk(obj, damager, PASSIVEOBJECT_BYKK_DEMONSLAYER, 0, 0, sq_GetObjectHeight(damager) / 2 + sq_getRandom(-20, 20), obj.getDirection(), 2, SKILL_DEMONSLAYER_GIGABLADE, 1, totalDamage, 0, 0, 0, 0, 0, 0, 0, 1);
}
}
break;
}
}
function onEnterFrame_Gigablade_bykk(obj, frameIndex)
{
if(!obj) return;
local subState = obj.getSkillSubState();
local add_bonus = 1.0;
if(sq_GetSkillLevel(obj, 160) > 2) add_bonus = 1.1;
switch(subState){
case 0:
switch(frameIndex){
case 0:
obj.sq_PlaySound("SW_GIGA");
obj.sq_PlaySound("GIGA_GATE_PUT");
break;
case 10:
local currentAni = obj.getCurrentAnimation();
local delay = currentAni.getDelaySum(10, 28);
local hitMax = sq_GetIntData(obj, SKILL_DEMONSLAYER_GIGABLADE, 9);
obj.setTimeEvent(1, delay / (hitMax + 1), hitMax, true);
sq_CreateParticle("character/swordman/particle/atgigabladegate.ptl", obj, -50, 0, 100, true, 10, 0, 30);
break;
case 29: obj.sq_PlaySound("GIGA_EVIL"); break;
}
break;
case 1:
switch(frameIndex){
case 0:
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/atgigablade/gigablade_dash_smoke_a.ani", 0, 1, 0);
break;
case 1:
local currentAni = obj.getCurrentAnimation();
local delay = currentAni.getDelaySum(1, 5);
local hitMax = sq_GetIntData(obj, SKILL_DEMONSLAYER_GIGABLADE, 5);
obj.setTimeEvent(1, delay / (hitMax + 1), hitMax, true);
break;
}
break;
case 2:
if(frameIndex == 0) obj.sq_PlaySound("GIGA_BACKSTEP");
break;
case 3:
switch(frameIndex){
case 1: obj.sq_PlaySound("GIGA_SWORD_UP"); break;
case 5: obj.sq_PlaySound("GIGA_SWORD_DOWN"); break;
}
break;
}
}
function onEndState_Gigablade_bykk(obj, newState)
{
if(!obj) return;
if(newState != SKILL_DEMONSLAYER_GIGABLADE) sq_SimpleMoveToNearMovablePos(obj,200);
}
function onProc_Gigablade_bykk(obj)
{
if(!obj) return;
}
function onKeyFrameFlag_Gigablade_bykk(obj, flagIndex)
{
if (!obj) return false;
switch(flagIndex){
case 1:
if(obj.getSkillSubState() == 3){
//create EXP
local sizeRate = 100, add_bonus = 1.0;
if(sq_GetSkillLevel(obj, SKILL_DEMONSLAYER_GIGABLADE) >= 6) add_bonus = 1.1;
if(sq_GetSkillLevel(obj, SKILL_DEMONSLAYER_GIGABLADE) >= 9) sizeRate = 200;
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_DEMONSLAYER_GIGABLADE, -1, 7, add_bonus) + 100;
cearteSkillPassiveObj_AtSwordMan_bykk(obj, obj, PASSIVEOBJECT_BYKK_DEMONSLAYER, 150, 0, 0, obj.getDirection(), 2, SKILL_DEMONSLAYER_GIGABLADE, 2, totalDamage, sizeRate, 0, 0, 0, 0, 0, 0, 1);
sq_SetMyShake(obj, 10, 100);
}
break;
}
return true;
}
function onProcCon_Gigablade_bykk(obj)
{
if(!obj) return;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function checkExecutableSkill_Ragnarok_bykk(obj)
{
if (!obj) return false;
local isUse = obj.sq_IsUseSkill(SKILL_DEMONSLAYER_RAGNAROK);
if (isUse){
obj.getVar("ragnarok_target").clear_obj_vector();
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(SKILL_DEMONSLAYER_RAGNAROK, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_Ragnarok_bykk(obj)
{
if (!obj) return false;
return true;
}
function onSetState_Ragnarok_bykk(obj, state, datas, isResetTimer)
{
if(!obj) return;
local subState = obj.sq_GetVectorData(datas, 0);
obj.setSkillSubState(subState);
obj.sq_StopMove();
obj.sq_ZStop();
switch(subState){
case 0:
obj.sq_SetCurrentAnimation(ANIMATION_DEMONSLAYER_FRENZYCAST);
obj.sq_PlaySound("SW_RAGNAROK_01");
local currentAni = obj.getCurrentAnimation();
local delaySum = currentAni.getDelaySum(0, 3);
obj.setTimeEvent(2, delaySum, 1, false);
sq_AddDrawOnlyAniFromParent(obj, "passiveobject/atswordman_bykk/demonslayer/animation/atragnarok/start/rstartmaina_00.ani", 0, 0, 0);
createOnlyDrawObject_AtSwordMan_bykk(obj,"character/swordman/effect/animation/atragnarok/start/rstartfloor_11.ani",true,obj.getDirection(),sq_GetXPos(obj),sq_GetYPos(obj),sq_GetZPos(obj),ENUM_DRAWLAYER_BOTTOM);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/atragnarok/start/rstartmainc_10.ani", 0, -1, 0);
sq_SetCustomDamageType(obj, true, 2);
break;
case 1:
sq_setCurrentAxisPos(obj, 2, 0);
obj.sq_SetCurrentAnimation(ANIMATION_DEMONSLAYER_FRENZY);
local flashScreenObj = obj.getVar("Ragnarok_flashobj").get_obj_vector(0);
if(flashScreenObj){
local pflashScreen = sq_GetCNRDObjectToFlashScreen(flashScreenObj);
if(pflashScreen) pflashScreen.fadeOut();
}
sq_flashScreen(obj, 0, 0, 200, 255, sq_RGB(0,0,0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
break;
}
}
function onEndCurrentAni_Ragnarok_bykk(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
sq_setCurrentAxisPos(obj, 2, 500);
local flashScreenObj = sq_flashScreen(obj, 80, 99990, 300, 255, sq_RGB(0,0,0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
obj.getVar("Ragnarok_flashobj").clear_obj_vector();
obj.getVar("Ragnarok_flashobj").push_obj_vector(flashScreenObj);
obj.setTimeEvent(1, 4000, 1, false);//持續時間
obj.setTimeEvent(3, 500, 1, false);//轉變揮刀
obj.setTimeEvent(4, 1500, 1, false);//亂舞
obj.setTimeEvent(5, 2500, 1, false);//巨劍衝擊
obj.setTimeEvent(6, 3500, 1, false);//地面最後一擊
break;
case 1:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_IGNORE_FORCE, true);
break;
}
}
function onAttack_Ragnarok_bykk(obj, damager, boundingBox, isStuck)
{
if(!obj || isStuck) return false;
}
function onEnterFrame_Ragnarok_bykk(obj, frameIndex)
{
if(!obj) return;
}
function onEndState_Ragnarok_bykk(obj, newState)
{
if(!obj) return;
if(newState != SKILL_DEMONSLAYER_RAGNAROK){
sq_SetCustomDamageType(obj, true, 0);
local size = obj.getVar("ragnarok_target").get_obj_vector_size();
if(size > 0){
for(local i = 0; i < size; i++){
local targetObj = obj.getVar("ragnarok_target").get_obj_vector(i);
if(targetObj) CNSquirrelAppendage.sq_RemoveAppendage(targetObj, "character/atswordman/2_demonslayer/ragnarok/ap_ragnarok.nut");
}
}
}
}
function onProc_Ragnarok_bykk(obj)
{
if(!obj) return;
}
function onKeyFrameFlag_Ragnarok_bykk(obj, flagIndex)
{
if (!obj) return;
}
function onTimeEvent_Ragnarok_bykk(obj, timeEventIndex, timeEventCount)
{
switch(timeEventIndex){
case 1:
obj.sq_IntVectClear();
obj.sq_IntVectPush(1);
obj.sq_AddSetStatePacket(SKILL_DEMONSLAYER_RAGNAROK, STATE_PRIORITY_IGNORE_FORCE, true);
break;
case 2:
local currentAni = obj.getCurrentAnimation();
local delaySum = currentAni.getDelaySum(4, 5);
sq_flashScreen(obj, 0, 0, delaySum, 255, sq_RGB(255, 255, 255), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
break;
case 3:
obj.sq_PlaySound("SW_RAGNAROK_02");
createOnlyDrawObject_AtSwordMan_bykk(obj,"character/swordman/effect/animation/atragnarok/transformation/rtransformation_body.ani",true,ENUM_DIRECTION_RIGHT,sq_GetXPos(obj) - 400,sq_GetYPos(obj),500,ENUM_DRAWLAYER_COVER);
break;
case 4:
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_DEMONSLAYER_RAGNAROK, -1, 0, 1.0) + 100;
local hitMax = obj.sq_GetBonusRateWithPassive(SKILL_DEMONSLAYER_RAGNAROK, -1, 1, 1.0) + 100;
cearteSkillPassiveObj_AtSwordMan_bykk(obj, obj, PASSIVEOBJECT_BYKK_DEMONSLAYER, 0, 0, -500, ENUM_DIRECTION_RIGHT, 2, SKILL_DEMONSLAYER_RAGNAROK, 1, totalDamage, hitMax, 0, 0, 0, 0, 0, 0, 1);
obj.setTimeEvent(10, 60, hitMax, true);
break;
case 5:
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_DEMONSLAYER_RAGNAROK, -1, 2, 1.0) + 100;
local totalDamage2 = obj.sq_GetBonusRateWithPassive(SKILL_DEMONSLAYER_RAGNAROK, -1, 3, 1.0) + 100;
local hitMax = sq_GetIntData(obj, SKILL_DEMONSLAYER_RAGNAROK, 1);
cearteSkillPassiveObj_AtSwordMan_bykk(obj, obj, PASSIVEOBJECT_BYKK_DEMONSLAYER, 0, 0, -500, ENUM_DIRECTION_RIGHT, 2, SKILL_DEMONSLAYER_RAGNAROK, 2, totalDamage, hitMax, totalDamage2, 0, 0, 0, 0, 0, 1);
break;
case 6:
createOnlyDrawObject_AtSwordMan_bykk(obj,"character/swordman/effect/animation/atragnarok/attack/ratkc_finisheffect.ani",true,ENUM_DIRECTION_RIGHT,sq_GetXPos(obj),sq_GetYPos(obj),0,ENUM_DRAWLAYER_NORMAL);
break;
case 10:
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/atragnarok/rrhiteff_01.ani", sq_getRandom(-250,250), 0, sq_getRandom(-500,-250));
break;
}
}
function onProcCon_Ragnarok_bykk(obj)
{
if(!obj) return;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function checkExecutableSkill_PredatorGaloa_bykk(obj)
{
if (!obj) return false;
local isUse = obj.sq_IsUseSkill(SKILL_DEMONSLAYER_PREDATORGALOA);
if (isUse){
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(89, STATE_PRIORITY_IGNORE_FORCE, true);
obj.startSkillCoolTime(SKILL_DEMONSLAYER_PREDATORGALOA, sq_GetSkillLevel(obj, SKILL_DEMONSLAYER_PREDATORGALOA), -1);
return true;
}
return false;
}
function checkCommandEnable_PredatorGaloa_bykk(obj)
{
if (!obj) return false;
return true;
}
function onSetState_PredatorGaloa_bykk(obj, state, datas, isResetTimer)
{
if(!obj) return;
local subState = obj.sq_GetVectorData(datas, 0);
obj.setSkillSubState(subState);
obj.sq_StopMove();
switch(subState){
case 0:
obj.sq_SetCurrentAnimation(ANIMATION_DEMONSLAYER_PREDATORGALOA);
break;
}
}
function onEndCurrentAni_PredatorGaloa_bykk(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_IGNORE_FORCE, true);
break;
}
}
function onAttack_PredatorGaloa_bykk(obj, damager, boundingBox, isStuck)
{
if(!obj || isStuck) return false;
}
function onEnterFrame_PredatorGaloa_bykk(obj, frameIndex)
{
if(!obj) return;
switch(frameIndex){
case 3: obj.sq_PlaySound("PREDATOR_READY"); break;
case 12: obj.sq_PlaySound("SW_PREDATOR"); break;
}
}
function onEndState_PredatorGaloa_bykk(obj, newState)
{
if(!obj) return;
}
function onProc_PredatorGaloa_bykk(obj)
{
if(!obj) return;
}
function onKeyFrameFlag_PredatorGaloa_bykk(obj, flagIndex)
{
if (!obj) return;
switch(flagIndex){
case 1:
local create_number = sq_GetIntData(obj, SKILL_DEMONSLAYER_PREDATORGALOA, 0);
local skill_level = sq_GetSkillLevel(obj, SKILL_DEMONSLAYER_PREDATORGALOA);
local lifeTime = sq_GetLevelData(obj, SKILL_DEMONSLAYER_PREDATORGALOA, 0, skill_level);
local catchMax = sq_GetIntData(obj, SKILL_DEMONSLAYER_PREDATORGALOA, 6);
local hitMax = sq_GetIntData(obj, SKILL_DEMONSLAYER_PREDATORGALOA, 4);
local hitTime = sq_GetIntData(obj, SKILL_DEMONSLAYER_PREDATORGALOA, 5);
local range = sq_GetIntData(obj, SKILL_DEMONSLAYER_PREDATORGALOA, 3);
local totalDamage = sq_GetLevelData(obj, SKILL_DEMONSLAYER_PREDATORGALOA, 1, skill_level);
local totalDamage2 = sq_GetLevelData(obj, SKILL_DEMONSLAYER_PREDATORGALOA, 2, skill_level);
local damageRate = (totalDamage2.tofloat() / totalDamage.tofloat() * 100.0).tointeger();
for(local i = 0; i < create_number; i++){
cearteSkillPassiveObj_AtSwordMan_bykk(obj, obj, PASSIVEOBJECT_BYKK_DEMONSLAYER, 0, 0, 180, obj.getDirection(), 2, SKILL_DEMONSLAYER_PREDATORGALOA, 1, totalDamage, catchMax, hitMax, damageRate, lifeTime, hitTime, i, range, 1);
}
break;
}
}
function onProcCon_PredatorGaloa_bykk(obj)
{
if(!obj) return;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function checkExecutableSkill_Atfrenzy_bykk(obj)
{
if (!obj) return false;
local isUse = obj.sq_IsUseSkill(SKILL_DEMONSLAYER_ATFRENZY);
if (isUse){
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(SKILL_DEMONSLAYER_ATFRENZY, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_Atfrenzy_bykk(obj)
{
if (!obj) return false;
return true;
}
function onSetState_Atfrenzy_bykk(obj, state, datas, isResetTimer)
{
if(!obj) return;
local subState = obj.sq_GetVectorData(datas, 0);
obj.setSkillSubState(subState);
switch(subState){
case 0:
obj.sq_StopMove();
obj.sq_PlaySound("FRENZY_CAST");
local castTime = sq_GetCastTime(obj, 150, sq_GetSkillLevel(obj, 150));
local animation = sq_GetCurrentAnimation(obj);
local aniSumTime = sq_GetDelaySum(animation);
local speedRate = aniSumTime.tofloat() / castTime.tofloat();
sq_StartDrawCastGauge(obj, castTime, true);
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_CAST_SPEED, SPEED_TYPE_CAST_SPEED,SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, speedRate, speedRate);
BodyCalldaimus(obj, "frenzycast");
obj.sq_SetCurrentAnimation(ANIMATION_DEMONSLAYER_FRENZYCAST);
break;
case 1:
BodyCalldaimus(obj, "frenzy");
obj.sq_SetCurrentAnimation(ANIMATION_DEMONSLAYER_FRENZY);
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED,SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
local bufftmime = sq_GetLevelData(obj,150, 2, sq_GetSkillLevel(obj, 150));
local append = "character/atswordman/2_demonslayer/atfrenzy/ap_atfrenzy.nut";
local appendage = CNSquirrelAppendage.sq_AppendAppendage(obj, obj, -1, false, append, false);
if(bufftmime > 0) appendage.sq_SetValidTime(bufftmime);
appendage.setEnableIsBuff(true);
appendage.setAppendCauseSkill(BUFF_CAUSE_SKILL, sq_getJob(obj), SKILL_DEMONSLAYER_ATFRENZY, sq_GetSkillLevel(obj, SKILL_DEMONSLAYER_ATFRENZY));
CNSquirrelAppendage.sq_Append(appendage, obj, obj, true);
appendage.setBuffIconImage(146);
local bonusRate = sq_GetLevelData(obj, SKILL_DEMONSLAYER_ATFRENZY, 9, sq_GetSkillLevel(obj, SKILL_DEMONSLAYER_ATFRENZY)) / 10;
obj.getVar("apGetSetbyKK").setInt(0, bonusRate);
break;
}
}
function onEndCurrentAni_Atfrenzy_bykk(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
obj.sq_IntVectClear();
obj.sq_IntVectPush(1);
obj.sq_AddSetStatePacket(SKILL_DEMONSLAYER_ATFRENZY, STATE_PRIORITY_IGNORE_FORCE, true);
break;
case 1:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_IGNORE_FORCE, true);
break;
}
}
function onAttack_Atfrenzy_bykk(obj, damager, boundingBox, isStuck)
{
if(!obj) return;
}
function onEnterFrame_Atfrenzy_bykk(obj, frameIndex)
{
if(!obj) return;
}
function onEndState_Atfrenzy_bykk(obj, newState)
{
if(!obj) return;
if(newState != SKILL_DEMONSLAYER_ATFRENZY){
sq_EndDrawCastGauge(obj);
}
}
function onProc_Atfrenzy_bykk(obj)
{
if(!obj) return;
}
function onKeyFrameFlag_Atfrenzy_bykk(obj, flagIndex)
{
if (!obj) return;
}
function onProcCon_Atfrenzy_bykk(obj)
{
if(!obj) return;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function checkExecutableSkill_WillPower_bykk(obj)
{
if(!obj) return false;
local isUse = obj.sq_IsUseSkill(SKILL_DEMONSLAYER_WILLPOWER);
if(isUse){
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(200, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
}
function checkCommandEnable_WillPower_bykk(obj)
{
if(!obj) return false;
return true;
}
function onSetState_WillPower_bykk(obj, state, datas, isResetTimer)
{
if(!obj) return;
obj.sq_StopMove();
obj.sq_SetCurrentAnimation(ANIMATION_DEMONSLAYER_WILLPOWER);
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_CAST_SPEED, SPEED_TYPE_CAST_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
}
function onKeyFrameFlag_WillPower_bykk(obj, flagIndex)
{
if(!obj) return;
if(flagIndex == 1){
local appendage = CNSquirrelAppendage.sq_AppendAppendage(obj, obj, 252, false, "character/atswordman/2_demonslayer/WillPower/ap_WillPower.nut", true);
local skillLevel = sq_GetSkillLevel(obj, 252);
local validTime = sq_GetLevelData(obj, 252, 0, skillLevel);
appendage.setBuffIconImage(152);
appendage.setEnableIsBuff(true);
appendage.sq_SetValidTime(validTime);
appendage.setAppendCauseSkill(BUFF_CAUSE_SKILL, sq_getJob(obj), 252, skillLevel);
CNSquirrelAppendage.sq_Append(appendage, obj, obj);
}
}
function onEndCurrentAni_WillPower_bykk(obj)
{
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_USER, false);
}
function onStart_appendage_weaponmastery_bykk(appendage)
{
local parentObj = appendage.getParent();
local obj = sq_GetCNRDObjectToSQRCharacter(parentObj);
local weaponType = obj.getWeaponSubType();
if(weaponType == -1) return;
local skillIndex = [SKILL_SWORDMASTER_BYKK_SHORTSWORDMASTERY,
SKILL_SWORDMASTER_BYKK_BLADEMASTERY,
SKILL_SWORDMASTER_BYKK_BLUNTMASTERY,
SKILL_SWORDMASTER_BYKK_HEAVYSWORDMASTERY];
local bonus = [4, 7, 8, 9];
local skill_level = sq_GetSkillLevel(obj, skillIndex[weaponType]);
if(skill_level > 0){
local bonusRate = sq_GetLevelData(obj, skillIndex[weaponType], bonus[weaponType], skill_level);
if(sq_GetSkillLevel(obj, SKILL_SWORDMASTER_BYKK_PROMISEOFANTIQUITY) > 0){
local bonus = [0, 2, 4, 6];
local skillLevel = sq_GetSkillLevel(obj, SKILL_SWORDMASTER_BYKK_PROMISEOFANTIQUITY);
bonusRate = bonusRate + sq_GetLevelData(obj, SKILL_SWORDMASTER_BYKK_PROMISEOFANTIQUITY, bonus[weaponType], skillLevel);
}
local change_appendage = appendage.sq_getChangeStatus("weaponMastery");
if(!change_appendage) change_appendage = appendage.sq_AddChangeStatus("weaponMastery",obj, obj, 0, CHANGE_STATUS_TYPE_PHYSICAL_ATTACK, true, bonusRate);
if(change_appendage){
change_appendage.clearParameter();
change_appendage.addParameter(CHANGE_STATUS_TYPE_EQUIPMENT_PHYSICAL_ATTACK, true, (bonusRate * 0.1).tofloat());
}
}
local apdPath = [];
switch(weaponType){
case 0:
apdPath = ["character/atswordman/1_swordmaster/blademastery/ap_blademastery.nut","character/atswordman/1_swordmaster/bluntmastery/ap_bluntmastery.nut","character/atswordman/1_swordmaster/heavyswordmastery/ap_heavyswordmastery.nut"];
break;
case 1:
apdPath = ["character/atswordman/1_swordmaster/bluntmastery/ap_bluntmastery.nut","character/atswordman/1_swordmaster/heavyswordmastery/ap_heavyswordmastery.nut"];
break;
case 2:
apdPath = ["character/atswordman/1_swordmaster/blademastery/ap_blademastery.nut","character/atswordman/1_swordmaster/heavyswordmastery/ap_heavyswordmastery.nut"];
break;
case 3:
apdPath = ["character/atswordman/1_swordmaster/bluntmastery/ap_bluntmastery.nut","character/atswordman/1_swordmaster/blademastery/ap_blademastery.nut"];
break;
}
for(local i = 0; i < apdPath.len(); i++){
if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, apdPath[i])) CNSquirrelAppendage.sq_RemoveAppendage(obj, apdPath[i]);
}
if(weaponType != 0){
local effectObj = obj.getVar("elementalsword").get_obj_vector(0);
if(effectObj){
local colObj = sq_GetCNRDObjectToCollisionObject(effectObj);
local state = colObj.getState();
switch(state % 10){
case 0: sq_AddDrawOnlyAniFromParent(colObj, "passiveobject/atswordman_bykk/swordmaster/animation/atelementalsword/fire/fireswordend_04.ani", 0, 0, 0); break;
case 1: sq_AddDrawOnlyAniFromParent(colObj, "passiveobject/atswordman_bykk/swordmaster/animation/atelementalsword/ice/iceswordend_04.ani", 0, 0, 0); break;
case 2: sq_AddDrawOnlyAniFromParent(colObj, "passiveobject/atswordman_bykk/swordmaster/animation/atelementalsword/dark/darkswordend_04.ani", 0, 0, 0); break;
case 3: sq_AddDrawOnlyAniFromParent(colObj, "passiveobject/atswordman_bykk/swordmaster/animation/atelementalsword/light/lightswordend_04.ani", 0, 0, 0); break;
}
colObj.setValid(false);
}
}
}
function proc_appendage_weaponmastery_bykk(appendage)
{
local parentObj = appendage.getParent();
if(!parentObj){appendage.setValid(false); return;}
}
function onAttackParent_appendage_Bladesoul_bykk(appendage, realAttacker, damager,boundingBox, isStuck)
{
if(isStuck) return;
print("test");
if(damager.isObjectType(OBJECTTYPE_ACTIVE) && CNSquirrelAppendage.sq_IsAppendAppendage(damager, "character/atswordman/1_swordmaster/bladesoul/ap_bladesoultar.nut")){
print("test2");
CNSquirrelAppendage.sq_RemoveAppendage(damager, "character/atswordman/1_swordmaster/bladesoul/ap_bladesoultar.nut")
local parentObj = appendage.getParent();
if(!parentObj){appendage.setValid(false); return;}
local obj = sq_GetCNRDObjectToSQRCharacter(parentObj);
local skill_level = sq_GetSkillLevel(obj, SKILL_SWORDMASTER_BYKK_BLADESOUL)
local bufftime = sq_GetLevelData(obj,SKILL_SWORDMASTER_BYKK_BLADESOUL, 1, skill_level);
local apdPath = "character/atswordman/1_swordmaster/bladesoul/ap_bladesoulbuff.nut";
local addAppendage = CNSquirrelAppendage.sq_GetAppendage(obj, apdPath);
if(!addAppendage){
addAppendage = CNSquirrelAppendage.sq_AppendAppendage(obj, obj, -1, false, apdPath, true);
getDamageRate_Swordmaster_bykk(obj);
}
addAppendage.sq_SetValidTime(bufftime);
addAppendage.setEnableIsBuff(true);
addAppendage.setAppendCauseSkill(BUFF_CAUSE_SKILL, sq_getJob(obj), 15, sq_GetSkillLevel(obj, 15));
CNSquirrelAppendage.sq_Append(addAppendage, obj, obj, true);
}
}
function onEnd_appendage_weaponmastery_bykk(appendage)
{
local parentObj = appendage.getParent();
if(!parentObj){appendage.setValid(false); return;}
local obj = sq_GetCNRDObjectToSQRCharacter(parentObj);
if(sq_GetSkillLevel(obj, SKILL_SWORDMASTER_BYKK_DRAWSWORD) > 0){
local loadSlot = obj.sq_GetSkillLoad(SKILL_SWORDMASTER_BYKK_DRAWSWORD);
if(loadSlot) obj.sq_RemoveSkillLoad(SKILL_SWORDMASTER_BYKK_DRAWSWORD);
}
if(sq_GetSkillLevel(obj, SKILL_SWORDMASTER_BYKK_MAGICSWORDSHOOT) > 0){
local loadSlot = obj.sq_GetSkillLoad(SKILL_SWORDMASTER_BYKK_MAGICSWORDSHOOT);
if(loadSlot) obj.sq_RemoveSkillLoad(SKILL_SWORDMASTER_BYKK_MAGICSWORDSHOOT);
}
}
function onAttackParent_appendage_Drawsword_bykk(appendage, realAttacker, damager, boundingBox, isStuck)
{
if(isStuck) return;
local parentObj = appendage.getParent();
if(!parentObj){appendage.setValid(false); return;}
local obj = sq_GetCNRDObjectToSQRCharacter(parentObj);
if(obj.getWeaponSubType() == 1 && sq_GetSkillLevel(obj, SKILL_SWORDMASTER_BYKK_BLADEMASTERY) > 0){
local timer = appendage.getVar("drawsword_time").get_ct_vector(0);
local currentT = timer.Get();
if(currentT <= 300){
timer.Reset();
timer.Start(10000,0);
if(appendage.getVar("drawsword_ap").getInt(10) >= sq_GetIntData(obj, SKILL_SWORDMASTER_BYKK_BLADEMASTERY, 3)){
appendage.getVar("drawsword_ap").setInt(10, 0);
local loadSlot = obj.sq_GetSkillLoad(SKILL_SWORDMASTER_BYKK_DRAWSWORD);
if(!loadSlot) return;
local skill_level = sq_GetSkillLevel(obj, SKILL_SWORDMASTER_BYKK_DRAWSWORD);
local maxCount = sq_GetLevelData(obj, SKILL_SWORDMASTER_BYKK_DRAWSWORD, 0, skill_level);
if(loadSlot.getRemainLoadNumber() < maxCount) loadSlot.increaseLoadCount(1);
}
else appendage.getVar("drawsword_ap").setInt(10, appendage.getVar("drawsword_ap").getInt(10) + 1);
}
else appendage.getVar("drawsword_ap").setInt(10, 0);
}
}
function onStart_appendage_Drawsword_bykk(appendage)
{
local parentObj = appendage.getParent();
if(!parentObj){appendage.setValid(false); return;}
local obj = sq_GetCNRDObjectToSQRCharacter(parentObj);
appendage.getVar("drawsword_ap").setInt(10, 0);
appendage.getVar("drawsword_time").clear_ct_vector();
appendage.getVar("drawsword_time").push_ct_vector();
}
function proc_appendage_Drawsword_bykk(appendage)
{
local parentObj = appendage.getParent();
if(!parentObj){appendage.setValid(false); return;}
local obj = sq_GetCNRDObjectToSQRCharacter(parentObj);
local skill_level = sq_GetSkillLevel(obj, SKILL_SWORDMASTER_BYKK_DRAWSWORD);
local maxCount = sq_GetLevelData(obj, SKILL_SWORDMASTER_BYKK_DRAWSWORD, 0, skill_level);
local coolTime = sq_GetLevelData(obj, SKILL_SWORDMASTER_BYKK_DRAWSWORD, 1, skill_level);
if(obj.getWeaponSubType() == 1 && sq_GetSkillLevel(obj, SKILL_SWORDMASTER_BYKK_BLADEMASTERY) > 0){
local bladeLevel = sq_GetSkillLevel(obj, SKILL_SWORDMASTER_BYKK_BLADEMASTERY);
maxCount = maxCount + sq_GetLevelData(obj, SKILL_SWORDMASTER_BYKK_BLADEMASTERY, 6, bladeLevel);
coolTime = coolTime - sq_GetIntData(obj, SKILL_SWORDMASTER_BYKK_BLADEMASTERY, 2);
}
if(sq_GetSkillLevel(obj, SKILL_SWORDMASTER_BYKK_ACCEDENCE) > 0){
maxCount = maxCount + sq_GetIntData(obj, SKILL_SWORDMASTER_BYKK_ACCEDENCE, 0)
}
local loadSlot = obj.sq_GetSkillLoad(SKILL_SWORDMASTER_BYKK_DRAWSWORD);
if(loadSlot){
local loadnumber = loadSlot.getRemainLoadNumber();
local skill_level = sq_GetSkillLevel(obj, SKILL_SWORDMASTER_BYKK_DRAWSWORD);
if(!loadSlot.isCooling()){
if(loadnumber < maxCount){
loadSlot.increaseLoadCount(1);
if(loadSlot.getRemainLoadNumber() < maxCount) loadSlot.setStartCool();
}
else if(loadnumber > maxCount) loadSlot.decreaseLoadCount(loadnumber - maxCount);
}
if(loadnumber > 0){
local sqrState = obj.getState();
local excludeState = [0,8,2,3,4,5,6,7,9,108,13,14,115,SKILL_SWORDMASTER_BYKK_OVERDRIVE,SKILL_SWORDMASTER_BYKK_CHANGESWORD];
for(local i = 0; i < excludeState.len(); i++){
if(sqrState == excludeState[i]) return;
}
// if(sqrState == 0 || sqrState == 8 || sqrState == 2 || sqrState == 3 || sqrState == 4 || sqrState == 5 || sqrState == 108 || sqrState == 6 || sqrState == 7 || sqrState == 14 || sqrState == 115 || sqrState == SKILL_SWORDMASTER_BYKK_OVERDRIVE || sqrState == SKILL_SWORDMASTER_BYKK_CHANGESWORD) return;
if(sqrState == SKILL_SWORDMASTER_BYKK_JACKCATCH && obj.getSkillSubState() > 0 && obj.getSkillSubState() < 7){
for(local i = 0; i < 255; i++){
obj.setSkillCommandEnable(i, false);
}
return;
}
local skillIndex = [SKILL_SWORDMASTER_BYKK_ATFLASH,
SKILL_SWORDMASTER_BYKK_BREAKSWORDDANCE,
SKILL_SWORDMASTER_BYKK_COUNTERSLASH,
SKILL_SWORDMASTER_BYKK_DEVILSLASH,
SKILL_SWORDMASTER_BYKK_DRAGONUPEX,
SKILL_SWORDMASTER_BYKK_EXCALIBUR,
SKILL_SWORDMASTER_BYKK_FUSIONBLADE,
SKILL_SWORDMASTER_BYKK_HALFMOON,
SKILL_SWORDMASTER_BYKK_ILLUSIONBLADE,
SKILL_SWORDMASTER_BYKK_JACKCATCH,
SKILL_SWORDMASTER_BYKK_LAEVATEINN,
SKILL_SWORDMASTER_BYKK_THUNDERSLASH,
SKILL_SWORDMASTER_BYKK_TIMESLASH,
SKILL_SWORDMASTER_BYKK_UPPERSLASH,
32,143,86,145];
if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, "character/atswordman/1_swordmaster/changesword/ap_changesword.nut")) skillIndex.push(SKILL_SWORDMASTER_BYKK_MAGICSWORDSHOOT);
for(local i = 0; i < skillIndex.len(); i++){
if(!sq_GetSkill(obj, skillIndex[i]).isInCoolTime()){
obj.setSkillCommandEnable(skillIndex[i], true);
local b_useskill = obj.sq_IsEnterSkill(skillIndex[i]);
if(b_useskill != -1){
if(obj.getState() == 132) {
if(skillIndex[i] == 32){
obj.getVar("DrawswordSet").setBool(0, true);
return;
}
else{
obj.getVar("DrawswordSet").setBool(0, false);
print("set here");
}
}
print("test : "+obj.getVar("DrawswordSet").getBool(0));
if(loadnumber == maxCount && obj.getVar("DrawswordSet").getBool(0) == false){
loadSlot.decreaseLoadCount(1);
print("set decreaseLoadCount");
loadSlot.setStartCool();
}
else if(obj.getVar("DrawswordSet").getBool(0) == false){
loadSlot.decreaseLoadCount(1);
print("set decreaseLoadCount");
loadSlot.setStartCool();
}
local skillbonusRate = 1;
if(obj.getWeaponSubType() == 1 && sq_GetSkillLevel(obj, SKILL_SWORDMASTER_BYKK_BLADEMASTERY) > 0){
obj.getVar("Drawsword_cooltime").setBool(0, true);
obj.getVar("Drawsword_skill").setBool(0, true);
}
local skill_level = sq_GetSkillLevel(obj, skillIndex[i]);
obj.startSkillCoolTime(skillIndex[i], skill_level, -1);
switch(sqrState){
case SKILL_SWORDMASTER_BYKK_BREAKSWORDDANCE://所有魔剑同时爆炸。
// sq_setCurrentAxisPos(obj, 2, 0);
// local subState = obj.getSkillSubState();
// local circleObj = obj.getVar("breakSwordDance_circle").get_obj_vector(0);
// if(circleObj){
// local colObj = sq_GetCNRDObjectToCollisionObject(circleObj);
// colObj.addSetStatePacket(21, null, STATE_PRIORITY_IGNORE_FORCE, false, "");
// }
// for(local i = subState; i < 9; i++){
// local swrodObj = obj.getVar("breakSwordDance_sword"+i.tostring()).get_obj_vector(0);
// if(swrodObj){
// local colObj = sq_GetCNRDObjectToCollisionObject(swrodObj);
// colObj.addSetStatePacket(21, null, STATE_PRIORITY_IGNORE_FORCE, false, "");
// }
// }
// local x = [0,210,147,99,153,142,234,250,250], y = [0,0,0,0,0,0,0,0,0], z = [0,61,156,47,94,75,12,55,0];
// local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_SWORDMASTER_BYKK_BREAKSWORDDANCE, -1, 3, 1.0) + 100;
// local element = 4;
// local AddAppendage = CNSquirrelAppendage.sq_GetAppendage(obj, "character/atswordman/1_swordmaster/changesword/ap_changesword.nut");
// if(AddAppendage) element = AddAppendage.getVar("elementIndex").getInt(10);
// local sizeRate = sq_GetIntData(obj, SKILL_SWORDMASTER_BYKK_BREAKSWORDDANCE, 8);
// if(obj.getVar("breaksworddance_stone").getBool(0)){
// totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_SWORDMASTER_BYKK_BREAKSWORDDANCE, -1, 2, 1.0) + 100;
// totalDamage = totalDamage * 250 / 100;
// sizeRate = sizeRate + 30;
// cearteSkillPassiveObj_AtSwordMan_bykk(obj,obj,PASSIVEOBJECT_BYKK_SWORDMASTER,x[8],y[8] + 1,z[8]-sq_GetZPos(obj),obj.getDirection(),1,SKILL_SWORDMASTER_BYKK_BREAKSWORDDANCE,11,totalDamage,sizeRate,0,0,0,0,0,0,1);
// }
// else{
// for(local i = 1; i < 9; i++){
// if(i >= 1 && i <= 7)
// cearteSkillPassiveObj_AtSwordMan_bykk(obj,obj,PASSIVEOBJECT_BYKK_SWORDMASTER,x[i],y[i],z[i],obj.getDirection(),1,SKILL_SWORDMASTER_BYKK_BREAKSWORDDANCE,10,totalDamage,element,sizeRate,0,0,0,0,0,1);
// else{
// totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_SWORDMASTER_BYKK_BREAKSWORDDANCE, -1, 2, 1.0) + 100;
// cearteSkillPassiveObj_AtSwordMan_bykk(obj,obj,PASSIVEOBJECT_BYKK_SWORDMASTER,x[i],y[i] + 1,z[i]-sq_GetZPos(obj),obj.getDirection(),1,SKILL_SWORDMASTER_BYKK_BREAKSWORDDANCE,11,totalDamage,sizeRate,0,0,0,0,0,0,1);
// }
// }
// }
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_SWORDMASTER_BYKK_BREAKSWORDDANCE, -1, 2, getSkillbounsRate_bykk(obj, SKILL_SWORDMASTER_BYKK_BREAKSWORDDANCE).tofloat() / 100.0);
local sizeRate = sq_GetIntData(obj, SKILL_SWORDMASTER_BYKK_BREAKSWORDDANCE, 9);
cearteSkillPassiveObj_AtSwordMan_bykk(obj,obj,PASSIVEOBJECT_BYKK_SWORDMASTER,375,0,0,obj.getDirection(),1,SKILL_SWORDMASTER_BYKK_BREAKSWORDDANCE,20,totalDamage,sizeRate,0,0,0,0,0,0,1);
break;
case SKILL_SWORDMASTER_BYKK_DEVILSLASH://释放最后爆炸
if(sq_GetIntData(obj, SKILL_SWORDMASTER_BYKK_DEVILSLASH, 16) > 0 || DEVILSALSH_STONE > 0 || sq_GetIntData(obj, SKILL_SWORDMASTER_BYKK_DRAWSWORD, 31) > 0){
local attackObj = obj.getVar("devilSlash_atk").get_obj_vector(0);
if(attackObj) attackObj.setValid(false);
local element = 4;
local AddAppendage = CNSquirrelAppendage.sq_GetAppendage(obj, "character/atswordman/1_swordmaster/changesword/ap_changesword.nut");
if(AddAppendage) element = AddAppendage.getVar("elementIndex").getInt(10);
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_SWORDMASTER_BYKK_DEVILSLASH, -1, 5, 1.0) + 100;
local sizeRate = sq_GetIntData(obj, SKILL_SWORDMASTER_BYKK_DEVILSLASH, 18) + 30;
if(obj.getWeaponSubType() == 3 && sq_GetSkillLevel(obj, SKILL_SWORDMASTER_BYKK_HEAVYSWORDMASTERY) > 0){
totalDamage = totalDamage * (100 + sq_GetLevelData(obj, SKILL_SWORDMASTER_BYKK_HEAVYSWORDMASTERY, 3, sq_GetSkillLevel(obj, SKILL_SWORDMASTER_BYKK_HEAVYSWORDMASTERY))) / 100;
sizeRate = sizeRate * sq_GetLevelData(obj, SKILL_SWORDMASTER_BYKK_HEAVYSWORDMASTERY, 13, sq_GetSkillLevel(obj, SKILL_SWORDMASTER_BYKK_HEAVYSWORDMASTERY)) / 100;
}
cearteSkillPassiveObj_AtSwordMan_bykk(obj,obj,PASSIVEOBJECT_BYKK_SWORDMASTER,100,0,20,obj.getDirection(),1,SKILL_SWORDMASTER_BYKK_DEVILSLASH,2,totalDamage,sizeRate,element,0,0,0,0,0,1);
}
break;
case SKILL_SWORDMASTER_BYKK_DRAGONUPEX://直接释放
break;
case SKILL_SWORDMASTER_BYKK_JACKCATCH:
sq_SimpleMoveToNearMovablePos(obj,400);
local size = obj.getVar("jackCatch_tar").get_obj_vector_size();
if(size > 0){
for(local i = 0; i < size; i++){
local targetObj = obj.getVar("jackCatch_tar").get_obj_vector(i);
if(targetObj) CNSquirrelAppendage.sq_RemoveAppendage(targetObj, "character/atswordman/1_swordmaster/jackcatch/ap_jackcatch.nut");
}
}
local effectObj = obj.getVar("jackCatch_circle").get_obj_vector(0);
if(effectObj){
local colObj = sq_GetCNRDObjectToCollisionObject(effectObj);
colObj.addSetStatePacket(22, null, STATE_PRIORITY_IGNORE_FORCE, false, "");
}
local VarName = ["jackCatch_circle_light","jackCatch_circle_fire","jackCatch_circle_ice","jackCatch_circle_dark"];
for(local i = 0; i < VarName.len(); i++){
local effectObj = obj.getVar(VarName[i]).get_obj_vector(0);
if(effectObj){
local colObj = sq_GetCNRDObjectToCollisionObject(effectObj);
colObj.setValid(false);
}
}
break;
case SKILL_SWORDMASTER_BYKK_LAEVATEINN:
break;
case SKILL_SWORDMASTER_BYKK_TIMESLASH:
obj.sq_SetXScrollStop(0);
local flashScreenObj = obj.getVar("flashobj").getObject(0);
if(flashScreenObj){
local pflashScreen = sq_GetCNRDObjectToFlashScreen(flashScreenObj);
if(pflashScreen) pflashScreen.fadeOut();
}
if(sq_GetSkillLevel(obj, SKILL_SWORDMASTER_BYKK_TIMESLASH)) sq_SetCustomDamageType(obj, true, 0);
break;
}
switch(skillIndex[i]){
case SKILL_SWORDMASTER_BYKK_ATFLASH:
obj.sq_IntVectClear();
if(obj.getWeaponSubType() == 1 && sq_GetSkillLevel(obj, SKILL_SWORDMASTER_BYKK_BLADEMASTERY) > 0) obj.sq_IntVectPush(2);
else obj.sq_IntVectPush(1);
obj.sq_AddSetStatePacket(STATE_SWORDMASTER_BYKK_ATFLASH, STATE_PRIORITY_IGNORE_FORCE, true);
break;
case SKILL_SWORDMASTER_BYKK_BREAKSWORDDANCE:
// obj.getVar("breaksworddance_tar").clear_obj_vector();
// if(sq_GetIntData(obj, SKILL_SWORDMASTER_BYKK_BREAKSWORDDANCE, 7) > 0 || BREAKSWORDDANCE_STONE > 0 || sq_GetIntData(obj, SKILL_SWORDMASTER_BYKK_DRAWSWORD, 34) > 0) obj.getVar("breaksworddance_stone").setBool(0, true);
// else obj.getVar("breaksworddance_stone").setBool(0, false);
obj.sq_IntVectClear();
obj.sq_IntVectPush(10);
obj.sq_AddSetStatePacket(SKILL_SWORDMASTER_BYKK_BREAKSWORDDANCE, STATE_PRIORITY_IGNORE_FORCE, true);
break;
case SKILL_SWORDMASTER_BYKK_COUNTERSLASH:
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(144, STATE_PRIORITY_IGNORE_FORCE, true);
break;
case SKILL_SWORDMASTER_BYKK_DEVILSLASH:
if(obj.getWeaponSubType() == 1 && sq_GetSkillLevel(obj, SKILL_SWORDMASTER_BYKK_BLADEMASTERY) > 0){
obj.getVar("charge_devilslash").setInt(10, 2);
obj.getVar("chargeatk_devilslash").setBool(0, true);
obj.sq_IntVectClear();
obj.sq_IntVectPush(3);
}
else{
obj.getVar("charge_devilslash").setInt(10, 0);
obj.sq_IsEnterSkillLastKeyUnits(SKILL_SWORDMASTER_BYKK_DEVILSLASH);
obj.getVar("chargeatk_devilslash").setBool(0, false);
obj.getVar("isDash_devilslash").setBool(0, false);
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
}
obj.sq_AddSetStatePacket(SKILL_SWORDMASTER_BYKK_DEVILSLASH, STATE_PRIORITY_IGNORE_FORCE, true);
break;
case SKILL_SWORDMASTER_BYKK_DRAGONUPEX:
obj.sq_IntVectClear();
if(sq_GetIntData(obj, SKILL_SWORDMASTER_BYKK_DRAGONUPEX, 20) > 0 || DRAGONUPEX_STONE > 0 || sq_GetIntData(obj, SKILL_SWORDMASTER_BYKK_DRAWSWORD, 32) > 0) obj.sq_IntVectPush(3);
else obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(SKILL_SWORDMASTER_BYKK_DRAGONUPEX, STATE_PRIORITY_IGNORE_FORCE, true);
break;
case SKILL_SWORDMASTER_BYKK_EXCALIBUR:
obj.sq_IntVectClear();
if(obj.getWeaponSubType() == 2 && sq_GetSkillLevel(obj, SKILL_SWORDMASTER_BYKK_BLUNTMASTERY) > 0) obj.sq_IntVectPush(11);
else obj.sq_IntVectPush(10);
obj.sq_AddSetStatePacket(SKILL_SWORDMASTER_BYKK_EXCALIBUR, STATE_PRIORITY_IGNORE_FORCE, true);
break;
case SKILL_SWORDMASTER_BYKK_FUSIONBLADE:
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(SKILL_SWORDMASTER_BYKK_FUSIONBLADE, STATE_PRIORITY_IGNORE_FORCE, true);
break;
case SKILL_SWORDMASTER_BYKK_HALFMOON:
if(obj.getWeaponSubType() == 1 && sq_GetSkillLevel(obj, SKILL_SWORDMASTER_BYKK_BLADEMASTERY) > 0){
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_SWORDMASTER_BYKK_ATFLASH, -1, 1, 1.0) + 100;
local sizeRate = sq_GetIntData(obj, SKILL_SWORDMASTER_BYKK_ATFLASH, 0);
local sub = 4;
local AddAppendage = CNSquirrelAppendage.sq_GetAppendage(obj, "character/atswordman/1_swordmaster/changesword/ap_changesword.nut");
if(AddAppendage) sub = AddAppendage.getVar("elementIndex").getInt(10);
sizeRate = sizeRate * 150 / 100;
cearteSkillPassiveObj_AtSwordMan_bykk(obj,obj,PASSIVEOBJECT_BYKK_SWORDMASTER,0,0,0,obj.getDirection(),1,SKILL_SWORDMASTER_BYKK_ATFLASH,3,totalDamage,sizeRate,-30,sub,0,0,0,0,1);
obj.getVar("halfmoon_max").setBool(0, true);
obj.sq_IntVectClear();
obj.sq_IntVectPush(2);
obj.sq_AddSetStatePacket(SKILL_SWORDMASTER_BYKK_HALFMOON, STATE_PRIORITY_IGNORE_FORCE, true);
}
else{
obj.getVar("halfmoon_max").setBool(0, false);
obj.getVar("halfmoon_bool").setBool(0, false);
obj.getVar("halfmoon_bool").setBool(1, false);
obj.sq_IsEnterSkillLastKeyUnits(SKILL_SWORDMASTER_BYKK_HALFMOON);
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(SKILL_SWORDMASTER_BYKK_HALFMOON, STATE_PRIORITY_IGNORE_FORCE, true);
}
break;
case SKILL_SWORDMASTER_BYKK_ILLUSIONBLADE:
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(SKILL_SWORDMASTER_BYKK_ILLUSIONBLADE, STATE_PRIORITY_IGNORE_FORCE, true);
break;
case SKILL_SWORDMASTER_BYKK_JACKCATCH:
obj.getVar("jackCatch_tar").clear_obj_vector();
obj.sq_IntVectClear();
if(sq_GetIntData(obj, SKILL_SWORDMASTER_BYKK_JACKCATCH, 11) > 0 || JACKCATCH_STONE > 0 || sq_GetIntData(obj, SKILL_SWORDMASTER_BYKK_DRAWSWORD, 33) > 0) obj.sq_IntVectPush(7);
else obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(SKILL_SWORDMASTER_BYKK_JACKCATCH, STATE_PRIORITY_IGNORE_FORCE, true);
break;
case SKILL_SWORDMASTER_BYKK_LAEVATEINN:
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(SKILL_SWORDMASTER_BYKK_LAEVATEINN, STATE_PRIORITY_IGNORE_FORCE, true);
break;
case SKILL_SWORDMASTER_BYKK_MAGICSWORDSHOOT:
if(sq_GetIntData(obj, SKILL_SWORDMASTER_BYKK_MAGICSWORDSHOOT, 6) < 1 || MAGICSWORDSHOOT_STONE < 1) obj.sq_IsEnterSkillLastKeyUnits(SKILL_SWORDMASTER_BYKK_MAGICSWORDSHOOT);
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(SKILL_SWORDMASTER_BYKK_MAGICSWORDSHOOT, STATE_PRIORITY_IGNORE_FORCE, true);
break;
case SKILL_SWORDMASTER_BYKK_THUNDERSLASH:
obj.getVar("thunderslash_target").clear_obj_vector();
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_SWORDMASTER_BYKK_THUNDERSLASH, STATE_PRIORITY_IGNORE_FORCE, true);
break;
case SKILL_SWORDMASTER_BYKK_TIMESLASH:
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(SKILL_SWORDMASTER_BYKK_TIMESLASH, STATE_PRIORITY_IGNORE_FORCE, true);
break;
case SKILL_SWORDMASTER_BYKK_UPPERSLASH:
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(SKILL_SWORDMASTER_BYKK_UPPERSLASH, STATE_PRIORITY_IGNORE_FORCE, true);
break;
case 86:
CheckUseAddloadDrawsword(obj,143,{[0] = true,[108] = true,[14] = true},0);
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(86, STATE_PRIORITY_IGNORE_FORCE, true);
break;
case 143:
CheckUseAddloadDrawsword(obj,143,{[0] = true,[108] = true,[14] = true},0);
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(143, STATE_PRIORITY_IGNORE_FORCE, true);
break;
case 32:
CheckUseAddloadDrawsword(obj,143,{[0] = true,[108] = true,[14] = true},0);
obj.sq_StopMove();
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(132, STATE_PRIORITY_IGNORE_FORCE, true);
local excount = 0;
if(sq_GetSkillLevel(obj, 58) > 0) excount = 2;
obj.getVar("Chainslash").clear_vector();
obj.getVar("Chainslash").push_vector(sq_GetLevelData(obj,32, 2, sq_GetSkillLevel(obj, 32))-1 + excount);
break;
case 145:
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(145, STATE_PRIORITY_IGNORE_FORCE, true);
break;
}
}
}
}
}
}
else obj.sq_AddSkillLoad(SKILL_SWORDMASTER_BYKK_DRAWSWORD, 50, maxCount, coolTime);
}
function onEnd_appendage_Drawsword_bykk(appendage)
{
local parentObj = appendage.getParent();
if(!parentObj){appendage.setValid(false); return;}
local obj = sq_GetCNRDObjectToSQRCharacter(parentObj);
if(obj.sq_GetSkillLoad(SKILL_SWORDMASTER_BYKK_DRAWSWORD)) obj.sq_RemoveSkillLoad(SKILL_SWORDMASTER_BYKK_DRAWSWORD);
}
function onStart_appendage_Overdrive_bykk(appendage)
{
local parentObj = appendage.getParent();
local obj = sq_GetCNRDObjectToSQRCharacter(parentObj);
getDamageRate_Swordmaster_bykk(obj);
local skill_level = sq_GetSkillLevel(obj, SKILL_SWORDMASTER_BYKK_OVERDRIVE);
local CRITICAL_HIT_RATE = obj.sq_GetLevelData(SKILL_SWORDMASTER_BYKK_OVERDRIVE, 2, skill_level);
local CRITICAL_DAMAGE_RATE = obj.sq_GetLevelData(SKILL_SWORDMASTER_BYKK_OVERDRIVE, 1, skill_level);
local change_appendage = appendage.sq_getChangeStatus("Overdrive");
if(!change_appendage) change_appendage = appendage.sq_AddChangeStatus("Overdrive",obj, obj, 0, 15, false, CRITICAL_HIT_RATE);
if(change_appendage){
change_appendage.clearParameter();
change_appendage.addParameter(CHANGE_STATUS_TYPE_PHYSICAL_CRITICAL_HIT_RATE, false, CRITICAL_HIT_RATE.tofloat());
//change_appendage.addParameter(CHANGE_STATUS_TYPE_PHYSICAL_CRITICAL_DAMAGE_RATE, false, (CRITICAL_DAMAGE_RATE * 0.1 / 0.667).tofloat());
}
}
function getSkillbounsRate_bykk(obj, skillIndex2)
{
local skillbonusRate = 100;
local weaponType = obj.getWeaponSubType();
if(weaponType == 0 && obj.getVar("elementalsword").get_obj_vector_size() > 0){
skillbonusRate = 100 + sq_GetLevelData(obj, SKILL_SWORDMASTER_BYKK_SHORTSWORDMASTERY, 5, sq_GetSkillLevel(obj, SKILL_SWORDMASTER_BYKK_SHORTSWORDMASTERY)) / 10;
print("skillbonusRate = "+skillbonusRate);
return skillbonusRate;
}
local apdPath = ["","character/atswordman/1_swordmaster/blademastery/ap_blademastery.nut","character/atswordman/1_swordmaster/bluntmastery/ap_bluntmastery.nut","character/atswordman/1_swordmaster/heavyswordmastery/ap_heavyswordmastery.nut"];
local skillIndex = [-1,SKILL_SWORDMASTER_BYKK_BLADEMASTERY, SKILL_SWORDMASTER_BYKK_BLUNTMASTERY, SKILL_SWORDMASTER_BYKK_HEAVYSWORDMASTERY];
local buffnumber = [0,5,13,12];
if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, apdPath[weaponType])){
if(weaponType == 1) skillbonusRate = 100 + sq_GetLevelData(obj, skillIndex[weaponType], buffnumber[weaponType], sq_GetSkillLevel(obj, skillIndex[weaponType]));
else skillbonusRate = 100 + sq_GetLevelData(obj, skillIndex[weaponType], buffnumber[weaponType], sq_GetSkillLevel(obj, skillIndex[weaponType])) / 10;
}
print("skillbonusRate = "+skillbonusRate);
return skillbonusRate;
}
function blademastery_buff(obj)
{
local apdPath = "character/atswordman/1_swordmaster/blademastery/ap_blademastery.nut";
if(obj.getVar("Drawsword_skill").getBool(0)){
obj.getVar("Drawsword_skill").setBool(0, false);
if(!CNSquirrelAppendage.sq_IsAppendAppendage(obj, apdPath)){
local addAppendage = CNSquirrelAppendage.sq_AppendAppendage(obj, obj, -1, false, apdPath, true);
addAppendage.setEnableIsBuff(true);
addAppendage.setAppendCauseSkill(BUFF_CAUSE_SKILL, sq_getJob(obj), SKILL_SWORDMASTER_BYKK_BLADEMASTERY, sq_GetSkillLevel(obj, SKILL_SWORDMASTER_BYKK_BLADEMASTERY));
CNSquirrelAppendage.sq_Append(addAppendage, obj, obj, true);
obj.getVar("Drawsword_skill").setBool(0, false);
}
}
else{
if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, apdPath)) CNSquirrelAppendage.sq_RemoveAppendage(obj, apdPath);
}
}
function checkExecutableSkill_Atflash_bykk(obj)
{
if (!obj) return false;
local isUse = obj.sq_IsUseSkill(SKILL_SWORDMASTER_BYKK_ATFLASH);
if(isUse){
obj.sq_IntVectClear();
if(obj.getWeaponSubType() == 1 && sq_GetSkillLevel(obj, SKILL_SWORDMASTER_BYKK_BLADEMASTERY) > 0) obj.sq_IntVectPush(2);
else obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_SWORDMASTER_BYKK_ATFLASH, STATE_PRIORITY_IGNORE_FORCE, true);
obj.startSkillCoolTime(SKILL_SWORDMASTER_BYKK_ATFLASH, sq_GetSkillLevel(obj, SKILL_SWORDMASTER_BYKK_ATFLASH), -1);
return true;
}
return false;
}
function checkCommandEnable_Atflash_bykk(obj)
{
if (!obj) return false;
return true;
}
function onSetState_Atflash_bykk(obj, state, datas, isResetTimer)
{
if(!obj) return;
local subState = obj.sq_GetVectorData(datas, 0);
obj.setSkillSubState(subState);
obj.sq_StopMove();
local aniSet = [93,94,95];
local skill = sq_GetSkill(obj, SKILL_SWORDMASTER_BYKK_CHANGESWORD), apdPath = "character/atswordman/1_swordmaster/changesword/ap_changesword.nut";
if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, apdPath) && !skill.isSealFunction()) aniSet = [279,280,281];
local effSet = ["flash1","flash2","flash3_flash2"];
obj.sq_SetCurrentAnimation(aniSet[subState]);
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED,SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
changeSwordEffect_bykk(obj, effSet[subState], SKILL_SWORDMASTER_BYKK_ATFLASH);
if(subState == 0){
if(obj.getWeaponSubType() == 3 && sq_GetSkillLevel(obj, SKILL_SWORDMASTER_BYKK_HEAVYSWORDMASTERY) > 0) sq_SetCustomDamageType(obj, true, 1);
}
else obj.sq_PlaySound("SW_FLASH");
}
function onEndCurrentAni_Atflash_bykk(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
obj.sq_IntVectClear();
obj.sq_IntVectPush(1);
obj.sq_AddSetStatePacket(STATE_SWORDMASTER_BYKK_ATFLASH, STATE_PRIORITY_IGNORE_FORCE, true);
break;
case 1:
case 2:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_IGNORE_FORCE, true);
break;
}
}
function onAttack_Atflash_bykk(obj, damager, boundingBox, isStuck)
{
if(!obj || isStuck) return false;
if(sq_GetSkillLevel(obj, SKILL_SWORDMASTER_BYKK_MAGICSWORDUP) > 0 && damager.isObjectType(OBJECTTYPE_ACTIVE)){
isMagicSwordUp_Attack(obj,damager,boundingBox);
}
}
function onEnterFrame_Atflash_bykk(obj, frameIndex)
{
if(!obj) return;
}
function onEndState_Atflash_bykk(obj, newState)
{
if(!obj) return;
if(newState != STATE_SWORDMASTER_BYKK_ATFLASH){
if(sq_GetSkillLevel(obj, SKILL_SWORDMASTER_BYKK_HEAVYSWORDMASTERY) > 0 && obj.getWeaponSubType() == 3) sq_SetCustomDamageType(obj, true, 0);
blademastery_buff(obj);
}
}
function onKeyFrameFlag_Atflash_bykk(obj, flagIndex)
{
if (!obj) return;
switch(flagIndex){
case 1:
case 2:
case 3:
case 4:
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_SWORDMASTER_BYKK_ATFLASH, -1, 1, getSkillbounsRate_bykk(obj, SKILL_SWORDMASTER_BYKK_ATFLASH).tofloat() / 100.0) + 100;
local sizeRate = sq_GetIntData(obj, SKILL_SWORDMASTER_BYKK_ATFLASH, 0);
local sub = 4, level = sq_GetSkillLevel(obj, 174) + 5,prob = 0, time = 0, damage = 0;
local AddAppendage = CNSquirrelAppendage.sq_GetAppendage(obj, "character/atswordman/1_swordmaster/changesword/ap_changesword.nut");
if(AddAppendage) sub = AddAppendage.getVar("elementIndex").getInt(10);
if(sub < 4){
local skill_level = sq_GetSkillLevel(obj, SKILL_SWORDMASTER_BYKK_ATFLASH);
switch(sub){
case 0: prob = sq_GetLevelData(obj, SKILL_SWORDMASTER_BYKK_ATFLASH, 3, skill_level); time = sq_GetLevelData(obj, SKILL_SWORDMASTER_BYKK_ATFLASH, 5, skill_level); damage = sq_GetLevelData(obj, SKILL_SWORDMASTER_BYKK_ATFLASH, 4, skill_level); break;
case 1: prob = sq_GetLevelData(obj, SKILL_SWORDMASTER_BYKK_ATFLASH, 7, skill_level); time = sq_GetLevelData(obj, SKILL_SWORDMASTER_BYKK_ATFLASH, 9, skill_level); damage = sq_GetLevelData(obj, SKILL_SWORDMASTER_BYKK_ATFLASH, 8, skill_level); break;
case 2: prob = sq_GetLevelData(obj, SKILL_SWORDMASTER_BYKK_ATFLASH, 15, skill_level); time = sq_GetLevelData(obj, SKILL_SWORDMASTER_BYKK_ATFLASH, 17, skill_level); break;
case 3: prob = sq_GetLevelData(obj, SKILL_SWORDMASTER_BYKK_ATFLASH, 11, skill_level); time = sq_GetLevelData(obj, SKILL_SWORDMASTER_BYKK_ATFLASH, 13, skill_level); damage = sq_GetLevelData(obj, SKILL_SWORDMASTER_BYKK_ATFLASH, 12, skill_level); break;
}
if(obj.getWeaponSubType() == 0 && sq_GetSkillLevel(obj, SKILL_SWORDMASTER_BYKK_SHORTSWORDMASTERY) > 0){
local skillLevel = sq_GetSkillLevel(obj, SKILL_SWORDMASTER_BYKK_SHORTSWORDMASTERY);
prob = prob * (100 + sq_GetLevelData(obj, SKILL_SWORDMASTER_BYKK_SHORTSWORDMASTERY, 2, skillLevel)) / 100;
damage = damage * (100 + sq_GetLevelData(obj, SKILL_SWORDMASTER_BYKK_SHORTSWORDMASTERY, 3, skillLevel)) / 100;
}
}
local roate = 0;
if(flagIndex == 4){sizeRate = sizeRate * 130 / 100; roate = 10};
cearteSkillPassiveObj_AtSwordMan_bykk(obj,obj,PASSIVEOBJECT_BYKK_SWORDMASTER,0,0,0,obj.getDirection(),1,SKILL_SWORDMASTER_BYKK_ATFLASH,flagIndex,totalDamage,sizeRate,roate,sub,level,prob,time,damage,1);
break;
}
}
function onTimeEvent_Atflash_bykk(obj, timeEventIndex, timeEventCount)
{}
function onProcCon_Atflash_bykk(obj)
{
if(!obj) return;
}
function onProc_Atflash_bykk(obj)
{
if(!obj) return;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function checkExecutableSkill_Atspeedslash_bykk(obj)
{
if (!obj) return false;
local isUse = obj.sq_IsUseSkill(145);
if (isUse){
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(145, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_Atspeedslash_bykk(obj)
{
if (!obj) return false;
return true;
}
function onSetState_Atspeedslash_bykk(obj, state, datas, isResetTimer)
{
if(!obj) return;
local subState = obj.sq_GetVectorData(datas, 0);
obj.setSkillSubState(subState);
switch(subState){
case 0:
obj.sq_StopMove();
local aniSet = [73];
local skill = sq_GetSkill(obj, SKILL_SWORDMASTER_BYKK_CHANGESWORD), apdPath = "character/atswordman/1_swordmaster/changesword/ap_changesword.nut";
if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, apdPath) && !skill.isSealFunction()) aniSet = [317];
obj.sq_SetCurrentAnimation(aniSet[subState]);
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED,SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
local effSet = ["SpeedSlash"];
changeSwordEffect_bykk(obj, effSet[subState], 145);
obj.sq_SetCurrentAttackInfo(59);
local bonus = obj.sq_GetBonusRateWithPassive(145, -1, 0, 1.0) + 100;
obj.sq_SetCurrentAttackBonusRate(bonus);
local posX = sq_GetDistancePos(obj.getXPos(), obj.getDirection(), sq_GetLevelData(obj,145, 1, sq_GetSkillLevel(obj, 145)));
obj.getVar("Atspeedslash").clear_vector();
obj.getVar("Atspeedslash").push_vector(posX);
obj.getVar("Atspeedslash").setBool(0,false);
setWeaponMaster_attackElement(obj);
break;
}
}
function onEndCurrentAni_Atspeedslash_bykk(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_IGNORE_FORCE, true);
break;
}
}
function onAttack_Atspeedslash_bykk(obj, damager, boundingBox, isStuck)
{
if(!obj) return false;
if(sq_GetSkillLevel(obj, SKILL_SWORDMASTER_BYKK_MAGICSWORDUP) > 0 && damager.isObjectType(OBJECTTYPE_ACTIVE)){
isMagicSwordUp_Attack(obj,damager,boundingBox);
}
local subState = obj.getSkillSubState();
switch(subState){
case 0:
MagicswordupOccur(obj, damager, boundingBox, isStuck);
//MagicSword_BasiconAttack(obj, damager, boundingBox, isStuck);
local path = "character/atswordman/1_swordmaster/atspeedslash/ap_atspeedslash.nut";
local forceap = CNSquirrelAppendage.sq_AppendAppendage(damager, obj, -1, false, path, true);
if(sq_IsHoldable(obj,damager) && sq_IsGrabable(obj,damager) && !sq_IsFixture(damager))
if(forceap){
sq_HoldAndDelayDie(damager, obj, true, false, true, 200, 150, ENUM_DIRECTION_NEUTRAL, forceap);
local appendageInfo = forceap.getAppendageInfo();
appendageInfo.setValidTime(500);
}
break;
}
}
function onEnterFrame_Atspeedslash_bykk(obj, frameIndex)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState)
{
case 3:
break;
case 4:
break;
}
}
function onEndState_Atspeedslash_bykk(obj, newState)
{
if(!obj) return;
if(newState != 145)
blademastery_buff(obj);
}
function onChangeSkillEffect_Atspeedslash_bykk(obj, skillIndex, reciveData)
{
if(!obj || skillIndex != 145) return;
if(obj.getVar("Atspeedslash").getBool(0))
return;
obj.getVar("Atspeedslash").setBool(0,true);
local curani = obj.getCurrentAnimation();
sq_SetAnimationCurrentTimeByFrame(curani, 5, true);
}
function onKeyFrameFlag_Atspeedslash_bykk(obj, flagIndex)
{}
function onTimeEvent_Atspeedslash_bykk(obj, timeEventIndex, timeEventCount)
{}
function onProcCon_Atspeedslash_bykk(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState)
{
case 0:
if(obj.getVar("Atspeedslash").getBool(0))
return;
local curani = obj.getCurrentAnimation();
local poleFrmIndex = obj.sq_GetCurrentFrameIndex(curani);
obj.setSkillCommandEnable(145, true);
if(obj.sq_IsEnterSkill(145) != -1 && poleFrmIndex < 4)
{
sq_BinaryStartWrite();
sq_SendChangeSkillEffectPacket(obj, 145);
}
break;
}
}
function onProc_Atspeedslash_bykk(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState)
{
case 0:
if(obj.getVar("Atspeedslash").getBool(0))
break;
local XPOS = obj.getVar("Atspeedslash").get_vector(0);
local curani = obj.getCurrentAnimation();
local aniSumTime = sq_GetDelaySum(curani);
local ststeTime = obj.sq_GetStateTimer();
local CelXpos = sq_GetAccel(obj.getXPos(), XPOS, ststeTime, aniSumTime, false);
if(obj.isMovablePos(CelXpos, obj.getYPos()))
sq_setCurrentAxisPos(obj, 0, CelXpos);
break;
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function checkExecutableSkill_Breaksworddance_bykk(obj)
{
if (!obj) return false;
local isUse = obj.sq_IsUseSkill(SKILL_SWORDMASTER_BYKK_BREAKSWORDDANCE);
if (isUse){
// obj.getVar("breaksworddance_tar").clear_obj_vector();
// if(sq_GetIntData(obj, SKILL_SWORDMASTER_BYKK_BREAKSWORDDANCE, 7) > 0 || BREAKSWORDDANCE_STONE > 0 || sq_GetIntData(obj, SKILL_SWORDMASTER_BYKK_DRAWSWORD, 34) > 0) obj.getVar("breaksworddance_stone").setBool(0, true);
// else obj.getVar("breaksworddance_stone").setBool(0, false);
obj.sq_IntVectClear();
obj.sq_IntVectPush(10);
obj.sq_AddSetStatePacket(SKILL_SWORDMASTER_BYKK_BREAKSWORDDANCE, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_Breaksworddance_bykk(obj)
{
if (!obj) return false;
return true;
}
function onSetState_Breaksworddance_bykk(obj, state, datas, isResetTimer)
{
if(!obj) return;
local subState = obj.sq_GetVectorData(datas, 0);
obj.setSkillSubState(subState);
obj.sq_StopMove();
obj.sq_ZStop();
if(subState >= 10){
switch(subState){
case 10:
obj.sq_SetCurrentAnimation(754);
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED,SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
local currentAni = obj.getCurrentAnimation();
local speedRate = 6000 / currentAni.getDelaySum(0, 0);
obj.getVar("breaksworddanceSet").setInt(0, speedRate);
local aniPath = ["passiveobject/atswordman_bykk/newswordmaster/animation/atbreaksworddance/newatbreaksworddancefront_00.ani","passiveobject/atswordman_bykk/newswordmaster/animation/atbreaksworddance/newatbreaksworddanceback_00.ani","passiveobject/atswordman_bykk/newswordmaster/animation/atbreaksworddance/newatbreaksworddancebottom_00.ani"]
for(local i = 0; i < 3; i++){
local pooledObj = sq_AddDrawOnlyAniFromParent(obj, aniPath[i], 375, 0, 0);
local pAni = pooledObj.getCurrentAnimation();
pAni.setSpeedRate(speedRate.tofloat());
if(i == 2) sq_ChangeDrawLayer(pooledObj, ENUM_DRAWLAYER_BOTTOM);
}
obj.sq_SetXScrollStart(375, 200);
break;
case 11:
obj.sq_SetCurrentAnimation(752);
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED,SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/10_atswordman_bykk/atbreaksworddance/newatbreaksworddancestarteffect_00.ani", -750, 0, 0);
sq_flashScreen(obj, 40, 120, 40, 76, sq_RGB(255, 255, 255), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
sq_flashScreen(obj, 0, 600, 0, 127, sq_RGB(0, 0, 0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
sq_SetMyShake(obj, 5, 120);
//[OFFSET] `EffectPos` 88 0 63
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/10_atswordman_bykk/atbreaksworddance/newatbreaksworddancedasheffect_00.ani", 88, 0, 0);
obj.sq_SetCurrentAttackInfo(238);
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_SWORDMASTER_BYKK_BREAKSWORDDANCE, -1, 0, getSkillbounsRate_bykk(obj, SKILL_SWORDMASTER_BYKK_BREAKSWORDDANCE).tofloat() / 100.0);
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
break;
case 12:
obj.sq_SetCurrentAnimation(753);
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED,SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
//[OFFSET] `EffectPos` 0 0 -47
local speedRate = obj.getVar("breaksworddanceSet").getInt(0);
local pooledObj = sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/10_atswordman_bykk/atbreaksworddance/newatbreaksworddanceendeffect_00.ani", 0, 0, -47);
local pAni = pooledObj.getCurrentAnimation();
pAni.setSpeedRate(speedRate.tofloat());
sq_SetMyShake(obj, 5, 120);
obj.sq_SetCurrentAttackInfo(239);
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_SWORDMASTER_BYKK_BREAKSWORDDANCE, -1, 1, getSkillbounsRate_bykk(obj, SKILL_SWORDMASTER_BYKK_BREAKSWORDDANCE).tofloat() / 100.0);
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
local currentAni = obj.getCurrentAnimation();
local delay = currentAni.getDelaySum(0, 2);
obj.setTimeEvent(10, delay / 10, 8, true);
break;
}
return;
}
local aniSet = [135,136,137,138,139,140,141,142,143];
local skill = sq_GetSkill(obj, SKILL_SWORDMASTER_BYKK_CHANGESWORD), apdPath = "character/atswordman/1_swordmaster/changesword/ap_changesword.nut";
if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, apdPath) && !skill.isSealFunction()) aniSet = [256,249,250,251,252,253,254,255,257];
local effSet = ["breaksworddance_cast","breaksworddance_attack1","breaksworddance_attack2","breaksworddance_attack3","breaksworddance_attack4","breaksworddance_attack5","breaksworddance_attack6","breaksworddance_attack7","breaksworddance_finishattack"];
obj.sq_SetCurrentAnimation(aniSet[subState]);
changeSwordEffect_bykk(obj, effSet[subState], SKILL_SWORDMASTER_BYKK_BREAKSWORDDANCE);
local currentAni = obj.getCurrentAnimation();
if(subState > 1){
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED,SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
local inputConut = obj.getRapidInputFrequency();
inputConut = inputConut.tointeger();
if(inputConut > 2) currentAni.setSpeedRate(180.0);
}
switch(subState){
case 0:
local baseX = sq_GetXPos(obj);
local baseY = sq_GetYPos(obj);
local direction = obj.getDirection();
local moveX = [0,600,200,390,400,220,600,0], moveY = [0,0,65,-65,65,-65,0,0];
for(local i = 1; i < 8; i++){
obj.getVar("breakSwordDance_move").setInt(20 + i, sq_GetDistancePos(baseX ,direction, moveX[i]));
obj.getVar("breakSwordDance_move").setInt(30 + i, baseY + moveY[i]);
}
obj.getVar("breakSwordDance_move").setInt(100, sq_GetXPos(obj));
obj.getVar("breakSwordDance_move").setInt(101, sq_GetYPos(obj));
local x = [100,100,200,200,300,400,400,500], y = [-25,15,-55,45,0,-55,45,0], sub = [7,8,5,2,1,3,4,6];
cearteSkillPassiveObj_AtSwordMan_bykk(obj,obj,PASSIVEOBJECT_BYKK_SWORDMASTER,300,0,0,obj.getDirection(),1,SKILL_SWORDMASTER_BYKK_BREAKSWORDDANCE,1,0,0,0,0,0,0,0,0,0);
for(local i = 0; i < x.len(); i++){
cearteSkillPassiveObj_AtSwordMan_bykk(obj,obj,PASSIVEOBJECT_BYKK_SWORDMASTER,x[i],y[i],0,obj.getDirection(),1,SKILL_SWORDMASTER_BYKK_BREAKSWORDDANCE,2,sub[i],0,0,0,0,0,0,0,0);
}
local flashObj = sq_flashScreen(obj,100,999999,0,255, sq_RGB(0,0,0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
obj.getVar("breakSwordDance_flash").clear_obj_vector();
obj.getVar("breakSwordDance_flash").push_obj_vector(flashObj);
break;
case 1:
obj.getVar("breakSwordDance_move").setInt(1, sq_GetXPos(obj));
local currentAni = obj.getCurrentAnimation();
local delaySum = currentAni.getDelaySum(0,1);
obj.setTimeEvent(1, delaySum / 11, 10, false);
break;
case 8:
local currentAni = obj.getCurrentAnimation();
local delaySum = currentAni.getDelaySum(0,2);
obj.setTimeEvent(2, delaySum, 1, false);
local circleObj = obj.getVar("breakSwordDance_circle").get_obj_vector(0);
if(circleObj){
local colObj = sq_GetCNRDObjectToCollisionObject(circleObj);
colObj.addSetStatePacket(21, null, STATE_PRIORITY_IGNORE_FORCE, false, "");
}
break;
}
if(subState > 1 && subState < 8){
local moveX = obj.getVar("breakSwordDance_move").getInt(20 + subState);
local moveY = obj.getVar("breakSwordDance_move").getInt(30 + subState);
sq_setCurrentAxisPos(obj, 0, moveX);
sq_setCurrentAxisPos(obj, 1, moveY);
if(subState % 2 == 0) sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/atbreaksworddance/atbreaksworddance_dash_dust.ani", 0, 0, 0);
else sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/atbreaksworddance/atbreaksworddance_dash_dust2.ani", 0, 0, 0);
}
if(subState > 0 && subState <= 8){
local swrodObj = obj.getVar("breakSwordDance_sword"+subState.tostring()).get_obj_vector(0);
if(swrodObj){
local colObj = sq_GetCNRDObjectToCollisionObject(swrodObj);
colObj.addSetStatePacket(21, null, STATE_PRIORITY_IGNORE_FORCE, false, "");
}
}
}
function onEndCurrentAni_Breaksworddance_bykk(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 10:
case 11:
if(subState == 7) sq_setCurrentAxisPos(obj, 2, 200);
obj.sq_IntVectClear();
obj.sq_IntVectPush(subState + 1);
obj.sq_AddSetStatePacket(SKILL_SWORDMASTER_BYKK_BREAKSWORDDANCE, STATE_PRIORITY_IGNORE_FORCE, true);
break;
case 12:
case 8:
sq_SimpleMoveToNearMovablePos(obj, 1200);
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_IGNORE_FORCE, true);
break;
}
}
function onAttack_Breaksworddance_bykk(obj, damager, boundingBox, isStuck)
{
if(!obj) return false;
if(sq_GetSkillLevel(obj, SKILL_SWORDMASTER_BYKK_MAGICSWORDUP) > 0 && damager.isObjectType(OBJECTTYPE_ACTIVE)){
isMagicSwordUp_Attack(obj,damager,boundingBox);
}
}
function onEnterFrame_Breaksworddance_bykk(obj, frameIndex)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
switch(frameIndex){
case 0:
obj.sq_PlaySound("BREAK_SWORDDANCE_CAST");
obj.sq_PlaySound("SW_BREAK_SWORDDANCE_01");
break;
}
break;
case 1:
switch(frameIndex){
case 0: obj.sq_PlaySound("BREAK_SWORDDANCE_MOVE"); break;
}
break;
case 8:
switch(frameIndex){
case 0: obj.sq_PlaySound("SW_BREAK_SWORDDANCE_02"); break;
}
break;
}
}
function onEndState_Breaksworddance_bykk(obj, newState)
{
if(!obj) return;
local subState = obj.getSkillSubState();
if(newState != SKILL_SWORDMASTER_BYKK_BREAKSWORDDANCE){
obj.sq_SetXScrollStop(100);
local flashScreenObj = obj.getVar("breakSwordDance_flash").get_obj_vector(0);
if(flashScreenObj){
local pflashScreen = sq_GetCNRDObjectToFlashScreen(flashScreenObj);
if(pflashScreen) pflashScreen.fadeOut();
}
sq_flashScreen(obj,0,0,300,255, sq_RGB(0,0,0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
blademastery_buff(obj);
local includeState = [2,3,4,5,9];
for(local i = 0; i < includeState.len(); i++){
if(newState == includeState[i]){
local subState = 0;
local circleObj = obj.getVar("breakSwordDance_circle").get_obj_vector(0);
if(circleObj){
local colObj = sq_GetCNRDObjectToCollisionObject(circleObj);
colObj.addSetStatePacket(21, null, STATE_PRIORITY_IGNORE_FORCE, false, "");
}
for(local i = subState; i < 9; i++){
local swrodObj = obj.getVar("breakSwordDance_sword"+i.tostring()).get_obj_vector(0);
if(swrodObj){
local colObj = sq_GetCNRDObjectToCollisionObject(swrodObj);
colObj.addSetStatePacket(21, null, STATE_PRIORITY_IGNORE_FORCE, false, "");
}
}
}
}
}
}
function onProc_Breaksworddance_bykk(obj)
{
if(!obj) return;
}
function onKeyFrameFlag_Breaksworddance_bykk(obj, flagIndex)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(flagIndex){
case 1:
obj.sq_PlaySound("R_SW_BREAK_SWORDDANCE_ATK");
local shekepower = [0,5,5,16,5,16,5,5,5], sheketime = [0,300,300,120,300,120,300,360,360], flash_alpha = [0,76,102,76,102,76,102,76,178];
sq_flashScreen(obj, 0, 60, 0, flash_alpha[subState], sq_RGB(255, 255, 255), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_COVER);
if(subState >= 1 && subState < 6) sq_SetMyShake(obj, shekepower[subState], sheketime[subState]);
else if(subState >= 6 && subState < 8) sq_SetShake(obj, shekepower[subState], sheketime[subState]);
local x = [0,-210,147,-99,-153,142,-234,250,250], y = [0,0,0,0,0,0,0,0,0], z = [0,61,156,-47,94,-75,12,55,0];
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_SWORDMASTER_BYKK_BREAKSWORDDANCE, -1, 1, getSkillbounsRate_bykk(obj, SKILL_SWORDMASTER_BYKK_BREAKSWORDDANCE).tofloat() / 100.0) + 100;
local element = 4;
local AddAppendage = CNSquirrelAppendage.sq_GetAppendage(obj, "character/atswordman/1_swordmaster/changesword/ap_changesword.nut");
if(AddAppendage) element = AddAppendage.getVar("elementIndex").getInt(10);
local sizeRate = sq_GetIntData(obj, SKILL_SWORDMASTER_BYKK_BREAKSWORDDANCE, 8);
if(subState >= 1 && subState <= 7)
cearteSkillPassiveObj_AtSwordMan_bykk(obj,obj,PASSIVEOBJECT_BYKK_SWORDMASTER,x[subState],y[subState],z[subState],obj.getDirection(),1,SKILL_SWORDMASTER_BYKK_BREAKSWORDDANCE,10,totalDamage,element,sizeRate,0,0,0,0,0,1);
else if(subState == 8){
totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_SWORDMASTER_BYKK_BREAKSWORDDANCE, -1, 2, 1.0) + 100;
if(obj.getVar("breaksworddance_stone").getBool(0)){
totalDamage = totalDamage * 250 / 100;
sizeRate = sizeRate + 30;
}
cearteSkillPassiveObj_AtSwordMan_bykk(obj,obj,PASSIVEOBJECT_BYKK_SWORDMASTER,x[subState],y[subState] + 1,z[subState]-sq_GetZPos(obj),obj.getDirection(),1,SKILL_SWORDMASTER_BYKK_BREAKSWORDDANCE,11,totalDamage,sizeRate,0,0,0,0,0,0,1);
}
break;
case 11:
sq_flashScreen(obj, 300, 300, 100, 127, sq_RGB(0, 0, 0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
sq_SetMyShake(obj, 6, 240);
break;
case 12:
local xPos = sq_GetXPos(obj);
obj.getVar("breakSwordDance_setmove").setInt(0, xPos);
local dstX = sq_GetDistancePos(xPos, sq_GetDirection(obj), 750);
sq_setCurrentAxisPos(obj, 0, dstX);
obj.sq_SetCurrentAttackInfo(237);
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_SWORDMASTER_BYKK_BREAKSWORDDANCE, -1, 0, getSkillbounsRate_bykk(obj, SKILL_SWORDMASTER_BYKK_BREAKSWORDDANCE).tofloat() / 100.0);
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
obj.sq_PlaySound("SWORDMASTER_BREAK_SWORDDANCE_DASH_OUT");
obj.sq_PlaySound("SW_BREAK_SWORDDANCE_02");
break;
case 21:
sq_flashScreen(obj, 40, 120, 50, 102, sq_RGB(255, 255, 255), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
local xPos = obj.getVar("breakSwordDance_setmove").getInt(0);
sq_setCurrentAxisPos(obj, 0, xPos);
break;
}
}
function onTimeEvent_Breaksworddance_bykk(obj, timeEventIndex, timeEventCount)
{
switch(timeEventIndex){
case 1:
local v = sq_GetUniformVelocity(obj.getVar("breakSwordDance_move").getInt(1), obj.getVar("breakSwordDance_move").getInt(21), timeEventCount, 10);
sq_setCurrentAxisPos(obj, 0, v);
if(timeEventCount >= 10 && obj.getVar("breaksworddance_stone").getBool(0)){
sq_SetCurrentDirection(obj, sq_GetOppositeDirection(sq_GetDirection(obj)));
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/atbreaksworddance/atbreaksworddance_jump_dust.ani", 0, 0, 0);
sq_setCurrentAxisPos(obj, 0, sq_GetDistancePos(sq_GetXPos(obj), obj.getDirection(), 50));
sq_setCurrentAxisPos(obj, 2, 200);
obj.setTimeEvent(4, 600, 1, false);
obj.sq_IntVectClear();
obj.sq_IntVectPush(8);
obj.sq_AddSetStatePacket(SKILL_SWORDMASTER_BYKK_BREAKSWORDDANCE, STATE_PRIORITY_IGNORE_FORCE, true);
break;
}
break;
case 2:
local currentAni = obj.getCurrentAnimation();
local delaySum = currentAni.getDelaySum(3,3);
obj.getVar("breakSwordDance_move").setInt(3, sq_GetZPos(obj));
obj.setTimeEvent(3, delaySum / 20, 20, false);
break;
case 3:
local v = sq_GetUniformVelocity(obj.getVar("breakSwordDance_move").getInt(3), 0, timeEventCount, 20);
sq_setCurrentAxisPos(obj, 2, v);
break;
case 4:
for(local i = 1; i < 9; i++){
local swrodObj = obj.getVar("breakSwordDance_sword"+i.tostring()).get_obj_vector(0);
if(swrodObj){
local colObj = sq_GetCNRDObjectToCollisionObject(swrodObj);
colObj.addSetStatePacket(21, null, STATE_PRIORITY_IGNORE_FORCE, false, "");
}
}
break;
case 10: obj.resetHitObjectList(); break;
}
}
function onProcCon_Breaksworddance_bykk(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
if(subState <= 7){
sq_SetKeyxEnable(obj, E_ATTACK_COMMAND, true);
if(sq_IsEnterCommand(obj, E_ATTACK_COMMAND)) obj.addRapidInput();
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function checkExecutableSkill_Changesword_bykk(obj)
{
if (!obj) return false;
local isUse = obj.sq_IsUseSkill(SKILL_SWORDMASTER_BYKK_CHANGESWORD);
if (isUse){
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_IntVectPush(0);
obj.sq_IntVectPush(SKILL_SWORDMASTER_BYKK_CHANGESWORD);
obj.sq_IntVectPush(sq_GetCastTime(obj, SKILL_SWORDMASTER_BYKK_CHANGESWORD, sq_GetSkillLevel(obj, SKILL_SWORDMASTER_BYKK_CHANGESWORD)));
obj.sq_IntVectPush(500);
obj.sq_IntVectPush(0);
obj.sq_IntVectPush(4);
obj.sq_IntVectPush(4);
obj.sq_IntVectPush(1000);
obj.sq_IntVectPush(1000);
obj.sq_IntVectPush(-1);
obj.sq_AddSetStatePacket(STATE_THROW, STATE_PRIORITY_USER, true);
obj.sq_PlaySound("R_SW_CHANGESWORD");
return true;
}
return false;
}
function checkCommandEnable_Changesword_bykk(obj)
{
if (!obj) return false;
return true;
}
function onSetState_Changesword_bykk(obj, state, datas, isResetTimer)
{
if(!obj) return;
local subState = obj.sq_GetVectorData(datas, 0);
obj.setSkillSubState(subState);
obj.sq_StopMove();
switch(subState){
case 100:
local throwIndex = obj.sq_GetVectorData(datas, 1);
local AddAppendage = CNSquirrelAppendage.sq_GetAppendage(obj, "character/atswordman/1_swordmaster/changesword/ap_changesword.nut");
if(!AddAppendage){
AddAppendage = CNSquirrelAppendage.sq_AppendAppendage(obj, obj, SKILL_SWORDMASTER_BYKK_CHANGESWORD, false, "character/atswordman/1_swordmaster/changesword/ap_changesword.nut", true);
}
AddAppendage.setAppendCauseSkill(BUFF_CAUSE_SKILL, sq_getJob(obj), SKILL_SWORDMASTER_BYKK_CHANGESWORD, sq_GetSkillLevel(obj, SKILL_SWORDMASTER_BYKK_CHANGESWORD));
AddAppendage.setEnableIsBuff(true);
CNSquirrelAppendage.sq_Append(AddAppendage, obj, obj, true);
AddAppendage.setBuffIconImage(58);
if(throwIndex < 100){//0短1太2钝3巨
AddAppendage.getVar("elementIndex").setInt(10, throwIndex);
}
else{
local element = AddAppendage.getVar("elementIndex").getInt(10);
AddAppendage.getVar("elementIndex").setInt(10, throwIndex - 100);
if(obj.getVar("elementalsword").get_obj_vector_size() < 1){
cearteSkillPassiveObj_AtSwordMan_bykk(obj,obj,PASSIVEOBJECT_BYKK_SWORDMASTER,-50,0,30,obj.getDirection(),1,SKILL_SWORDMASTER_BYKK_CHANGESWORD,0,element,0,0,0,0,0,0,0,0);
}
else{
if(throwIndex - 100 == element) break;
local effectObj = obj.getVar("elementalsword").get_obj_vector(0);
if(effectObj){
local colObj = sq_GetCNRDObjectToCollisionObject(effectObj);
colObj.getVar("changeSword").setInt(11,element);
switch(element){
case 0: sq_AddDrawOnlyAniFromParent(colObj, "passiveobject/atswordman_bykk/swordmaster/animation/atelementalsword/fire/fireswordend_04.ani", 0, 0, 0); break;
case 1: sq_AddDrawOnlyAniFromParent(colObj, "passiveobject/atswordman_bykk/swordmaster/animation/atelementalsword/ice/iceswordend_04.ani", 0, 0, 0); break;
case 2: sq_AddDrawOnlyAniFromParent(colObj, "passiveobject/atswordman_bykk/swordmaster/animation/atelementalsword/dark/darkswordend_04.ani", 0, 0, 0); break;
case 3: sq_AddDrawOnlyAniFromParent(colObj, "passiveobject/atswordman_bykk/swordmaster/animation/atelementalsword/light/lightswordend_04.ani", 0, 0, 0); break;
}
colObj.setTimeEvent(100, 200, 1, false);
}
}
}
switch(throwIndex){
case 0: obj.sq_SetCurrentAnimation(68);changeSwordEffect_bykk(obj, "ChangeSwordFire", SKILL_SWORDMASTER_BYKK_CHANGESWORD); break;
case 1: obj.sq_SetCurrentAnimation(69);changeSwordEffect_bykk(obj, "ChangeSwordIce", SKILL_SWORDMASTER_BYKK_CHANGESWORD); break;
case 2: obj.sq_SetCurrentAnimation(70);changeSwordEffect_bykk(obj, "ChangeSwordDark", SKILL_SWORDMASTER_BYKK_CHANGESWORD); break;
case 3: obj.sq_SetCurrentAnimation(71);changeSwordEffect_bykk(obj, "ChangeSwordLight", SKILL_SWORDMASTER_BYKK_CHANGESWORD); break;
case 100: obj.sq_SetCurrentAnimation(261);changeSwordEffect_bykk(obj, "ChangeSwordFire", SKILL_SWORDMASTER_BYKK_CHANGESWORD); break;
case 101: obj.sq_SetCurrentAnimation(262);changeSwordEffect_bykk(obj, "ChangeSwordIce", SKILL_SWORDMASTER_BYKK_CHANGESWORD); break;
case 102: obj.sq_SetCurrentAnimation(260);changeSwordEffect_bykk(obj, "ChangeSwordDark", SKILL_SWORDMASTER_BYKK_CHANGESWORD); break;
case 103: obj.sq_SetCurrentAnimation(263);changeSwordEffect_bykk(obj, "ChangeSwordLight", SKILL_SWORDMASTER_BYKK_CHANGESWORD); break;
}
local timer = obj.getVar("isChangeSword").get_ct_vector(0);
if(!timer){
obj.getVar("isChangeSword").clear_ct_vector();
obj.getVar("isChangeSword").push_ct_vector();
timer = obj.getVar("isChangeSword").get_ct_vector(0);
timer.Reset();
timer.Start(10000,0);
}
break;
case 101:
obj.sq_SetCurrentAnimation(347);
break;
}
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED,SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
}
function onEndCurrentAni_Changesword_bykk(obj)
{
if(!obj) return;
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
}
function onProcCon_Changesword_bykk(obj)
{
if(!obj) return;
}
function drawChangeswordCommon_bykk(obj)
{
local index = obj.getVar("ChangeswordCurId").getInt(0);
local obj = sq_GetCNRDObjectToSQRCharacter(obj);
if(index == 0 || obj.getWeaponSubType() != 0 || sq_GetSkillLevel(obj, 4) < 1)
return;
local drawpath = [
"passiveobject/atswordman_bykk/swordmaster/animation/atelementalsword/fire/fireswordloop_01.ani",
"passiveobject/atswordman_bykk/swordmaster/animation/atelementalsword/ice/iceswordloop_01.ani",
"passiveobject/atswordman_bykk/swordmaster/animation/atelementalsword/dark/darkswordloop_01.ani",
"passiveobject/atswordman_bykk/swordmaster/animation/atelementalsword/light/lightswordloop_01.ani"
];
local aniarr = ["ChangeswordFire","ChangeswordIce","ChangeswordDark","ChangeswordLight"];
local add = 1;
if(obj.getDirection() == 1)
add = -1;
local width = sq_GetWidthObject(obj);
local height = sq_GetHeightObject(obj);
local screenX = sq_GetScreenXPos(obj) + add*50;// - (width / 2);
local screenY = sq_GetScreenYPos(obj) - 50;
local sq_var = obj.getVar();
local AniObj2 = sq_var.GetAnimationMap(aniarr[index - 1], drawpath[index - 1]);
sq_AnimationProc(AniObj2);
sq_drawCurrentFrame(AniObj2, screenX,screenY, false);
return;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function checkExecutableSkill_Counterslash_bykk(obj)
{
if (!obj) return false;
local isUse = obj.sq_IsUseSkill(144);
if (isUse)
{
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(144, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_Counterslash_bykk(obj)
{
if (!obj) return false;
local apPath = "character/atswordman/1_swordmaster/counterslash/ap_counterslash.nut";
if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, apPath))
return true;
return false;
}
function onSetState_Counterslash_bykk(obj, state, datas, isResetTimer)
{
if(!obj) return;
local subState = obj.sq_GetVectorData(datas, 0);
obj.setSkillSubState(subState);
switch(subState)
{
case 0:
obj.sq_StopMove();
BodyMagicSword(obj, "CounterSlash");
if(MagicSword_IsAppebd(obj))
obj.sq_SetCurrentAnimation(264);
else
obj.sq_SetCurrentAnimation(72);
obj.sq_SetCurrentAttackInfo(0);
local bonus = obj.sq_GetBonusRateWithPassive(144, -1, 0,getATSwordmanBonus(obj,1.0,144));
obj.sq_SetCurrentAttackBonusRate(bonus);
setWeaponMaster_attackElement(obj);
break;
}
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED,SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
}
function onEndCurrentAni_Counterslash_bykk(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState)
{
case 0:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(0, STATE_PRIORITY_IGNORE_FORCE, true);
break;
}
}
function onAttack_Counterslash_bykk(obj, damager, boundingBox, isStuck)
{
if(!obj) return false;
local subState = obj.getSkillSubState();
MagicswordupOccur(obj, damager, boundingBox, isStuck);
MagicSword_BasiconAttack(obj, damager, boundingBox, isStuck);
}
function onProc_Counterslash_bykk(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
}
function onEnterFrame_Counterslash_bykk_bykk(obj, frameIndex)
{}
function onEndState_Counterslash_bykk(obj, newState)
{}
function onKeyFrameFlag_Counterslash_bykk(obj, flagIndex)
{}
function onTimeEvent_Counterslash_bykk(obj, timeEventIndex, timeEventCount)
{}
function onProcCon_Counterslash_bykk(obj)
{}