function createOnlyDrawObject_ATPriest_bykk(obj,aniPath,isTrue,direction,x,y,z,drawlayer) { local ani = sq_CreateAnimation("",aniPath); local pooledObj = sq_CreatePooledObject(ani,isTrue); sq_SetCurrentDirection(pooledObj, direction); pooledObj.setCurrentPos(x,y,z); pooledObj = sq_SetEnumDrawLayer(pooledObj, drawlayer); sq_AddObject(obj, pooledObj, OBJECTTYPE_DRAWONLY, false); return pooledObj; } function createOnlyDrawObjectEX_ATPriest_bykk(obj,aniPath,isTrue,direction,x,y,z,drawlayer,sizeRateX,sizeRateY) { local ani = sq_CreateAnimation("",aniPath); local pooledObj = sq_CreatePooledObject(ani,isTrue); sq_SetCurrentDirection(pooledObj, direction); pooledObj.setCurrentPos(x,y,z); local currentAni = pooledObj.getCurrentAnimation(); sizeRateX = sizeRateX.tofloat() / 100.0; sizeRateY = sizeRateY.tofloat() / 100.0; currentAni.setImageRateFromOriginal(sizeRateX, sizeRateY); pooledObj = sq_SetEnumDrawLayer(pooledObj, drawlayer); sq_AddObject(obj, pooledObj, OBJECTTYPE_DRAWONLY, false); return pooledObj; } function createSkillPassive_ATPriest_bykk(obj,passiveObj,objnum,x,y,z,direction,job,skillIndex,subtype,pushv1,pushv2,pushv3,pushv4,pushv5,pushv6,pushv7,pushv8) { if(!obj || !passiveObj || obj.getState() == STATE_DIE) return; local destX_01 = 0; local destY_01 = 0; if(!isSameObject(obj, passiveObj)){ destX_01 = passiveObj.getXPos() - obj.getXPos(); destY_01 = passiveObj.getYPos() - obj.getYPos(); if(direction == ENUM_DIRECTION_LEFT) destX_01 = obj.getXPos() - passiveObj.getXPos(); } sq_BinaryStartWrite(); sq_BinaryWriteDword(job); sq_BinaryWriteDword(skillIndex); sq_BinaryWriteDword(subtype); sq_BinaryWriteDword(pushv1); sq_BinaryWriteDword(pushv2); sq_BinaryWriteDword(pushv3); sq_BinaryWriteDword(pushv4); sq_BinaryWriteDword(pushv5); sq_BinaryWriteDword(pushv6); sq_BinaryWriteDword(pushv7); sq_BinaryWriteDword(pushv8); sq_SendCreatePassiveObjectPacket(obj, objnum, 0, destX_01 + x, destY_01 + y, z, direction); } function getAttackAni_DemonicSwordman(obj, index) { if(!obj) return null; print("attackIndex = "+index); local ani = obj.sq_GetAttackAni(index); if(sq_GetSkillLevel(obj, SKILL_BYKK_BODYPRESSEDSIN) > 0){ ani = sq_GetCustomAni(obj, ATPANI_BYKK_MISTRESS_ATTACK1 + index); if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)){ local aniName = ["demonizationattack_basic_a_body","demonizationattack_basic_b_body","demonizationattack_basic_c_body"]; ani = getCurrentAnimation_demonization(obj, aniName[index], false); } } else if(sq_GetSkillLevel(obj, SKILL_BYKK_CRUSADE) > 0){ ani = sq_GetCustomAni(obj, ATPANI_BYKK_CRUSADEATTACK1_BODY + index); } else if(sq_GetSkillLevel(obj, SKILL_BYKK_WILLOFINQUISITOR) > 0){ ani = sq_GetCustomAni(obj, ATPANI_BYKK_INQUISITOR_ATTACK1 + index); } return ani; } function getStayAni_DemonicSwordman(obj) { if(!obj) return null; local ani = obj.sq_GetStayAni(); if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)){ ani = getCurrentAnimation_demonization(obj, "demonization_stay", false); return ani; } return ani; } function getMoveAni_DemonicSwordman(obj) { if(!obj) return null; local ani = obj.sq_GetMoveAni(); if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)){ ani = getCurrentAnimation_demonization(obj, "demonization_move", false); return ani; } return ani; } function getSitAni_DemonicSwordman(obj) { if(!obj) return null; local ani = obj.sq_GetSitAni(); if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)){ ani = getCurrentAnimation_demonization(obj, "demonization_sit", false); return ani; } return ani; } function getDamageAni_DemonicSwordman(obj, index) { if(!obj) return null; local ani = obj.sq_GetDamageAni(index); local aniName = ["demonization_damage1","demonization_damage2"]; if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)){ ani = getCurrentAnimation_demonization(obj, aniName[index], false); return ani; } return ani; } function getDownAni_DemonicSwordman(obj) { if(!obj) return null; local ani = obj.sq_GetDownAni(); if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)){ ani = getCurrentAnimation_demonization(obj, "demonization_down", false); return ani; } return ani; } function getOverturnAni_DemonicSwordman(obj) { if(!obj) return null; local ani = obj.sq_GetOverturnAni(); return ani; } function getJumpAni_DemonicSwordman(obj) { if(!obj) return null; local ani = obj.sq_GetJumpAni(); if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)){ ani = getCurrentAnimation_demonization(obj, "demonization_jump", false); return ani; } return ani; } function getJumpAttackAni_DemonicSwordman(obj) { if(!obj) return null; local ani = obj.sq_GetJumpAttackAni(); if(sq_GetSkillLevel(obj, SKILL_BYKK_CRUSADE) > 0){ ani = sq_GetCustomAni(obj, ATPANI_BYKK_CRUSADEJUMPATTACK_BODY); } else if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)){ ani = getCurrentAnimation_demonization(obj, "demonizationattack_jump_body", false); return ani; } return ani; } function getRestAni_DemonicSwordman(obj) { if(!obj) return null; local ani = obj.sq_GetRestAni(); if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)){ ani = getCurrentAnimation_demonization(obj, "demonization_stay", false); return ani; } return ani; } function getThrowChargeAni_DemonicSwordman(obj, index) { if(!obj) return null; local ani = obj.sq_GetThrowChargeAni(index); if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)){ ani = getCurrentAnimation_demonization(obj, "demonization_throw1", false); return ani; } return ani; } function getThrowShootAni_DemonicSwordman(obj, index) { if(!obj) return null; local ani = obj.sq_GetThrowShootAni(index); if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)){ ani = getCurrentAnimation_demonization(obj, "demonization_throw2", false); return ani; } return ani; } function getDashAni_DemonicSwordman(obj) { if(!obj) return null; local ani = obj.sq_GetDashAni(); if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)){ ani = getCurrentAnimation_demonization(obj, "demonization_dash", false); return ani; } return ani; } function getDashAttackAni_DemonicSwordman(obj) { if(!obj) return null; local ani = obj.sq_GetDashAttackAni(); if(sq_GetSkillLevel(obj, SKILL_BYKK_CRUSADE) > 0){ ani = sq_GetCustomAni(obj, ATPANI_BYKK_CRUSADEDASHATTACK_BODY); } else if(sq_GetSkillLevel(obj, SKILL_BYKK_WILLOFINQUISITOR) > 0){ ani = sq_GetCustomAni(obj, ATPANI_BYKK_HOLYFLAME_FRONT_BODY); } else if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)){ ani = getCurrentAnimation_demonization(obj, "demonizationattack_dash_body", false); return ani; } return ani; } function getGetItemAni_DemonicSwordman(obj) { if(!obj) return null; local ani = obj.sq_GetGetItemAni(); if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)){ ani = getCurrentAnimation_demonization(obj, "demonization_sit", false); return ani; } return ani; } function getBuffAni_DemonicSwordman(obj) { if(!obj) return null; local ani = obj.sq_GetBuffAni(); if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)){ ani = getCurrentAnimation_demonization(obj, "demonization_buff", false); return ani; } return ani; } function getDefaultAttackInfo_DemonicSwordman(obj, index) { if (!obj) return null; local attackInfo = obj.sq_GetDefaultAttackInfo(index); local growType = sq_getGrowType(obj); switch(growType){ case 1: if(index == 4) index = 0; attackInfo = sq_GetCustomAttackInfo(obj, ATPRIESTATK_BYKK_CRUSADERATTACK1 + index); break; case 2: attackInfo = sq_GetCustomAttackInfo(obj, ATPATK_BYKK_INQUISITOR_ATTACK1 + index); break; } return attackInfo; } function getDashAttackInfo_DemonicSwordman(obj) { if (!obj) return null; local attackInfo = obj.sq_GetDashAttackInfo(); if(sq_getGrowType(obj) == 1){ attackInfo = sq_GetCustomAttackInfo(obj, ATPRIESTATK_BYKK_CRUSADERDASHATTACK); } return attackInfo; } function getJumpAttackInfo_DemonicSwordman(obj) { if (!obj) return null; local attackInfo = obj.sq_GetJumpAttackInfo(); if(sq_getGrowType(obj) == 1){ attackInfo = sq_GetCustomAttackInfo(obj, ATPRIESTATK_BYKK_CRUSADERJUMPATTACK); } return attackInfo; } function onSetState_ATPriestAttack(obj, state, datas, isResetTimer) { print("sub = "+sq_GetVectorData(datas, 0)); if(sq_getGrowType(obj) == 4){ if(sq_GetVectorData(datas, 0) != 0) return; if(sq_GetSkillLevel(obj, SKILL_BYKK_BODYPRESSEDSIN) > 0){ //print("test"); obj.sq_IntVectClear(); obj.sq_IntVectPush(10); obj.sq_AddSetStatePacket(STATE_BYKK_DEPRAVITYSEVENSINS, STATE_PRIORITY_IGNORE_FORCE, true); } } else if(sq_getGrowType(obj) == 1) { local attackIndex = sq_GetVectorData(datas, 0); switch(attackIndex){ case 0: obj.sq_PlaySound("R_PW_1ATK"); break; case 1: obj.sq_PlaySound("R_PW_2ATK"); break; case 2: obj.sq_PlaySound("R_PW_3ATK"); break; } } } function onAfterSetState_ATPriestAttack(obj, state, datas, isResetTimer) { // local growType = sq_getGrowType(obj); switch(growType){ case 2: if(sq_GetSkillLevel(obj, SKILL_BYKK_WILLOFINQUISITOR) > 0){ local attackIndex = obj.getAttackIndex(); switch(attackIndex){ case 0: obj.sq_PlaySound("R_PW_INQUISITOR_READING_01"); obj.sq_PlaySound("R_PW_1ATK"); break; case 1: obj.sq_PlaySound("R_PW_INQUISITOR_READING_02"); obj.sq_PlaySound("R_PW_2ATK"); break; case 2: obj.sq_PlaySound("R_PW_INQUISITOR_READING_03"); obj.sq_PlaySound("R_PW_3ATK"); break; } local loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_HOLYFLAME); if(loadSlot){ local attackInfo = sq_GetCurrentAttackInfo(obj); switch(attackIndex){ case 0: obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/holyflameweaponeffect/attack1.ani"), 0, 0); sq_AddDrawOnlyAniFromParent(obj, "passiveobject/atpriest_bykk/animation/2_inquistor/animation/atwillofinquisitor/attack1_holyflamea_1hitsmokea.ani", 0, 1, 0); break; case 1: obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/holyflameweaponeffect/attack2.ani"), 0, 0); sq_AddDrawOnlyAniFromParent(obj, "passiveobject/atpriest_bykk/animation/2_inquistor/animation/atwillofinquisitor/attack2_holyflame_2hitsmoke.ani", 0, 1, 0); local currentAni = obj.getCurrentAnimation(); obj.setTimeEvent(1, currentAni.getDelaySum(0, 3), 1, false); break; case 2: obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/holyflameweaponeffect/attack3.ani"), 0, 0); sq_AddDrawOnlyAniFromParent(obj, "passiveobject/atpriest_bykk/animation/2_inquistor/animation/atwillofinquisitor/attack3_holyflame_3hitsmoke.ani", 0, 1, 0); local currentAni = obj.getCurrentAnimation(); obj.setTimeEvent(1, currentAni.getDelaySum(0, 6), 1, false); break; } } } break; } obj.getVar("cansetAttackInfo").setBool(0, true); } function onTimeEvent_ATPriestAttack(obj, timeEventIndex, timeEventCount) { if(!obj) return false; local growType = sq_getGrowType(obj); switch(growType){ case 2: switch(timeEventIndex){ case 1: local epObj = obj.getVar("EssenceofPhlegeObj").get_obj_vector(0); if(epObj){ local colObj = sq_GetCNRDObjectToCollisionObject(epObj); if(((sq_GetXPos(colObj) - sq_GetXPos(obj)) <= 200 && sq_GetDirection(obj) == ENUM_DIRECTION_RIGHT || (sq_GetXPos(obj) - sq_GetXPos(colObj)) <= 200 && sq_GetDirection(obj) == ENUM_DIRECTION_LEFT) && sq_Abs(sq_GetYPos(colObj) - sq_GetYPos(obj)) <= 40){ local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_ESSENCEOFPHLEGE, -1, 1, 1.0); local sizeRate = sq_GetIntData(obj, SKILL_BYKK_ESSENCEOFPHLEGE, 13); createSkillPassive_ATPriest_bykk(obj,colObj,PASSIVEOBJ_BYKK_ATPRIEST,0,0,-sq_GetZPos(obj) + 100,obj.getDirection(),2,SKILL_BYKK_ESSENCEOFPHLEGE,5,totalDamage,sizeRate,0,0,0,0,0,0); sq_SetMyShake(obj, 2, 100); colObj.setTimeEvent(1, 1000, 1, true); return; } } break; } break; } } function onBeforeAttack_ATPriestAttack(obj,damager,boundingBox,isStuck) { if(obj.getVar("cansetAttackInfo").getBool(0)){ obj.getVar("cansetAttackInfo").setBool(0, false); obj.applyBasicAttackUp(sq_GetCurrentAttackInfo(obj),obj.getState()); sq_SetCurrentAttackInfo(obj, sq_GetCurrentAttackInfo(obj)); local loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_HOLYFLAME); if(loadSlot){ local totalDamage = sq_GetLevelData(obj, 174, 0, sq_GetSkillLevel(obj, 174)) * sq_GetLevelData(obj, SKILL_BYKK_HOLYFLAME, 0, sq_GetSkillLevel(obj, SKILL_BYKK_HOLYFLAME)) / 1000; obj.getVar("holyflameDamageSet").setInt(0, totalDamage); local attackInfo = sq_GetCurrentAttackInfo(obj); attackInfo.setElement(ENUM_ELEMENT_LIGHT); attackInfo.setElement(ENUM_ELEMENT_FIRE); } } local growType = sq_getGrowType(obj); switch(growType){ case 1: if(sq_GetSkillLevel(obj, SKILL_BYKK_GRACEOFDEVINE) > 0){ local attackInfo = sq_GetCurrentAttackInfo(obj); attackInfo.setElement(ENUM_ELEMENT_LIGHT); } break; } } function onAttack_ATPriestAttack(obj, damager, boundingBox, isStuck) { if(!obj || isStuck) return; if(damager.isObjectType(OBJECTTYPE_ACTIVE)){ local loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_HOLYFLAME); if(loadSlot) onAttack_EssenceofPhlege_SetFireBomb(obj, damager, boundingBox); } } function getAttackCancelStartFrameSize_DemonicSwordman(obj) { local maxAttackNumber = 2; local growType = sq_getGrowType(obj); switch(growType){ case 2: if(sq_GetSkillLevel(obj, SKILL_BYKK_WILLOFINQUISITOR) > 0) maxAttackNumber = 2; break; case 4: maxAttackNumber = 2; break; } return maxAttackNumber; } function getAttackCancelStartFrame_DemonicSwordman(obj, index) { if(!obj) return null; local growType = sq_getGrowType(obj); local frm = obj.sq_GetAttackCancelStartFrame(index); if(growType == 2) frm = 3; return frm; } function onSetState_ATPriestDashAttack(obj, state, datas, isResetTimer) { if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)){ obj.sq_PlaySound("PW_DASHATK_DM"); obj.sq_PlaySound("R_SCYTHE"); obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/atdepravitysevensins/attack/demonizationattack_dash_glow.ani"), 0, 0); sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atdepravitysevensins/attack/demonizationattack_dash_staydusta.ani", 0, -1, 0); sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atdepravitysevensins/attack/demonizationattack_dash_staydustb.ani", 0, -1, 0); sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atdepravitysevensins/attack/demonizationattack_dash_staydustc.ani", 0, -1, 0); sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atdepravitysevensins/attack/demonizationattack_dash_stayrosea.ani", 0, 1, 0); sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atdepravitysevensins/attack/demonizationattack_dash_stayroseb.ani", 0, 1, 0); } else obj.sq_PlaySound("R_PW_3ATK"); } function onAfterSetState_ATPriestDashAttack(obj, state, datas, isResetTimer) { local growType = sq_getGrowType(obj); switch(growType){ case 2: if(sq_GetSkillLevel(obj, SKILL_BYKK_WILLOFINQUISITOR) > 0){ obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/atwillofinquisitor/dashattack_effect_dashtail.ani"), 0, 0); sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atwillofinquisitor/dashattack_effect_dashdust.ani", 0, 1, 0); obj.sq_PlaySound("R_PW_3ATK"); local loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_HOLYFLAME); if(loadSlot){ obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/holyflameweaponeffect/dashattack.ani"), 0, 0); sq_AddDrawOnlyAniFromParent(obj, "passiveobject/atpriest_bykk/animation/2_inquistor/animation/atholyflame/holyflame_beffect2_bdodge2.ani", 125, 0, 0); local currentAni = obj.getCurrentAnimation(); obj.setTimeEvent(1, currentAni.getDelaySum(0, 1), 1, false); } } break; } obj.getVar("cansetAttackInfo").setBool(0, true); } function onTimeEvent_ATPriestDashAttack(obj, timeEventIndex, timeEventCount) { if(!obj) return false; local growType = sq_getGrowType(obj); switch(growType){ case 2: switch(timeEventIndex){ case 1: local epObj = obj.getVar("EssenceofPhlegeObj").get_obj_vector(0); if(epObj){ local colObj = sq_GetCNRDObjectToCollisionObject(epObj); if(((sq_GetXPos(colObj) - sq_GetXPos(obj)) <= 200 && sq_GetDirection(obj) == ENUM_DIRECTION_RIGHT || (sq_GetXPos(obj) - sq_GetXPos(colObj)) <= 200 && sq_GetDirection(obj) == ENUM_DIRECTION_LEFT) && sq_Abs(sq_GetYPos(colObj) - sq_GetYPos(obj)) <= 40){ local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_ESSENCEOFPHLEGE, -1, 1, 1.0); local sizeRate = sq_GetIntData(obj, SKILL_BYKK_ESSENCEOFPHLEGE, 13); createSkillPassive_ATPriest_bykk(obj,colObj,PASSIVEOBJ_BYKK_ATPRIEST,0,0,-sq_GetZPos(obj) + 100,obj.getDirection(),2,SKILL_BYKK_ESSENCEOFPHLEGE,5,totalDamage,sizeRate,0,0,0,0,0,0); sq_SetMyShake(obj, 2, 100); colObj.setTimeEvent(1, 1000, 1, true); return; } } break; } break; } } function onBeforeAttack_ATPriestDashAttack(obj,damager,boundingBox,isStuck) { if(obj.getVar("cansetAttackInfo").getBool(0)){ obj.getVar("cansetAttackInfo").setBool(0, false); obj.applyBasicAttackUp(sq_GetCurrentAttackInfo(obj),obj.getState()); sq_SetCurrentAttackInfo(obj, sq_GetCurrentAttackInfo(obj)); local loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_HOLYFLAME); if(loadSlot){ local totalDamage = sq_GetLevelData(obj, 174, 1, sq_GetSkillLevel(obj, 174)) * sq_GetLevelData(obj, SKILL_BYKK_HOLYFLAME, 0, sq_GetSkillLevel(obj, SKILL_BYKK_HOLYFLAME)) / 1000; obj.getVar("holyflameDamageSet").setInt(0, totalDamage); local attackInfo = sq_GetCurrentAttackInfo(obj); attackInfo.setElement(ENUM_ELEMENT_LIGHT); attackInfo.setElement(ENUM_ELEMENT_FIRE); } } if(sq_GetSkillLevel(obj, SKILL_BYKK_GRACEOFDEVINE) > 0){ local attackInfo = sq_GetCurrentAttackInfo(obj); attackInfo.setElement(ENUM_ELEMENT_LIGHT); } } function onAttack_ATPriestDashAttack(obj, damager, boundingBox, isStuck) { if(!obj || isStuck) return; if(damager.isObjectType(OBJECTTYPE_ACTIVE)){ local loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_HOLYFLAME); if(loadSlot) onAttack_EssenceofPhlege_SetFireBomb(obj, damager, boundingBox); } } function onKeyFrameFlag_ATPriestDashAttack(obj, flagIndex) {} function onSetState_ATPriestJumpAttack(obj, state, datas, isResetTimer) { // print("state = "+state); if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)){ obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/atdepravitysevensins/attack/demonizationattack_jump_effb01.ani"), 0, 0); obj.sq_AddStateLayerAnimation(2,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/atdepravitysevensins/attack/demonizationattack_jump_stayrosea.ani"), 0, 0); obj.sq_AddStateLayerAnimation(3,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/atdepravitysevensins/attack/demonizationattack_jump_stayroseb.ani"), 0, 0); obj.sq_PlaySound("PW_JUMPATK_DM"); obj.sq_PlaySound("R_SCYTHE"); } else obj.sq_PlaySound("PW_JUMPATK"); } function onAfterSetState_ATPriestJumpAttack(obj, state, datas, isResetTimer) { local growType = sq_getGrowType(obj); switch(growType){ case 2: if(sq_GetSkillLevel(obj, SKILL_BYKK_WILLOFINQUISITOR) > 0){ obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/atwillofinquisitor/jumpattack_effect_jumptail.ani"), 0, 0); local loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_HOLYFLAME); if(loadSlot){ obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/holyflameweaponeffect/jumpattack.ani"), 0, 0); sq_AddDrawOnlyAniFromParent(obj, "passiveobject/atpriest_bykk/animation/2_inquistor/animation/atwillofinquisitor/jumpattack_holyflame_jumpsmoke.ani", 0, 1, 0); } } break; } obj.getVar("cansetAttackInfo").setBool(0, true); } function onBeforeAttack_ATPriestJumpAttack(obj,damager,boundingBox,isStuck) { if(obj.getVar("cansetAttackInfo").getBool(0)){ obj.getVar("cansetAttackInfo").setBool(0, false); obj.applyBasicAttackUp(sq_GetCurrentAttackInfo(obj),obj.getState()); sq_SetCurrentAttackInfo(obj, sq_GetCurrentAttackInfo(obj)); local loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_HOLYFLAME); if(loadSlot){ local totalDamage = sq_GetLevelData(obj, 174, 2, sq_GetSkillLevel(obj, 174)) * sq_GetLevelData(obj, SKILL_BYKK_HOLYFLAME, 0, sq_GetSkillLevel(obj, SKILL_BYKK_HOLYFLAME)) / 1000; obj.getVar("holyflameDamageSet").setInt(0, totalDamage); local attackInfo = sq_GetCurrentAttackInfo(obj); attackInfo.setElement(ENUM_ELEMENT_LIGHT); attackInfo.setElement(ENUM_ELEMENT_FIRE); } } if(sq_GetSkillLevel(obj, SKILL_BYKK_GRACEOFDEVINE) > 0){ local attackInfo = sq_GetCurrentAttackInfo(obj); attackInfo.setElement(ENUM_ELEMENT_LIGHT); } } function onAttack_ATPriestJumpAttack(obj, damager, boundingBox, isStuck) { if(!obj || isStuck) return; if(damager.isObjectType(OBJECTTYPE_ACTIVE)){ local loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_HOLYFLAME); if(loadSlot) onAttack_EssenceofPhlege_SetFireBomb(obj, damager, boundingBox); } } function onKeyFrameFlag_ATPriestJumpAttack(obj, flagIndex) { } function onAfterSetState_ATPriestJump(obj, state, datas, isResetTimer) { local growType = sq_getGrowType(obj); switch(growType){ case 2: local isBackStep = sq_GetVectorData(datas, 1); if(isBackStep == 1 && sq_GetSkillLevel(obj, SKILL_BYKK_WILLOFINQUISITOR) > 0){ local timer = obj.getVar("ATPriestJumpTimer").get_ct_vector(0); if(!timer){ obj.getVar("ATPriestJumpTimer").clear_ct_vector(); obj.getVar("ATPriestJumpTimer").push_ct_vector(); timer = obj.getVar("ATPriestJumpTimer").get_ct_vector(0); timer.Reset(); timer.Start(10000,0); } obj.getVar("ATPriestJumpSet").setBool(0, true); } local loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_HOLYFLAME); if(loadSlot){ obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/holyflameweaponeffect/jump.ani"), 0, 0); } break; } } function onProc_ATPriestJump(obj) { if(!obj) return; if(obj.getVar("ATPriestJumpSet").getBool(0)){ local timer = obj.getVar("ATPriestJumpTimer").get_ct_vector(0); if(timer){ local currentT = timer.Get(); local coolTime = sq_GetIntData(obj, SKILL_BYKK_WILLOFINQUISITOR, 14); if(currentT >= coolTime){ obj.setSkillCommandEnable(SKILL_BYKK_PATROLBOMB,true); if(obj.sq_IsEnterSkill(SKILL_BYKK_PATROLBOMB) != -1){ obj.getVar("ATPriestJumpSet").setBool(0, false); timer.Reset(); timer.Start(10000,0); obj.sq_IntVectClear(); obj.sq_IntVectPush(1); obj.sq_AddSetStatePacket(STATE_BYKK_PATROLBOMB, STATE_PRIORITY_IGNORE_FORCE, true); return; } obj.setSkillCommandEnable(SKILL_BYKK_ESSENCEOFPHLEGE,true); if(obj.sq_IsEnterSkill(SKILL_BYKK_ESSENCEOFPHLEGE) != -1){ obj.getVar("ATPriestJumpSet").setBool(0, false); timer.Reset(); timer.Start(10000,0); obj.sq_IntVectClear(); obj.sq_IntVectPush(1); obj.sq_AddSetStatePacket(STATE_BYKK_ESSENCEOFPHLEGE, STATE_PRIORITY_IGNORE_FORCE, true); return; } sq_SetKeyxEnable(obj, E_ATTACK_COMMAND, true); if(sq_IsEnterCommand(obj, E_ATTACK_COMMAND)){ obj.getVar("ATPriestJumpSet").setBool(0, false); timer.Reset(); timer.Start(10000,0); obj.sq_IntVectClear(); obj.sq_AddSetStatePacket(STATE_JUMP_ATTACK, STATE_PRIORITY_IGNORE_FORCE, true); return; } } } } } function onEndState_ATPriestJump(obj, new_state) { if(!obj) return; local growType = sq_getGrowType(obj); switch(growType){ case 2: if(obj.getVar("ATPriestJumpSet").getBool(0)) obj.getVar("ATPriestJumpSet").setBool(0, false); break; } } function onAfterSetState_ATPriestStand(obj, state, datas, isResetTimer) { local growType = sq_getGrowType(obj); switch(growType){ case 2: obj.getVar("StaySet").setInt(0, 0); break; } } function onProc_ATPriestStand(obj) { if(!obj) return; local growType = sq_getGrowType(obj); switch(growType){ case 2: local loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_HOLYFLAME); if(loadSlot && CNSquirrelAppendage.sq_IsAppendAppendage(obj, "character/demonicswordman/2_inquistor/ap_holyflame_buff.nut")){ local poleAni = obj.getCurrentAnimation(); local poleAniFrameNumber = sq_GetAniFrameNumber(poleAni, 0); if(poleAniFrameNumber != obj.getVar("StaySet").getInt(0)){ obj.getVar("StaySet").setInt(0, poleAniFrameNumber); local addAppendage = CNSquirrelAppendage.sq_GetAppendage(obj, "character/demonicswordman/2_inquistor/ap_holyflame_buff.nut"); if(addAppendage){ addAppendage.sq_DeleteEffectFront(); switch(poleAniFrameNumber){ case 15: addAppendage.sq_AddEffectFront("character/swordman/effect/animation/1_atpriest_bykk/holyflameweaponeffect/rest.ani"); break;//rest case 4: addAppendage.sq_AddEffectFront("character/swordman/effect/animation/1_atpriest_bykk/holyflameweaponeffect/stay.ani"); break;//stay case 8: addAppendage.sq_AddEffectFront("character/swordman/effect/animation/1_atpriest_bykk/holyflameweaponeffect/move.ani"); break;//move } } } } break; } } function onEndState_ATPriestStand(obj, new_state) { if(!obj) return; local growType = sq_getGrowType(obj); switch(growType){ case 2: local addAppendage = CNSquirrelAppendage.sq_GetAppendage(obj, "character/demonicswordman/2_inquistor/ap_holyflame_buff.nut"); if(addAppendage){ addAppendage.sq_DeleteEffectFront(); obj.getVar("StaySet").setInt(0, 0); } break; } } function onAfterSetState_ATPriestDash(obj, state, datas, isResetTimer) { local growType = sq_getGrowType(obj); switch(growType){ case 2: local loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_HOLYFLAME); if(loadSlot){ obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/holyflameweaponeffect/dash.ani"), 0, 0); } break; } } function procSkill_Temptress_bykk(obj) { if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)){ obj.setSkillCommandEnable(SKILL_BYKK_VIOLENTASSAULT,false); obj.setSkillCommandEnable(SKILL_BYKK_CURE,false); obj.setSkillCommandEnable(SKILL_BYKK_HOLYSMASH,false); obj.setSkillCommandEnable(SKILL_BYKK_WEAPONGUARD,false); obj.setSkillCommandEnable(SKILL_BYKK_TALISMANOFLIGHTNING,false); obj.setSkillCommandEnable(SKILL_BYKK_PRAYEROFHEAL,false); } if(sq_GetSkillLevel(obj, SKILL_BYKK_SINSAYER) > 0 && obj.getVar("setCancelSkill").getBool(10)){ local skillIndex = [SKILL_BYKK_CARDINALEXECUTION, SKILL_BYKK_DUALSLASH, SKILL_BYKK_ENVIOUSKISS, SKILL_BYKK_FLOWEROFPURIFICATION, SKILL_BYKK_GLUTTONYVOMIT, SKILL_BYKK_GREEDTHELURKER, SKILL_BYKK_HANDAWAKENTOSIN, SKILL_BYKK_LASTGENESIS, SKILL_BYKK_LUSTHAND, SKILL_BYKK_PRIDEACCEL, SKILL_BYKK_ROLLINGRUSH, SKILL_BYKK_SCUDTHEWRATH, SKILL_BYKK_SCYTHEMSSACRE, SKILL_BYKK_SECONDSOUL, SKILL_BYKK_SLOTHBODY, SKILL_BYKK_THIRDRIB]; for(local i = 0; i < skillIndex.len(); i++){ if(!sq_GetSkill(obj, skillIndex[i]).isInCoolTime()){ if(skillIndex[i] == SKILL_BYKK_FLOWEROFPURIFICATION && !CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)) continue; obj.setSkillCommandEnable(skillIndex[i],true); local b_useskill = obj.sq_IsEnterSkill(skillIndex[i]); if(b_useskill != -1){ print("test"); obj.getVar("setCancelSkill").setBool(10, false); switch(skillIndex){ case SKILL_BYKK_CARDINALEXECUTION: obj.sq_IntVectClear(); obj.sq_IntVectPush(0); obj.sq_AddSetStatePacket(STATE_BYKK_CARDINALEXECUTION, STATE_PRIORITY_IGNORE_FORCE, true); break; case SKILL_BYKK_DUALSLASH: obj.sq_IntVectClear(); if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)) obj.sq_IntVectPush(1); else obj.sq_IntVectPush(0); obj.sq_AddSetStatePacket(STATE_BYKK_DUALSLASH, STATE_PRIORITY_IGNORE_FORCE, true); break; case SKILL_BYKK_ENVIOUSKISS: obj.getVar("Enviouskiss_Bool").setBool(0, false); obj.getVar("Enviouskiss_Tar").clear_obj_vector(); obj.sq_IntVectClear(); obj.sq_IntVectPush(0); obj.sq_AddSetStatePacket(STATE_BYKK_ENVIOUSKISS, STATE_PRIORITY_IGNORE_FORCE, true); break; case SKILL_BYKK_FLOWEROFPURIFICATION: 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); break; case SKILL_BYKK_GLUTTONYVOMIT: 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); break; case SKILL_BYKK_GREEDTHELURKER: 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); break; case SKILL_BYKK_HANDAWAKENTOSIN: 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_HANDAWAKENTOSIN, STATE_PRIORITY_IGNORE_FORCE, true); break; case SKILL_BYKK_LASTGENESIS: 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); break; case SKILL_BYKK_LUSTHAND: obj.getVar("lusthand_tar").clear_obj_vector(); obj.sq_IntVectClear(); if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)) obj.sq_IntVectPush(10); else obj.sq_IntVectPush(0); obj.sq_AddSetStatePacket(STATE_BYKK_LUSTHAND, STATE_PRIORITY_IGNORE_FORCE, true); break; case SKILL_BYKK_PRIDEACCEL: obj.getVar("Prideaccel_Move").setBool(0, false); obj.sq_IntVectClear(); if(sq_GetZPos(obj) > 0) obj.sq_IntVectPush(4); else if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)) obj.sq_IntVectPush(1); else obj.sq_IntVectPush(0); obj.sq_AddSetStatePacket(STATE_BYKK_PRIDEACCEL, STATE_PRIORITY_IGNORE_FORCE, true); break; case SKILL_BYKK_ROLLINGRUSH: obj.getVar("Rollingrush_Bool").setBool(0, false); obj.getVar("Rollingrush_Bool").setBool(1, false); if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)) obj.getVar("Rollingrush_Bool").setBool(0, true); obj.sq_IntVectClear(); if(sq_GetZPos(obj) > 0) obj.sq_IntVectPush(1); else obj.sq_IntVectPush(0); obj.sq_AddSetStatePacket(STATE_BYKK_ROLLINGRUSH, STATE_PRIORITY_IGNORE_FORCE, true); break; case SKILL_BYKK_SCUDTHEWRATH: 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); break; case SKILL_BYKK_SCYTHEMSSACRE: 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); break; case SKILL_BYKK_SECONDSOUL: 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); break; case SKILL_BYKK_SLOTHBODY: obj.getVar("Slothbody_ani").clear_obj_vector(); obj.sq_IntVectClear(); obj.sq_IntVectPush(0); obj.sq_AddSetStatePacket(STATE_BYKK_SLOTHBODY, STATE_PRIORITY_IGNORE_FORCE, true); break; case SKILL_BYKK_THIRDRIB: obj.getVar("Thirdrib_Bool").setBool(0, false); if(false) obj.getVar("Thirdrib_Bool").setBool(0, true); obj.getVar("Thirdrib_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_THIRDRIB, STATE_PRIORITY_IGNORE_FORCE, true); break; } } } } } } function getCurrentAnimation_demonization(obj, aniName, isRewind) { local ani = null; local aniPath_01 = "character/swordman/dsanimation/atpriest_bykk/", aName = "demonization_" + aniName; ani = obj.getVar().GetAnimationMap(aName, aniPath_01 + aniName + ".ani"); if(ani && isRewind) sq_Rewind(ani); return ani; } function proc_appendage_latentability(appendage) { if(!appendage) return; local obj = appendage.getParent(); local sqrChr = sq_GetCNRDObjectToSQRCharacter(obj); if(!sqrChr || sqrChr.getState() == STATE_DIE){ appendage.setValid(false); return; } local t = appendage.getVar("skill_1").get_timer_vector(0); local t2 = appendage.getVar("skill_2").get_timer_vector(0); local currentT = appendage.getTimer().Get(); if(t2 && t2.isOnEvent(currentT)){ local skillLevel = sqrChr.sq_GetSkillLevel(SKILL_LATENTABILITY); local value57 = sq_GetLevelData(sqrChr, SKILL_LATENTABILITY, 57, skillLevel); //是否释能 if(value57 > 0){ local AddAppendage = CNSquirrelAppendage.sq_AppendAppendage(sqrChr, sqrChr, -1, false, "appendage/character/ap_skillbonus.nut", true); AddAppendage.sq_SetValidTime(20000); AddAppendage.getVar().setInt(10, value57); // print("bonus = "+AddAppendage.getVar().getInt(10)); if(value57 > 100){ local tTerm = t2.getEventTerm(); if(tTerm == 5000) t2.setEventTerm(20000); else if(tTerm != 20000) t2.setEventTerm(20000); } else { local tTerm = t2.getEventTerm(); if(tTerm == 5000) t2.setEventTerm(30000); else if(tTerm != 30000) t2.setEventTerm(30000); } sq_SendCreatePassiveObjectPacket(sqrChr, 990002, 0, 0, 0, 0, sqrChr.getDirection()); } } if(t && t.isOnEvent(currentT)){ local skillLevel = sqrChr.sq_GetSkillLevel(SKILL_LATENTABILITY); local value0 = sq_GetLevelData(sqrChr, SKILL_LATENTABILITY, 0, skillLevel); //力量% local value1 = sq_GetLevelData(sqrChr, SKILL_LATENTABILITY, 1, skillLevel); //智力% local value2 = sq_GetLevelData(sqrChr, SKILL_LATENTABILITY, 2, skillLevel); //體力% local value3 = sq_GetLevelData(sqrChr, SKILL_LATENTABILITY, 3, skillLevel); //精神% local value4 = sq_GetLevelData(sqrChr, SKILL_LATENTABILITY, 4, skillLevel); //力量 local value5 = sq_GetLevelData(sqrChr, SKILL_LATENTABILITY, 5, skillLevel); //智力 local value6 = sq_GetLevelData(sqrChr, SKILL_LATENTABILITY, 6, skillLevel); //體力 local value7 = sq_GetLevelData(sqrChr, SKILL_LATENTABILITY, 7, skillLevel); //精神 local value8 = sq_GetLevelData(sqrChr, SKILL_LATENTABILITY, 8, skillLevel); //力量增加率% local value9 = sq_GetLevelData(sqrChr, SKILL_LATENTABILITY, 9, skillLevel); //智力增加率% local value10 = sq_GetLevelData(sqrChr, SKILL_LATENTABILITY, 10, skillLevel); //體力增加率% local value11 = sq_GetLevelData(sqrChr, SKILL_LATENTABILITY, 11, skillLevel); //精神增加率% local value12 = sq_GetLevelData(sqrChr, SKILL_LATENTABILITY, 12, skillLevel); //力量增加率 local value13 = sq_GetLevelData(sqrChr, SKILL_LATENTABILITY, 13, skillLevel); //智力增加率 local value14 = sq_GetLevelData(sqrChr, SKILL_LATENTABILITY, 14, skillLevel); //體力增加率 local value15 = sq_GetLevelData(sqrChr, SKILL_LATENTABILITY, 15, skillLevel); //精神增加率 local value16 = sq_GetLevelData(sqrChr, SKILL_LATENTABILITY, 16, skillLevel); //?擊速度 local value17 = sq_GetLevelData(sqrChr, SKILL_LATENTABILITY, 17, skillLevel); //釋放速度 local value18 = sq_GetLevelData(sqrChr, SKILL_LATENTABILITY, 18, skillLevel); //移動速度 local value19 = sq_GetLevelData(sqrChr, SKILL_LATENTABILITY, 19, skillLevel); //物理暴擊率 local value20 = sq_GetLevelData(sqrChr, SKILL_LATENTABILITY, 20, skillLevel); //魔法暴擊率 local value21 = sq_GetLevelData(sqrChr, SKILL_LATENTABILITY, 21, skillLevel); //火強 local value22 = sq_GetLevelData(sqrChr, SKILL_LATENTABILITY, 22, skillLevel); //冰強 local value23 = sq_GetLevelData(sqrChr, SKILL_LATENTABILITY, 23, skillLevel); //暗強 local value24 = sq_GetLevelData(sqrChr, SKILL_LATENTABILITY, 24, skillLevel); //光強 local value25 = sq_GetLevelData(sqrChr, SKILL_LATENTABILITY, 25, skillLevel); //所有屬強 local value26 = sq_GetLevelData(sqrChr, SKILL_LATENTABILITY, 26, skillLevel); //CD if(sq_getJob(sqrChr) == 10 && sq_getGrowType(sqrChr) == 1 && CNSquirrelAppendage.sq_IsAppendAppendage(sqrChr, "character/atswordman/1_swordmaster/timeslash/ap_timeslash.nut")){ value26 = value26 - sq_GetLevelData(sqrChr, SKILL_SWORDMASTER_BYKK_TIMESLASH, 6, sq_GetSkillLevel(sqrChr, SKILL_SWORDMASTER_BYKK_TIMESLASH)); } local value27 = sq_GetLevelData(sqrChr, SKILL_LATENTABILITY, 27, skillLevel); //物理暴傷增加率 local value28 = sq_GetLevelData(sqrChr, SKILL_LATENTABILITY, 28, skillLevel); //魔法暴傷增加率 local value29 = sq_GetLevelData(sqrChr, SKILL_LATENTABILITY, 29, skillLevel); //物理攻擊力 local value30 = sq_GetLevelData(sqrChr, SKILL_LATENTABILITY, 30, skillLevel); //魔法攻擊力 local value31 = sq_GetLevelData(sqrChr, SKILL_LATENTABILITY, 31, skillLevel); //獨立物理攻擊力 local value32 = sq_GetLevelData(sqrChr, SKILL_LATENTABILITY, 32, skillLevel); //獨立魔法攻擊力 local valueMax = [value0, value1, value2, value3, value4, value5, value6, value7, value8, value9, value10, value11, value12, value13, value14, value15, value16, value17, value18, value19, value20, value21, value22, value23, value24, value25, value26, value27, value28, value29, value30]; for(local i = 0; i < valueMax.len(); i++){ if(valueMax[i] == appendage.getVar("value").getInt(i)) continue; else{ appendage.getVar("value").setInt(i, valueMax[i]); local change_appendage = appendage.sq_getChangeStatus("latentability"); if(!change_appendage){ change_appendage = appendage.sq_AddChangeStatus("latentability",obj, obj, 0, CHANGE_STATUS_TYPE_PHYSICAL_ATTACK, true, value0); } if(change_appendage){ change_appendage.clearParameter(); change_appendage.addParameter(CHANGE_STATUS_TYPE_PHYSICAL_ATTACK, true, value0.tofloat()); //力量% change_appendage.addParameter(CHANGE_STATUS_TYPE_MAGICAL_ATTACK, true, value1.tofloat()); //智力% change_appendage.addParameter(CHANGE_STATUS_TYPE_PHYSICAL_DEFENSE, true, value2.tofloat()); //體力% change_appendage.addParameter(CHANGE_STATUS_TYPE_MAGICAL_DEFENSE, true, value3.tofloat()); //精神% change_appendage.addParameter(CHANGE_STATUS_TYPE_PHYSICAL_ATTACK, false, value4.tofloat()); //力量+ change_appendage.addParameter(CHANGE_STATUS_TYPE_MAGICAL_ATTACK, false, value5.tofloat()); //智力+ change_appendage.addParameter(CHANGE_STATUS_TYPE_PHYSICAL_DEFENSE, false, value6.tofloat()); //體力+ change_appendage.addParameter(CHANGE_STATUS_TYPE_MAGICAL_DEFENSE, false, value7.tofloat()); //精神+ change_appendage.addParameter(CHANGE_STATUS_TYPE_PHYSICAL_ATTACK_BONUS, true, value8.tofloat()); //力量增加率% change_appendage.addParameter(CHANGE_STATUS_TYPE_MAGICAL_ATTACK_BONUS, true, value9.tofloat()); //智力增加率% change_appendage.addParameter(CHANGE_STATUS_TYPE_ADDITIONAL_PHYSICAL_GENUINE_ATTACK, true, value10.tofloat()); //體力增加率% change_appendage.addParameter(CHANGE_STATUS_TYPE_ADDITIONAL_MAGICAL_GENUINE_ATTACK, true, value11.tofloat()); //精神增加率% change_appendage.addParameter(CHANGE_STATUS_TYPE_EQUIPMENT_PHYSICAL_ATTACK, false, value12.tofloat()); //力量增加率 change_appendage.addParameter(CHANGE_STATUS_TYPE_EQUIPMENT_MAGICAL_ATTACK, false, value13.tofloat()); //智力增加率 change_appendage.addParameter(CHANGE_STATUS_TYPE_ADDITIONAL_PHYSICAL_GENUINE_ATTACK, false, value14.tofloat()); //體力增加率 change_appendage.addParameter(CHANGE_STATUS_TYPE_ADDITIONAL_MAGICAL_GENUINE_ATTACK, false, value15.tofloat()); //精神增加率 change_appendage.addParameter(CHANGE_STATUS_TYPE_ATTACK_SPEED, true, value16.tofloat()); //攻擊速度 change_appendage.addParameter(CHANGE_STATUS_TYPE_CAST_SPEED, true, value17.tofloat()); //釋放速度 change_appendage.addParameter(CHANGE_STATUS_TYPE_MOVE_SPEED, true, value18.tofloat()); //移動速度 change_appendage.addParameter(CHANGE_STATUS_TYPE_PHYSICAL_CRITICAL_HIT_RATE, false, value19.tofloat()); //物理暴擊率 change_appendage.addParameter(CHANGE_STATUS_TYPE_MAGICAL_CRITICAL_HIT_RATE, false, value20.tofloat()); //魔法暴擊率 change_appendage.addParameter(CHANGE_STATUS_TYPE_ELEMENT_ATTACK_FIRE, false, value21.tofloat()); //火強 change_appendage.addParameter(CHANGE_STATUS_TYPE_ELEMENT_ATTACK_WATER, false, value22.tofloat()); //冰強 change_appendage.addParameter(CHANGE_STATUS_TYPE_ELEMENT_ATTACK_DARK, false, value23.tofloat()); //暗強 change_appendage.addParameter(CHANGE_STATUS_TYPE_ELEMENT_ATTACK_LIGHT, false, value24.tofloat()); //光強 change_appendage.addParameter(CHANGE_STATUS_TYPE_ELEMENT_ATTACK_ALL, false, value25.tofloat()); //所有屬強 change_appendage.addParameter(CHANGE_STATUS_TYPE_COOLTIME_DECLINE, true, value26.tofloat()); //CD change_appendage.addParameter(CHANGE_STATUS_TYPE_PHYSICAL_CRITICAL_DAMAGE_RATE, false, (value27 / 0.667).tofloat()); //物理暴傷增加率 change_appendage.addParameter(CHANGE_STATUS_TYPE_MAGICAL_CRITICAL_DAMAGE_RATE, false, (value28 / 0.667).tofloat()); //魔法暴傷增加率 change_appendage.addParameter(CHANGE_STATUS_TYPE_EQUIPMENT_PHYSICAL_ATTACK, true, value29.tofloat()); //物理攻擊力 change_appendage.addParameter(CHANGE_STATUS_TYPE_EQUIPMENT_MAGICAL_ATTACK, true, value30.tofloat()); //魔法攻擊力 change_appendage.addParameter(CHANGE_STATUS_TYPE_ADDITIONAL_PHYSICAL_GENUINE_ATTACK, true, value31.tofloat()); //獨立物理攻擊力 change_appendage.addParameter(CHANGE_STATUS_TYPE_ADDITIONAL_MAGICAL_GENUINE_ATTACK, true, value32.tofloat()); //獨立魔法攻擊力 } } } } } function onStart_appendage_latentability(appendage) { if(!appendage) return; appendage.getVar("skill_1").clear_timer_vector(); appendage.getVar("skill_1").push_timer_vector(); local t_01 = appendage.getVar("skill_1").get_timer_vector(0); t_01.setParameter(500, -1); t_01.resetInstant(0); for(local i = 0; i < 29; i++){ appendage.getVar("value").setInt(i, 0); } appendage.getVar("skill_2").clear_timer_vector(); appendage.getVar("skill_2").push_timer_vector(); local t_02 = appendage.getVar("skill_2").get_timer_vector(0); t_02.setParameter(5000, -1); t_02.resetInstant(0); t_02.setEventOnStart(true); } function onEnd_appendage_latentability(appendage) { if(!appendage) return; local obj = appendage.getParent(); } //惩戒十字 function checkExecutableSkill_Crossofpunishment(obj) { if (!obj) return false; local isUse = obj.sq_IsUseSkill(SKILL_BYKK_CROSSOFPUNISHMENT); if (isUse){ obj.getVar("Crossofpunishment").setInt(0, 0); local loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_HOLYFLAME); if(loadSlot){ if(loadSlot.getRemainLoadNumber() > 0){ obj.getVar("Crossofpunishment").setInt(0, 1); loadSlot.decreaseLoadCount(1); } } obj.sq_IntVectClear(); obj.sq_IntVectPush(0); obj.sq_AddSetStatePacket(STATE_BYKK_CROSSOFPUNISHMENT, STATE_PRIORITY_IGNORE_FORCE, true); return true; } return false; } function checkCommandEnable_Crossofpunishment(obj) { if (!obj) return false; return true; } function onSetState_Crossofpunishment(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_CROSSOFPUNISHMENT_A_BODY); obj.sq_AddStateLayerAnimation(-1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/atcrossofpunishment/crossofpunishment_a_basic_slash02.ani"), 0, 0); obj.sq_PlaySound("CROSS_PUNISHMENT_01_FLAME"); obj.sq_PlaySound("CROSS_PUNISHMENT_01"); if(obj.getVar("Crossofpunishment").getInt(0) > 0){ obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/holyflameweaponeffect/crossofpunishment_a_body.ani"), 0, 0); sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atcrossofpunishment/crossofpunishment_a_holyflame_smoke.ani", 0, 1, 0); obj.sq_PlaySound("CROSS_PUNISHMENT_01_FLAME"); } break; case 1: obj.sq_SetCurrentAnimation(ATPANI_BYKK_CROSSOFPUNISHMENT_B_BODY); obj.sq_AddStateLayerAnimation(-1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/atcrossofpunishment/crossofpunishment_b_basic_slash02.ani"), 0, 0); sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atcrossofpunishment/crossofpunishment_b_basic_backdust.ani", 0, -1, 0); obj.sq_PlaySound("CROSS_PUNISHMENT_02_FLAME"); obj.sq_PlaySound("CROSS_PUNISHMENT_02"); if(obj.getVar("Crossofpunishment").getInt(0) > 0){ obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/holyflameweaponeffect/crossofpunishment_b_body.ani"), 0, 0); sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atcrossofpunishment/crossofpunishment_b_holyflame_backeff02.ani", 0, -1, 0); sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atcrossofpunishment/crossofpunishment_b_holyflame_smoke.ani", 0, 1, 0); obj.sq_PlaySound("CROSS_PUNISHMENT_01_FLAME"); } break; } local bonus = [0, 1], attackIndex = [ATPRIESTATK_BYKK_CROSSOFPUNISHMENT_A, ATPRIESTATK_BYKK_CROSSOFPUNISHMENT_B]; local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_CROSSOFPUNISHMENT, -1, bonus[subState], 1.0) + 100; sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, attackIndex[subState])); sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage); obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0); if(obj.getVar("Crossofpunishment").getInt(0) > 0){ local attackInfo = sq_GetCurrentAttackInfo(obj); attackInfo.setElement(ENUM_ELEMENT_FIRE); attackInfo.setElement(ENUM_ELEMENT_LIGHT); } } function onEndCurrentAni_Crossofpunishment(obj) { if(!obj) return; local subState = obj.getSkillSubState(); switch(subState){ case 0: obj.sq_IntVectClear(); obj.sq_IntVectPush(1); obj.sq_AddSetStatePacket(STATE_BYKK_CROSSOFPUNISHMENT, STATE_PRIORITY_AUTO, true); break; case 1: obj.sq_IntVectClear(); obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true); break; } } function onProcCon_Crossofpunishment(obj) { if(!obj) return; } function onKeyFrameFlag_Crossofpunishment(obj, flagIndex) { if(!obj) return false; return true; } function onTimeEvent_Crossofpunishment(obj, timeEventIndex, timeEventCount) { if(!obj) return false; } function onEndState_Crossofpunishment(obj, new_state) { if(!obj) return; } function onAttack_Crossofpunishment(obj, damager, boundingBox, isStuck) { if(!obj || isStuck) return; if(damager.isObjectType(OBJECTTYPE_ACTIVE)){ if(obj.getVar("Crossofpunishment").getInt(0) > 0) onAttack_EssenceofPhlege_SetFireBomb(obj, damager, boundingBox); } } //衝刺斬 function checkExecutableSkill_Cutindash(obj) { if (!obj) return false; local isUse = obj.sq_IsUseSkill(SKILL_BYKK_CUTINDASH); if (isUse){ obj.getVar("Cutindash_Bool").setBool(0, false); obj.getVar("Cutindash_Bool").setBool(1, false); local skillLevel = sq_GetSkillLevel(obj, SKILL_BYKK_CUTINDASH); local sub = 0; if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)) sub = 1; local count = sq_GetLevelData(obj, SKILL_BYKK_CUTINDASH, sub, skillLevel); obj.getVar("Cutindash_Count").setInt(10, count); obj.sq_IntVectClear(); if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)) obj.sq_IntVectPush(10); else obj.sq_IntVectPush(0); obj.sq_AddSetStatePacket(STATE_BYKK_CUTINDASH, STATE_PRIORITY_IGNORE_FORCE, true); return true; } return false; } function checkCommandEnable_Cutindash(obj) { if (!obj) return false; return true; } function onSetState_Cutindash(obj, state, datas, isResetTimer) { if(!obj) return; local subState = obj.sq_GetVectorData(datas, 0); obj.setSkillSubState(subState); obj.sq_StopMove(); switch(subState){ case 0://dash obj.sq_SetCurrentAnimation(ATPANI_BYKK_ATCUTINDASH_FRONT_DASH_BODY); sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atcutindash/atcutindash_front_dust_1.ani", 0, 1, 0); obj.sq_PlaySound("R_PW_CUTINDASH_01"); break; case 1://redash obj.sq_SetCurrentAnimation(ATPANI_BYKK_ATCUTINDASH_FRONT_REDASH_BODY); sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atcutindash/atcutindash_front_dust_1.ani", 0, 1, 0); obj.sq_PlaySound("R_PW_CUTINDASH_02"); break; case 2://back dash obj.sq_SetCurrentAnimation(ATPANI_BYKK_ATCUTINDASH_BACK_DASH_BODY); sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atcutindash/atcutindash_back_dust_1.ani", 0, 1, 0); obj.sq_PlaySound("R_PW_CUTINDASH_02"); break; case 3://att obj.removeAllTimeEvent(); if(sq_GetSkillLevel(obj, SKILL_BYKK_ORIGINALSIN) > 0){ local ani = getCurrentAnimation_demonization(obj, "atcutindashlv95atoriginalsinattacka_body", false); obj.setCurrentAnimation(ani); sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atcutindash/lv95atoriginalsin/atcutindashlv95atoriginalsinattackafront_13.ani", 0, 1, 0); sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atcutindash/lv95atoriginalsin/atcutindashlv95atoriginalsinattackbfront_08.ani", 0, 1, 0); sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atcutindash/lv95atoriginalsin/atcutindashlv95atoriginalsinstartafront_01.ani", 0, 1, 0); sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atcutindash/lv95atoriginalsin/atcutindashlv95atoriginalsinslashb_00.ani", 0, 1, 0); sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atcutindash/lv95atoriginalsin/atcutindashlv95atoriginalsinstartafront_03.ani", 0, -1, 0); } else obj.sq_SetCurrentAnimation(ATPANI_BYKK_ATCUTINDASH_ATT_BODY); break; case 4: obj.sq_SetCurrentAnimation(ATPANI_BYKK_ATCUTINDASHLV95ATORIGINALSINATTACKA_LAST_BODY); break; case 10: local ani = getCurrentAnimation_demonization(obj, "atcutindash_front_dash_demonization", false); obj.setCurrentAnimation(ani); obj.sq_PlaySound("R_PW_CUTINDASH_DM_01"); break; case 11: obj.removeAllTimeEvent(); local aniSet = "atcutindash_att_demonization_front"; if(sq_GetSkillLevel(obj, SKILL_BYKK_ORIGINALSIN) > 0){ aniSet = "atcutindashlv95atoriginalsinattackb_body"; sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atcutindash/lv95atoriginalsin/atcutindashlv95atoriginalsinattackafront_13.ani", 0, 1, 0); sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atcutindash/lv95atoriginalsin/atcutindashlv95atoriginalsinattackbfront_08.ani", 0, 1, 0); sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atcutindash/lv95atoriginalsin/atcutindashlv95atoriginalsinstartafront_01.ani", 0, 1, 0); sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atcutindash/lv95atoriginalsin/atcutindashlv95atoriginalsinslashb_00.ani", 0, 1, 0); sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atcutindash/lv95atoriginalsin/atcutindashlv95atoriginalsinstartafront_03.ani", 0, -1, 0); } local ani = getCurrentAnimation_demonization(obj, aniSet, false); obj.setCurrentAnimation(ani); obj.sq_PlaySound("PW_CUTINDASH_DM_02"); break; case 12: local aniSet = "atcutindash_back_dash_demonization"; local ani = getCurrentAnimation_demonization(obj, aniSet, false); obj.setCurrentAnimation(ani); obj.sq_PlaySound("PW_CUTINDASH_DM_02"); break; case 13: obj.removeAllTimeEvent(); local ani = getCurrentAnimation_demonization(obj, "atcutindash_att_demonization_back", false); obj.setCurrentAnimation(ani); break; } if(subState == 3 || subState == 11 || subState == 13) { local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_CUTINDASH, -1, 2, 1.0) + 100; sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, ATPRIESTATK_BYKK_CUTINDASH_ATTACK)); sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage); return; } local moveX = [300, 200, -300, 0, 0]; if(subState > 9) {subState = subState - 10; moveX = [300, 200, -300, 0, 0];} obj.getVar("Cutindash_Move").setInt(10, sq_GetXPos(obj)); obj.getVar("Cutindash_Move").setInt(11, moveX[subState]); obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0); local currentAni = obj.getCurrentAnimation(); local delaySum = currentAni.getDelaySum(false); obj.setTimeEvent(0, delaySum / 50, 30, true); } function onEndCurrentAni_Cutindash(obj) { if(!obj) return; local subState = obj.getSkillSubState(); switch(subState){ case 0: obj.sq_IntVectClear(); if(obj.getVar("Cutindash_Bool").getBool(0)) { if(obj.getVar("Cutindash_Bool").getBool(1)) obj.sq_IntVectPush(2); else obj.sq_IntVectPush(1); } else obj.sq_IntVectPush(3); obj.getVar("Cutindash_Bool").setBool(0, false); //obj.getVar("Cutindash_Bool").setBool(1, false); obj.sq_AddSetStatePacket(STATE_BYKK_CUTINDASH, STATE_PRIORITY_AUTO, true); break; case 1: if(obj.getVar("Cutindash_Bool").getBool(0)) { obj.getVar("Cutindash_Bool").setBool(0, false); obj.sq_IntVectClear(); obj.sq_IntVectPush(1); obj.sq_AddSetStatePacket(STATE_BYKK_CUTINDASH, STATE_PRIORITY_AUTO, true); break; } case 2: obj.sq_IntVectClear(); obj.sq_IntVectPush(3); obj.sq_AddSetStatePacket(STATE_BYKK_CUTINDASH, STATE_PRIORITY_AUTO, true); break; case 3: if(sq_GetSkillLevel(obj, SKILL_BYKK_ORIGINALSIN) > 0){ obj.sq_IntVectClear(); obj.sq_IntVectPush(4); obj.sq_AddSetStatePacket(STATE_BYKK_CUTINDASH, STATE_PRIORITY_AUTO, true); break; } case 4: case 11: case 13: obj.sq_IntVectClear(); obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true); break; case 10: obj.sq_IntVectClear(); if(obj.getVar("Cutindash_Bool").getBool(0)) { if(obj.getVar("Cutindash_Bool").getBool(1)) obj.sq_IntVectPush(12); else obj.sq_IntVectPush(10); print(obj.getVar("Cutindash_Bool").getBool(0)); print(obj.getVar("Cutindash_Bool").getBool(1)); } else obj.sq_IntVectPush(11); obj.getVar("Cutindash_Bool").setBool(0, false); obj.sq_AddSetStatePacket(STATE_BYKK_CUTINDASH, STATE_PRIORITY_AUTO, true); break; case 12: obj.sq_IntVectClear(); if(obj.getVar("Cutindash_Bool").getBool(0)) { if(obj.getVar("Cutindash_Bool").getBool(1)) obj.sq_IntVectPush(12); else obj.sq_IntVectPush(10); } else obj.sq_IntVectPush(13); obj.getVar("Cutindash_Bool").setBool(0, false); obj.sq_AddSetStatePacket(STATE_BYKK_CUTINDASH, STATE_PRIORITY_AUTO, true); break; } } function onProcCon_Cutindash(obj) { if(!obj) return; local subState = obj.getSkillSubState(); switch(subState){ case 0: case 1: case 10: case 12: sq_SetKeyxEnable(obj, E_SKILL_COMMAND, true); sq_SetKeyxEnable(obj, E_ATTACK_COMMAND, true); if(sq_IsEnterCommand(obj, E_ATTACK_COMMAND) || sq_IsEnterCommand(obj, E_SKILL_COMMAND)){ obj.sq_IntVectClear(); if(subState == 10) obj.sq_IntVectPush(11); else if(subState == 12) obj.sq_IntVectPush(13); else obj.sq_IntVectPush(3); obj.sq_AddSetStatePacket(STATE_BYKK_CUTINDASH, STATE_PRIORITY_AUTO, true); break; } if(obj.getVar("Cutindash_Count").getInt(10) < 1) return; if(obj.getVar("Cutindash_Bool").getBool(0) == false) { obj.setSkillCommandEnable(SKILL_BYKK_CUTINDASH, true); local b_useskill = obj.sq_IsEnterSkill(SKILL_BYKK_CUTINDASH); if(b_useskill != -1) { obj.getVar("Cutindash_Bool").setBool(0, true); obj.getVar("Cutindash_Count").setInt(10, obj.getVar("Cutindash_Count").getInt(10) - 1); } } if(obj.getVar("Cutindash_Bool").getBool(1) == false) { 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.getVar("Cutindash_Bool").setBool(1, true); } } break; case 2: sq_SetKeyxEnable(obj, E_SKILL_COMMAND, true); sq_SetKeyxEnable(obj, E_ATTACK_COMMAND, true); if(sq_IsEnterCommand(obj, E_ATTACK_COMMAND) || sq_IsEnterCommand(obj, E_SKILL_COMMAND)){ obj.sq_IntVectClear(); if(subState == 10) obj.sq_IntVectPush(11); else if(subState == 12) obj.sq_IntVectPush(13); else obj.sq_IntVectPush(3); obj.sq_AddSetStatePacket(STATE_BYKK_CUTINDASH, STATE_PRIORITY_AUTO, true); } break; } } function onKeyFrameFlag_Cutindash(obj, flagIndex) { if(!obj) return false; switch(flagIndex){ case 103: sq_SetMyShake(obj, 10, 120); break; case 104: sq_SetMyShake(obj, 2, 180); break; case 10001: obj.getVar("setCancelSkill").setBool(10, true); break; } return true; } function onTimeEvent_Cutindash(obj, timeEventIndex, timeEventCount) { if(!obj) return false; switch(timeEventIndex){ case 0: local base_X = obj.getVar("Cutindash_Move").getInt(10); local v = sq_GetUniformVelocity(0, obj.getVar("Cutindash_Move").getInt(11), timeEventCount, 30); local moveX = sq_GetDistancePos(base_X, obj.getDirection(), v); if(obj.isMovablePos(moveX, sq_GetYPos(obj))) sq_setCurrentAxisPos(obj, 0, moveX); local subState = obj.getSkillSubState(); if(timeEventCount >= 25 && subState == 2){ obj.sq_IntVectClear(); obj.sq_IntVectPush(3); obj.sq_AddSetStatePacket(STATE_BYKK_CUTINDASH, STATE_PRIORITY_AUTO, true); } break; } } function onEndState_Cutindash(obj, new_state) { if(!obj) return; } //罪業加身 function checkExecutableSkill_Heavysin(obj) { if (!obj) return false; local isUse = obj.sq_IsUseSkill(SKILL_BYKK_HEAVYSIN); if (isUse){ obj.sq_IntVectClear(); if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)) obj.sq_IntVectPush(2); else obj.sq_IntVectPush(0); obj.sq_AddSetStatePacket(STATE_BYKK_HEAVYSIN, STATE_PRIORITY_IGNORE_FORCE, true); return true; } return false; } function checkCommandEnable_Heavysin(obj) { if (!obj) return false; return true; } function onSetState_Heavysin(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_HEAVYSIN_READY_BODY); break; case 1: obj.sq_SetCurrentAnimation(ATPANI_BYKK_HEAVYSIN_ATTACK_BODY); obj.sq_PlaySound("R_PW_HEAVYSIN"); break; case 2: local ani = getCurrentAnimation_demonization(obj, "heavysin_demonization", false); obj.setCurrentAnimation(ani); obj.sq_PlaySound("R_PW_HEAVYSIN_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_Heavysin(obj) { if(!obj) return; local subState = obj.getSkillSubState(); switch(subState){ case 0: obj.sq_IntVectClear(); obj.sq_IntVectPush(1); obj.sq_AddSetStatePacket(STATE_BYKK_HEAVYSIN, STATE_PRIORITY_AUTO, true); break; case 1: case 2: obj.sq_IntVectClear(); obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true); break; } } function onProcCon_Heavysin(obj) { if(!obj) return; } function onKeyFrameFlag_Heavysin(obj, flagIndex) { if(!obj) return false; switch(flagIndex){ case 101: obj.sq_PlaySound("HEAVYSIN"); local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_HEAVYSIN, -1, 0, 1.0) + 100; local sizeRate = sq_GetIntData(obj, SKILL_BYKK_HEAVYSIN, 0); local sub = 0; if(sq_getGrowType(obj) == 4){ local AddAppendage = CNSquirrelAppendage.sq_GetAppendage(obj, THESEVENDEADLYSINS_APDPATH); if(AddAppendage && AddAppendage.getVar("Sub").getInt(10) == 3){ sub = 1; local skillLevel = sq_GetSkillLevel(obj, SKILL_BYKK_HEAVYSIN); local prob = sq_GetLevelData(obj, SKILL_BYKK_HEAVYSIN, 1, skillLevel); local level = sq_GetLevelData(obj, SKILL_BYKK_HEAVYSIN, 2, skillLevel); local time = sq_GetLevelData(obj, SKILL_BYKK_HEAVYSIN, 3, skillLevel); local speedRate = sq_GetLevelData(obj, SKILL_BYKK_HEAVYSIN, 4, skillLevel); local speedRate2 = sq_GetLevelData(obj, SKILL_BYKK_HEAVYSIN, 5, skillLevel); if(obj.isMyControlObject()){ local add_number = sq_GetLevelData(obj, SKILL_BYKK_HEAVYSIN, 6, sq_GetSkillLevel(obj, SKILL_BYKK_HEAVYSIN)); if(add_number > 0){ local loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_THESEVENDEADLYSINS); if(loadSlot){ local loadnumber = loadSlot.getRemainLoadNumber(); if(loadnumber > add_number){ createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,175,-20,0,obj.getDirection(),0,SKILL_BYKK_HEAVYSIN,0,totalDamage,sizeRate,sub,prob,level,time,speedRate,speedRate2); createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,175,20,0,obj.getDirection(),0,SKILL_BYKK_HEAVYSIN,0,totalDamage,sizeRate,sub,prob,level,time,speedRate,speedRate2); } else createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,175,0,0,obj.getDirection(),0,SKILL_BYKK_HEAVYSIN,0,totalDamage,sizeRate,sub,prob,level,time,speedRate,speedRate2); } else createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,175,0,0,obj.getDirection(),0,SKILL_BYKK_HEAVYSIN,0,totalDamage,sizeRate,sub,prob,level,time,speedRate,speedRate2); } else{ createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,175,0,0,obj.getDirection(),0,SKILL_BYKK_HEAVYSIN,0,totalDamage,sizeRate,sub,prob,level,time,speedRate,speedRate2); } } break; } else if(obj.isMyControlObject()){ local add_number = sq_GetLevelData(obj, SKILL_BYKK_HEAVYSIN, 6, sq_GetSkillLevel(obj, SKILL_BYKK_HEAVYSIN)); if(add_number > 0){ local loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_THESEVENDEADLYSINS); if(loadSlot){ local loadnumber = loadSlot.getRemainLoadNumber(); if(loadnumber > add_number){ createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,175,-20,0,obj.getDirection(),0,SKILL_BYKK_HEAVYSIN,0,totalDamage,sizeRate,0,0,0,0,0,0); createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,175,20,0,obj.getDirection(),0,SKILL_BYKK_HEAVYSIN,0,totalDamage,sizeRate,0,0,0,0,0,0); } else createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,175,0,0,obj.getDirection(),0,SKILL_BYKK_HEAVYSIN,0,totalDamage,sizeRate,0,0,0,0,0,0); } else createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,175,0,0,obj.getDirection(),0,SKILL_BYKK_HEAVYSIN,0,totalDamage,sizeRate,0,0,0,0,0,0); } else{ createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,175,0,0,obj.getDirection(),0,SKILL_BYKK_HEAVYSIN,0,totalDamage,sizeRate,0,0,0,0,0,0); } } } else if(obj.isMyControlObject()){ createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,175,0,0,obj.getDirection(),0,SKILL_BYKK_HEAVYSIN,0,totalDamage,sizeRate,0,0,0,0,0,0); } local buffCount = sq_GetLevelData(obj, SKILL_BYKK_HEAVYSIN, 9, sq_GetSkillLevel(obj, SKILL_BYKK_HEAVYSIN)); if(buffCount > 0){ local addAppendage = CNSquirrelAppendage.sq_GetAppendage(obj, HEAVYSINBUFF_APDPATH); if(!addAppendage){ addAppendage = CNSquirrelAppendage.sq_AppendAppendage(obj, obj, -1, false, HEAVYSINBUFF_APDPATH, true); } addAppendage.sq_SetValidTime(10000); addAppendage.setEnableIsBuff(true); addAppendage.setAppendCauseSkill(BUFF_CAUSE_SKILL, sq_getJob(obj), SKILL_BYKK_HEAVYSIN, sq_GetSkillLevel(obj, SKILL_BYKK_HEAVYSIN)); CNSquirrelAppendage.sq_Append(addAppendage, obj, obj, true); if(addAppendage.getVar("buffCount").getInt(10) >= buffCount) break; addAppendage.getVar("buffCount").setInt(10, addAppendage.getVar("buffCount").getInt(10) + 1); setSkillBonusRate_Temptress(obj); } break; case 10001: obj.getVar("setCancelSkill").setBool(10, true); break; } return true; } function onTimeEvent_Heavysin(obj, timeEventIndex, timeEventCount) { if(!obj) return false; } function onEndState_Heavysin(obj, new_state) { if(!obj) return; } function onEnd_appendage_heavysin_buff(appendage) { if(!appendage) return; local parentObj = appendage.getParent(); local obj = sq_GetCNRDObjectToSQRCharacter(parentObj); if(!obj || obj.getState() == STATE_DIE) return; setSkillBonusRate_Temptress(obj); } //審判錘擊 function checkExecutableSkill_Holysmash(obj) { if (!obj) return false; local isUse = obj.sq_IsUseSkill(SKILL_BYKK_HOLYSMASH); if (isUse){ obj.sq_IntVectClear(); obj.sq_IntVectPush(0); obj.sq_AddSetStatePacket(STATE_BYKK_HOLYSMASH, STATE_PRIORITY_IGNORE_FORCE, true); return true; } return false; } function checkCommandEnable_Holysmash(obj) { if (!obj) return false; if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)) return false; return true; } function onSetState_Holysmash(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://normal obj.sq_SetCurrentAnimation(ATPANI_BYKK_HOLYSMASH_BODY); break; } obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0); local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_HOLYSMASH, -1, 1, 1.0) + 100; sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, ATPRIESTATK_BYKK_HOLYSMASH)); sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage); } function onEndCurrentAni_Holysmash(obj) { if(!obj) return; obj.sq_IntVectClear(); obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true); } function onProcCon_Holysmash(obj) { if(!obj) return; } function onKeyFrameFlag_Holysmash(obj, flagIndex) { if(!obj) return false; switch(flagIndex){ case 101: obj.sq_PlaySound("R_PW_HOLYSMASH"); obj.sq_PlaySound("HOLYSMASH"); sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atholysmash/hseff_hseffa.ani", 0, 1, 0); sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atholysmash/holysmash_eff.ani", 0, 1, 0); break; } return true; } function onTimeEvent_Holysmash(obj, timeEventIndex, timeEventCount) { if(!obj) return false; } function onEndState_Holysmash(obj, new_state) { if(!obj) return; } //鉤頸斬 function checkExecutableSkill_Neckupscythe(obj) { if (!obj) return false; local isUse = obj.sq_IsUseSkill(SKILL_BYKK_NECKUPSCYTHE); if (isUse){ obj.getVar("NeckupscytheTar").clear_obj_vector(); obj.getVar("Neckupscythe_Bool").setBool(0, false); obj.sq_IntVectClear(); if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)) obj.sq_IntVectPush(3); else obj.sq_IntVectPush(0); obj.sq_AddSetStatePacket(STATE_BYKK_NECKUPSCYTHE, STATE_PRIORITY_IGNORE_FORCE, true); return true; } return false; } function checkCommandEnable_Neckupscythe(obj) { if (!obj) return false; return true; } function onSetState_Neckupscythe(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://attack1 obj.sq_SetCurrentAnimation(ATPANI_BYKK_NECKUPSCYTHE_ATTACK1_BODY); break; case 1://attack2 obj.sq_SetCurrentAnimation(ATPANI_BYKK_NECKUPSCYTHE_ATTACK2_BODY); break; case 2://attack2 front obj.sq_SetCurrentAnimation(ATPANI_BYKK_NECKUPSCYTHE_ATTACK2_FRONT_BODY); break; case 3: local ani = getCurrentAnimation_demonization(obj, "neckupscythe_attack1_demon", false); obj.setCurrentAnimation(ani); break; case 4: local ani = getCurrentAnimation_demonization(obj, "neckupscythe_attack2_demon", false); obj.setCurrentAnimation(ani); break; } obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0); local bonus = [0, 1, 1, 0, 1], attackIndex = [ATPRIESTATK_BYKK_NECKUPSCYTHE_POKE, ATPRIESTATK_BYKK_NECKUPSCYTHE_BACKTHROW, ATPRIESTATK_BYKK_NECKUPSCYTHE_FRONTTHROW, ATPRIESTATK_BYKK_NECKUPSCYTHE_POKE, ATPRIESTATK_BYKK_NECKUPSCYTHE_BACKTHROW]; local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_NECKUPSCYTHE, -1, bonus[subState], 1.0) + 100; sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, attackIndex[subState])); sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage); } function onEndCurrentAni_Neckupscythe(obj) { if(!obj) return; local subState = obj.getSkillSubState(); switch(subState){ case 0: obj.sq_IntVectClear(); if(obj.getVar("NeckupscytheTar").get_obj_vector_size() < 1){ obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true); break; } if(obj.getVar("Neckupscythe_Bool").getBool(0)) obj.sq_IntVectPush(1); else obj.sq_IntVectPush(2); obj.sq_AddSetStatePacket(STATE_BYKK_NECKUPSCYTHE, STATE_PRIORITY_AUTO, true); break; case 1: case 2: case 4: obj.sq_IntVectClear(); obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true); break; case 3: obj.sq_IntVectClear(); if(obj.getVar("NeckupscytheTar").get_obj_vector_size() < 1){ obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true); break; } obj.sq_IntVectPush(4); obj.sq_AddSetStatePacket(STATE_BYKK_NECKUPSCYTHE, STATE_PRIORITY_AUTO, true); break; } } function onProcCon_Neckupscythe(obj) { if(!obj) return; local subState = obj.getSkillSubState(); switch(subState){ case 0: if(obj.getVar("Neckupscythe_Bool").getBool(0) == false) { 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.getVar("Neckupscythe_Bool").setBool(0, true); } } break; } } function onKeyFrameFlag_Neckupscythe(obj, flagIndex) { if(!obj) return false; switch(flagIndex){ case 102: local size = obj.getVar("NeckupscytheTar").get_obj_vector_size(); if(size > 0){ for(local i = 0; i < size; i++){ local targetObj = obj.getVar("NeckupscytheTar").get_obj_vector(i); if(targetObj){ local addAppendage = CNSquirrelAppendage.sq_GetAppendage(targetObj, "character/demonicswordman/0_common/ap_neckupscythe.nut"); sq_MoveToAppendageForce(targetObj, obj, obj, -150, 0, 0, 100, true, addAppendage); } } } break; case 103: sq_SetMyShake(obj, 3, 160); break; case 104: sq_SetMyShake(obj, 2, 240); break; case 105: sq_SetMyShake(obj, 2, 160); break; case 106: sq_SetMyShake(obj, 3, 120); break; } return true; } function onTimeEvent_Neckupscythe(obj, timeEventIndex, timeEventCount) { if(!obj) return false; } function onEndState_Neckupscythe(obj, new_state) { if(!obj) return; if(new_state != STATE_BYKK_NECKUPSCYTHE){ local size = obj.getVar("NeckupscytheTar").get_obj_vector_size(); if(size > 0){ for(local i = 0; i < size; i++){ local targetObj = obj.getVar("NeckupscytheTar").get_obj_vector(i); if(targetObj) CNSquirrelAppendage.sq_RemoveAppendage(targetObj, "character/demonicswordman/0_common/ap_neckupscythe.nut"); } } } } function onAttack_Neckupscythe(obj, damager, boundingBox, isStuck) { if(!obj) return; local subState = obj.getSkillSubState(); switch(subState){ case 0: case 3: if(damager.isObjectType(OBJECTTYPE_ACTIVE)){ if(sq_IsHoldable(obj,damager) && !sq_IsFixture(damager) && sq_IsGrabable(obj,damager)){ if(!CNSquirrelAppendage.sq_IsAppendAppendage(damager, "character/demonicswordman/0_common/ap_neckupscythe.nut")){ if(!obj.getVar("NeckupscytheTar").is_obj_vector(damager)) obj.getVar("NeckupscytheTar").push_obj_vector(damager); local addAppendage = CNSquirrelAppendage.sq_AppendAppendage(damager, obj, -1, false, "character/demonicswordman/0_common/ap_neckupscythe.nut", true); sq_HoldAndDelayDie(damager, obj, true, true, true, 200, 200, ENUM_DIRECTION_NEUTRAL, addAppendage); if(subState == 0) sq_MoveToAppendageForce(damager, obj, obj, 160, 0, 50, 100, true, addAppendage); else sq_MoveToAppendageForce(damager, obj, obj, 50, 0, 0, 200, true, addAppendage); } } } break; } } //喚雷符 function checkExecutableSkill_Talismanoflightning(obj) { if (!obj) return false; local isUse = obj.sq_IsUseSkill(SKILL_BYKK_TALISMANOFLIGHTNING); if (isUse){ obj.sq_IntVectClear(); obj.sq_IntVectPush(0); obj.sq_AddSetStatePacket(STATE_BYKK_TALISMANOFLIGHTNING, STATE_PRIORITY_IGNORE_FORCE, true); return true; } return false; } function checkCommandEnable_Talismanoflightning(obj) { if (!obj) return false; if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)) return false; return true; } function onSetState_Talismanoflightning(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_TALISMANOFLIGHTNING_CAST_BODY); break; case 1: obj.sq_SetCurrentAnimation(ATPANI_BYKK_TALISMANOFLIGHTNING_SHOT_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_Talismanoflightning(obj) { if(!obj) return; local subState = obj.getSkillSubState(); switch(subState){ case 0: obj.sq_IntVectClear(); obj.sq_IntVectPush(1); obj.sq_AddSetStatePacket(STATE_BYKK_TALISMANOFLIGHTNING, STATE_PRIORITY_AUTO, true); break; case 1: obj.sq_IntVectClear(); obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true); break; } } function onProcCon_Talismanoflightning(obj) { if(!obj) return; } function onKeyFrameFlag_Talismanoflightning(obj, flagIndex) { if(!obj) return false; switch(flagIndex){ case 101: local offset_x = sq_GetIntData(obj, SKILL_BYKK_TALISMANOFLIGHTNING, 8); local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_TALISMANOFLIGHTNING, -1, 0, 1.0) + 100; local sizeRate = sq_GetIntData(obj, SKILL_BYKK_TALISMANOFLIGHTNING, 10); if(obj.isMyControlObject()) createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,offset_x,0,0,obj.getDirection(),0,SKILL_BYKK_TALISMANOFLIGHTNING,0,totalDamage,sizeRate,0,0,0,0,0,0); break; } return true; } function onTimeEvent_Talismanoflightning(obj, timeEventIndex, timeEventCount) { if(!obj) return false; } function onEndState_Talismanoflightning(obj, new_state) { if(!obj) return; } //空中錘擊 function checkExecutableSkill_Violentassault(obj) { if (!obj) return false; local isUse = obj.sq_IsUseSkill(SKILL_BYKK_VIOLENTASSAULT); if (isUse){ obj.sq_IntVectClear(); obj.sq_IntVectPush(0); obj.sq_AddSetStatePacket(STATE_BYKK_VIOLENTASSAULT, STATE_PRIORITY_IGNORE_FORCE, true); return true; } return false; } function checkCommandEnable_Violentassault(obj) { if (!obj) return false; if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)) return false; return true; } function onSetState_Violentassault(obj, state, datas, isResetTimer) { if(!obj) return; local subState = obj.sq_GetVectorData(datas, 0); obj.setSkillSubState(subState); obj.sq_StopMove(); switch(subState){ case 0://normal obj.sq_SetCurrentAnimation(ATPANI_BYKK_VIOLENTASSAULT_START_BODY); sq_SetVelocity(obj, 2, -600.0); obj.setTimeEvent(0, 10, 20, true); obj.getVar("ViolentassaultMove").setInt(10, sq_GetXPos(obj)); obj.getVar("ViolentassaultMove").setInt(11, sq_GetZPos(obj) * 15 / 10); obj.sq_PlaySound("PW_JUMP_DM"); // obj.sq_ZStop(); break; case 1: obj.sq_SetCurrentAnimation(ATPANI_BYKK_VIOLENTASSAULT_LOOP_BODY); sq_SetVelocity(obj, 2, -600.0); local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_VIOLENTASSAULT, -1, 0, 1.0) + 100; sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, ATPRIESTATK_BYKK_VIOLENTASSAULT)); sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage); break; case 2: obj.sq_SetCurrentAnimation(ATPANI_BYKK_VIOLENTASSAULT_END_BODY); obj.removeAllTimeEvent(); local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_VIOLENTASSAULT, -1, 0, 1.0) + 100; local sizeRate = sq_GetIntData(obj, SKILL_BYKK_VIOLENTASSAULT, 2); if(obj.isMyControlObject()) createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,50,0,0,obj.getDirection(),0,SKILL_BYKK_VIOLENTASSAULT,0,totalDamage,sizeRate,0,0,0,0,0,0); break; } } function onEndCurrentAni_Violentassault(obj) { if(!obj) return; local subState = obj.getSkillSubState(); switch(subState){ case 0: obj.sq_IntVectClear(); obj.sq_IntVectPush(1); obj.sq_AddSetStatePacket(STATE_BYKK_VIOLENTASSAULT, STATE_PRIORITY_AUTO, true); break; case 2: obj.sq_IntVectClear(); obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true); break; } } function onProcCon_Violentassault(obj) { if(!obj) return; local zPos = sq_GetZPos(obj); local subState = obj.getSkillSubState(); switch(subState){ case 1: if(zPos <= 0){ obj.sq_IntVectClear(); obj.sq_IntVectPush(2); obj.sq_AddSetStatePacket(STATE_BYKK_VIOLENTASSAULT, STATE_PRIORITY_AUTO, true); } break; } } function onKeyFrameFlag_Violentassault(obj, flagIndex) { if(!obj) return false; return true; } function onTimeEvent_Violentassault(obj, timeEventIndex, timeEventCount) { if(!obj) return false; switch(timeEventIndex){ case 0: local base_X = obj.getVar("ViolentassaultMove").getInt(10); local v = sq_GetUniformVelocity(0, obj.getVar("ViolentassaultMove").getInt(11), timeEventCount, 20); local moveX = sq_GetDistancePos(base_X, obj.getDirection(), v); sq_setCurrentAxisPos(obj, 0, moveX); break; } } function onEndState_Violentassault(obj, new_state) { if(!obj) return; } //武器格擋 function checkExecutableSkill_Weaponguard(obj) { if (!obj) return false; local isUse = obj.sq_IsUseSkill(SKILL_BYKK_WEAPONGUARD); if (isUse){ obj.sq_IsEnterSkillLastKeyUnits(SKILL_BYKK_WEAPONGUARD); obj.sq_IntVectClear(); obj.sq_IntVectPush(0); obj.sq_AddSetStatePacket(STATE_BYKK_WEAPONGUARD, STATE_PRIORITY_IGNORE_FORCE, true); return true; } return false; } function checkCommandEnable_Weaponguard(obj) { if (!obj) return false; if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)) return false; return true; } function onSetState_Weaponguard(obj, state, datas, isResetTimer) { if(!obj) return; local subState = obj.sq_GetVectorData(datas, 0); obj.setSkillSubState(subState); obj.sq_StopMove(); switch(subState){ case 0://normal obj.sq_SetCurrentAnimation(ATPANI_BYKK_WEAPONGUARD_STAND_BODY); local apdPath = "character/demonicswordman/0_common/ap_weaponguard.nut"; if(!CNSquirrelAppendage.sq_IsAppendAppendage(obj, apdPath)){ local AddAppendage = CNSquirrelAppendage.sq_AppendAppendage(obj, obj, SKILL_BYKK_WEAPONGUARD, false, apdPath, true); } break; case 1: obj.sq_SetCurrentAnimation(ATPANI_BYKK_WEAPONGUARD_ATTACKED_BODY); break; } } function onEndCurrentAni_Weaponguard(obj) { if(!obj) return; local subState = obj.getSkillSubState(); switch(subState){ case 1: obj.sq_IntVectClear(); obj.sq_IntVectPush(0); obj.sq_AddSetStatePacket(STATE_BYKK_WEAPONGUARD, STATE_PRIORITY_AUTO, true); break; } } function onDamage_Weaponguard(obj,attacker,boundingBox) { if(!obj) return; obj.sq_IntVectClear(); obj.sq_IntVectPush(1); obj.sq_AddSetStatePacket(STATE_BYKK_WEAPONGUARD, STATE_PRIORITY_AUTO, true); } function onProcCon_Weaponguard(obj) { if(!obj) return; local bDownKey = obj.isDownSkillLastKey(); if(!bDownKey){ obj.sq_IntVectClear(); obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true); } } function onKeyFrameFlag_Weaponguard(obj, flagIndex) { if(!obj) return false; return true; } function onTimeEvent_Weaponguard(obj, timeEventIndex, timeEventCount) { if(!obj) return false; } function onEndState_Weaponguard(obj, new_state) { if(!obj) return; CNSquirrelAppendage.sq_RemoveAppendage(obj, "character/demonicswordman/0_common/ap_weaponguard.nut"); } function getImmuneTypeDamageRate_appendage_Atpriest_weaponguard(appendage, damageRate, attacker) { if (!appendage) return damageRate; local parentObj = appendage.getParent(); parentObj = sq_GetCNRDObjectToSQRCharacter(parentObj); if (!parentObj) { appendage.setValid(false); return damageRate; } local sub = 2; local attackInfo = sq_GetCurrentAttackInfo(attacker); if (sq_GetAttackType(attackInfo) == 1) sub = 3; local newdamageRate = (1000 - sq_GetLevelData(parentObj, SKILL_BYKK_WEAPONGUARD, sub, sq_GetSkillLevel(parentObj, SKILL_BYKK_WEAPONGUARD))) / 10; return newdamageRate; } /////////////////////////////////////////////////////////////////诱魔者/////////////////////////////////////////////////////////// //雙重切割 function checkExecutableSkill_Dualslash(obj) { if (!obj) return false; if(obj.getState() == STATE_BYKK_DEPRAVITYSEVENSINS && obj.getSkillSubState() < 10) return false; local isUse = obj.sq_IsUseSkill(SKILL_BYKK_DUALSLASH); if (isUse){ obj.sq_IntVectClear(); if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)) obj.sq_IntVectPush(1); else obj.sq_IntVectPush(0); obj.sq_AddSetStatePacket(STATE_BYKK_DUALSLASH, STATE_PRIORITY_IGNORE_FORCE, true); return true; } return false; } function checkCommandEnable_Dualslash(obj) { if (!obj) return false; return true; } function onSetState_Dualslash(obj, state, datas, isResetTimer) { if(!obj) return; local subState = obj.sq_GetVectorData(datas, 0); obj.setSkillSubState(subState); obj.sq_StopMove(); switch(subState){ case 0://normal obj.sq_SetCurrentAnimation(ATPANI_BYKK_DUALSLASH_BODY); obj.sq_PlaySound("R_PW_DUALSLASH_01"); break; case 1: local ani = getCurrentAnimation_demonization(obj, "dualslash_demonization", false); obj.setCurrentAnimation(ani); obj.sq_PlaySound("PW_DUALSLASH_DM"); local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_DUALSLASH, -1, 0, 1.0) + obj.sq_GetBonusRateWithPassive(SKILL_BYKK_DUALSLASH, -1, 1, 1.0) + 200; sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, ATPRIESTATK_BYKK_DUALSLASH_SECOND)); sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage); break; } } function onEndCurrentAni_Dualslash(obj) { if(!obj) return; obj.sq_IntVectClear(); obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true); } function onProcCon_Dualslash(obj) { if(!obj) return; } function onKeyFrameFlag_Dualslash(obj, flagIndex) { if(!obj) return false; switch(flagIndex) { case 101: local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_DUALSLASH, -1, 0, 1.0) + 100; sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, ATPRIESTATK_BYKK_DUALSLASH_FIRST)); sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage); break; case 102: obj.sq_PlaySound("R_PW_DUALSLASH_02"); local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_DUALSLASH, -1, 1, 1.0) + 100; sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, ATPRIESTATK_BYKK_DUALSLASH_SECOND)); sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage); break; case 10001: obj.getVar("setCancelSkill").setBool(10, true); break; } return true; } function onTimeEvent_Dualslash(obj, timeEventIndex, timeEventCount) { if(!obj) return false; } function onEndState_Dualslash(obj, new_state) { if(!obj) return; } //斷頭台 function checkExecutableSkill_Pwguillotine(obj) { if (!obj) return false; if(obj.getState() == STATE_BYKK_DEPRAVITYSEVENSINS && obj.getSkillSubState() < 10) return false; local isUse = obj.sq_IsUseSkill(SKILL_BYKK_PWGUILLOTINE); if (isUse){ obj.getVar("PwguillotineTar").clear_obj_vector(); obj.getVar("PwguillotineTar_fix").clear_obj_vector(); obj.getVar("Pwguillotine_Bool").setBool(0, false); obj.getVar("Pwguillotine_Bool").setBool(1, false); obj.sq_IntVectClear(); if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)) obj.sq_IntVectPush(10); else obj.sq_IntVectPush(0); obj.sq_AddSetStatePacket(STATE_BYKK_PWGUILLOTINE, STATE_PRIORITY_IGNORE_FORCE, true); return true; } return false; } function checkCommandEnable_Pwguillotine(obj) { if (!obj) return false; return true; } function onSetState_Pwguillotine(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://normal obj.sq_SetCurrentAnimation(ATPANI_BYKK_GUILLOTINE_READY_BODY); obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0); obj.sq_PlaySound("PW_GUILLOTINE_01"); break; case 1://normal obj.sq_SetCurrentAnimation(ATPANI_BYKK_GUILLOTINE_SMASH); obj.sq_PlaySound("PW_GUILLOTINE_02"); break; case 2://normal obj.sq_SetCurrentAnimation(ATPANI_BYKK_GUILLOTINE_GRAB); local xPos = obj.getVar("Pwguillotine_Move").getInt(10), yPos = obj.getVar("Pwguillotine_Move").getInt(11), zPos = obj.getVar("Pwguillotine_Move").getInt(12); sq_setCurrentAxisPos(obj, 0, xPos); sq_setCurrentAxisPos(obj, 1, yPos); sq_setCurrentAxisPos(obj, 2, zPos); obj.sq_PlaySound("PW_GUILLOTINE_02"); break; case 10: local ani = getCurrentAnimation_demonization(obj, "guillotine_ready_demonization", false); obj.setCurrentAnimation(ani); obj.sq_PlaySound("PW_GUILLOTINE_DM_01"); break; case 11: local ani = getCurrentAnimation_demonization(obj, "guillotine_smash_demonization", false); obj.setCurrentAnimation(ani); obj.sq_PlaySound("PW_GUILLOTINE_DM_02"); obj.sq_PlaySound("BURSTSLASH_JUMP"); break; case 12: local ani = getCurrentAnimation_demonization(obj, "guillotine_grab_demonization", false); obj.setCurrentAnimation(ani); local xPos = obj.getVar("Pwguillotine_Move").getInt(10), yPos = obj.getVar("Pwguillotine_Move").getInt(11), zPos = obj.getVar("Pwguillotine_Move").getInt(12); sq_setCurrentAxisPos(obj, 0, xPos); sq_setCurrentAxisPos(obj, 1, yPos); sq_setCurrentAxisPos(obj, 2, zPos); obj.sq_PlaySound("PW_GUILLOTINE_DM_02"); break; } local bonus = 1, attackIndex = ATPRIESTATK_BYKK_GUILLOTINE_GRABTRY; if(subState != 0 && subState != 10) { bonus = 2; if(subState == 1) attackIndex = ATPRIESTATK_BYKK_GUILLOTINE_SMASH; else if(subState == 2) attackIndex = ATPRIESTATK_BYKK_GUILLOTINE_GRAB_FIRST; else if(subState == 11) attackIndex = ATPRIESTATK_BYKK_GUILLOTINE_SMASH; else attackIndex = ATPRIESTATK_BYKK_GUILLOTINE_GRAB_FIRST; } local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_PWGUILLOTINE, -1, bonus, 1.0) + 100; sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, attackIndex)); sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage); } function onEndCurrentAni_Pwguillotine(obj) { if(!obj) return; local subState = obj.getSkillSubState(); switch(subState){ case 0: case 10: obj.sq_IntVectClear(); if(obj.getVar("PwguillotineTar").get_obj_vector_size() < 1 && obj.getVar("PwguillotineTar_fix").get_obj_vector_size() < 1){ obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true); break; } if(sq_GetLevelData(obj, SKILL_BYKK_PWGUILLOTINE, 4, sq_GetSkillLevel(obj, SKILL_BYKK_PWGUILLOTINE)) > 0){ obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true); break; } if(subState == 0) obj.sq_IntVectPush(2); else obj.sq_IntVectPush(12); obj.sq_AddSetStatePacket(STATE_BYKK_PWGUILLOTINE, STATE_PRIORITY_AUTO, true); break; case 1: case 11: obj.sq_IntVectClear(); obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true); break; case 2: case 12: obj.sq_IntVectClear(); obj.sq_IntVectPush(1); obj.sq_IntVectPush(0); obj.sq_IntVectPush(sq_GetZPos(obj)); obj.sq_AddSetStatePacket(STATE_JUMP, STATE_PRIORITY_AUTO, true); break; } } function onProcCon_Pwguillotine(obj) { if(!obj) return; } function onKeyFrameFlag_Pwguillotine(obj, flagIndex) { if(!obj) return false; switch(flagIndex) { case 101: local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_PWGUILLOTINE, -1, 1, 1.0) + 100; sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, ATPRIESTATK_BYKK_GUILLOTINE_GRAB_SECOND)); sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage); break; case 102: sq_flashScreen(obj,10,100,20,51, sq_RGB(255,0,0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM); sq_SetMyShake(obj,2,100); break; case 10001: obj.getVar("setCancelSkill").setBool(10, true); break; } return true; } function onTimeEvent_Pwguillotine(obj, timeEventIndex, timeEventCount) { if(!obj) return false; } function onEndState_Pwguillotine(obj, new_state) { if(!obj) return; if(new_state != STATE_BYKK_PWGUILLOTINE){ local size = obj.getVar("PwguillotineTar").get_obj_vector_size(); if(size > 0){ for(local i = 0; i < size; i++){ local targetObj = obj.getVar("PwguillotineTar").get_obj_vector(i); if(targetObj) CNSquirrelAppendage.sq_RemoveAppendage(targetObj, PWGUILLOTINETE_APDPATH); } } } } function onAttack_Pwguillotine(obj, damager, boundingBox, isStuck) { if(!obj) return; local subState = obj.getSkillSubState(); switch(subState){ case 0: case 10: if(damager.isObjectType(OBJECTTYPE_ACTIVE)){ if(sq_IsHoldable(obj,damager) && !sq_IsFixture(damager) && sq_IsGrabable(obj,damager)){ if(obj.getVar("Pwguillotine_Bool").getBool(1) == false){ obj.getVar("Pwguillotine_Bool").setBool(1, true); obj.getVar("Pwguillotine_Move").setInt(10, sq_GetXPos(damager)); obj.getVar("Pwguillotine_Move").setInt(11, sq_GetYPos(damager)); obj.getVar("Pwguillotine_Move").setInt(12, sq_GetZPos(damager) + sq_GetObjectHeight(obj)); } if(!CNSquirrelAppendage.sq_IsAppendAppendage(damager, PWGUILLOTINETE_APDPATH)){ if(!obj.getVar("PwguillotineTar").is_obj_vector(damager)) obj.getVar("PwguillotineTar").push_obj_vector(damager); local addAppendage = CNSquirrelAppendage.sq_AppendAppendage(damager, obj, -1, false, PWGUILLOTINETE_APDPATH, true); sq_HoldAndDelayDie(damager, obj, true, true, true, 200, 200, ENUM_DIRECTION_NEUTRAL, addAppendage); } } else if(sq_IsFixture(damager)){ obj.sq_IntVectClear(); if(subState == 0) obj.sq_IntVectPush(1); else obj.sq_IntVectPush(11); obj.sq_AddSetStatePacket(STATE_BYKK_PWGUILLOTINE, STATE_PRIORITY_AUTO, true); } } break; } } //七宗罪 function checkExecutableSkill_Thesevendeadlysins(obj) { if (!obj) return false; if(obj.getState() == STATE_BYKK_DEPRAVITYSEVENSINS && obj.getSkillSubState() < 10) return false; local isUse = obj.sq_IsUseSkill(SKILL_BYKK_THESEVENDEADLYSINS); if (isUse){ obj.getVar("Thesevendeadlysins_Bool").setBool(0, false); obj.getVar("Thesevendeadlysins_Sub").setInt(10, 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_THESEVENDEADLYSINS, STATE_PRIORITY_IGNORE_FORCE, true); return true; } return false; } function checkCommandEnable_Thesevendeadlysins(obj) { if (!obj) return false; return true; } function onSetState_Thesevendeadlysins(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://normal obj.sq_SetCurrentAnimation(ATPANI_BYKK_THEDEADLYSINS_CAST); break; case 1: local ani = getCurrentAnimation_demonization(obj, "thedeadlysinsdemon_05", false); obj.setCurrentAnimation(ani); break; } } function onEndCurrentAni_Thesevendeadlysins(obj) { if(!obj) return; } function onProcCon_Thesevendeadlysins(obj) { if(!obj) return; local stateTime = obj.sq_GetStateTimer(); local currentAni = obj.getCurrentAnimation(); local delaySum = currentAni.getDelaySum(false); if(stateTime >= 5000) obj.setTimeEvent(0, 300, 1, true); if(stateTime >= delaySum / 2 && obj.getVar("Thesevendeadlysins_Bool").getBool(0) == false){ if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_LEFT, ENUM_SUBKEY_TYPE_ALL)) obj.getVar("Thesevendeadlysins_Sub").setInt(10, 1); else if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_UP, ENUM_SUBKEY_TYPE_ALL)) obj.getVar("Thesevendeadlysins_Sub").setInt(10, 2); else if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_RIGHT, ENUM_SUBKEY_TYPE_ALL)) obj.getVar("Thesevendeadlysins_Sub").setInt(10, 3); else if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_DOWN, ENUM_SUBKEY_TYPE_ALL)) obj.getVar("Thesevendeadlysins_Sub").setInt(10, 4); else if(sq_IsKeyDown(OPTION_HOTKEY_SKILL2, ENUM_SUBKEY_TYPE_ALL)) obj.getVar("Thesevendeadlysins_Sub").setInt(10, 5); if(obj.getVar("Thesevendeadlysins_Sub").getInt(10) > 0){ obj.getVar("Thesevendeadlysins_Bool").setBool(0, true); local sub = obj.getVar("Thesevendeadlysins_Sub").getInt(10); if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, THESEVENDEADLYSINS_APDPATH)) CNSquirrelAppendage.sq_RemoveAppendage(obj, THESEVENDEADLYSINS_APDPATH); if(sub == 5){ CNSquirrelAppendage.sq_RemoveAppendage(obj, THESEVENDEADLYSINS_APDPATH); local loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_THESEVENDEADLYSINS); if(loadSlot) obj.sq_RemoveSkillLoad(SKILL_BYKK_THESEVENDEADLYSINS); obj.setTimeEvent(0, 300, 1, false); return; } local AddAppendage = CNSquirrelAppendage.sq_AppendAppendage(obj, obj, SKILL_BYKK_THESEVENDEADLYSINS, false, THESEVENDEADLYSINS_APDPATH, true); local skillLevel = sq_GetSkillLevel(obj, SKILL_BYKK_THESEVENDEADLYSINS); local buffTime = sq_GetLevelData(obj, SKILL_BYKK_THESEVENDEADLYSINS, 21, skillLevel); if(buffTime > 0) AddAppendage.sq_SetValidTime(buffTime); AddAppendage.setEnableIsBuff(true); AddAppendage.setAppendCauseSkill(BUFF_CAUSE_SKILL, sq_getJob(obj), SKILL_BYKK_THESEVENDEADLYSINS, sq_GetSkillLevel(obj, SKILL_BYKK_THESEVENDEADLYSINS)); CNSquirrelAppendage.sq_Append(AddAppendage, obj, obj, true); local bufficonNum = 0; switch(sub){ case 1: bufficonNum = 152; break; case 2: bufficonNum = 154; break; case 3: bufficonNum = 153; break; case 4: bufficonNum = 155; break; } AddAppendage.setBuffIconImage(bufficonNum); AddAppendage.getVar("Sub").setInt(10, sub); setBuffEffect_Temptress(obj, AddAppendage, sub); obj.setTimeEvent(0, 300, 1, false); if(!CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)) sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atthedeadlysins/thedeadlysins_02.ani", 0, 1, 0); else{ for(local i = 1; i < 5; i++){ sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atthedeadlysins/thedeadlysinsdemon_0"+i.tostring()+".ani", 0, i, 0); } } local loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_THESEVENDEADLYSINS); if(!loadSlot){ local coolTime = sq_GetIntData(obj, SKILL_BYKK_THESEVENDEADLYSINS, 0); obj.sq_AddSkillLoad(SKILL_BYKK_THESEVENDEADLYSINS, 109, 0, coolTime); print(1); } } } } function onKeyFrameFlag_Thesevendeadlysins(obj, flagIndex) { if(!obj) return false; switch(flagIndex){ case 101: obj.sq_PlaySound("R_PW_SEVENSINS"); obj.sq_PlaySound("DEDLY_CAPE_CAST"); obj.sq_AddStateLayerAnimation(10001,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/atthedeadlysins/selecticon_01.ani"), -40, -50); obj.sq_AddStateLayerAnimation(10001,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/atthedeadlysins/selecticon_02.ani"), 40, -50); obj.sq_AddStateLayerAnimation(10001,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/atthedeadlysins/selecticon_03.ani"), 0, -90); obj.sq_AddStateLayerAnimation(10001,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/atthedeadlysins/selecticon_04.ani"), 0, -10); break; case 102: obj.sq_PlaySound("R_PW_SEVENSINS_DM"); obj.sq_PlaySound("DEDLY_CAPE_CAST"); break; } return true; } function onTimeEvent_Thesevendeadlysins(obj, timeEventIndex, timeEventCount) { if(!obj) return false; switch(timeEventIndex){ case 0: obj.sq_IntVectClear(); obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true); break; } } function onEndState_Thesevendeadlysins(obj, new_state) { if(!obj) return; } function onAfterSetState_PW_Throw(obj, state, datas, isResetTimer) { local skillIndex = obj.getThrowIndex(); if (skillIndex == SKILL_BYKK_THESEVENDEADLYSINS){ if (obj.getThrowState() == 0){ obj.setIsCustomSelectSkill(true); } else if (obj.getThrowState() == 1){ if (obj.isMyControlObject()){ print("1"); } } } } function setBuffEffect_Temptress(obj, appendage, sub) { if(sub < 1) return; obj = sq_GetCNRDObjectToSQRCharacter(obj); local skillLevel = sq_GetSkillLevel(obj, SKILL_BYKK_THESEVENDEADLYSINS); switch(sub){ case 1://贪食者的欲念 local hpmpRate = sq_GetLevelData(obj, SKILL_BYKK_THESEVENDEADLYSINS, 6, skillLevel); local attackRate = sq_GetLevelData(obj, SKILL_BYKK_THESEVENDEADLYSINS, 12, skillLevel); local change_appendage = appendage.sq_getChangeStatus("Thesevendeadlysins"); if(!change_appendage) change_appendage = appendage.sq_AddChangeStatus("Thesevendeadlysins",obj, obj, 0, CHANGE_STATUS_TYPE_PHYSICAL_ATTACK, true, 1000); if(change_appendage){ change_appendage.clearParameter(); change_appendage.addParameter(CHANGE_STATUS_TYPE_HP_MAX, false, (hpmpRate * -0.1).tofloat()); change_appendage.addParameter(CHANGE_STATUS_TYPE_MP_MAX, false, (hpmpRate * -0.1).tofloat()); change_appendage.addParameter(CHANGE_STATUS_TYPE_EQUIPMENT_PHYSICAL_ATTACK, true, (attackRate * 0.1).tofloat()); change_appendage.addParameter(CHANGE_STATUS_TYPE_EQUIPMENT_MAGICAL_ATTACK, true, (attackRate * 0.1).tofloat()); } break; case 2://浸染嫉妒的喜悦 local elemental_tol = sq_GetLevelData(obj, SKILL_BYKK_THESEVENDEADLYSINS, 2, skillLevel);//CHANGE_STATUS_TYPE_ELEMENT_TOLERANCE_ALL local elemental_attack = sq_GetLevelData(obj, SKILL_BYKK_THESEVENDEADLYSINS, 23, skillLevel); local change_appendage = appendage.sq_getChangeStatus("Thesevendeadlysins"); if(!change_appendage) change_appendage = appendage.sq_AddChangeStatus("Thesevendeadlysins",obj, obj, 0, CHANGE_STATUS_TYPE_PHYSICAL_ATTACK, true, 1000); if(change_appendage){ change_appendage.clearParameter(); change_appendage.addParameter(CHANGE_STATUS_TYPE_ELEMENT_TOLERANCE_ALL, false, (elemental_tol * 1).tofloat()); change_appendage.addParameter(CHANGE_STATUS_TYPE_ELEMENT_ATTACK_ALL, false, (elemental_attack * 1).tofloat()); } setSkillBonusRate_Temptress(obj); break; case 3://傲慢者的懒惰 local speedRate = sq_GetLevelData(obj, SKILL_BYKK_THESEVENDEADLYSINS, 8, skillLevel); local change_appendage = appendage.sq_getChangeStatus("Thesevendeadlysins"); if(!change_appendage) change_appendage = appendage.sq_AddChangeStatus("Thesevendeadlysins",obj, obj, 0, CHANGE_STATUS_TYPE_PHYSICAL_ATTACK, true, 1000); if(change_appendage){ change_appendage.clearParameter(); change_appendage.addParameter(CHANGE_STATUS_TYPE_ATTACK_SPEED, true, (speedRate * -0.1).tofloat()); change_appendage.addParameter(CHANGE_STATUS_TYPE_MOVE_SPEED, true, (speedRate * -0.1).tofloat()); } setSkillBonusRate_Temptress(obj); break; case 4://欲望溢满的愤怒 local defenseRate = sq_GetLevelData(obj, SKILL_BYKK_THESEVENDEADLYSINS, 4, skillLevel); local criticaldamageRate = sq_GetLevelData(obj, SKILL_BYKK_THESEVENDEADLYSINS, 22, skillLevel); local change_appendage = appendage.sq_getChangeStatus("Thesevendeadlysins"); if(!change_appendage) change_appendage = appendage.sq_AddChangeStatus("Thesevendeadlysins",obj, obj, 0, CHANGE_STATUS_TYPE_PHYSICAL_ATTACK, true, 1000); if(change_appendage){ change_appendage.clearParameter(); change_appendage.addParameter(CHANGE_STATUS_TYPE_PHYSICAL_DEFENSE, true, (defenseRate * -0.1).tofloat()); change_appendage.addParameter(CHANGE_STATUS_TYPE_EQUIPMENT_MAGICAL_DEFENSE , true, (defenseRate * -0.1).tofloat()); change_appendage.addParameter(CHANGE_STATUS_TYPE_MAGICAL_CRITICAL_DAMAGE_RATE, false, (criticaldamageRate * 0.1 / 0.667).tofloat()); } break; } } //欲望之手 function checkExecutableSkill_Lusthand(obj) { if (!obj) return false; if(obj.getState() == STATE_BYKK_DEPRAVITYSEVENSINS && obj.getSkillSubState() < 10) return false; local isUse = obj.sq_IsUseSkill(SKILL_BYKK_LUSTHAND); if (isUse){ // obj.getVar("lusthand_bosstar").clear_obj_vector(); // obj.getVar("lusthand_namedtar").clear_obj_vector(); // obj.getVar("lusthand_normaltar").clear_obj_vector(); obj.getVar("lusthand_tar").clear_obj_vector(); obj.sq_IntVectClear(); if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)) obj.sq_IntVectPush(10); else obj.sq_IntVectPush(0); obj.sq_AddSetStatePacket(STATE_BYKK_LUSTHAND, STATE_PRIORITY_IGNORE_FORCE, true); return true; } return false; } function checkCommandEnable_Lusthand(obj) { if (!obj) return false; return true; } function onSetState_Lusthand(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://normal obj.sq_SetCurrentAnimation(ATPANI_BYKK_LUSTHANDATK01_BODY); obj.sq_PlaySound("R_PW_LUSTHAND"); break; case 1://normal obj.sq_SetCurrentAnimation(ATPANI_BYKK_LUSTHANDATK02_BODY); local targetObj = obj.getVar("lusthand_tar").get_obj_vector(0); if(targetObj){ local dis = sq_Abs(sq_GetXPos(targetObj) - sq_GetXPos(obj)) - 50; if(dis < 60) dis = 0; sq_setCurrentAxisPos(obj, 0, sq_GetDistancePos(sq_GetXPos(obj), obj.getDirection(), dis)); sq_setCurrentAxisPos(obj, 1, sq_GetYPos(targetObj)); } break; case 2://normal obj.sq_SetCurrentAnimation(ATPANI_BYKK_LUSTHANDATK03BODY_BODY); local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_LUSTHAND, -1, 1, 1.0) + 100; sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, ATPRIESTATK_BYKK_LUSTHANDSWINGCUT)); sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage); break; case 3://normal obj.sq_SetCurrentAnimation(ATPANI_BYKK_LUSTHANDEND_BODY); break; case 10: local ani = getCurrentAnimation_demonization(obj, "lusthandatk01_demon", false); obj.setCurrentAnimation(ani); local sound = ["PW_LUSTHAND_DM_01","PW_LUSTHAND_DM_02","PW_LUSTHAND_DM_03"]; obj.sq_PlaySound(sound[sq_getRandom(0,2)]); break; case 11: local ani = getCurrentAnimation_demonization(obj, "lusthandatk03effa_demon", false); obj.setCurrentAnimation(ani); local targetObj = obj.getVar("lusthand_tar").get_obj_vector(0); if(targetObj){ local dis = sq_Abs(sq_GetXPos(targetObj) - sq_GetXPos(obj)) - 50; if(dis < 60) dis = 0; sq_setCurrentAxisPos(obj, 0, sq_GetDistancePos(sq_GetXPos(obj), obj.getDirection(), dis)); sq_setCurrentAxisPos(obj, 1, sq_GetYPos(targetObj)); } local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_LUSTHAND, -1, 1, 1.0) + 100; sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, ATPRIESTATK_BYKK_LUSTHANDSWINGCUT)); sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage); break; } obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0); // if(subState == 0 || subState == 10){ // local currentAni = obj.getCurrentAnimation(); // local delaySum = currentAni.getDelaySum(false); // obj.setTimeEvent(0, delaySum / 3, 1, false); // } } function onEndCurrentAni_Lusthand(obj) { if(!obj) return; local subState = obj.getSkillSubState(); switch(subState){ case 0: case 10: if(obj.getVar("lusthand_tar").get_obj_vector_size() > 0){ obj.sq_IntVectClear(); obj.sq_IntVectPush(subState + 1); obj.sq_AddSetStatePacket(STATE_BYKK_LUSTHAND, STATE_PRIORITY_AUTO, true); } else{ obj.sq_IntVectClear(); obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true); } break; case 1: obj.sq_IntVectClear(); obj.sq_IntVectPush(subState + 1); obj.sq_AddSetStatePacket(STATE_BYKK_LUSTHAND, STATE_PRIORITY_AUTO, true); break; case 2: case 11: obj.sq_IntVectClear(); obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true); break; } } function onProcCon_Lusthand(obj) { if(!obj) return; } function onKeyFrameFlag_Lusthand(obj, flagIndex) { if(!obj) return false; switch(flagIndex){ case 101: obj.sq_PlaySound("PW_LUSTHAND_DM_03"); obj.sq_PlaySound("DGUARDIAN_CATCH"); //`CreateClaw` 103 0 81 local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_LUSTHAND, -1, 0, 1.0) + 100; if(obj.isMyControlObject()) createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,103,0,81,obj.getDirection(),4,SKILL_BYKK_LUSTHAND,0,totalDamage,0,0,0,0,0,0,0); break; case 102: sq_flashScreen(obj,10,50,60,76, sq_RGB(0,0,0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM); break; case 103: sq_SetMyShake(obj, 2, 100); break; case 104: //`CreateClaw` 103 0 81 local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_LUSTHAND, -1, 0, 1.0) + 100; if(obj.isMyControlObject()) createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,103,0,81,obj.getDirection(),4,SKILL_BYKK_LUSTHAND,0,totalDamage,0,0,0,0,0,0,0); break; case 10001: obj.getVar("setCancelSkill").setBool(10, true); break; } return true; } function onTimeEvent_Lusthand(obj, timeEventIndex, timeEventCount) { if(!obj) return false; switch(timeEventIndex){ case 0: local objectManager = obj.getObjectManager(); local objectNumber = objectManager.getCollisionObjectNumber(); for (local i = 0; i < objectNumber; i++){ local object = objectManager.getCollisionObject(i); if (object && object.isObjectType(OBJECTTYPE_ACTIVE) && obj.isEnemy(object) && sq_Abs(sq_GetXPos(object) - sq_GetXPos(obj)) <= 400 && sq_Abs(sq_GetYPos(object) - sq_GetYPos(obj)) <= 30) { print(i); local activeObj = sq_GetCNRDObjectToActiveObject(object); if(sq_IsBoss(activeObj)) obj.getVar("lusthand_bosstar").push_obj_vector(activeObj); else if(sq_IsNamed(activeObj)) obj.getVar("lusthand_namedtar").push_obj_vector(activeObj); else obj.getVar("lusthand_normaltar").push_obj_vector(activeObj); } } local size1 = obj.getVar("lusthand_bosstar").get_obj_vector_size(); local size2 = obj.getVar("lusthand_namedtar").get_obj_vector_size(); local size3 = obj.getVar("lusthand_normaltar").get_obj_vector_size(); if(size1 > 0){ for(local i = 0; i < size1; i++){ local targetObj = obj.getVar("lusthand_bosstar").get_obj_vector(i); obj.getVar("lusthand_tar").push_obj_vector(targetObj); } } if(size2 > 0){ for(local i = 0; i < size2; i++){ local targetObj = obj.getVar("lusthand_namedtar").get_obj_vector(i); obj.getVar("lusthand_tar").push_obj_vector(targetObj); } } if(size3 > 0){ for(local i = 0; i < size3; i++){ local targetObj = obj.getVar("lusthand_normaltar").get_obj_vector(i); obj.getVar("lusthand_tar").push_obj_vector(targetObj); } } local targetObj = obj.getVar("lusthand_tar").get_obj_vector(0); sq_SendHitObjectPacket(obj,targetObj,0,0,75); break; } } function onEndState_Lusthand(obj, new_state) { if(!obj) return; if(new_state != STATE_BYKK_LUSTHAND){ local size = obj.getVar("lusthand_tar").get_obj_vector_size(); if(size > 0){ for(local i = 0; i < size; i++){ local targetObj = obj.getVar("lusthand_tar").get_obj_vector(i); if(targetObj){ CNSquirrelAppendage.sq_RemoveAppendage(targetObj, LUSTHAND_APDPATH); } } } sq_SimpleMoveToNearMovablePos(obj,300); } } //傲慢之堕 function checkExecutableSkill_Prideaccel(obj) { if (!obj) return false; if(obj.getState() == STATE_BYKK_DEPRAVITYSEVENSINS && obj.getSkillSubState() < 10) return false; local isUse = obj.sq_IsUseSkill(SKILL_BYKK_PRIDEACCEL); if (isUse){ obj.getVar("Prideaccel_Move").setBool(0, false); if(sq_GetLevelData(obj, SKILL_BYKK_PRIDEACCEL, 3, sq_GetSkillLevel(obj, SKILL_BYKK_PRIDEACCEL)) > 0) obj.getVar("Prideaccel_Bool").setBool(0, true); obj.sq_IntVectClear(); if(sq_GetZPos(obj) > 0) obj.sq_IntVectPush(4); else if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)) obj.sq_IntVectPush(1); else obj.sq_IntVectPush(0); obj.sq_AddSetStatePacket(STATE_BYKK_PRIDEACCEL, STATE_PRIORITY_IGNORE_FORCE, true); return true; } return false; } function checkCommandEnable_Prideaccel(obj) { if (!obj) return false; return true; } function onSetState_Prideaccel(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_PRIDEACCEL_START_BOBY); obj.sq_PlaySound("R_PW_PRIDEACCEL"); break; case 1: local ani = getCurrentAnimation_demonization(obj, "prideaccelmove01_boby", false); obj.setCurrentAnimation(ani); sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atprideaccel/prideaccelmove01_02.ani", 0, -1, 0); sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atprideaccel/prideaccelmove01_07.ani", 0, 1, 0); if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)) obj.sq_PlaySound("R_PW_PRIDEACCEL_DM"); break; case 2: sq_setCurrentAxisPos(obj, 2, 0); local ani = getCurrentAnimation_demonization(obj, "prideaccelmove02_boby", false); obj.setCurrentAnimation(ani); sq_flashScreen(obj,30,50,60,102, sq_RGB(0,0,0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM); sq_SetMyShake(obj,4,200); //CreateShockWave local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_PRIDEACCEL, -1, 0, 1.0) + 100; local sizeRate = sq_GetLevelData(obj, SKILL_BYKK_PRIDEACCEL, 2, sq_GetSkillLevel(obj, SKILL_BYKK_PRIDEACCEL)); if(obj.isMyControlObject()) createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,0,0,0,obj.getDirection(),4,SKILL_BYKK_PRIDEACCEL,0,totalDamage,sizeRate,0,0,0,0,0,0); sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atprideaccel/prideaccelmove02_02.ani", 0, 1, 0); break; case 3: obj.sq_SetCurrentAnimation(ATPANI_BYKK_PRIDEACCEL_END_BOBY); sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atprideaccel/prideaccel_end_01.ani", 0, 1, 0); sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atprideaccel/prideaccel_end_03.ani", 0, -1, 0); break; case 4: local ani = getCurrentAnimation_demonization(obj, "prideaccelmove01_air_boby", false); obj.setCurrentAnimation(ani); sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atprideaccel/prideaccelmove01_air_02.ani", 0, -1, 0); sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atprideaccel/prideaccelmove01_air_07.ani", 0, 1, 0); obj.sq_PlaySound("R_PW_PRIDEACCEL_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_Prideaccel(obj) { if(!obj) return; local subState = obj.getSkillSubState(); switch(subState){ case 0: case 1: if(subState == 0) sq_setCurrentAxisPos(obj, 2, 125); obj.sq_IntVectClear(); obj.sq_IntVectPush(subState + 1); obj.sq_AddSetStatePacket(STATE_BYKK_PRIDEACCEL, STATE_PRIORITY_AUTO, true); break; case 2: 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(subState + 1); obj.sq_AddSetStatePacket(STATE_BYKK_PRIDEACCEL, STATE_PRIORITY_AUTO, true); } break; case 3: obj.sq_IntVectClear(); obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true); break; case 4: obj.sq_IntVectClear(); obj.sq_IntVectPush(2); obj.sq_AddSetStatePacket(STATE_BYKK_PRIDEACCEL, STATE_PRIORITY_AUTO, true); break; } } function onProcCon_Prideaccel(obj) { if(!obj) return; local subState = obj.getSkillSubState(); switch(subState){ case 1: case 4: if(obj.getVar("Prideaccel_Move").getBool(0) == false){ if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_LEFT, ENUM_SUBKEY_TYPE_ALL)){ obj.getVar("Prideaccel_Move").setBool(0, true); if(obj.isMovablePos(sq_GetXPos(obj) - 200, sq_GetYPos(obj))) sq_setCurrentAxisPos(obj, 0, sq_GetXPos(obj) - 200); if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_UP, ENUM_SUBKEY_TYPE_ALL)){ sq_setCurrentAxisPos(obj, 1, sq_GetYPos(obj) - 50); } else if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_UP, ENUM_SUBKEY_TYPE_ALL)){ sq_setCurrentAxisPos(obj, 1, sq_GetYPos(obj) + 50); } } else if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_RIGHT, ENUM_SUBKEY_TYPE_ALL)){ obj.getVar("Prideaccel_Move").setBool(0, true); if(obj.isMovablePos(sq_GetXPos(obj) + 200, sq_GetYPos(obj))) sq_setCurrentAxisPos(obj, 0, sq_GetXPos(obj) + 200); if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_UP, ENUM_SUBKEY_TYPE_ALL)){ sq_setCurrentAxisPos(obj, 1, sq_GetYPos(obj) - 50); } else if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_UP, ENUM_SUBKEY_TYPE_ALL)){ sq_setCurrentAxisPos(obj, 1, sq_GetYPos(obj) + 50); } } } break; } 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_Prideaccel(obj, flagIndex) { if(!obj) return false; switch(flagIndex){ case 101: local add_number = sq_GetLevelData(obj, SKILL_BYKK_PRIDEACCEL, 3, sq_GetSkillLevel(obj, SKILL_BYKK_PRIDEACCEL)); if(add_number > 0){ local loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_THESEVENDEADLYSINS); if(loadSlot){ local loadnumber = loadSlot.getRemainLoadNumber(); if(loadnumber >= add_number && obj.getVar("Prideaccel_Bool").getBool(0)){ obj.getVar("Prideaccel_Bool").setBool(0, false); loadSlot.decreaseLoadCount(1); obj.sq_IntVectClear(); obj.sq_IntVectPush(2); obj.sq_AddSetStatePacket(STATE_BYKK_PRIDEACCEL, STATE_PRIORITY_AUTO, true); break; } } } break; case 10001: obj.getVar("setCancelSkill").setBool(10, true); break; } return true; } function onTimeEvent_Prideaccel(obj, timeEventIndex, timeEventCount) { if(!obj) return false; } function onEndState_Prideaccel(obj, new_state) { if(!obj) return; if(new_state != STATE_BYKK_PRIDEACCEL){ sq_SimpleMoveToNearMovablePos(obj, 200); } } //屠戮回旋斩 function checkExecutableSkill_Rollingrush(obj) { if (!obj) return false; if(obj.getState() == STATE_BYKK_DEPRAVITYSEVENSINS && obj.getSkillSubState() < 10) return false; local isUse = obj.sq_IsUseSkill(SKILL_BYKK_ROLLINGRUSH); if (isUse){ obj.getVar("Rollingrush_Bool").setBool(0, false); obj.getVar("Rollingrush_Bool").setBool(1, false); if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)) obj.getVar("Rollingrush_Bool").setBool(0, true); obj.sq_IntVectClear(); if(sq_GetZPos(obj) > 0) obj.sq_IntVectPush(1); else if(sq_GetLevelData(obj, SKILL_BYKK_ROLLINGRUSH, 4, sq_GetSkillLevel(obj, SKILL_BYKK_ROLLINGRUSH)) > 0) obj.sq_IntVectPush(5); else obj.sq_IntVectPush(0); obj.sq_AddSetStatePacket(STATE_BYKK_ROLLINGRUSH, STATE_PRIORITY_IGNORE_FORCE, true); return true; } return false; } function checkCommandEnable_Rollingrush(obj) { if (!obj) return false; return true; } function onSetState_Rollingrush(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("Rollingrush_Bool").getBool(0)){ local ani = getCurrentAnimation_demonization(obj, "atrollingrush_d_ready_body", false); obj.setCurrentAnimation(ani); } else{ obj.sq_SetCurrentAnimation(ATPANI_BYKK_ATROLLINGRUSH_READY_BODY); obj.sq_PlaySound("PW_ROLLINGRUSH_01_2"); } local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_ROLLINGRUSH, -1, 0, 1.0) + 100; sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, ATPRIESTATK_BYKK_ROLLINGRUSH)); sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage); break; case 1: if(obj.getVar("Rollingrush_Bool").getBool(0)){ local ani = getCurrentAnimation_demonization(obj, "atrollingrush_d_hit_01_body", false); obj.setCurrentAnimation(ani); } else obj.sq_SetCurrentAnimation(ATPANI_BYKK_ATROLLINGRUSH_HIT_01_BODY); obj.resetHitObjectList(); break; case 2: if(obj.getVar("Rollingrush_Bool").getBool(0)){ local ani = getCurrentAnimation_demonization(obj, "atrollingrush_d_hit_02_body", false); obj.setCurrentAnimation(ani); } else obj.sq_SetCurrentAnimation(ATPANI_BYKK_ATROLLINGRUSH_HIT_02_BODY); obj.resetHitObjectList(); break; case 3: if(obj.getVar("Rollingrush_Bool").getBool(0)){ local ani = getCurrentAnimation_demonization(obj, "atrollingrush_d_spin_end_body", false); obj.setCurrentAnimation(ani); } else obj.sq_SetCurrentAnimation(ATPANI_BYKK_ATROLLINGRUSH_SPIN_END_BODY); break; case 4: if(obj.getVar("Rollingrush_Bool").getBool(0)){ local ani = getCurrentAnimation_demonization(obj, "atrollingrush_d_landing_body", false); obj.setCurrentAnimation(ani); } else obj.sq_SetCurrentAnimation(ATPANI_BYKK_ATROLLINGRUSH_LANDING_BODY); break; case 5: if(obj.getVar("Rollingrush_Bool").getBool(0)){ local ani = getCurrentAnimation_demonization(obj, "atrollingrush_d_finish_body", false); obj.setCurrentAnimation(ani); obj.sq_PlaySound("PW_ROLLINGRUSH_DM_02"); } else{ obj.sq_SetCurrentAnimation(ATPANI_BYKK_ATROLLINGRUSH_FINISH_BODY); obj.sq_PlaySound("PW_ROLLINGRUSH_02_2"); } local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_ROLLINGRUSH, -1, 1, 1.0) + 100; sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, ATPRIESTATK_BYKK_ROLLINGRUSHFINSH)); sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage); sq_flashScreen(obj,0,10,100,38, sq_RGB(255,255,255), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM); sq_SetMyShake(obj,4,200); break; } local speed = 1.0 + sq_GetLevelData(obj, SKILL_BYKK_ROLLINGRUSH, 3, sq_GetSkillLevel(obj, SKILL_BYKK_ROLLINGRUSH)) / 100.0; obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, speed, speed); if(obj.getVar("Rollingrush_Bool").getBool(1) == false && subState == 1){ obj.getVar("Rollingrush_Bool").setBool(1, true); local currentAni = obj.getCurrentAnimation(); local delay = currentAni.getDelaySum(0, 0); if(delay <= 5) delay = 5; obj.getVar("Rollingrush").setInt(10, delay); local hitMax = sq_GetLevelData(obj, SKILL_BYKK_ROLLINGRUSH, 2, sq_GetSkillLevel(obj, SKILL_BYKK_ROLLINGRUSH)); obj.getVar("Rollingrush").setInt(11, hitMax); obj.getVar("Rollingrush").setInt(13, hitMax * 3 / 2 * 5 + 10); if(sq_GetZPos(obj) <= 0) obj.setTimeEvent(0, delay / 5, obj.getVar("Rollingrush").getInt(13), true); else{ obj.getVar("Rollingrush").setInt(12, sq_GetZPos(obj)); obj.getVar("Rollingrush").setInt(13, hitMax * 3 * 5); obj.setTimeEvent(1, delay / 5, hitMax * 3 * 5, true); } } if(subState == 1 || subState == 2){ local speed = 100 * obj.getVar("Rollingrush").getInt(10) / 60.0; if(obj.getDirection() == ENUM_DIRECTION_RIGHT) sq_SetVelocity(obj, 0, speed); else sq_SetVelocity(obj, 0, -speed); } else if(subState == 3){ if(obj.getDirection() == ENUM_DIRECTION_RIGHT) sq_SetVelocity(obj, 0, 200.0); else sq_SetVelocity(obj, 0, -200.0); } } function onEndCurrentAni_Rollingrush(obj) { if(!obj) return; local subState = obj.getSkillSubState(); switch(subState){ case 0: case 3: case 4: obj.sq_IntVectClear(); obj.sq_IntVectPush(subState + 1); obj.sq_AddSetStatePacket(STATE_BYKK_ROLLINGRUSH, STATE_PRIORITY_AUTO, true); break; case 5: obj.sq_IntVectClear(); obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true); break; case 1: case 2: if(obj.getVar("Rollingrush").getInt(11) <= 0){ obj.sq_IntVectClear(); obj.sq_IntVectPush(3); obj.sq_AddSetStatePacket(STATE_BYKK_ROLLINGRUSH, STATE_PRIORITY_AUTO, true); break; } else{ obj.getVar("Rollingrush").setInt(11, obj.getVar("Rollingrush").getInt(11) - 1); obj.sq_IntVectClear(); if(subState == 1) obj.sq_IntVectPush(2); else obj.sq_IntVectPush(1); obj.sq_AddSetStatePacket(STATE_BYKK_ROLLINGRUSH, STATE_PRIORITY_AUTO, true); } break; } } function onProcCon_Rollingrush(obj) { if(!obj) return; local subState = obj.getSkillSubState(); switch(subState){ case 1: case 2: if((sq_IsKeyDown(OPTION_HOTKEY_MOVE_RIGHT, ENUM_SUBKEY_TYPE_ALL) && obj.getDirection() == ENUM_DIRECTION_RIGHT) || (sq_IsKeyDown(OPTION_HOTKEY_MOVE_LEFT, ENUM_SUBKEY_TYPE_ALL) && obj.getDirection() == ENUM_DIRECTION_LEFT)){ local speed = 300 * obj.getVar("Rollingrush").getInt(10) / 60.0; if(obj.getDirection() == ENUM_DIRECTION_RIGHT) sq_SetVelocity(obj, 0, speed); else sq_SetVelocity(obj, 0, -speed); } break; } } function onKeyFrameFlag_Rollingrush(obj, flagIndex) { if(!obj) return false; switch(flagIndex){ case 10001: obj.getVar("setCancelSkill").setBool(10, true); break; } return true; } function onTimeEvent_Rollingrush(obj, timeEventIndex, timeEventCount) { if(!obj) return false; switch(timeEventIndex){ case 0: local hitMax = sq_GetIntData(obj, SKILL_BYKK_ROLLINGRUSH, 0); local v = sq_GetAccel(0, 123, timeEventCount, obj.getVar("Rollingrush").getInt(13), true); sq_setCurrentAxisPos(obj, 2, v); if(timeEventCount >= obj.getVar("Rollingrush").getInt(13)){ local delay = obj.getVar("Rollingrush").getInt(10); obj.getVar("Rollingrush").setInt(12, sq_GetZPos(obj)); obj.setTimeEvent(1, delay / 5, obj.getVar("Rollingrush").getInt(13), true); } break; case 1: local hitMax = sq_GetIntData(obj, SKILL_BYKK_ROLLINGRUSH, 0); local v = sq_GetAccel(obj.getVar("Rollingrush").getInt(12), 0, timeEventCount, obj.getVar("Rollingrush").getInt(13), false); sq_setCurrentAxisPos(obj, 2, v); break; } } function onEndState_Rollingrush(obj, new_state) { if(!obj) return; } //怠惰之息 function checkExecutableSkill_Slothbody(obj) { if (!obj) return false; if(obj.getState() == STATE_BYKK_DEPRAVITYSEVENSINS && obj.getSkillSubState() < 10) return false; local isUse = obj.sq_IsUseSkill(SKILL_BYKK_SLOTHBODY); if (isUse){ obj.getVar("Slothbody_ani").clear_obj_vector(); obj.sq_IntVectClear(); local sub = sq_GetLevelData(obj, SKILL_BYKK_SLOTHBODY, 4, sq_GetSkillLevel(obj, SKILL_BYKK_SLOTHBODY)); if(sub > 0 && sub < 100) obj.sq_IntVectPush(1); else obj.sq_IntVectPush(0); obj.sq_AddSetStatePacket(STATE_BYKK_SLOTHBODY, STATE_PRIORITY_IGNORE_FORCE, true); return true; } return false; } function checkCommandEnable_Slothbody(obj) { if (!obj) return false; return true; } function onSetState_Slothbody(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://SLOTHBODY_APDPATH local ani = getCurrentAnimation_demonization(obj, "slothbodystep1_body", false); obj.setCurrentAnimation(ani); local AddAppendage = CNSquirrelAppendage.sq_AppendAppendage(obj, obj, SKILL_BYKK_SLOTHBODY, false, SLOTHBODY_APDPATH, true); local skillLevel = sq_GetSkillLevel(obj, SKILL_BYKK_SLOTHBODY); local allTolerance = sq_GetLevelData(obj, SKILL_BYKK_SLOTHBODY, 2, skillLevel); local change_appendage = AddAppendage.sq_getChangeStatus("Slothbody"); if(!change_appendage) change_appendage = AddAppendage.sq_AddChangeStatus("Slothbody",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, (allTolerance * 1).tofloat()); } obj.getVar("Slothbody_Bool").setBool(0, true); obj.setTimeEvent(0, 100, 1, false); obj.sq_PlaySound("R_PW_SLOTHBODY_01"); local range = 270, speed = 350; if(sq_GetSkillLevel(obj, SKILL_BYKK_ORIGINALSIN) > 0){ range = range * sq_GetLevelData(obj, SKILL_BYKK_ORIGINALSIN, 2, sq_GetSkillLevel(obj, SKILL_BYKK_ORIGINALSIN)) / 100; speed = speed * sq_GetLevelData(obj, SKILL_BYKK_ORIGINALSIN, 1, sq_GetSkillLevel(obj, SKILL_BYKK_ORIGINALSIN)) / 100; obj.sq_AddStateLayerAnimation(-1001,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/atslothbody/lv95atoriginalsin/atslothbodylv95atoriginalsinpullbottom_05.ani"), 0, 0); obj.sq_AddStateLayerAnimation(10001,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/atslothbody/lv95atoriginalsin/atslothbodylv95atoriginalsinpullfront_07.ani"), 0, 0); } local appendage = sq_AttractToMe(obj, range, 100, speed); obj.getVar("Slothbody").setAppendage(0,appendage);//设置ap break; case 1: obj.removeAllTimeEvent(); local appendage = obj.getVar("Slothbody").getAppendage(0); if(appendage) appendage.setValid(false); local aniSet = "slothbodyfinish_body"; if(sq_GetSkillLevel(obj, SKILL_BYKK_ORIGINALSIN) > 0) aniSet = "atslothbodylv95atoriginalsinattackbodydemon_00"; local ani = getCurrentAnimation_demonization(obj, aniSet, false); obj.setCurrentAnimation(ani); obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0); CNSquirrelAppendage.sq_RemoveAppendage(obj, SLOTHBODY_APDPATH); local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_SLOTHBODY, -1, 2, 1.0) + 100; sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, ATPRIESTATK_BYKK_SLOTHBODYATTACK)); sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage); local size = obj.getVar("Slothbody_ani").get_obj_vector_size(); if(size > 0){ for(local i = 0; i < size; i++){ local aniObj = obj.getVar("Slothbody_ani").get_obj_vector(i); if(aniObj) aniObj.setValid(false); } } obj.sq_PlaySound("R_PW_SLOTHBODY_02"); break; } } function onEndCurrentAni_Slothbody(obj) { if(!obj) return; local subState = obj.getSkillSubState(); switch(subState){ case 0: if(sq_GetLevelData(obj, SKILL_BYKK_SLOTHBODY, 4, sq_GetSkillLevel(obj, SKILL_BYKK_SLOTHBODY)) >= 100){ 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_SLOTHBODY, STATE_PRIORITY_AUTO, true); break; case 1: obj.sq_IntVectClear(); obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true); break; } } function onProcCon_Slothbody(obj) { if(!obj) return; local subState = obj.getSkillSubState(); switch(subState){ case 0: local sub = sq_GetLevelData(obj, SKILL_BYKK_SLOTHBODY, 4, sq_GetSkillLevel(obj, SKILL_BYKK_SLOTHBODY)); if(obj.getVar("Slothbody_Bool").getBool(0) && sub < 100){ obj.setSkillCommandEnable(SKILL_BYKK_SLOTHBODY,true); sq_SetKeyxEnable(obj, E_SKILL_COMMAND, true); sq_SetKeyxEnable(obj, E_JUMP_COMMAND, true); local b_useskill = obj.sq_IsEnterSkill(SKILL_BYKK_SLOTHBODY); if(b_useskill != -1 || sq_IsEnterCommand(obj, E_SKILL_COMMAND)){ obj.getVar("Slothbody_Bool").setBool(0, false); obj.sq_IntVectClear(); obj.sq_IntVectPush(1); obj.sq_AddSetStatePacket(STATE_BYKK_SLOTHBODY, STATE_PRIORITY_AUTO, true); break; } else if(sq_IsEnterCommand(obj, E_JUMP_COMMAND)){ obj.getVar("Slothbody_Bool").setBool(0, false); obj.sq_IntVectClear(); obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true); break; } } else if(sub >= 100){ if(!sq_GetSkill(obj, SKILL_BYKK_GREEDTHELURKER).isInCoolTime()){ obj.setSkillCommandEnable(SKILL_BYKK_GREEDTHELURKER, true); local b_useskill = obj.sq_IsEnterSkill(SKILL_BYKK_GREEDTHELURKER); if(b_useskill != -1){ local skillLevel = sq_GetSkillLevel(obj, SKILL_BYKK_GREEDTHELURKER); obj.startSkillCoolTime(SKILL_BYKK_GREEDTHELURKER, skillLevel, -1); local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_GREEDTHELURKER, -1, 0, 1.0) + 100; 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; } } if(!sq_GetSkill(obj, SKILL_BYKK_HEAVYSIN).isInCoolTime()){ obj.setSkillCommandEnable(SKILL_BYKK_HEAVYSIN, true); local b_useskill = obj.sq_IsEnterSkill(SKILL_BYKK_HEAVYSIN); if(b_useskill != -1){ obj.startSkillCoolTime(SKILL_BYKK_HEAVYSIN, sq_GetSkillLevel(obj, SKILL_BYKK_HEAVYSIN), -1); obj.sq_PlaySound("HEAVYSIN"); local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_HEAVYSIN, -1, 0, 1.0) + 100; local sizeRate = sq_GetIntData(obj, SKILL_BYKK_HEAVYSIN, 0); local sub = 0; local AddAppendage = CNSquirrelAppendage.sq_GetAppendage(obj, THESEVENDEADLYSINS_APDPATH); if(AddAppendage && AddAppendage.getVar("Sub").getInt(10) == 3){ sub = 1; local skillLevel = sq_GetSkillLevel(obj, SKILL_BYKK_HEAVYSIN); local prob = sq_GetLevelData(obj, SKILL_BYKK_HEAVYSIN, 1, skillLevel); local level = sq_GetLevelData(obj, SKILL_BYKK_HEAVYSIN, 2, skillLevel); local time = sq_GetLevelData(obj, SKILL_BYKK_HEAVYSIN, 3, skillLevel); local speedRate = sq_GetLevelData(obj, SKILL_BYKK_HEAVYSIN, 4, skillLevel); local speedRate2 = sq_GetLevelData(obj, SKILL_BYKK_HEAVYSIN, 5, skillLevel); if(obj.isMyControlObject()){ local add_number = sq_GetLevelData(obj, SKILL_BYKK_HEAVYSIN, 6, sq_GetSkillLevel(obj, SKILL_BYKK_HEAVYSIN)); if(add_number > 0){ local loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_THESEVENDEADLYSINS); local loadnumber = loadSlot.getRemainLoadNumber(); if(loadnumber > add_number){ createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,175,-20,0,obj.getDirection(),0,SKILL_BYKK_HEAVYSIN,0,totalDamage,sizeRate,sub,prob,level,time,speedRate,speedRate2); createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,175,20,0,obj.getDirection(),0,SKILL_BYKK_HEAVYSIN,0,totalDamage,sizeRate,sub,prob,level,time,speedRate,speedRate2); } else createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,175,0,0,obj.getDirection(),0,SKILL_BYKK_HEAVYSIN,0,totalDamage,sizeRate,sub,prob,level,time,speedRate,speedRate2); } else{ createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,175,0,0,obj.getDirection(),0,SKILL_BYKK_HEAVYSIN,0,totalDamage,sizeRate,sub,prob,level,time,speedRate,speedRate2); } } break; } else if(obj.isMyControlObject()) createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,175,0,0,obj.getDirection(),0,SKILL_BYKK_HEAVYSIN,0,totalDamage,sizeRate,0,0,0,0,0,0); local buffCount = sq_GetLevelData(obj, SKILL_BYKK_HEAVYSIN, 9, sq_GetSkillLevel(obj, SKILL_BYKK_HEAVYSIN)); if(buffCount > 0){ local addAppendage = CNSquirrelAppendage.sq_GetAppendage(obj, HEAVYSINBUFF_APDPATH); if(!addAppendage){ addAppendage = CNSquirrelAppendage.sq_AppendAppendage(obj, obj, -1, false, HEAVYSINBUFF_APDPATH, true); } addAppendage.sq_SetValidTime(10000); addAppendage.setEnableIsBuff(true); addAppendage.setAppendCauseSkill(BUFF_CAUSE_SKILL, sq_getJob(obj), SKILL_BYKK_HEAVYSIN, sq_GetSkillLevel(obj, SKILL_BYKK_HEAVYSIN)); CNSquirrelAppendage.sq_Append(addAppendage, obj, obj, true); if(addAppendage.getVar("buffCount").getInt(10) >= buffCount) break; addAppendage.getVar("buffCount").setInt(10, addAppendage.getVar("buffCount").getInt(10) + 1); setSkillBonusRate_Temptress(obj); } break; } } 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; } } 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_Slothbody(obj, flagIndex) { if(!obj) return false; switch(flagIndex){ case 101: sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atslothbody/slothbodystep1_smoke1.ani", 0, -1, 0); break; case 102: sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atslothbody/slothbodyfinish_atkleaf.ani", 0, 1, 0); sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atslothbody/slothbodyfinish_atk.ani", 0, 1, 0); sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atslothbody/slothbodyfinish_dust.ani", 0, 1, 0); sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atslothbody/slothbodyfinish_backshock2.ani", 0, 1, 0); sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atslothbody/slothbodyfinish_backshock1.ani", 0, 1, 0); sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atslothbody/slothbodyfinish_circle.ani", 0, 1, 0); sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atslothbody/slothbodyfinish_shockwave.ani", 0, 1, 0); sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atslothbody/slothbodyfinish_scytheshadow.ani", 0, 1, 0); sq_flashScreen(obj,10,80,100,102, sq_RGB(0,0,0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM); sq_SetMyShake(obj,4,300); break; case 103: sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atslothbody/slothbodyfinish_roseleaf.ani", 0, -1, 0); sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atslothbody/slothbodyfinish_smoke1.ani", 0, 1, 0); break; case 201: createOnlyDrawObject_ATPriest_bykk(obj,"character/swordman/effect/animation/1_atpriest_bykk/atslothbody/lv95atoriginalsin/atslothbodylv95atoriginalsinattackbottom_13.ani",true,obj.getDirection(),sq_GetXPos(obj),sq_GetYPos(obj),0,ENUM_DRAWLAYER_BOTTOM); sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atslothbody/lv95atoriginalsin/atslothbodylv95atoriginalsinattackfront_16.ani", 0, 1, 0); sq_flashScreen(obj,20,160,40,134, sq_RGB(0,0,0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM); sq_SetMyShake(obj, 7, 340); local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_SLOTHBODY, -1, 2, 1.0) + 100; local sizeRate = 100; if(obj.isMyControlObject()) createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,0,0,0,obj.getDirection(),4,SKILL_BYKK_SLOTHBODY,0,totalDamage,sizeRate,0,0,0,0,0,0); break; case 202://cancel obj.getVar("setCancelSkill").setBool(10, true); break; case 10001: obj.getVar("setCancelSkill").setBool(10, true); break; } return true; } function onTimeEvent_Slothbody(obj, timeEventIndex, timeEventCount) { if(!obj) return false; switch(timeEventIndex){ case 0: obj.sq_AddStateLayerAnimation(-1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/atslothbody/slothbodypull_01.ani"), 0, 0); obj.setTimeEvent(1, 500, -1, true); break; case 1: local pooledObj = createOnlyDrawObject_ATPriest_bykk(obj,"character/swordman/effect/animation/1_atpriest_bykk/atslothbody/slothbodypull_floor.ani",true,obj.getDirection(),sq_GetXPos(obj),sq_GetYPos(obj),0,ENUM_DRAWLAYER_BOTTOM); obj.getVar("Slothbody_ani").push_obj_vector(pooledObj); break; } } function onEndState_Slothbody(obj, new_state) { if(!obj) return; if(new_state != STATE_BYKK_SLOTHBODY){ local appendage = obj.getVar("Slothbody").getAppendage(0); if(appendage) appendage.setValid(false); } } function getImmuneTypeDamageRate_appendage_SlothBody(appendage, damageRate, attacker) { if(!appendage) return damageRate; local parentObj = appendage.getParent(); parentObj = sq_GetCNRDObjectToSQRCharacter(parentObj); if (!parentObj) { appendage.setValid(false); return damageRate; } local newdamageRate = (100 - sq_GetLevelData(parentObj, SKILL_BYKK_SLOTHBODY, 1, sq_GetSkillLevel(parentObj, SKILL_BYKK_SLOTHBODY))); return newdamageRate; } //诱魔之手 function checkExecutableSkill_Handawakentosin(obj) { if (!obj) return false; if(obj.getState() == STATE_BYKK_DEPRAVITYSEVENSINS && obj.getSkillSubState() < 10) return false; local isUse = obj.sq_IsUseSkill(SKILL_BYKK_HANDAWAKENTOSIN); 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_HANDAWAKENTOSIN, STATE_PRIORITY_IGNORE_FORCE, true); return true; } return false; } function checkCommandEnable_Handawakentosin(obj) { if (!obj) return false; return true; } function onSetState_Handawakentosin(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: local ani = getCurrentAnimation_demonization(obj, "handawakentosin_human2devil_body", false); obj.setCurrentAnimation(ani); obj.sq_PlaySound("PW_HANDAWAKENTOSIN"); sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/athandawakentosin/handawakentosin_human2devil_greedready_eff_a.ani", 0, 1, 0); sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/athandawakentosin/handawakentosin_human2devil_greedready_eff_d.ani", 0, 0, 0); break; case 1: local ani = getCurrentAnimation_demonization(obj, "handawakentosin_skill_body_a", false); obj.setCurrentAnimation(ani); local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_HANDAWAKENTOSIN, -1, 0, 1.0) + 100; sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, ATPRIESTATK_BYKK_HANDAWAKENTOSIN)); sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage); if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)) obj.sq_PlaySound("PW_HANDAWAKENTOSIN_DM"); break; case 2: local ani = getCurrentAnimation_demonization(obj, "handawakentosin_skill_body_b", false); obj.setCurrentAnimation(ani); break; case 3: local ani = getCurrentAnimation_demonization(obj, "handawakentosin_devil2human_body", false); obj.setCurrentAnimation(ani); sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/athandawakentosin/handawakentosin_devil2human_greedready_eff_a_e.ani", 0, 1, 0); sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/athandawakentosin/handawakentosin_devil2human_greedready_eff_d_e.ani", 0, 0, 0); break; } obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0); } function onEndCurrentAni_Handawakentosin(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_HANDAWAKENTOSIN, 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_HANDAWAKENTOSIN, STATE_PRIORITY_AUTO, true); break; } case 3: obj.sq_IntVectClear(); obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true); break; } } function onProcCon_Handawakentosin(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_Handawakentosin(obj, flagIndex) { if(!obj) return false; switch(flagIndex){ case 104: sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/athandawakentosin/handawakentosin_skill_slash_nor2.ani", 0, 1, 0); sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/athandawakentosin/handawakentosin_skill_slash_nor1.ani", 0, 0, 0); break; case 105: sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/athandawakentosin/handawakentosin_skill_absorption.ani", 0, 1, 0); obj.sq_PlaySound("HOLD_GO_FINGER"); obj.sq_PlaySound("SCUDWRATH_END"); sq_flashScreen(obj,0,80,160,107, sq_RGB(0,0,0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM); sq_SetMyShake(obj,6,300); local size = obj.getVar("Handawakentosin_EXP").get_obj_vector_size(); print("size = "+size); if(size > 0){ for(local i = 0; i < size; i++){ local attackObj = obj.getVar("Handawakentosin_EXP").get_obj_vector(i); if(attackObj){ local colObj = sq_GetCNRDObjectToCollisionObject(attackObj); colObj.addSetStatePacket(21, null, STATE_PRIORITY_AUTO, false, ""); } } } local loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_THESEVENDEADLYSINS); if(loadSlot){ local loadnumber = loadSlot.getRemainLoadNumber(); local increaseCount = sq_GetLevelData(obj, SKILL_BYKK_HANDAWAKENTOSIN, 2, sq_GetSkillLevel(obj, SKILL_BYKK_HANDAWAKENTOSIN)); local loadMax = sq_GetLevelData(obj, SKILL_BYKK_THESEVENDEADLYSINS, 0, sq_GetSkillLevel(obj, SKILL_BYKK_THESEVENDEADLYSINS)); if((loadnumber + increaseCount) > loadMax) increaseCount = loadMax - loadnumber; if(loadnumber < loadMax){ loadSlot.increaseLoadCount(increaseCount); } } break; case 10001: obj.getVar("setCancelSkill").setBool(10, true); break; } return true; } function onTimeEvent_Handawakentosin(obj, timeEventIndex, timeEventCount) { if(!obj) return false; } function onEndState_Handawakentosin(obj, new_state) { if(!obj) return; } function onAttack_Handawakentosin(obj, damager, boundingBox, isStuck) { if(!obj) return; local subState = obj.getSkillSubState(); switch(subState){ case 1: if(damager.isObjectType(OBJECTTYPE_ACTIVE)){ local group = sq_GetGroup(damager); local uniqueId = sq_GetUniqueId(damager); local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_PRIDEACCEL, -1, 0, 1.0) + 100; local sizeRate = sq_GetIntData(obj, SKILL_BYKK_PRIDEACCEL, 2); if(obj.isMyControlObject()) createSkillPassive_ATPriest_bykk(obj,damager,PASSIVEOBJ_BYKK_ATPRIEST,0,0,sq_GetObjectHeight(damager) / 2,obj.getDirection(),4,SKILL_BYKK_HANDAWAKENTOSIN,0,totalDamage,group,uniqueId,0,0,0,0,0); } break; } }