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

2637 lines
106 KiB
C
Raw Normal View History

2025-11-08 12:21:06 +08:00
//贪婪之刺
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);
}