Rindro-Sqr/user/114.66.51.249/2_atpriest_2.c

2637 lines
106 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//贪婪之刺
function checkExecutableSkill_Greedthelurker(obj)
{
if (!obj) return false;
if(obj.getState() == STATE_BYKK_DEPRAVITYSEVENSINS && obj.getSkillSubState() < 10) return false;
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_GREEDTHELURKER);
if (isUse){
obj.getVar("Handawakentosin_EXP").clear_obj_vector();
obj.sq_IntVectClear();
if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)) obj.sq_IntVectPush(1);
else obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_GREEDTHELURKER, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_Greedthelurker(obj)
{
if (!obj) return false;
return true;
}
function onSetState_Greedthelurker(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(ATPANI_BYKK_GREEDREADY_BODY);
obj.sq_PlaySound("R_PW_GREEDLURKER");
break;
case 1:
local ani = getCurrentAnimation_demonization(obj, "greedreadydemon_body", false);
obj.setCurrentAnimation(ani);
obj.sq_PlaySound("PW_GREEDLURKER_DM");
break;
}
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
}
function onEndCurrentAni_Greedthelurker(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
case 1:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
}
}
function onProcCon_Greedthelurker(obj)
{
if(!obj) return;
if(!CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)){
obj.setSkillCommandEnable(SKILL_BYKK_DEPRAVITYSEVENSINS, true);
local b_useskill = obj.sq_IsEnterSkill(SKILL_BYKK_DEPRAVITYSEVENSINS);
if(b_useskill != -1){
setDepravitysevensinsAppendage(obj);
}
}
}
function onKeyFrameFlag_Greedthelurker(obj, flagIndex)
{
if(!obj) return false;
switch(flagIndex){
case 101:
sq_SetMyShake(obj, 5, 240);
//`create Lurker` 25 0 3
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_GREEDTHELURKER, -1, 0, 1.0) + 100;
local skillLevel = sq_GetSkillLevel(obj, SKILL_BYKK_GREEDTHELURKER);
local sizeRate = sq_GetLevelData(obj, SKILL_BYKK_GREEDTHELURKER, 2, skillLevel);
local hitTime = sq_GetLevelData(obj, SKILL_BYKK_GREEDTHELURKER, 3, skillLevel);
local hitMax = sq_GetLevelData(obj, SKILL_BYKK_GREEDTHELURKER, 1, skillLevel);
local sub = 0, maxHit = 0;
if(sq_GetLevelData(obj, SKILL_BYKK_GREEDTHELURKER, 4, skillLevel) > 0){sub = 1; maxHit = sq_GetLevelData(obj, SKILL_BYKK_GREEDTHELURKER, 5, skillLevel);}
if(obj.isMyControlObject()) createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,25,0,3,obj.getDirection(),4,SKILL_BYKK_GREEDTHELURKER,0,totalDamage,sizeRate,hitMax,hitTime,sub,maxHit,0,0);
break;
case 10001: obj.getVar("setCancelSkill").setBool(10, true); break;
}
return true;
}
function onTimeEvent_Greedthelurker(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
}
function onEndState_Greedthelurker(obj, new_state)
{
if(!obj) return;
}
//杀戮战镰
function checkExecutableSkill_Scythemssacre(obj)
{
if (!obj) return false;
if(obj.getState() == STATE_BYKK_DEPRAVITYSEVENSINS && obj.getSkillSubState() < 10) return false;
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_SCYTHEMSSACRE);
if (isUse){
obj.getVar("Scythemssacre_Bool").setBool(0, false);
obj.getVar("Scythemssacre_Count").setInt(10, 0);
if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)) obj.getVar("Scythemssacre_Bool").setBool(0, true);
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_SCYTHEMSSACRE, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_Scythemssacre(obj)
{
if (!obj) return false;
return true;
}
function onSetState_Scythemssacre(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:
if(obj.getVar("Scythemssacre_Bool").getBool(0)){
local ani = getCurrentAnimation_demonization(obj, "atscythemssacre_demonstep1_body", false);
obj.setCurrentAnimation(ani);
obj.sq_PlaySound("PW_SCYTHEMSSACRE_DM_01");
}
else{
obj.sq_SetCurrentAnimation(ATPANI_BYKK_ATSCYTHEMSSACRE_STEP1_BODY);
if(sq_getRandom(1, 100) > 50) obj.sq_PlaySound("PW_SCYTHEMSSACRE_01_1");
else obj.sq_PlaySound("PW_SCYTHEMSSACRE_01_2");
}
break;
case 1:
local sizeRate = 1.0 + sq_GetLevelData(obj, SKILL_BYKK_SCYTHEMSSACRE, 2, sq_GetSkillLevel(obj, SKILL_BYKK_SCYTHEMSSACRE)) / 100.0;
if(obj.getVar("Scythemssacre_Bool").getBool(0)){
local ani = getCurrentAnimation_demonization(obj, "atscythemssacre_demonloop_body", false);
obj.setCurrentAnimation(ani);
local effectAni = ["effect/animation/1_atpriest_bykk/atscythemssacre/demonization/demonloop_dodge02.ani", "effect/animation/1_atpriest_bykk/atscythemssacre/demonization/demonloop_dodge01.ani", "effect/animation/1_atpriest_bykk/atscythemssacre/demonization/demonloop_normal02.ani", "effect/animation/1_atpriest_bykk/atscythemssacre/demonization/demonloop_normal01.ani"];
for(local i = 0; i < effectAni.len(); i++){
local currentAni = obj.sq_CreateCNRDAnimation(effectAni[i]);
currentAni.setImageRateFromOriginal(sizeRate, sizeRate);
currentAni.setAutoLayerWorkAnimationAddSizeRate(sizeRate);
obj.sq_AddStateLayerAnimation(10004 - i, currentAni, 0, ((sizeRate - 1.0)*60).tointeger());
}
}
else{
obj.sq_SetCurrentAnimation(ATPANI_BYKK_ATSCYTHEMSSACRE_LOOP_BODY);
local effectAni = ["effect/animation/1_atpriest_bykk/atscythemssacre/atscythemssacre_loopeff_dodge01.ani", "effect/animation/1_atpriest_bykk/atscythemssacre/atscythemssacre_loopeff_normal01.ani"];
for(local i = 0; i < effectAni.len(); i++){
local currentAni = obj.sq_CreateCNRDAnimation(effectAni[i]);
currentAni.setImageRateFromOriginal(sizeRate, sizeRate);
currentAni.setAutoLayerWorkAnimationAddSizeRate(sizeRate);
sq_SetAttackBoundingBoxSizeRate(currentAni, sizeRate, sizeRate, sizeRate);
obj.sq_AddStateLayerAnimation(10002 - i, currentAni, 0, ((sizeRate - 1.0)*60).tointeger());
}
}
local attackBox = [-149,-50,0,355,100,161];
for(local ui = 0; ui < attackBox.len(); ui++){
attackBox[ui] = (attackBox[ui] * sizeRate).tointeger();
}
local pAni = obj.getCurrentAnimation();
sq_AddAttackBox(pAni, attackBox[0], attackBox[1], attackBox[2], attackBox[3], attackBox[4], attackBox[5]);
obj.setTimeEvent(1, 100, 1, false);
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_SCYTHEMSSACRE, -1, 0, 1.0) + 100;
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, ATPRIESTATK_BYKK_SCYTHEMSSACRE_LOOP));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
if(sq_GetLevelData(obj, SKILL_BYKK_SCYTHEMSSACRE, 5, sq_GetSkillLevel(obj, SKILL_BYKK_SCYTHEMSSACRE)) > 0) obj.setTimeEvent(2, 30, -1, true);
if(sq_GetLevelData(obj, SKILL_BYKK_SCYTHEMSSACRE, 2, sq_GetSkillLevel(obj, SKILL_BYKK_SCYTHEMSSACRE)) < 1) break;
local appendage = sq_AttractToMe(obj, -attackBox[0] * 120 / 100, 0, 200);
obj.getVar("Scythemssacre").setAppendage(0,appendage);//设置ap
break;
case 2:
obj.stopTimeEvent(2)
if(obj.getVar("Scythemssacre_Bool").getBool(0)){
local ani = getCurrentAnimation_demonization(obj, "atscythemssacre_demonstep2_body", false);
obj.setCurrentAnimation(ani);
obj.sq_PlaySound("PW_SCYTHEMSSACRE_DM_02");
}
else{
obj.sq_SetCurrentAnimation(ATPANI_BYKK_ATSCYTHEMSSACRE_STEP2_BODY);
if(sq_getRandom(1, 100) > 50) obj.sq_PlaySound("PW_SCYTHEMSSACRE_02_1");
else obj.sq_PlaySound("PW_SCYTHEMSSACRE_02_2");
}
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_SCYTHEMSSACRE, -1, 0, 1.0) + 100;
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, ATPRIESTATK_BYKK_SCYTHEMSSACRE_END));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
local appendage = obj.getVar().getAppendage(0);
if(appendage) appendage.setValid(false);
break;
}
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
}
function onEndCurrentAni_Scythemssacre(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
obj.sq_IntVectClear();
obj.sq_IntVectPush(1);
obj.sq_AddSetStatePacket(STATE_BYKK_SCYTHEMSSACRE, STATE_PRIORITY_AUTO, true);
break;
case 2:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
}
}
function onProcCon_Scythemssacre(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 1:
//按C后取消
sq_SetKeyxEnable(obj, E_JUMP_COMMAND, true);
if(sq_IsEnterCommand(obj, E_JUMP_COMMAND)){
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
}
case 0:
//加快
sq_SetKeyxEnable(obj, E_ATTACK_COMMAND, true);
if(sq_IsEnterCommand(obj, E_ATTACK_COMMAND)) obj.addRapidInput();
break;
}
}
function onKeyFrameFlag_Scythemssacre(obj, flagIndex)
{
if(!obj) return false;
switch(flagIndex){
case 101:
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atscythemssacre/atscythemssacre_loopeff_rose01.ani", 0, 2, 0);
break;
case 102:
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atscythemssacre/atscythemssacre_loopeff_dust04.ani", 0, -1, 0);
break;
case 103:
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atscythemssacre/demonization/demonlooprose_01.ani", 0, 1, 0);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atscythemssacre/demonization/demonloopdust_04.ani", 0, -1, 0);
break;
case 200:
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atscythemssacre/atscythemssacre_step2eff_dust05.ani", 0, -6, 0);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atscythemssacre/atscythemssacre_Step2Eff_Rose02.ani", 0, 6, 0);
obj.sq_PlaySound("SCYTHEMSSACRE_LOOP");
break;
case 204:
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atscythemssacre/atscythemssacre_Step2Eff_Dust06.ani", 0, -5, 0);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atscythemssacre/atscythemssacre_Step2Eff_Dust07.ani", 0, -4, 0);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atscythemssacre/atscythemssacre_Step2Eff_Rose03.ani", 0, 7, 0);
break;
case 209:
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atscythemssacre/atscythemssacre_Step2Eff_Dust08.ani", 0, -3, 0);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atscythemssacre/atscythemssacre_Step2Eff_Rose04.ani", 0, 8, 0);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atscythemssacre/atscythemssacre_Step2Eff_Dust11.ani", 0, 1, 0);
break;
case 214:
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atscythemssacre/atscythemssacre_Step2Eff_Rose05.ani", 0, 9, 0);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atscythemssacre/atscythemssacre_Step2Eff_Dust12.ani", 0, 2, 0);
break;
case 215:
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atscythemssacre/atscythemssacre_Step2Eff_Dust09.ani", 0, -2, 0);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atscythemssacre/atscythemssacre_Step2Eff_Dust10.ani", 0, -1, 0);
break;
case 217:
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_SCYTHEMSSACRE, -1, 0, 1.0) + 100;
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, ATPRIESTATK_BYKK_SCYTHEMSSACRE_LASTATTACK));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
break;
case 219:
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atscythemssacre/atscythemssacre_Step2Eff_Rose06.ani", 0, 10, 0);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atscythemssacre/atscythemssacre_Step2Eff_Dust15.ani", 0, 5, 0);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atscythemssacre/atscythemssacre_Step2Eff_Dust14.ani", 0, 4, 0);
break;
case 220:
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atscythemssacre/atscythemssacre_Step2Eff_Dust13.ani", 0, 3, 0);
sq_flashScreen(obj,1,40,50,76, sq_RGB(255,0,0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
sq_SetMyShake(obj, 3, 100);
break;
case 208:
case 213:
case 218:
obj.resetHitObjectList();
break;
case 300:
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atscythemssacre/demonization/demonstep2_rose01.ani", 0, 5, 0);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atscythemssacre/demonization/DemonStep2_Dust01.ani", 0, -1, 0);
obj.sq_PlaySound("SCYTHEMSSACRE_LOOP");
break;
case 304:
obj.sq_PlaySound("DUALSLASH_01");
obj.sq_PlaySound("PW_SCYTHEMSSACRE_DM_01");
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atscythemssacre/demonization/DemonStep2_Rose02.ani", 0, 4, 0);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atscythemssacre/demonization/DemonStep2_Dust02.ani", 0, -1, 0);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atscythemssacre/demonization/DemonStep2_Dust03.ani", 0, -2, 0);
break;
case 310:
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atscythemssacre/demonization/DemonStep2_Rose03.ani", 0, 3, 0);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atscythemssacre/demonization/DemonStep2_Dust04.ani", 0, -1, 0);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atscythemssacre/demonization/DemonStep2_Dust05.ani", 0, -2, 0);
break;
case 315:
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atscythemssacre/demonization/DemonStep2_Rose04.ani", 0, 2, 0);
break;
case 316:
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atscythemssacre/demonization/DemonStep2_Dust06.ani", 0, -1, 0);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atscythemssacre/demonization/DemonStep2_Dust07.ani", 0, -2, 0);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atscythemssacre/demonization/DemonStep2_Dust08.ani", 0, -3, 0);
break;
case 317:
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_SCYTHEMSSACRE, -1, 0, 1.0) + 100;
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, ATPRIESTATK_BYKK_SCYTHEMSSACRE_LASTATTACK));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
break;
case 320:
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atscythemssacre/demonization/DemonStep2_Rose05.ani", 0, 1, 0);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atscythemssacre/demonization/DemonStep2_Dust09.ani", 0, -1, 0);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atscythemssacre/demonization/DemonStep2_Dust10.ani", 0, -2, 0);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atscythemssacre/demonization/DemonStep2_Dust11.ani", 0, -3, 0);
sq_flashScreen(obj,1,50,100,76, sq_RGB(255,0,0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
sq_SetMyShake(obj, 3, 100);
obj.resetHitObjectList();
break;
case 309:
case 314:
obj.resetHitObjectList();
break;
case 10001: obj.getVar("setCancelSkill").setBool(10, true); break;
}
return true;
}
function onTimeEvent_Scythemssacre(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
switch(timeEventIndex){
case 1:
local hitMax = sq_GetLevelData(obj, SKILL_BYKK_SCYTHEMSSACRE, 1, sq_GetSkillLevel(obj, SKILL_BYKK_SCYTHEMSSACRE));
// if(obj.getVar("Scythemssacre_Bool").getBool(0)) hitMax = hitMax + 1;
local count = obj.getVar("Scythemssacre_Count").getInt(10);
if(count <= hitMax){
obj.getVar("Scythemssacre_Count").setInt(10, obj.getVar("Scythemssacre_Count").getInt(10) + 1);
obj.resetHitObjectList();
obj.sq_PlaySound("SCYTHEMSSACRE_LOOP");
local inputConut = obj.getRapidInputFrequency();
inputConut = inputConut.tointeger();
local inputMax = 1, gapByInputMin = 100, gapByInputMax = 200;
if(inputConut >= inputMax){
obj.setTimeEvent(1, gapByInputMin, 1, false);
local currentAni = obj.getCurrentAnimation();
local speedRate = 200.0 * (1 + sq_GetLevelData(obj, SKILL_BYKK_SCYTHEMSSACRE, 3, sq_GetSkillLevel(obj, SKILL_BYKK_SCYTHEMSSACRE)) / 100.0);
currentAni.setSpeedRate(speedRate);
}
else{
obj.setTimeEvent(1, gapByInputMax, 1, false);
local currentAni = obj.getCurrentAnimation();
local speedRate = 100.0 * (1 + sq_GetLevelData(obj, SKILL_BYKK_SCYTHEMSSACRE, 3, sq_GetSkillLevel(obj, SKILL_BYKK_SCYTHEMSSACRE)) / 100.0);
currentAni.setSpeedRate(speedRate);
}
}
else{
obj.removeAllTimeEvent();
obj.sq_IntVectClear();
obj.sq_IntVectPush(2);
obj.sq_AddSetStatePacket(STATE_BYKK_SCYTHEMSSACRE, STATE_PRIORITY_AUTO, true);
}
break;
case 2:
if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_UP, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(obj.getXPos(),obj.getYPos() - 1)){
obj.sq_StartWrite();
obj.sq_WriteDword(1);
obj.sq_WriteDword(obj.getYPos() - 2);
sq_SendChangeSkillEffectPacket(obj, SKILL_BYKK_SCYTHEMSSACRE);
}
if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_LEFT, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(obj.getXPos() - 2,obj.getYPos())){
obj.sq_StartWrite();
obj.sq_WriteDword(2);
obj.sq_WriteDword(obj.getXPos() - 4);
sq_SendChangeSkillEffectPacket(obj, SKILL_BYKK_SCYTHEMSSACRE);
}
}
else if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_RIGHT, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(obj.getXPos() + 2,obj.getYPos())){
obj.sq_StartWrite();
obj.sq_WriteDword(2);
obj.sq_WriteDword(obj.getXPos() + 4);
sq_SendChangeSkillEffectPacket(obj, SKILL_BYKK_SCYTHEMSSACRE);
}
}
}
else if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_DOWN, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(obj.getXPos(),obj.getYPos() + 1)){
obj.sq_StartWrite();
obj.sq_WriteDword(1);
obj.sq_WriteDword(obj.getYPos() + 2);
sq_SendChangeSkillEffectPacket(obj, SKILL_BYKK_SCYTHEMSSACRE);
}
if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_LEFT, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(obj.getXPos() - 2,obj.getYPos())){
obj.sq_StartWrite();
obj.sq_WriteDword(2);
obj.sq_WriteDword(obj.getXPos() - 4);
sq_SendChangeSkillEffectPacket(obj, SKILL_BYKK_SCYTHEMSSACRE);
}
}
else if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_RIGHT, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(obj.getXPos() + 2,obj.getYPos())){
obj.sq_StartWrite();
obj.sq_WriteDword(2);
obj.sq_WriteDword(obj.getXPos() + 4);
sq_SendChangeSkillEffectPacket(obj, SKILL_BYKK_SCYTHEMSSACRE);
}
}
}
if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_LEFT, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(obj.getXPos() - 2,obj.getYPos())){
obj.sq_StartWrite();
obj.sq_WriteDword(2);
obj.sq_WriteDword(obj.getXPos() - 4);
sq_SendChangeSkillEffectPacket(obj, SKILL_BYKK_SCYTHEMSSACRE);
}
}
else if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_RIGHT, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(obj.getXPos() + 2,obj.getYPos())){
obj.sq_StartWrite();
obj.sq_WriteDword(2);
obj.sq_WriteDword(obj.getXPos() + 4);
sq_SendChangeSkillEffectPacket(obj, SKILL_BYKK_SCYTHEMSSACRE);
}
}
break;
}
}
function onChangeSkillEffect_Scythemssacre(obj, skillIndex, reciveData)
{
if(!obj) return;
local sub = reciveData.readDword();
local offSet = reciveData.readDword();
switch(sub){
case 1:
sq_setCurrentAxisPos(obj, 1, offSet);
break;
case 2:
sq_setCurrentAxisPos(obj, 0, offSet);
break;
}
}
function onEndState_Scythemssacre(obj, new_state)
{
if(!obj) return;
if(new_state != STATE_BYKK_SCYTHEMSSACRE){
sq_SimpleMoveToNearMovablePos(obj,200);
local appendage = obj.getVar("Scythemssacre").getAppendage(0);
if(appendage) appendage.setValid(false);
}
}
//愤怒之袭
function checkExecutableSkill_Scudthewrath(obj)
{
if (!obj) return false;
if(obj.getState() == STATE_BYKK_DEPRAVITYSEVENSINS && obj.getSkillSubState() < 10) return false;
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_SCUDTHEWRATH);
if (isUse){
obj.getVar("Scudthewrath_Bool").setBool(0, false);
obj.getVar("Scudthewrath_Bool").setBool(1, false);
obj.getVar("Scudthewrath_Tar").clear_obj_vector();
obj.sq_IntVectClear();
if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)) obj.sq_IntVectPush(1);
else obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_SCUDTHEWRATH, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_Scudthewrath(obj)
{
if (!obj) return false;
return true;
}
function onSetState_Scudthewrath(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(ATPANI_BYKK_ATSCUDTHEWRATH_TRANSFORM_BODY);
obj.sq_PlaySound("R_PW_SCUDWRATH");
break;
case 1:
local ani = getCurrentAnimation_demonization(obj, "atscudthewrath_dash_01", false);
obj.setCurrentAnimation(ani);
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_SCUDTHEWRATH, -1, 0, 1.0) + 100;
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, ATPRIESTATK_BYKK_ATSCUDTHEWRATH));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
obj.getVar("Scudthewrath_Move").setInt(10, sq_GetXPos(obj));
break;
case 2:
local ani = getCurrentAnimation_demonization(obj, "atscudthewrath_stop_01", false);
obj.setCurrentAnimation(ani);
break;
case 3:
local ani = getCurrentAnimation_demonization(obj, "atscudthewrath_end_body", false);
obj.setCurrentAnimation(ani);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atscudthewrath/end/atscudthewrath_transform02_b_front.ani", 0, 1, 0);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atscudthewrath/end/atscudthewrath_transform02_back_dust.ani", 0, -1, 0);
break;
case 4:
local ani = getCurrentAnimation_demonization(obj, "atscudthewrath_chase1", false);
obj.setCurrentAnimation(ani);
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_SCUDTHEWRATH, -1, 0, 0.6) + 100;
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, ATPRIESTATK_BYKK_ATSCUDTHEWRATH));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
break;
case 5:
local ani = getCurrentAnimation_demonization(obj, "atscudthewrath_chase2", false);
obj.setCurrentAnimation(ani);
local size = obj.getVar("Scudthewrath_Tar").get_obj_vector_size();
if(size > 0){
for(local i = 0; i < size; i++){
local targetObj = obj.getVar("Scudthewrath_Tar").get_obj_vector(i);
if(targetObj) sq_SendHitObjectPacket(obj,targetObj,0,0,82);
}
}
break;
}
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
}
function onEndCurrentAni_Scudthewrath(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
case 1:
case 2:
case 4:
if(subState == 0){
if(obj.isMyControlObject()){
local effectObj = sq_setFullScreenEffect(obj, "character/swordman/effect/animation/1_atpriest_bykk/atscudthewrath/atscudthewrath_screen.ani");
sq_ChangeDrawLayer(effectObj, ENUM_DRAWLAYER_BOTTOM);
}
}
else if(subState == 1){
local moveX = 300;
if(obj.getVar("Scudthewrath_Bool").getBool(0)) moveX = 450;
local dstX = sq_GetDistancePos(obj.getVar("Scudthewrath_Move").getInt(10), obj.getDirection(), moveX);
sq_setCurrentAxisPos(obj, 0, dstX);
}
else if(subState == 2){
if(obj.getVar("Scudthewrath_Bool").getBool(1)){
obj.sq_IntVectClear();
obj.sq_IntVectPush(4);
obj.sq_AddSetStatePacket(STATE_BYKK_SCUDTHEWRATH, STATE_PRIORITY_AUTO, true);
}
else{
if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)){
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
}
else{
obj.sq_IntVectClear();
obj.sq_IntVectPush(3);
obj.sq_AddSetStatePacket(STATE_BYKK_SCUDTHEWRATH, STATE_PRIORITY_AUTO, true);
}
}
break;
}
else if(subState == 4){
sq_setCurrentAxisPos(obj, 0, obj.getVar("Scudthewrath_Move").getInt(10));
}
obj.sq_IntVectClear();
obj.sq_IntVectPush(subState + 1);
obj.sq_AddSetStatePacket(STATE_BYKK_SCUDTHEWRATH, STATE_PRIORITY_AUTO, true);
break;
case 3:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
case 5:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
}
}
function onProcCon_Scudthewrath(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
case 1:
if((sq_IsKeyDown(OPTION_HOTKEY_MOVE_LEFT, ENUM_SUBKEY_TYPE_ALL) && obj.getDirection() == ENUM_DIRECTION_LEFT) || (sq_IsKeyDown(OPTION_HOTKEY_MOVE_RIGHT, ENUM_SUBKEY_TYPE_ALL) && obj.getDirection() == ENUM_DIRECTION_RIGHT)) obj.getVar("Scudthewrath_Bool").setBool(0, true);
case 2:
if(obj.getVar("Scudthewrath_Bool").getBool(1) == false){
if(sq_GetLevelData(obj, SKILL_BYKK_SCUDTHEWRATH, 1, sq_GetSkillLevel(obj, SKILL_BYKK_SCUDTHEWRATH)) > 0){
obj.setSkillCommandEnable(SKILL_BYKK_SCUDTHEWRATH,true);
if(obj.sq_IsEnterSkill(SKILL_BYKK_SCUDTHEWRATH) != -1) obj.getVar("Scudthewrath_Bool").setBool(1, true);
}
}
break;
}
if(!CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)){
obj.setSkillCommandEnable(SKILL_BYKK_DEPRAVITYSEVENSINS, true);
local b_useskill = obj.sq_IsEnterSkill(SKILL_BYKK_DEPRAVITYSEVENSINS);
if(b_useskill != -1){
setDepravitysevensinsAppendage(obj);
}
}
}
function onKeyFrameFlag_Scudthewrath(obj, flagIndex)
{
if(!obj) return false;
switch(flagIndex){
case 8:
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atscudthewrath/ready/atscudthewrath_ready_a_back.ani", 0, -1, 0);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atscudthewrath/ready/atscudthewrath_ready_a_front.ani", 0, 1, 0);
break;
case 100:
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atscudthewrath/dash/atscudthewrath_dash_back_02.ani", 0, -1, 0);
break;
case 101:
obj.sq_PlaySound("SCUDWRATH");
local pAni = obj.getCurrentAnimation();
sq_ClearAttackBox(pAni);
local attackBox = [-127, -50, -105, 444, 100, 312];
local sizeRate = sq_GetLevelData(obj, SKILL_BYKK_SCUDTHEWRATH, 2, sq_GetSkillLevel(obj, SKILL_BYKK_SCUDTHEWRATH));
if(sizeRate > 0){
for(local i = 0; i < attackBox.len(); i++){
attackBox[i] = attackBox[i] * (100 + sizeRate) / 100;
}
}
sq_AddAttackBox(pAni, attackBox[0], attackBox[1], attackBox[2], attackBox[3], attackBox[4], attackBox[5]);
break;
case 411:
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atscudthewrath/atscudthewrath_hit_01.ani", -157, 0, 82);
sq_SetMyShake(obj, 10, 300);
break;
case 416:
sq_flashScreen(obj,1,25,110,127, sq_RGB(255,0,0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
break;
case 10001: obj.getVar("setCancelSkill").setBool(10, true); break;
}
return true;
}
function onTimeEvent_Scudthewrath(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
switch(timeEventIndex){
case 0:
local moveX = 250;
if(obj.getVar("Scudthewrath_Bool").getBool(0)) moveX = 400;
local vx = sq_GetUniformVelocity(0, moveX, timeEventCount, 50);
local dstX = sq_GetDistancePos(obj.getVar("Scudthewrath_Move").getInt(10), obj.getDirection(), vx);
sq_setCurrentAxisPos(obj, 0, dstX);
break;
}
}
function onEndState_Scudthewrath(obj, new_state)
{
if(!obj) return;
if(new_state != STATE_BYKK_SCUDTHEWRATH){
sq_SimpleMoveToNearMovablePos(obj,500);
}
}
function onAttack_Scudthewrath(obj, damager, boundingBox, isStuck)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 1:
if(damager.isObjectType(OBJECTTYPE_ACTIVE)){
if(!obj.getVar("Scudthewrath_Tar").is_obj_vector(damager)) obj.getVar("Scudthewrath_Tar").push_obj_vector(damager);
}
break;
}
}
//原罪释放·净化
function checkExecutableSkill_Depravitysevensins(obj)
{
if (!obj) return false;
if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)){
// if(obj.getVar("Depravitysevensins_Skill").getBool(0) && ){
if(!sq_GetSkill(obj, SKILL_BYKK_FLOWEROFPURIFICATION).isInCoolTime()){
// obj.getVar("Depravitysevensins_Skill").setBool(0, false);
obj.startSkillCoolTime(SKILL_BYKK_FLOWEROFPURIFICATION, sq_GetSkillLevel(obj, SKILL_BYKK_FLOWEROFPURIFICATION), -1);
obj.getVar("Flowerofpurification_Tar").clear_obj_vector();
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_FLOWEROFPURIFICATION, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
else return false;
}
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_DEPRAVITYSEVENSINS);
if (isUse){
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_DEPRAVITYSEVENSINS, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_Depravitysevensins(obj)
{
if (!obj) return false;
return true;
}
function onSetState_Depravitysevensins(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(ATPANI_BYKK_DEPRAVITYSEVENSINS_CHANGEON_BODY);
obj.sq_PlaySound("R_PW_DSEVENSINS");
obj.sq_PlaySound("DGUARDIAN_CHANGE_1");//
local aniPath = "character/swordman/effect/animation/1_atpriest_bykk/atdepravitysevensins/demonization/depravitysevensins_changeon_bgblack.ani";
createOnlyDrawObject_ATPriest_bykk(obj,aniPath,true,obj.getDirection(),sq_GetXPos(obj),sq_GetYPos(obj),0,ENUM_DRAWLAYER_BOTTOM);
break;
case 1:
local ani = getCurrentAnimation_demonization(obj, "demonization_return", false);
obj.setCurrentAnimation(ani);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atdepravitysevensins/demonization/depravitysevensins_changeoff_eff02.ani", 0, 1, 0);
break;
case 10:
obj.getVar("attackMoveBool").setBool(0, false);
case 11:
case 12:
obj.getVar("attackBool").setBool(10, false);
obj.getVar("attackBool").setBool(11, false);
if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)){
local aniName = ["demonizationattack_basic_a_body","demonizationattack_basic_b_body","demonizationattack_basic_c_body"];
local ani = getCurrentAnimation_demonization(obj, aniName[subState - 10], false);
obj.setCurrentAnimation(ani);
local atkIndex = [ATPRIESTATK_BYKK_DEMONIZATION_ATTACK1,ATPRIESTATK_BYKK_DEMONIZATION_ATTACK2,ATPRIESTATK_BYKK_DEMONIZATION_ATTACK3];
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, atkIndex[subState - 10]));
switch(subState){
case 10:
local aniPath = ["effect/animation/1_atpriest_bykk/atdepravitysevensins/attack/","demonizationattack_basic_a_eff01.ani","demonizationattack_basic_a_eff02.ani","demonizationattack_basic_a_eff03.ani","demonizationattack_basic_a_eff04.ani","demonizationattack_basic_a_eff05.ani"];
local drawLayer = [0, 1, 0, 1, 1, 0];
for(local i = 1;i < aniPath.len(); i++){
obj.sq_AddStateLayerAnimation(drawLayer[i],obj.sq_CreateCNRDAnimation(aniPath[0] + aniPath[i]), 0, 0);
}
break;
case 11:
local aniPath = ["effect/animation/1_atpriest_bykk/atdepravitysevensins/attack/","demonizationattack_basic_b_eff02.ani","demonizationattack_basic_b_eff03.ani","demonizationattack_basic_b_eff04.ani"];
local drawLayer = [0, 1, 1, 0];
for(local i = 1;i < aniPath.len(); i++){
obj.sq_AddStateLayerAnimation(drawLayer[i],obj.sq_CreateCNRDAnimation(aniPath[0] + aniPath[i]), 0, 0);
}
break;
case 12:
local aniPath = ["effect/animation/1_atpriest_bykk/atdepravitysevensins/attack/","demonizationattack_basic_c_eff03.ani","demonizationattack_basic_c_eff05.ani"];
local drawLayer = [0, 1, 0];
for(local i = 1;i < aniPath.len(); i++){
obj.sq_AddStateLayerAnimation(drawLayer[i],obj.sq_CreateCNRDAnimation(aniPath[0] + aniPath[i]), 0, 0);
}
break;
}
}
else{
obj.sq_SetCurrentAnimation(ATPANI_BYKK_SECONDSOULATTACK1_03 + subState);
local attackIndex = obj.sq_GetDefaultAttackInfo(subState - 10);
sq_SetCurrentAttackInfo(obj, attackIndex);
}
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.5, 1.5);
// local speedRate = [[250,-1000,400,-1000],[100,-300,200,300],[50,-300,50,-300]];
local speedRate = [0,100,50];
if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)) speedRate = [0,150,80];
local totalDamage = sq_GetLevelData(obj, 174, 0, sq_GetSkillLevel(obj, 174)) + 100;
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
local skill = sq_GetSkill(obj, SKILL_BYKK_DEPRAVITYSEVENSINS);
if(obj.getVar("attackMoveBool").getBool(0) == false && skill.isSealFunction()){
if(obj.getDirection() == ENUM_DIRECTION_RIGHT) sq_SetVelocity(obj, 0, speedRate[subState - 10].tofloat());
else if(obj.getDirection() == ENUM_DIRECTION_LEFT) sq_SetVelocity(obj, 0, -speedRate[subState - 10].tofloat());
}
// obj.setAttackXVelocity(speedRate[subState - 10][0]);
// obj.setAttackXAccel(speedRate[subState - 10][1]);
// obj.setAttackXVelocityFast(speedRate[subState - 10][2]);
// obj.setAttackXAccelFast(speedRate[subState - 10][3]);
local sound = ["R_PW_1ATK_DM", "R_PW_2ATK_DM", "R_PW_3ATK_DM"];
obj.sq_PlaySound(sound[subState - 10]);
obj.sq_PlaySound("R_SCYTHE");
break;
}
}
function onEndCurrentAni_Depravitysevensins(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
case 1:
case 10:
case 11:
case 12:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
}
}
function onProcCon_Depravitysevensins(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 10:
if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_LEFT, ENUM_SUBKEY_TYPE_ALL) && obj.getDirection() == ENUM_DIRECTION_RIGHT || sq_IsKeyDown(OPTION_HOTKEY_MOVE_RIGHT, ENUM_SUBKEY_TYPE_ALL) && obj.getDirection() == ENUM_DIRECTION_LEFT){
obj.sq_StartWrite();
obj.sq_WriteDword(1);
sq_SendChangeSkillEffectPacket(obj, SKILL_BYKK_DEPRAVITYSEVENSINS);
}
case 11:
local pAni = obj.getCurrentAnimation();
local delaySum = pAni.getDelaySum(false);
local currentT = sq_GetCurrentTime(pAni);
if(obj.getVar("attackBool").getBool(subState) == false){
sq_SetKeyxEnable(obj, E_ATTACK_COMMAND, true);
if(currentT > delaySum * 50 / 100 && sq_IsEnterCommand(obj, E_ATTACK_COMMAND)) obj.getVar("attackBool").setBool(subState, true);
}
if(obj.getVar("attackBool").getBool(subState)){
if(currentT >= delaySum * 90 / 100){
obj.sq_IntVectClear();
local skill = sq_GetSkill(obj, SKILL_BYKK_DEPRAVITYSEVENSINS);
if(!skill.isSealFunction() && subState == 11) obj.sq_IntVectPush(10);
else obj.sq_IntVectPush(subState + 1);
obj.sq_AddSetStatePacket(STATE_BYKK_DEPRAVITYSEVENSINS, STATE_PRIORITY_USER, true);
}
}
case 12:
if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_DOWN, ENUM_SUBKEY_TYPE_ALL) && sq_IsKeyDown(OPTION_HOTKEY_JUMP, ENUM_SUBKEY_TYPE_ALL)){
obj.sq_IntVectClear();
obj.sq_IntVectPush(1);
obj.sq_IntVectPush(1);
obj.sq_IntVectPush(200);
obj.sq_AddSetStatePacket(6, STATE_PRIORITY_IGNORE_FORCE, true);
}
break;
}
}
function onChangeSkillEffect_Depravitysevensins(obj, skillIndex, reciveData)
{
if(!obj) return;
local set = reciveData.readDword();
if(set == 1){
obj.getVar("attackMoveBool").setBool(0, true);
}
}
function onKeyFrameFlag_Depravitysevensins(obj, flagIndex)
{
if(!obj) return false;
switch(flagIndex){
case 101:
setDepravitysevensinsAppendage(obj);
break;
case 102: sq_SetMyShake(obj, 2, 300); break;
case 103: sq_SetMyShake(obj, 10, 160); break;
case 104: sq_SetMyShake(obj, 1, 160); break;
case 201:
obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/atdepravitysevensins/attack/demonizationattack_basic_b_eff01.ani"), 0, 0);
break;
case 202:
obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/atdepravitysevensins/attack/demonizationattack_basic_C_eff01.ani"), 0, 0);
obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/atdepravitysevensins/attack/demonizationattack_basic_C_eff04.ani"), 0, 0);
break;
case 203:
obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/atdepravitysevensins/attack/demonizationattack_basic_C_eff02.ani"), 0, 0);
break;
}
return true;
}
function onTimeEvent_Depravitysevensins(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
}
function onEndState_Depravitysevensins(obj, new_state)
{
if(!obj) return;
}
function onEnd_appendage_depravitysevensins(appendage)
{
if(!appendage) return;
local parentObj = appendage.getParent();
if(!parentObj || parentObj.getState() == STATE_DIE){
appendage.setValid(false);
return;
}
local sqrChr = sq_GetCNRDObjectToSQRCharacter(parentObj);
if(sqrChr.getState() == 0 || sqrChr.getState() == 8 || sqrChr.getState() == 14){
sqrChr.sq_IntVectClear();
sqrChr.sq_IntVectPush(1);
sqrChr.sq_AddSetStatePacket(STATE_BYKK_DEPRAVITYSEVENSINS, STATE_PRIORITY_USER, true);
}
}
function setDepravitysevensinsAppendage(obj)
{
if(!obj.isObjectType(OBJECTTYPE_CHARACTER)) return;
obj.getVar("Depravitysevensins_Skill").setBool(0, true);
local AddAppendage = CNSquirrelAppendage.sq_AppendAppendage(obj, obj, SKILL_BYKK_DEPRAVITYSEVENSINS, false, DEMONIZATION_APDPATH, true);
local skillLevel = sq_GetSkillLevel(obj, SKILL_BYKK_DEPRAVITYSEVENSINS);
local buffTime = sq_GetLevelData(obj, SKILL_BYKK_DEPRAVITYSEVENSINS, 0, skillLevel);
if(sq_GetSkillLevel(obj, SKILL_BYKK_FIRSTPRANA) > 0) buffTime = buffTime + sq_GetLevelData(obj, SKILL_BYKK_FIRSTPRANA, 2, sq_GetSkillLevel(obj, SKILL_BYKK_FIRSTPRANA));
if(buffTime > 0){
AddAppendage.sq_SetValidTime(buffTime);
obj.sq_SetSuperArmorUntilTime(obj, buffTime);
}
AddAppendage.setEnableIsBuff(true);
AddAppendage.setAppendCauseSkill(BUFF_CAUSE_SKILL, sq_getJob(obj), SKILL_BYKK_DEPRAVITYSEVENSINS, skillLevel);
CNSquirrelAppendage.sq_Append(AddAppendage, obj, obj, true);
AddAppendage.sq_DeleteEffectFront();
AddAppendage.sq_DeleteEffectBack();
AddAppendage.sq_AddEffectBack("character/swordman/effect/animation/1_atpriest_bykk/atdepravitysevensins/demonization/depravitysevensins_changeloop_back.ani");
AddAppendage.sq_AddEffectFront("character/swordman/effect/animation/1_atpriest_bykk/atdepravitysevensins/demonization/depravitysevensins_changeloop_front01.ani");
local value1 = sq_GetLevelData(obj, SKILL_BYKK_DEPRAVITYSEVENSINS, 9, skillLevel);
local speedRate = sq_GetLevelData(obj, SKILL_BYKK_DEPRAVITYSEVENSINS, 6, skillLevel);
local defenseRate = sq_GetLevelData(obj, SKILL_BYKK_DEPRAVITYSEVENSINS, 1, skillLevel);
local hpmpRate = sq_GetLevelData(obj, SKILL_BYKK_DEPRAVITYSEVENSINS, 2, skillLevel);
local cooltimeRate = sq_GetLevelData(obj, SKILL_BYKK_DEPRAVITYSEVENSINS, 3, skillLevel);
local change_appendage = AddAppendage.sq_getChangeStatus("Depravitysevensins");
if(!change_appendage) change_appendage = AddAppendage.sq_AddChangeStatus("Depravitysevensins",obj, obj, 0, CHANGE_STATUS_TYPE_PHYSICAL_ATTACK, true, 1000);
if(change_appendage){
change_appendage.clearParameter();
change_appendage.addParameter(CHANGE_STATUS_TYPE_ACTIVESTATUS_TOLERANCE_ALL, false, (value1 * 1).tofloat());
change_appendage.addParameter(CHANGE_STATUS_TYPE_ATTACK_SPEED, false, (speedRate * 10).tofloat());
change_appendage.addParameter(CHANGE_STATUS_TYPE_MOVE_SPEED, false, (speedRate * 10).tofloat());
change_appendage.addParameter(CHANGE_STATUS_TYPE_EQUIPMENT_PHYSICAL_DEFENSE , true, (defenseRate * 1).tofloat());
change_appendage.addParameter(CHANGE_STATUS_TYPE_EQUIPMENT_MAGICAL_DEFENSE , true, (defenseRate * 1).tofloat());
change_appendage.addParameter(CHANGE_STATUS_TYPE_HP_REGEN_RATE , true, (hpmpRate * 1).tofloat());
change_appendage.addParameter(CHANGE_STATUS_TYPE_MP_REGEN_RATE, true, (hpmpRate * 1).tofloat());
change_appendage.addParameter(CHANGE_STATUS_TYPE_COOLTIME_DECLINE, true, (cooltimeRate * -1).tofloat());
}
}
//净化之花
function checkExecutableSkill_Flowerofpurification(obj)
{
if (!obj) return false;
if(obj.getState() == STATE_BYKK_DEPRAVITYSEVENSINS && obj.getSkillSubState() < 10) return false;
// if(obj.getVar("Depravitysevensins_Skill").getBool(0) == false) return false;
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_FLOWEROFPURIFICATION);
if (isUse){
obj.getVar("Flowerofpurification_Tar").clear_obj_vector();
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_FLOWEROFPURIFICATION, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_Flowerofpurification(obj)
{
if (!obj) return false;
if(!CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)) return false;
return true;
}
function onSetState_Flowerofpurification(obj, state, datas, isResetTimer)
{
if(!obj) return;
local subState = obj.sq_GetVectorData(datas, 0);
obj.setSkillSubState(subState);
obj.sq_StopMove();
switch(subState){
case 0:
local ani = getCurrentAnimation_demonization(obj, "delightflower_castbody", false);
obj.setCurrentAnimation(ani);
obj.sq_PlaySound("PW_DSEVENSINS_DM_01");
obj.sq_PlaySound("DSEVENSINS_CAST");
local currentAni = obj.getCurrentAnimation();
sq_SetFrameDelayTime(currentAni, 22, 2500);
break;
}
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 0.5, 0.5);
local currentAni = obj.getCurrentAnimation();
local speedRate = 6000 / currentAni.getDelaySum(0, 0);
if(speedRate > 130) currentAni.setSpeedRate(130.0);
}
function onEndCurrentAni_Flowerofpurification(obj)
{
if(!obj) return;
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
}
function onProcCon_Flowerofpurification(obj)
{
if(!obj) return;
}
function onKeyFrameFlag_Flowerofpurification(obj, flagIndex)
{
if(!obj) return false;
switch(flagIndex){
case 100:
//`add body effect` -25 0 0
obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/atdepravitysevensins/delightflower_floweradd_fxb01.ani"), -25, 0);
break;
case 104:
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atdepravitysevensins/delightflower_cast04.ani", 0, 1, 0);
break;
case 105:
//`shoot heart` -1 0 182
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atdepravitysevensins/effect/delightflower_namedhit01.ani", 200, 0, 0);
local objmg = obj.getObjectManager();
for(local i= 0; i < objmg.getCollisionObjectNumber(); i++){
local object = objmg.getCollisionObject(i);
if(object && obj.isEnemy(object) && object.isObjectType(OBJECTTYPE_ACTIVE) && sq_Abs(object.getXPos() - obj.getXPos()) <= 400 && sq_Abs(object.getYPos() - obj.getYPos()) <= 200){
local activeObj = sq_GetCNRDObjectToActiveObject(object);
if(!CNSquirrelAppendage.sq_IsAppendAppendage(obj, DELIGHTFLOWER_APDPATH)){
if(!obj.getVar("Flowerofpurification_Tar").is_obj_vector(activeObj)) obj.getVar("Flowerofpurification_Tar").push_obj_vector(activeObj);
local addAppendage = CNSquirrelAppendage.sq_AppendAppendage(activeObj, obj, SKILL_BYKK_FLOWEROFPURIFICATION, -1, DELIGHTFLOWER_APDPATH, true);
addAppendage.sq_AddEffectBack("character/swordman/effect/animation/1_atpriest_bykk/atdepravitysevensins/effect/delightflower_wavehitghost_back.ani");
addAppendage.sq_AddEffectBack("character/swordman/effect/animation/1_atpriest_bykk/atdepravitysevensins/effect/delightflower_floorwavehit.ani");
addAppendage.sq_AddEffectFront("character/swordman/effect/animation/1_atpriest_bykk/atdepravitysevensins/effect/delightflower_wavehit01.ani");
addAppendage.sq_AddEffectFront("character/swordman/effect/animation/1_atpriest_bykk/atdepravitysevensins/effect/delightflower_wavehitghost_front.ani");
sq_HoldAndDelayDie(activeObj, obj, true, true, true, 200, 200, ENUM_DIRECTION_NEUTRAL, addAppendage);
}
}
}
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_FLOWEROFPURIFICATION, -1, 0, 1.0) + 100;
local hitMax = sq_GetIntData(obj ,SKILL_BYKK_FLOWEROFPURIFICATION, 4);
local currentAni = obj.getCurrentAnimation();
local delaySum = currentAni.getDelaySum(5, 18);
if(obj.isMyControlObject()) createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,0,0,0,obj.getDirection(),4,SKILL_BYKK_FLOWEROFPURIFICATION,2,totalDamage,hitMax,delaySum,0,0,0,0,0);
break;
case 110:
//`create river` 1 0 187
if(obj.isMyControlObject()) createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,1,0,187,obj.getDirection(),4,SKILL_BYKK_FLOWEROFPURIFICATION,0,0,0,0,0,0,0,0,0);
break;
case 119:
obj.sq_PlaySound("DSEVENSINS");
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atdepravitysevensins/delightflower_cast05.ani", 0, 1, 0);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atdepravitysevensins/delightflower_cast06.ani", 0, 1, 0);
local pooledObj = sq_AddDrawOnlyAniFromParent(obj, "passiveobject/atpriest_bykk/animation/4_temptress/animation/atdepravitysevensins/delightflower_flower_flarebg03.ani", 0, 1, 0);
local pAni = pooledObj.getCurrentAnimation();
pAni.setImageRateFromOriginal(1.8, 1.2);
pAni.setAutoLayerWorkAnimationAddSizeRate(1.8);
//`create flower` 1 0 235
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_FLOWEROFPURIFICATION, -1, 1, 1.0) + 100;
local size = obj.getVar("Flowerofpurification_Tar").get_obj_vector_size();
local currentAni = obj.getCurrentAnimation();
local delay = currentAni.getDelaySum(0, 0);
local speedRate = 6000 / delay;
if(obj.isMyControlObject()) createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,1,0,-20,obj.getDirection(),4,SKILL_BYKK_FLOWEROFPURIFICATION,1,totalDamage,size,speedRate,0,0,0,0,0);
break;
}
return true;
}
function onTimeEvent_Flowerofpurification(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
}
function onEndState_Flowerofpurification(obj, new_state)
{
if(!obj) return;
if(new_state != STATE_BYKK_FLOWEROFPURIFICATION){
local aniObj = obj.getVar("Flowerofpurification_river").get_obj_vector(0);
if(aniObj){
local colObj = sq_GetCNRDObjectToCollisionObject(aniObj);
colObj.setTimeEvent(0, 200, 1, false);
}
local size = obj.getVar("Flowerofpurification_Tar").get_obj_vector_size();
if(size > 0){
for(local i = 0; i < size; i++){
local targetObj = obj.getVar("Flowerofpurification_Tar").get_obj_vector(i);
if(targetObj) CNSquirrelAppendage.sq_RemoveAppendage(targetObj, DELIGHTFLOWER_APDPATH);
}
}
}
}
//嫉妒之吻
function checkExecutableSkill_Enviouskiss(obj)
{
if (!obj) return false;
if(obj.getState() == STATE_BYKK_DEPRAVITYSEVENSINS && obj.getSkillSubState() < 10) return false;
if(obj.getVar("Enviouskiss_Bool").getBool(0)){
obj.getVar("Enviouskiss_Bool").setBool(0, false);
obj.sq_IntVectClear();
obj.sq_IntVectPush(1);
obj.sq_AddSetStatePacket(STATE_BYKK_ENVIOUSKISS, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_ENVIOUSKISS);
if (isUse){
obj.getVar("Enviouskiss_Bool").setBool(0, false);
obj.getVar("Enviouskiss_Tar").clear_obj_vector();
obj.sq_IntVectClear();
if(sq_GetLevelData(obj, SKILL_BYKK_ENVIOUSKISS, 3, sq_GetSkillLevel(obj, SKILL_BYKK_ENVIOUSKISS)) > 0) obj.sq_IntVectPush(3);
else obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_ENVIOUSKISS, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_Enviouskiss(obj)
{
if (!obj) return false;
return true;
}
function onSetState_Enviouskiss(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:
if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)){
local ani = getCurrentAnimation_demonization(obj, "enviouskissthrow", false);
obj.setCurrentAnimation(ani);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atenviouskiss/humancast_bodyeffect01.ani", 0, 0, 0);
obj.sq_PlaySound("R_PW_ENVIOUSKISS_DM_01");
}
else{
obj.sq_SetCurrentAnimation(ATPANI_BYKK_ENVIOUSKISSTHROWHUMAN);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atenviouskiss/dashhuman_rose01.ani", 0, 0, 0);
obj.sq_PlaySound("R_PW_ENVIOUSKISS");
}
break;
case 1:
local ani = getCurrentAnimation_demonization(obj, "enviouskissdash", false);
obj.setCurrentAnimation(ani);
break;
case 2:
local ani = getCurrentAnimation_demonization(obj, "enviouskisshold", false);
obj.setCurrentAnimation(ani);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atenviouskiss/holddust_01.ani", 0, -1, 0);
break;
case 3:
local ani = getCurrentAnimation_demonization(obj, "enviouskissfinish", false);
obj.setCurrentAnimation(ani);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atenviouskiss/finishslash_hit11.ani", 0, 1, 0);
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_ENVIOUSKISS, -1, 0, 1.0) + 100;
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, ATPRIESTATK_BYKK_ENVIOUSKISS));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
break;
case 4:
obj.sq_SetCurrentAnimation(ATPANI_BYKK_ENVIOUSKISSFINISHHUMAN);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atenviouskiss/changehumaneffect_rose02.ani", 0, 1, 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_Enviouskiss(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 1:
local targetObj = obj.getVar("Enviouskiss_Tar").get_obj_vector(0);
if(targetObj){
local moveX = sq_GetDistancePos(sq_GetXPos(targetObj), targetObj.getDirection(), -50);
sq_setCurrentAxisPos(obj, 0, moveX);
sq_setCurrentAxisPos(obj, 1, sq_GetYPos(targetObj));
sq_SetCurrentDirection(obj, targetObj.getDirection());
}
case 2:
obj.sq_IntVectClear();
obj.sq_IntVectPush(subState + 1);
obj.sq_AddSetStatePacket(STATE_BYKK_ENVIOUSKISS, STATE_PRIORITY_IGNORE_FORCE, true);
break;
case 0:
case 4:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
case 3:
if(!CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)){
obj.sq_IntVectClear();
obj.sq_IntVectPush(subState + 1);
obj.sq_AddSetStatePacket(STATE_BYKK_ENVIOUSKISS, STATE_PRIORITY_IGNORE_FORCE, true);
}
else{
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
}
}
}
function onProcCon_Enviouskiss(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
if(subState <= 3){
if(!CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)){
obj.setSkillCommandEnable(SKILL_BYKK_DEPRAVITYSEVENSINS, true);
local b_useskill = obj.sq_IsEnterSkill(SKILL_BYKK_DEPRAVITYSEVENSINS);
if(b_useskill != -1){
setDepravitysevensinsAppendage(obj);
}
}
}
}
function onKeyFrameFlag_Enviouskiss(obj, flagIndex)
{
if(!obj) return false;
switch(flagIndex){
case 101:
local skillLevel = sq_GetSkillLevel(obj, SKILL_BYKK_ENVIOUSKISS);
local stunTime = sq_GetLevelData(obj, SKILL_BYKK_ENVIOUSKISS, 1, skillLevel);
local lifeTime = sq_GetLevelData(obj, SKILL_BYKK_ENVIOUSKISS, 2, skillLevel);
local ishold = sq_GetLevelData(obj, SKILL_BYKK_ENVIOUSKISS, 4, skillLevel);
if(obj.isMyControlObject()) createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,25,0,92,obj.getDirection(),4,SKILL_BYKK_ENVIOUSKISS,0,stunTime,lifeTime,ishold,0,0,0,0,0);
break;
case 102: sq_SetMyShake(obj, 3, 300); break;
case 103:
sq_flashScreen(obj,80,100,240,150, sq_RGB(0,0,0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
sq_SetMyShake(obj, 3, 300);
break;
case 104:
obj.sq_PlaySound("DEVASTATE");
obj.sq_PlaySound("PW_ENVIOUSKISS_DM_03_1");
break;
case 10001: obj.getVar("setCancelSkill").setBool(10, true); break;
}
return true;
}
function onTimeEvent_Enviouskiss(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
}
function onEndState_Enviouskiss(obj, new_state)
{
if(!obj) return;
if(new_state != STATE_BYKK_ENVIOUSKISS){
sq_SimpleMoveToNearMovablePos(obj,300);
}
}
function onEnd_appendage_EnviousKiss(appendage)
{
if(!appendage) return;
local parentObj = appendage.getParent();
local obj = sq_GetCNRDObjectToSQRCharacter(parentObj);
obj.getVar("Enviouskiss_Bool").setBool(0, false);
}
//靈魂烙印·原罪衝擊
function checkExecutableSkill_Secondsoul(obj)
{
if (!obj) return false;
if(obj.getState() == STATE_BYKK_DEPRAVITYSEVENSINS && obj.getSkillSubState() < 10) return false;
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_SECONDSOUL);
if (isUse){
obj.getVar("Secondsoul_Bool").setBool(0, false);
obj.getVar("Scudthewrath_Tar").clear_obj_vector();
if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)) obj.getVar("Secondsoul_Bool").setBool(0, true);
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_SECONDSOUL, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_Secondsoul(obj)
{
if (!obj) return false;
return true;
}
function onSetState_Secondsoul(obj, state, datas, isResetTimer)
{
if(!obj) return;
local subState = obj.sq_GetVectorData(datas, 0);
obj.setSkillSubState(subState);
obj.sq_StopMove();
obj.sq_ZStop();
local aniSet = [ATPANI_BYKK_SECONDSOULATTACK1_03,ATPANI_BYKK_SECONDSOULATTACK2_03,ATPANI_BYKK_SECONDSOULATTACK3_02,ATPANI_BYKK_SECONDSOULATTACK4_03,ATPANI_BYKK_SECONDSOULATTACK5_03,ATPANI_BYKK_SECONDSOULATTACK6_02,ATPANI_BYKK_SECONDSOULATTACK2_03_TALISMAN,ATPANI_BYKK_SECONDSOULATTACK6_02_TALISMAN], aniName = ["demonsecondsoulattack1_03","demonsecondsoulattack2_03","demonsecondsoulattack3_03","demonsecondsoulattack4_03","demonsecondsoulattack5_03","demonsecondsoulattack6_02","demonsecondsoulattack2_03_talisman","demonsecondsoulattack6_02_talisman"];
if(obj.getVar("Secondsoul_Bool").getBool(0)){
local ani = getCurrentAnimation_demonization(obj, aniName[subState], false);
obj.setCurrentAnimation(ani);
}
else{
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);
switch(subState){
case 0:
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atsecondsoul/secondsoulattack2_dust1_01.ani", 0, 1, 0);
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_SECONDSOUL, -1, 0, 1.0) + 100;
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, ATPRIESTATK_BYKK_SECONDSOUL));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
break;
case 1:
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atsecondsoul/secondsoulattack2_dust2_02.ani", 0, 1, 0);
break;
case 2:
local currentAni = obj.getCurrentAnimation();
obj.setTimeEvent(1, currentAni.getDelaySum(false) / 60, 40, true);
break;
case 3:
obj.getVar("Secondsoul_Move").setInt(10, sq_GetZPos(obj));
break;
case 4:
local currentAni = obj.getCurrentAnimation();
obj.setTimeEvent(2, currentAni.getDelaySum(false) / 75, 40, true);
break;
}
}
function onEndCurrentAni_Secondsoul(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
if(sq_GetLevelData(obj, SKILL_BYKK_SECONDSOUL, 2, sq_GetSkillLevel(obj, SKILL_BYKK_SECONDSOUL)) > 0){
obj.sq_IntVectClear();
obj.sq_IntVectPush(6);
obj.sq_AddSetStatePacket(STATE_BYKK_SECONDSOUL, STATE_PRIORITY_IGNORE_FORCE, true);
break;
}
case 1:
case 2:
case 3:
case 4:
case 6:
obj.sq_IntVectClear();
obj.sq_IntVectPush(subState + 1);
obj.sq_AddSetStatePacket(STATE_BYKK_SECONDSOUL, STATE_PRIORITY_IGNORE_FORCE, true);
break;
case 5:
case 7:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
}
}
function onProcCon_Secondsoul(obj)
{
if(!obj) return;
}
function onKeyFrameFlag_Secondsoul(obj, flagIndex)
{
if(!obj) return false;
switch(flagIndex){
case 101:
sq_flashScreen(obj,0,0,320,255, sq_RGB(0,0,0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_CLOSEBACK);
sq_SetMyShake(obj, 2, 400);
break;
case 102: sq_SetMyShake(obj, 3, 160); break;
case 103:
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_SECONDSOUL, -1, 1, 1.0) + 100;
local currentAni = obj.getCurrentAnimation();
local delay = currentAni.getDelaySum(0, 0);
local speedRate = 6000 / delay;
if(obj.isMyControlObject()) createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,125,0,4,obj.getDirection(),4,SKILL_BYKK_SECONDSOUL,0,totalDamage,speedRate,0,0,0,0,0,0);
break;
case 201:
sq_flashScreen(obj,0,0,320,255, sq_RGB(0,0,0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_CLOSEBACK);
sq_SetMyShake(obj, 2, 150);
break;
case 202:
break;
case 203: sq_SetMyShake(obj, 3, 160); break;
case 204:
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_SECONDSOUL, -1, 1, 1.0) + 100;
if(obj.isMyControlObject()) createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,125,0,4,obj.getDirection(),4,SKILL_BYKK_SECONDSOUL,0,totalDamage,0,0,0,0,0,0,0);
break;
case 10001: obj.getVar("setCancelSkill").setBool(10, true); break;
}
return true;
}
function onTimeEvent_Secondsoul(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
switch(timeEventIndex){
case 1:
local vz = sq_GetUniformVelocity(0, 250, timeEventCount, 40);
sq_setCurrentAxisPos(obj, 2, vz);
break;
case 2:
local vz = sq_GetUniformVelocity(obj.getVar("Secondsoul_Move").getInt(10), 0, timeEventCount, 20);
sq_setCurrentAxisPos(obj, 2, vz);
break;
}
}
function onEndState_Secondsoul(obj, new_state)
{
if(!obj) return;
if(new_state != STATE_BYKK_SECONDSOUL){
local size = obj.getVar("Scudthewrath_Tar").get_obj_vector_size();
if(size > 0){
for(local i = 0; i < size; i++){
local targetObj = obj.getVar("Scudthewrath_Tar").get_obj_vector(i);
if(targetObj) CNSquirrelAppendage.sq_RemoveAppendage(targetObj, SECONDSOUL_APDPATH);
}
}
}
}
function onAttack_Secondsoul(obj, damager, boundingBox, isStuck)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
if(damager.isObjectType(OBJECTTYPE_ACTIVE)){
local activeObj = sq_GetCNRDObjectToActiveObject(damager);
if(!CNSquirrelAppendage.sq_IsAppendAppendage(activeObj, SECONDSOUL_APDPATH)){
if(!obj.getVar("Scudthewrath_Tar").is_obj_vector(activeObj)) obj.getVar("Scudthewrath_Tar").push_obj_vector(activeObj);
local AddAppendage = CNSquirrelAppendage.sq_AppendAppendage(activeObj, obj, SKILL_BYKK_SECONDSOUL, false, SECONDSOUL_APDPATH, true);
if(sq_IsHoldable(obj, activeObj)) sq_HoldAndDelayDie(activeObj, obj, true, true, true, 200, 200, ENUM_DIRECTION_NEUTRAL , AddAppendage);
if(!sq_IsFixture(activeObj)) sq_MoveToAppendageForce(activeObj, obj, obj, 125, 0, activeObj.getZPos(), 200, true, AddAppendage);
}
}
break;
}
}
//暴食之噬
function checkExecutableSkill_Gluttonyvomit(obj)
{
if (!obj) return false;
if(obj.getState() == STATE_BYKK_DEPRAVITYSEVENSINS && obj.getSkillSubState() < 10) return false;
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_GLUTTONYVOMIT);
if (isUse){
obj.sq_IsEnterSkillLastKeyUnits(SKILL_BYKK_GLUTTONYVOMIT);
obj.getVar("Gluttonyvomit_Count").setInt(0, 0);
obj.sq_IntVectClear();
if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)) obj.sq_IntVectPush(1);
else obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_GLUTTONYVOMIT, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_Gluttonyvomit(obj)
{
if (!obj) return false;
return true;
}
function onSetState_Gluttonyvomit(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(ATPANI_BYKK_ATGLUTTONYVOMIT_TRANSFORM1_BODY);
break;
case 1:
local ani = getCurrentAnimation_demonization(obj, "atgluttonyvomit_casting_body", false);
obj.setCurrentAnimation(ani);
local currentAni = obj.getCurrentAnimation();
sq_ClearAttackBox(currentAni);
local attackBox = [0,-50,0,250,100,161];
local sizeRate = 1.0;
if(sizeRate > 1.0){
for(local ui = 0; ui < attackBox.len(); ui++){
attackBox[ui] = (attackBox[ui] * sizeRate).tointeger();
}
}
sq_AddAttackBox(currentAni, attackBox[0], attackBox[1], attackBox[2], attackBox[3], attackBox[4], attackBox[5]);
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_GLUTTONYVOMIT, -1, 0, 1.0) + 100;
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, ATPRIESTATK_BYKK_GLUTTONYVOMIT));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
local hitMax = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_GLUTTONYVOMIT, -1, 1, 1.0) + 100;
obj.setTimeEvent(1, 100, hitMax, false);
local attractPower = sq_GetLevelData(obj, SKILL_BYKK_GLUTTONYVOMIT, 6, sq_GetSkillLevel(obj, SKILL_BYKK_GLUTTONYVOMIT));
local range = 250 * (100 + sq_GetLevelData(obj, SKILL_BYKK_GLUTTONYVOMIT, 11, sq_GetSkillLevel(obj, SKILL_BYKK_GLUTTONYVOMIT))) / 100;
if(false){attractPower = attractPower * 130 / 100; range = range * 120 / 100};
local appendage = sq_AttractToMe(obj, 300, 200, attractPower);
obj.getVar("Gluttonyvomit").setAppendage(0,appendage);
if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)) obj.sq_PlaySound("PW_GLUTTONY_DM_01");
obj.sq_PlaySound("GLUTTONY_CAST");
break;
case 2:
obj.resetHitObjectList();
local appendage = obj.getVar("Gluttonyvomit").getAppendage(0);//得到ap
if(appendage)//为真
appendage.setValid(false);//删除ap
local ani = getCurrentAnimation_demonization(obj, "atgluttonyvomit_att_body", false);
obj.setCurrentAnimation(ani);
obj.sq_PlaySound("PW_GLUTTONY_DM_02");
obj.sq_PlaySound("GLUTTONY_SHOOT");
break;
case 3:
obj.sq_SetCurrentAnimation(ATPANI_BYKK_ATGLUTTONYVOMIT_TRANSFORM2_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_Gluttonyvomit(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
obj.sq_IntVectClear();
obj.sq_IntVectPush(subState + 1);
obj.sq_AddSetStatePacket(STATE_BYKK_GLUTTONYVOMIT, STATE_PRIORITY_AUTO, true);
break;
case 2:
if(!CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)){
obj.sq_IntVectClear();
obj.sq_IntVectPush(subState + 1);
obj.sq_AddSetStatePacket(STATE_BYKK_GLUTTONYVOMIT, STATE_PRIORITY_AUTO, true);
break;
}
case 3:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
}
}
function onProcCon_Gluttonyvomit(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 1:
local bDownKey = obj.isDownSkillLastKey();
local stateTime = obj.sq_GetStateTimer();
local timeMax = sq_GetLevelData(obj, SKILL_BYKK_GLUTTONYVOMIT, 5, sq_GetSkillLevel(obj, SKILL_BYKK_GLUTTONYVOMIT));
if(!bDownKey || stateTime >= timeMax){
obj.sq_IntVectClear();
obj.sq_IntVectPush(2);
obj.sq_AddSetStatePacket(STATE_BYKK_GLUTTONYVOMIT, STATE_PRIORITY_IGNORE_FORCE, true);
break;
}
case 2:
if(!CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)){
obj.setSkillCommandEnable(SKILL_BYKK_DEPRAVITYSEVENSINS, true);
local b_useskill = obj.sq_IsEnterSkill(SKILL_BYKK_DEPRAVITYSEVENSINS);
if(b_useskill != -1){
setDepravitysevensinsAppendage(obj);
}
}
break;
}
}
function onKeyFrameFlag_Gluttonyvomit(obj, flagIndex)
{
if(!obj) return false;
switch(flagIndex){
case 101: sq_flashScreen(obj,0,120,0,178, sq_RGB(255,255,255), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_COVER); break;
case 102:
sq_SetMyShake(obj, 10, 420);
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_GLUTTONYVOMIT, -1, 2, 1.0) + 100;
if(obj.isMyControlObject()) createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,15,0,90,obj.getDirection(),4,SKILL_BYKK_GLUTTONYVOMIT,0,totalDamage,0,0,0,0,0,0,0);
break;
case 10001: obj.getVar("setCancelSkill").setBool(10, true); break;
}
return true;
}
function onTimeEvent_Gluttonyvomit(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
switch(timeEventIndex){
case 1:
obj.resetHitObjectList();
if(sq_GetLevelData(obj, SKILL_BYKK_GLUTTONYVOMIT, 10, sq_GetSkillLevel(obj, SKILL_BYKK_GLUTTONYVOMIT)) > 0){
local hpRate = sq_GetLevelData(obj, SKILL_BYKK_GLUTTONYVOMIT, 4, sq_GetSkillLevel(obj, SKILL_BYKK_GLUTTONYVOMIT)) / 10;
local objectManager = obj.getObjectManager();//得到對象管理器
for (local i = 0; i < objectManager.getCollisionObjectNumber(); i++){
local object = objectManager.getCollisionObject(i);//得到控制類對象
if (object && object.isObjectType(OBJECTTYPE_ACTIVE) && !obj.isEnemy(object)){
local activeObj = sq_GetCNRDObjectToActiveObject(object);
local hp = activeObj.getHp() + activeObj.getHpMax() * hpRate / 100;
obj.sq_SendSetHpPacket(hp, true, activeObj);
}
}
}
break;
}
}
function onEndState_Gluttonyvomit(obj, new_state)
{
if(!obj) return;
if(new_state != STATE_BYKK_GLUTTONYVOMIT){
local appendage = obj.getVar("Gluttonyvomit").getAppendage(0);//得到ap
if(appendage)//为真
appendage.setValid(false);//删除ap
}
}
function onAttack_Gluttonyvomit(obj, damager, boundingBox, isStuck)
{
if(!obj) return;
local hitMax = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_GLUTTONYVOMIT, -1, 1, 1.0) + 100;
if(obj.getVar("Gluttonyvomit_Count").getInt(0) >= hitMax) return;
local subState = obj.getSkillSubState();
switch(subState){
case 1:
if(damager.isObjectType(OBJECTTYPE_ACTIVE)){
obj.getVar("Gluttonyvomit_Count").setInt(0, obj.getVar("Gluttonyvomit_Count").getInt(0) + 1);
local hpRate = sq_GetLevelData(obj, SKILL_BYKK_GLUTTONYVOMIT, 4, sq_GetSkillLevel(obj, SKILL_BYKK_GLUTTONYVOMIT)) / 10;
local hp = obj.getHp() + obj.getHpMax() * hpRate / 100;
obj.sq_SendSetHpPacket(hp, true, obj);
}
break;
}
}
//肋骨重塑:原罪戰矛
function checkExecutableSkill_Thirdrib(obj)
{
if (!obj) return false;
if(obj.getState() == STATE_BYKK_DEPRAVITYSEVENSINS && obj.getSkillSubState() < 10) return false;
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_THIRDRIB);
if (isUse){
obj.getVar("Thirdrib_Bool").setBool(0, false);
if(sq_GetLevelData(obj, SKILL_BYKK_THIRDRIB, 3, sq_GetSkillLevel(obj, SKILL_BYKK_THIRDRIB)) > 0) obj.getVar("Thirdrib_Bool").setBool(0, true);
obj.getVar("Thirdrib_Tar").clear_obj_vector();
obj.sq_IntVectClear();
if(sq_GetLevelData(obj, SKILL_BYKK_THIRDRIB, 4, sq_GetSkillLevel(obj, SKILL_BYKK_THIRDRIB)) > 0) obj.sq_IntVectPush(3);
else if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)) obj.sq_IntVectPush(1);
else obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_THIRDRIB, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_Thirdrib(obj)
{
if (!obj) return false;
return true;
}
function onSetState_Thirdrib(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(ATPANI_BYKK_THIRDRIB_TRANS_START_BODY);
obj.sq_PlaySound("PW_THIRDRIB_01");
break;
case 1:
local ani = getCurrentAnimation_demonization(obj, "thirdrib_a_body", false);
obj.setCurrentAnimation(ani);
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_THIRDRIB, -1, 0, 1.0) + 100;
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, ATPRIESTATK_BYKK_THIRDRIB));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)) obj.sq_PlaySound("PW_THIRDRIB_DM_01");
break;
case 2:
local ani = getCurrentAnimation_demonization(obj, "thirdrib_b_body", false);
obj.setCurrentAnimation(ani);
obj.sq_AddStateLayerAnimation(-1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/atthirdrib/thirdrib_b_bg_eff_all02.ani"), 0, 0);
obj.sq_AddStateLayerAnimation(-1001,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/atthirdrib/thirdrib_b_bg_black_all.ani"), 0, 0);
obj.setTimeEvent(0, 1500, 1, false);
break;
case 3:
obj.removeAllTimeEvent();
local ani = getCurrentAnimation_demonization(obj, "thirdrib_c_body", false);
obj.setCurrentAnimation(ani);
obj.sq_AddStateLayerAnimation(-1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/atthirdrib/thirdrib_c_bg_eff_all01.ani"), 0, 0);
obj.sq_AddStateLayerAnimation(-2,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/atthirdrib/thirdrib_c_bg_black_player01.ani"), 0, 0);
obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/atthirdrib/thirdrib_c_back_rose01.ani"), 0, 0);
obj.sq_AddStateLayerAnimation(-1001,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/atthirdrib/thirdrib_c_bg_black_all.ani"), 0, 0);
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_THIRDRIB, -1, 2, 1.0) + 100;
if(sq_GetLevelData(obj, SKILL_BYKK_THIRDRIB, 4, sq_GetSkillLevel(obj, SKILL_BYKK_THIRDRIB)) > 0) totalDamage = totalDamage + obj.sq_GetBonusRateWithPassive(SKILL_BYKK_THIRDRIB, -1, 0, 1.0) + 100;
local loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_THESEVENDEADLYSINS);
if(loadSlot){
local count = loadSlot.getRemainLoadNumber();
totalDamage = totalDamage * (100 + sq_GetIntData(obj, SKILL_BYKK_THIRDRIB, 0) / 10 * count) / 100;
if(sq_GetSkillLevel(obj, SKILL_BYKK_FIRSTPRANA) < 1){
loadSlot.decreaseLoadCount(count);
}
else loadSlot.decreaseLoadCount(count - 1);
}
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, ATPRIESTATK_BYKK_THIRDRIBFINSH));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)) obj.sq_PlaySound("PW_THIRDRIB_DM_02");
break;
case 4:
obj.sq_SetCurrentAnimation(ATPANI_BYKK_THIRDRIB_TRANS_END_BODY);
obj.sq_PlaySound("PW_THIRDRIB_02");
break;
}
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
}
function onEndCurrentAni_Thirdrib(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(STATE_BYKK_THIRDRIB, STATE_PRIORITY_AUTO, true);
break;
case 3:
if(!CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)){
obj.sq_IntVectClear();
obj.sq_IntVectPush(subState + 1);
obj.sq_AddSetStatePacket(STATE_BYKK_THIRDRIB, STATE_PRIORITY_AUTO, true);
break;
}
case 4:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
}
}
function onProcCon_Thirdrib(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 1:
local stateTime = obj.sq_GetStateTimer();
local currentAni = obj.getCurrentAnimation();
local delaySum = currentAni.getDelaySum(0, 6);
if(stateTime <= delaySum) break;
case 2:
if(obj.getVar("Thirdrib_Bool").getBool(0)){
obj.setSkillCommandEnable(SKILL_BYKK_THIRDRIB,true);
local b_useskill = obj.sq_IsEnterSkill(SKILL_BYKK_THIRDRIB);
if(b_useskill != -1){
obj.sq_IntVectClear();
obj.sq_IntVectPush(3);
obj.sq_AddSetStatePacket(STATE_BYKK_THIRDRIB, STATE_PRIORITY_AUTO, true);
break;
}
}
case 3:
if(!CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)){
obj.setSkillCommandEnable(SKILL_BYKK_DEPRAVITYSEVENSINS, true);
local b_useskill = obj.sq_IsEnterSkill(SKILL_BYKK_DEPRAVITYSEVENSINS);
if(b_useskill != -1){
setDepravitysevensinsAppendage(obj);
}
}
break;
}
}
function onKeyFrameFlag_Thirdrib(obj, flagIndex)
{
if(!obj) return false;
switch(flagIndex){
case 101:
//`draw back ground` -1 0 140
// createOnlyDrawObject_ATPriest_bykk(obj,"character/swordman/effect/animation/1_atpriest_bykk/atthirdrib/thirdrib_a_bg_black_all.ani",true,obj.getDirection(),sq_GetXPos(obj),sq_GetYPos(obj) - 1,0,ENUM_DRAWLAYER_BOTTOM);
obj.sq_AddStateLayerAnimation(-1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/atthirdrib/thirdrib_a_bg_eff_all01.ani"), 0, 0);
obj.sq_AddStateLayerAnimation(-1001,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/atthirdrib/thirdrib_a_bg_black_all.ani"), 0, 0);
break;
case 102:
//`play pierce sound` 35 0 133
break;
case 103:
sq_flashScreen(obj,0,80,0,127, sq_RGB(255,0,0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
sq_SetMyShake(obj, 4, 80);
//`cut holdTarget` 1 0 -2
break;
case 104:
sq_flashScreen(obj,0,80,0,127, sq_RGB(255,0,0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
sq_SetMyShake(obj, 2, 60);
break;
case 105: sq_SetMyShake(obj, 1, 40); break;
case 10001: obj.getVar("setCancelSkill").setBool(10, true); break;
}
return true;
}
function onTimeEvent_Thirdrib(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
switch(timeEventIndex){
case 0:
obj.sq_IntVectClear();
obj.sq_IntVectPush(3);
obj.sq_AddSetStatePacket(STATE_BYKK_THIRDRIB, STATE_PRIORITY_AUTO, true);
break;
}
}
function onEndState_Thirdrib(obj, new_state)
{
if(!obj) return;
if(new_state != STATE_BYKK_THIRDRIB){
local size = obj.getVar("Thirdrib_Tar").get_obj_vector_size();
if(size > 0){
for(local i = 0; i < size; i++){
local targetObj = obj.getVar("Thirdrib_Tar").get_obj_vector(i);
if(targetObj) CNSquirrelAppendage.sq_RemoveAppendage(targetObj, THIRDRIB_APDPATH);
}
}
}
}
function onAttack_Thirdrib(obj, damager, boundingBox, isStuck)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 1:
if(damager.isObjectType(OBJECTTYPE_ACTIVE)){
local activeObj = sq_GetCNRDObjectToActiveObject(damager);
if(!obj.getVar("Thirdrib_Tar").is_obj_vector(activeObj)){
obj.getVar("Thirdrib_Tar").push_obj_vector(activeObj);
if(!CNSquirrelAppendage.sq_IsAppendAppendage(activeObj, THIRDRIB_APDPATH)){
local AddAppendage = CNSquirrelAppendage.sq_AppendAppendage(activeObj, obj, SKILL_BYKK_SECONDSOUL, false, THIRDRIB_APDPATH, true);
sq_HoldAndDelayDie(activeObj, obj, true, true, true, 200, 200, ENUM_DIRECTION_NEUTRAL , AddAppendage);
}
}
}
break;
case 3:
if(damager.isObjectType(OBJECTTYPE_ACTIVE)){
sq_AddDrawOnlyAniFromParent(damager,"character/swordman/effect/animation/1_atpriest_bykk/atthirdrib/lasthit_eff03.ani", 0, 1, sq_GetObjectHeight(damager) / 2);
}
break;
}
}
//失乐园
function checkExecutableSkill_Lastgenesis(obj)
{
if (!obj) return false;
if(obj.getState() == STATE_BYKK_DEPRAVITYSEVENSINS && obj.getSkillSubState() < 10) return false;
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_LASTGENESIS);
if (isUse){
obj.getVar("Lastgenesis_Tar").clear_obj_vector();
obj.getVar("Lastgenesis_TarFix").clear_obj_vector();
obj.getVar("Lastgenesis_Bool").setBool(0, true);
obj.getVar("Lastgenesis_Bool").setBool(1, false);
if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)) obj.getVar("Lastgenesis_Bool").setBool(1, true);
obj.sq_IntVectClear();
if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)) obj.sq_IntVectPush(1);
else obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_LASTGENESIS, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_Lastgenesis(obj)
{
if (!obj) return false;
return true;
}
function onSetState_Lastgenesis(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(ATPANI_BYKK_ATLASTGENESIS_TRANSFORMATION1_BODY1);
obj.sq_PlaySound("PW_LASTGENESIS_01");
break;
case 1:
local ani = getCurrentAnimation_demonization(obj, "atlastgenesis_casting_body1", false);
obj.setCurrentAnimation(ani);
if(obj.getVar("Lastgenesis_Bool").getBool(1)) obj.sq_PlaySound("PW_LASTGENESIS_DM_01");
break;
case 2:
local ani = getCurrentAnimation_demonization(obj, "atlastgenesis_att1_body", false);
obj.setCurrentAnimation(ani);
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_LASTGENESIS, -1, 0, 1.0) + 100;
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, ATPRIESTATK_BYKK_LASTGENESISSWING));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
if(obj.getVar("Lastgenesis_Bool").getBool(1)) obj.sq_PlaySound("PW_LASTGENESIS_DM_02");
else obj.sq_PlaySound("PW_LASTGENESIS_02");
break;
case 3:
case 4:
local aniSet = "atlastgenesis_finish1_body";
if(subState == 4) aniSet = "atlastgenesis_finish2_body";
local ani = getCurrentAnimation_demonization(obj, aniSet, false);
obj.setCurrentAnimation(ani);
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_LASTGENESIS, -1, 2, 1.0) + 100;
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, ATPRIESTATK_BYKK_LASTGENESISFINSH));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
break;
case 5:
obj.sq_SetCurrentAnimation(ATPANI_BYKK_ATLASTGENESIS_TRANSFORMATION2_BODY1);
break;
}
// obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 0.5, 0.5);
}
function onEndCurrentAni_Lastgenesis(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(STATE_BYKK_LASTGENESIS, STATE_PRIORITY_AUTO, true);
break;
case 2:
local size = obj.getVar("Lastgenesis_TarFix").get_obj_vector_size();
obj.sq_IntVectClear();
if(size > 0) obj.sq_IntVectPush(4);
else obj.sq_IntVectPush(3);
obj.sq_AddSetStatePacket(STATE_BYKK_LASTGENESIS, STATE_PRIORITY_AUTO, true);
break;
case 3:
case 4:
if(!CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)){
obj.sq_IntVectClear();
obj.sq_IntVectPush(5);
obj.sq_AddSetStatePacket(STATE_BYKK_LASTGENESIS, STATE_PRIORITY_AUTO, true);
break;
}
case 5:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
}
}
function onProcCon_Lastgenesis(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
if(subState != 5){
if(!CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)){
obj.setSkillCommandEnable(SKILL_BYKK_DEPRAVITYSEVENSINS, true);
local b_useskill = obj.sq_IsEnterSkill(SKILL_BYKK_DEPRAVITYSEVENSINS);
if(b_useskill != -1){
setDepravitysevensinsAppendage(obj);
}
}
}
}
function onKeyFrameFlag_Lastgenesis(obj, flagIndex)
{
if(!obj) return false;
switch(flagIndex){
case 7:
local aniPath = "character/swordman/effect/animation/1_atpriest_bykk/atlastgenesis/bg/atlastgenesis_bg_1.ani"
local pooledObj = createOnlyDrawObject_ATPriest_bykk(obj,aniPath,true,obj.getDirection(),sq_GetXPos(obj),sq_GetYPos(obj)-1,450,ENUM_DRAWLAYER_BOTTOM);
obj.getVar("Lastgenesis_Effect").clear_obj_vector();
obj.getVar("Lastgenesis_Effect").push_obj_vector(pooledObj);
break;
case 100:
break;
case 101:
createOnlyDrawObject_ATPriest_bykk(obj,"character/swordman/effect/animation/1_atpriest_bykk/atlastgenesis/att1/atlastgenesis_att1_spin2.ani",true,obj.getDirection(),sq_GetXPos(obj),sq_GetYPos(obj)-1,0,ENUM_DRAWLAYER_BOTTOM);
break;
case 102:
local size = obj.getVar("Lastgenesis_Tar").get_obj_vector_size();
if(size > 0){
for(local i = 0; i < size; i++){
local targetObj = obj.getVar("Lastgenesis_Tar").get_obj_vector(i);
local addAppendage = CNSquirrelAppendage.sq_GetAppendage(targetObj, LASTGENESIS_APDPATH);
if(addAppendage) sq_MoveToAppendageForce(targetObj, obj, obj, 160, 0, 50, 50, true, addAppendage);
}
}
break;
case 103:
break;
case 104:
local size = obj.getVar("Lastgenesis_Tar").get_obj_vector_size();
if(size > 0){
for(local i = 0; i < size; i++){
local targetObj = obj.getVar("Lastgenesis_Tar").get_obj_vector(i);
local addAppendage = CNSquirrelAppendage.sq_GetAppendage(targetObj, LASTGENESIS_APDPATH);
if(addAppendage) sq_MoveToAppendageForce(targetObj, obj, obj, -160, 0, 100, 100, true, addAppendage);
}
}
break;
case 105:
sq_SetMyShake(obj, 5, 60);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atlastgenesis/att1/atlastgenesis_att1_body_scythe_dust1.ani", 0, 1, 0);
break;
case 106:
break;
case 107:
break;
case 108:
break;
case 109:
local moveX = sq_GetDistancePos(sq_GetXPos(obj), obj.getDirection(), 80);
sq_setCurrentAxisPos(obj, 0, moveX);
sq_setCurrentAxisPos(obj, 2, 100);
local size = obj.getVar("Lastgenesis_Tar").get_obj_vector_size();
if(size > 0){
for(local i = 0; i < size; i++){
local targetObj = obj.getVar("Lastgenesis_Tar").get_obj_vector(i);
local addAppendage = CNSquirrelAppendage.sq_GetAppendage(targetObj, LASTGENESIS_APDPATH);
if(addAppendage) sq_MoveToAppendageForce(targetObj, obj, obj, 150, 0, -100, 50, true, addAppendage);
}
}
break;
case 110:
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_LASTGENESIS, -1, 1, 1.0) + 100;
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, ATPRIESTATK_BYKK_LASTGENESISSMASH));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
// sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atlastgenesis/att1/atlastgenesis_att1_scythe_weapon_normal.ani", 0, 0, 7);
obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/atlastgenesis/att1/atlastgenesis_att1_scythe_weapon_normal.ani"), 0, 0);
if(obj.getVar("Lastgenesis_Bool").getBool(1)) obj.sq_PlaySound("PW_LASTGENESIS_DM_03");
else obj.sq_PlaySound("PW_LASTGENESIS_03");
sq_flashScreen(obj,0,100,0,153, sq_RGB(255,255,255), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_COVER);
sq_SetMyShake(obj, 13, 320);
break;
case 111:
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atlastgenesis/att1/atlastgenesis_shockwave_crack_01.ani", -275, -1, -100);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atlastgenesis/att1/atlastgenesis_shockwave_crack.ani", 425, -1, -100);
break;
case 206:
local moveX = sq_GetDistancePos(sq_GetXPos(obj), obj.getDirection(), 150);
sq_setCurrentAxisPos(obj, 0, moveX);
sq_setCurrentAxisPos(obj, 2, 0);
break;
case 208:
sq_SetMyShake(obj, 7, 100);
break;
case 212:
break;
case 217:
obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/atlastgenesis/atlastgenesis_finish1_ball.ani"), 0, 0);
if(obj.getVar("Lastgenesis_Bool").getBool(1)) obj.sq_PlaySound("PW_LASTGENESIS_DM_04");
else obj.sq_PlaySound("PW_LASTGENESIS_04");
break;
case 220:
sq_SetMyShake(obj, 2, 1600);
break;
case 231:
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atlastgenesis/finish1/atlastgenesis_finish_boom_leaf3.ani", 0, 1, 0);
createOnlyDrawObject_ATPriest_bykk(obj,"character/swordman/effect/animation/1_atpriest_bykk/atlastgenesis/finish1/atlastgenesis_finish1_shock_crack_02.ani",true,obj.getDirection(),sq_GetXPos(obj),sq_GetYPos(obj),0,ENUM_DRAWLAYER_BOTTOM);
break;
case 232:
sq_SetMyShake(obj, 10, 720);
break;
case 233:
break;
case 235:
sq_flashScreen(obj,0,160,0,178, sq_RGB(255,255,255), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_COVER);
break;
case 302:
break;
case 304:
local targetObj = obj.getVar("Lastgenesis_TarFix").get_obj_vector(0);
local dis = sq_Abs(sq_GetXPos(obj) - sq_GetXPos(targetObj)) - 150;
local moveX = sq_GetDistancePos(sq_GetXPos(obj), obj.getDirection(), dis);
sq_setCurrentAxisPos(obj, 0, moveX);
sq_setCurrentAxisPos(obj, 2, 0);
break;
case 307:
sq_flashScreen(obj,0,100,0,178, sq_RGB(255,255,255), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_COVER);
sq_SetMyShake(obj, 7, 160);
break;
case 308:
obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/atlastgenesis/finish2/atlastgenesis_circle_finish2_body_2.ani"), 0, 0);
if(obj.getVar("Lastgenesis_Bool").getBool(1)) obj.sq_PlaySound("PW_LASTGENESIS_DM_04");
else obj.sq_PlaySound("PW_LASTGENESIS_04");
break;
case 309: sq_SetMyShake(obj, 3, 1600); break;
case 322:
break;
case 330:
break;
case 332:
sq_SetMyShake(obj, 3, 1600);
local effectObj = obj.getVar("Lastgenesis_Effect").get_obj_vector(0);
if(effectObj) effectObj.setValid(false);
break;
case 333:
sq_flashScreen(obj,0,240,0,178, sq_RGB(255,255,255), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_COVER);
obj.getVar("setCancelSkill").setBool(10, true);
break;
case 10001: obj.getVar("setCancelSkill").setBool(10, true); break;
}
return true;
}
function onTimeEvent_Lastgenesis(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
}
function onEndState_Lastgenesis(obj, new_state)
{
if(!obj) return;
if(new_state != STATE_BYKK_LASTGENESIS){
sq_SimpleMoveToNearMovablePos(obj,300);
local size = obj.getVar("Lastgenesis_TarFix").get_obj_vector_size();
if(size > 0){
for(local i = 0; i < size; i++){
local targetObj = obj.getVar("Lastgenesis_TarFix").get_obj_vector(i);
if(targetObj) CNSquirrelAppendage.sq_RemoveAppendage(targetObj, LASTGENESIS_APDPATH);
}
}
size = obj.getVar("Lastgenesis_Tar").get_obj_vector_size();
if(size > 0){
for(local i = 0; i < size; i++){
local targetObj = obj.getVar("Lastgenesis_Tar").get_obj_vector(i);
if(targetObj) CNSquirrelAppendage.sq_RemoveAppendage(targetObj, LASTGENESIS_APDPATH);
}
}
local effectObj = obj.getVar("Lastgenesis_Effect").get_obj_vector(0);
if(effectObj) effectObj.setValid(false);
}
}
function onAttack_Lastgenesis(obj, damager, boundingBox, isStuck)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 2:
if(damager.isObjectType(OBJECTTYPE_ACTIVE) && obj.getVar("Lastgenesis_Bool").getBool(0)){
local activeObj = sq_GetCNRDObjectToActiveObject(damager);
if(sq_IsFixture(activeObj) && !obj.getVar("Lastgenesis_TarFix").is_obj_vector(activeObj)){
obj.getVar("Lastgenesis_TarFix").push_obj_vector(activeObj);
}
else if(!obj.getVar("Lastgenesis_Tar").is_obj_vector(activeObj)) obj.getVar("Lastgenesis_Tar").push_obj_vector(activeObj);
if(!CNSquirrelAppendage.sq_IsAppendAppendage(activeObj, LASTGENESIS_APDPATH)){
local AddAppendage = CNSquirrelAppendage.sq_AppendAppendage(activeObj, obj, SKILL_BYKK_LASTGENESIS, false, LASTGENESIS_APDPATH, true);
sq_HoldAndDelayDie(activeObj, obj, true, true, true, 200, 200, ENUM_DIRECTION_NEUTRAL , AddAppendage);
}
}
break;
}
}
//至高之刑
function checkExecutableSkill_Cardinalexecution(obj)
{
if (!obj) return false;
if(obj.getState() == STATE_BYKK_DEPRAVITYSEVENSINS && obj.getSkillSubState() < 10) return false;
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_CARDINALEXECUTION);
if (isUse){
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_CARDINALEXECUTION, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_Cardinalexecution(obj)
{
if (!obj) return false;
return true;
}
function onSetState_Cardinalexecution(obj, state, datas, isResetTimer)
{
if(!obj) return;
local subState = obj.sq_GetVectorData(datas, 0);
obj.setSkillSubState(subState);
obj.sq_StopMove();
obj.sq_ZStop();
local aniSet = ["atcardinalexecutionready_body","atcardinalexecutionattack1_body","atcardinalexecutionattack2_body","atcardinalexecutionattack3_body","atcardinalexecutionattack4_body","atcardinalexecutionattack5_body","atcardinalexecutionattack6_body","atcardinalexecutionattack7_body","atcardinalexecutionend_body"];
local ani = getCurrentAnimation_demonization(obj, aniSet[subState], false);
obj.setCurrentAnimation(ani);
// obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 0.5, 0.5);
local effect_basic = "character/swordman/effect/animation/1_atpriest_bykk/atcardinalexecution/"
local effect = ["atcardinalexecutionreadyfront_00.ani","atcardinalexecutionattack1front_00.ani","atcardinalexecutionattack2front_00.ani","atcardinalexecutionattack3front_00.ani","atcardinalexecutionattack4front_00.ani","atcardinalexecutionattack5front_00.ani","atcardinalexecutionattack6front_00.ani","atcardinalexecutionattack7front_00.ani"];
if(subState <= 7){
//obj.sq_AddStateLayerAnimation(10001,obj.sq_CreateCNRDAnimation(effect_basic + effect[subState]),0, 0);
sq_AddDrawOnlyAniFromParent(obj, effect_basic + effect[subState], 0, 1, 0);
}
switch(subState){
case 0:
obj.sq_PlaySound("PW_CARDINALEXECUTION_DM_01");
break;
case 1:
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_CARDINALEXECUTION, -1, 0, 1.0) + 100;
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, ATPRIESTATK_BYKK_CARDINALEXECUTIONATTACK));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
break;
case 2:
case 3:
case 4:
case 5:
case 6:
obj.resetHitObjectList();
if(subState == 6) sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atcardinalexecution/atcardinalexecutionattack6back_00.ani", 0, -1, 0);
break;
case 7:
if(subState == 6) sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atcardinalexecution/atcardinalexecutionattack7back_00.ani", 0, -1, 0);
obj.sq_PlaySound("PW_CARDINALEXECUTION_DM_02");
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_CARDINALEXECUTION, -1, 1, 1.0) + 100;
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, ATPRIESTATK_BYKK_CARDINALEXECUTIONFINISH));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
break;
}
}
function onEndCurrentAni_Cardinalexecution(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:
if(subState == 7 && CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)){
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
}
obj.sq_IntVectClear();
obj.sq_IntVectPush(subState + 1);
obj.sq_AddSetStatePacket(STATE_BYKK_CARDINALEXECUTION, STATE_PRIORITY_AUTO, true);
break;
case 8:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
}
}
function onProcCon_Cardinalexecution(obj)
{
if(!obj) return;
if(!CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)){
obj.setSkillCommandEnable(SKILL_BYKK_DEPRAVITYSEVENSINS, true);
local b_useskill = obj.sq_IsEnterSkill(SKILL_BYKK_DEPRAVITYSEVENSINS);
if(b_useskill != -1){
setDepravitysevensinsAppendage(obj);
}
}
}
function onKeyFrameFlag_Cardinalexecution(obj, flagIndex)
{
if(!obj) return false;
switch(flagIndex){
case 1: sq_flashScreen(obj,60,260,60,180, sq_RGB(0,0,0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM); break;
case 2: sq_SetMyShake(obj, 9, 240); break;
case 101:
sq_flashScreen(obj,5,35,5,40, sq_RGB(255,0,0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
sq_SetMyShake(obj, 1, 60);
break;
case 201:
sq_flashScreen(obj,5,35,5,50, sq_RGB(0,0,0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
sq_SetMyShake(obj, 3, 60);
break;
case 301:
sq_flashScreen(obj,5,35,5,45, sq_RGB(255,0,0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
sq_SetMyShake(obj, 1, 60);
break;
case 401:
sq_flashScreen(obj,5,35,5,55, sq_RGB(0,0,0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
sq_SetMyShake(obj, 3, 60);
break;
case 501:
sq_flashScreen(obj,5,35,5,50, sq_RGB(255,0,0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
sq_SetMyShake(obj, 1, 60);
break;
case 601:
sq_flashScreen(obj,5,35,5,60, sq_RGB(0,0,0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
sq_SetMyShake(obj, 3, 60);
break;
case 700:
sq_flashScreen(obj,30,180,30,140, sq_RGB(255,0,0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
break;
case 701:
sq_SetMyShake(obj, 15, 260);
break;
case 800:
sq_flashScreen(obj,10,70,300,90, sq_RGB(255,0,0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
break;
case 10001: obj.getVar("setCancelSkill").setBool(10, true); break;
}
return true;
}
function onTimeEvent_Cardinalexecution(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
}
function onEndState_Cardinalexecution(obj, new_state)
{
if(!obj) return;
}
///////////////////////////////////////被动///////////////////////////////////
//罪业诱惑
function onStart_appendage_temptress_bodypressedsin(appendage)
{
if(!appendage) return;
local parentObj = appendage.getParent();
local obj = sq_GetCNRDObjectToSQRCharacter(parentObj);
if(!obj || obj.getState() == STATE_DIE){
appendage.setValid(false);return;
}
local frequency = 1000;
appendage.getVar("timeEvent").clear_timer_vector();
appendage.getVar("timeEvent").push_timer_vector();
local t = appendage.getVar("timeEvent").get_timer_vector(0);
t.setParameter(frequency, -1);
t.resetInstant(0);
}
function proc_appendage_temptress_bodypressedsin(appendage)
{
if(!appendage) return;
local parentObj = appendage.getParent();
local obj = sq_GetCNRDObjectToSQRCharacter(parentObj);
if(!obj || obj.getState() == STATE_DIE){
appendage.setValid(false);return;
}
local skill = sq_GetSkill(obj, SKILL_BYKK_BODYPRESSEDSIN);
if(skill.isSealFunction()) return;
local t = appendage.getVar("timeEvent").get_timer_vector(0);
local currentT = appendage.getTimer().Get();
if(t && t.isOnEvent(currentT)){
local hitRate = sq_GetLevelData(obj, SKILL_BYKK_BODYPRESSEDSIN, 1, sq_GetSkillLevel(obj, SKILL_BYKK_BODYPRESSEDSIN));
local objectManager = obj.getObjectManager();
local objectNumber = objectManager.getCollisionObjectNumber();
for (local i = 0; i < objectNumber; i++){
local object = objectManager.getCollisionObject(i);
if(object && obj.isEnemy(object) && object.isObjectType(OBJECTTYPE_ACTIVE) && sq_Abs(sq_GetXPos(obj) - sq_GetXPos(object)) <= 300 && sq_Abs(sq_GetYPos(obj) - sq_GetYPos(object)) <= 150){
if(!CNSquirrelAppendage.sq_IsAppendAppendage(obj, "character/demonicswordman/4_temptress/passiveskill/ap_bodypressedsintoe.nut")){
local AddAppendage = CNSquirrelAppendage.sq_AppendAppendage(object, obj, -1, false, "character/demonicswordman/4_temptress/passiveskill/ap_bodypressedsintoe.nut", true);
AddAppendage.sq_SetValidTime(2000);
local change_appendage = AddAppendage.sq_getChangeStatus("bodypressedsintoe");
if(!change_appendage) change_appendage = AddAppendage.sq_AddChangeStatus("bodypressedsintoe",object, obj, 0, CHANGE_STATUS_TYPE_PHYSICAL_ATTACK, true, 1000);
if(change_appendage){
change_appendage.clearParameter();
change_appendage.addParameter(CHANGE_STATUS_TYPE_STUCK, true, (hitRate * 1).tofloat());
}
}
}
}
}
}
function drawAppend_appendage_temptress_bodypressedsin(appendage, isOver, x, y, isFlip)
{
if(!appendage) return;
local parentObj = appendage.getParent();
local obj = sq_GetCNRDObjectToSQRCharacter(parentObj);
local skill = sq_GetSkill(obj, SKILL_BYKK_BODYPRESSEDSIN);
if(!skill.isSealFunction()){
local var = appendage.getVar();
local Ani = var.GetAnimationMap("atbodypressedsin", "character/swordman/effect/animation/1_atpriest_bykk/atbodypressedsin/atbodypressedsin_floor01.ani");
if (Ani && !isOver) {
sq_AnimationProc(Ani);
sq_drawCurrentFrame(Ani, x, y + sq_GetZPos(obj), isFlip);
}
}
}
//七宗罪AP
function onStart_appendage_thesevendeadlysins(appendage)
{
if(!appendage) return;
}
function onEnd_appendage_thesevendeadlysins(appendage)
{
if(!appendage) return;
local parentObj = appendage.getParent();
local obj = sq_GetCNRDObjectToSQRCharacter(parentObj);
if(!obj || obj.getState() == STATE_DIE) return;
setSkillBonusRate_Temptress(obj);
}
function proc_appendage_thesevendeadlysins(appendage)
{
if(!appendage) return;
if(!appendage.isValid()) return;
local parentObj = appendage.getParent();
if(!parentObj || parentObj.getState() == STATE_DIE){
appendage.setValid(false);
return;
}
}
function onAttackParent_appendage_thesevendeadlysins(appendage, realAttacker, damager, boundingBox, isStuck)
{
if(!appendage) return;
local parentObj = appendage.getParent();
local obj = sq_GetCNRDObjectToSQRCharacter(parentObj);
if(!obj || obj.getState() == STATE_DIE) return;
local loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_THESEVENDEADLYSINS);
if(loadSlot){
local skillLevel = sq_GetSkillLevel(obj, SKILL_BYKK_THESEVENDEADLYSINS);
local prob = sq_GetLevelData(obj, SKILL_BYKK_THESEVENDEADLYSINS, 1, skillLevel);
if(sq_getRandom(1, 1000) > prob) return;
if(!loadSlot.isCooling()){
local loadnumber = loadSlot.getRemainLoadNumber();
if(loadnumber < sq_GetLevelData(obj, SKILL_BYKK_THESEVENDEADLYSINS, 0, skillLevel)){
//loadSlot.decreaseLoadCount(1);
loadSlot.increaseLoadCount(1);
}
}
}
}
//智慧起源 : 原罪结晶
function onAttackParent_appendage_temptress_firstprana(appendage, realAttacker, damager, boundingBox, isStuck)
{
if(!appendage) return;
local parentObj = appendage.getParent();
local obj = sq_GetCNRDObjectToSQRCharacter(parentObj);
if(!obj || obj.getState() == STATE_DIE) return;
switch(obj.getState()){
case SKILL_BYKK_DEPRAVITYSEVENSINS:
case SKILL_BYKK_HOLYSMASH:
case SKILL_BYKK_RISINGSLASH:
case SKILL_BYKK_VIOLENTASSAULT:
return;
break;
}
local timer = appendage.getVar().get_ct_vector(0);
if(timer){
local currentT = timer.Get();
if(currentT >= sq_GetLevelData(obj, SKILL_BYKK_FIRSTPRANA, 3, sq_GetSkillLevel(obj, SKILL_BYKK_FIRSTPRANA))){
timer.Reset();
timer.Start(10000,0);
}
else return;
}
else{
appendage.getVar().clear_ct_vector();
appendage.getVar().push_ct_vector();
timer = appendage.getVar().get_ct_vector(0);
timer.Reset();
timer.Start(10000,0);
}
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_FIRSTPRANA, -1, 1, 1.0) + 100;
if(obj.isMyControlObject()) createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,0,0,-sq_GetZPos(obj),obj.getDirection(),4,SKILL_BYKK_FIRSTPRANA,0,totalDamage,100,0,0,0,0,0,0);
}
//负罪者镰刀精通
function onStart_appendage_temptress_scythemastery(appendage)
{
if(!appendage) return;
local parentObj = appendage.getParent();
local obj = sq_GetCNRDObjectToSQRCharacter(parentObj);
local weaponType = obj.getWeaponSubType();
if(weaponType == -1) return;
if(weaponType == 3){
local skillLevel = sq_GetSkillLevel(obj, SKILL_BYKK_SCYTHEMASTERY);
local attackSpeed = sq_GetLevelData(obj, SKILL_BYKK_SCYTHEMASTERY, 0, skillLevel);
local moveSpeed = sq_GetLevelData(obj, SKILL_BYKK_SCYTHEMASTERY, 4, skillLevel);
local hitRate = sq_GetLevelData(obj, SKILL_BYKK_SCYTHEMASTERY, 1, skillLevel);
local magicalEquAttack = sq_GetLevelData(obj, SKILL_BYKK_SCYTHEMASTERY, 2, skillLevel);
// print(magicalEquAttack);
local change_appendage = appendage.sq_getChangeStatus("scythemastery");
if(!change_appendage) change_appendage = appendage.sq_AddChangeStatus("scythemastery",obj, obj, 0, CHANGE_STATUS_TYPE_PHYSICAL_ATTACK, true, 1000);
if(change_appendage){
change_appendage.clearParameter();
change_appendage.addParameter(CHANGE_STATUS_TYPE_ATTACK_SPEED, false, (attackSpeed * 1).tofloat());
change_appendage.addParameter(CHANGE_STATUS_TYPE_MOVE_SPEED, false, (moveSpeed * 1).tofloat());
change_appendage.addParameter(CHANGE_STATUS_TYPE_STUCK, false, (hitRate * -0.1).tofloat());
change_appendage.addParameter(CHANGE_STATUS_TYPE_EQUIPMENT_MAGICAL_ATTACK, true, (magicalEquAttack * 0.1).tofloat());
}
}
}
//罪业宣告
function onAttackParent_appendage_temptress_sinsayer(appendage, realAttacker, damager, boundingBox, isStuck)
{
if(!appendage) return;
if(isStuck) return;
local parentObj = appendage.getParent();
local obj = sq_GetCNRDObjectToSQRCharacter(parentObj);
if(!obj || obj.getState() == STATE_DIE) return;
local addAppendage = CNSquirrelAppendage.sq_GetAppendage(obj, "character/demonicswordman/4_temptress/passiveskill/ap_sinsayerbuff.nut");
if(!addAppendage){
addAppendage = CNSquirrelAppendage.sq_AppendAppendage(obj, obj, -1, false, "character/demonicswordman/4_temptress/passiveskill/ap_sinsayerbuff.nut", true);
}
local skillLevel = sq_GetSkillLevel(obj, SKILL_BYKK_SINSAYER);
local buffTime = sq_GetLevelData(obj, SKILL_BYKK_SINSAYER, 6, skillLevel);
local criticalRate = sq_GetLevelData(obj, SKILL_BYKK_SINSAYER, 5, skillLevel);
local criticalhitRate = sq_GetLevelData(obj, SKILL_BYKK_SINSAYER, 4, skillLevel);
addAppendage.sq_SetValidTime(buffTime);
addAppendage.setAppendCauseSkill(BUFF_CAUSE_SKILL, sq_getJob(obj), SKILL_BYKK_SINSAYER, skillLevel);
CNSquirrelAppendage.sq_Append(addAppendage, obj, obj, true);
local change_appendage = addAppendage.sq_getChangeStatus("temptress_sinsayer");
if(!change_appendage) change_appendage = addAppendage.sq_AddChangeStatus("temptress_sinsayer",obj, obj, 0, CHANGE_STATUS_TYPE_PHYSICAL_ATTACK, true, 1000);
if(change_appendage){
change_appendage.clearParameter();
change_appendage.addParameter(CHANGE_STATUS_TYPE_MAGICAL_CRITICAL_HIT_RATE, false, (criticalRate * 0.1).tofloat());
// change_appendage.addParameter(CHANGE_STATUS_TYPE_MAGICAL_CRITICAL_DAMAGE_RATE, false, (criticalhitRate * 0.1 / 0.667).tofloat());
}
}
//副本开始时
function onStartDungeon_Temptress_bykk(obj)
{
local loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_THESEVENDEADLYSINS);
if(loadSlot){
obj.sq_RemoveSkillLoad(SKILL_BYKK_THESEVENDEADLYSINS);
}
obj.getVar("isReset").setInt(0, 1);
setSkillBonusRate_Temptress(obj);
}
function setSkillBonusRate_Temptress(obj)
{
local bonusRate = 1000;
if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, THESEVENDEADLYSINS_APDPATH)){
local addAppendage = CNSquirrelAppendage.sq_GetAppendage(obj, THESEVENDEADLYSINS_APDPATH);
local sub = addAppendage.getVar("Sub").getInt(10);
switch(sub){
case 2:
bonusRate = bonusRate * (1000 + sq_GetLevelData(obj, SKILL_BYKK_THESEVENDEADLYSINS, 24, sq_GetSkillLevel(obj, SKILL_BYKK_THESEVENDEADLYSINS))) / 1000;
break;//侵染嫉妒的喜悦
case 3:
bonusRate = bonusRate * (1000 + sq_GetLevelData(obj, SKILL_BYKK_THESEVENDEADLYSINS, 16, sq_GetSkillLevel(obj, SKILL_BYKK_THESEVENDEADLYSINS))) / 1000;
break;//傲慢者的懒惰
}
obj.getVar("apGetSetbyKK").setInt(0, bonusRate);
}
if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, HEAVYSINBUFF_APDPATH)){
local addAppendage = CNSquirrelAppendage.sq_GetAppendage(obj, HEAVYSINBUFF_APDPATH);
local buffCount = addAppendage.getVar("buffCount").getInt(10);
bonusRate = bonusRate * (1000 + sq_GetLevelData(obj, SKILL_BYKK_HEAVYSIN, 10, sq_GetSkillLevel(obj, SKILL_BYKK_HEAVYSIN)) * buffCount) / 1000;
}
print("bonusRate1 = "+bonusRate);
if(sq_GetSkillLevel(obj, SKILL_BYKK_BODYPRESSEDSIN) > 0) bonusRate = bonusRate * (1000 + sq_GetLevelData(obj, SKILL_BYKK_BODYPRESSEDSIN, 2, sq_GetSkillLevel(obj, SKILL_BYKK_BODYPRESSEDSIN))) / 1000;
print("bonusRate2 = "+bonusRate);
if(sq_GetSkillLevel(obj, SKILL_BYKK_FIRSTPRANA) > 0) bonusRate = bonusRate * (1000 + sq_GetLevelData(obj, SKILL_BYKK_FIRSTPRANA, 0, sq_GetSkillLevel(obj, SKILL_BYKK_FIRSTPRANA))) / 1000;
print("bonusRate3 = "+bonusRate);
if(sq_GetSkillLevel(obj, SKILL_BYKK_ORIGINALSIN) > 0) bonusRate = bonusRate * (1000 + sq_GetLevelData(obj, SKILL_BYKK_ORIGINALSIN, 0, sq_GetSkillLevel(obj, SKILL_BYKK_ORIGINALSIN))) / 1000;
print("bonusRate4 = "+bonusRate);
if(sq_GetSkillLevel(obj, SKILL_BYKK_SINSAYER) > 0) bonusRate = bonusRate * (1000 + sq_GetLevelData(obj, SKILL_BYKK_SINSAYER, 4, sq_GetSkillLevel(obj, SKILL_BYKK_SINSAYER))) / 1000;
print("bonusRate5 = "+bonusRate);
obj.getVar("setSkillBonusRate").setInt(0, bonusRate.tointeger());
//sq_SetSkillAttackBonus(obj, bonusRate);
}