//贪婪之刺 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); }