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