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

3512 lines
137 KiB
C

//圣光普照
function checkExecutableSkill_Miraclechine(obj)
{
if (!obj) return false;
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_MIRACLECHINE);
if (isUse){
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_MIRACLECHINE, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_Miraclechine(obj)
{
if (!obj) return false;
return true;
}
function onSetState_Miraclechine(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_MIRACLESHINE01_02);
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_CAST_SPEED, SPEED_TYPE_CAST_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
obj.sq_PlaySound("R_PW_MIRACLESHINE");
obj.sq_PlaySound("MIRACLESHINE_CAST");
break;
case 1:
obj.sq_SetCurrentAnimation(ATPANI_BYKK_MIRACLESHINE02_02);
sq_flashScreen(obj,0,80,0,127, sq_RGB(255,255,255), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
local targetMax = sq_GetIntData(obj, SKILL_BYKK_MIRACLECHINE, 10);
local firstTargetXRange = sq_GetIntData(obj, SKILL_BYKK_MIRACLECHINE, 1);
local firstTargetYRange = sq_GetIntData(obj, SKILL_BYKK_MIRACLECHINE, 2);
local power = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_MIRACLECHINE, -1, 1, 1.0);
local hitTime = sq_GetIntData(obj, SKILL_BYKK_MIRACLECHINE, 8);
local hitMax = sq_GetIntData(obj, SKILL_BYKK_MIRACLECHINE, 9);
local addRate = sq_GetIntData(obj, SKILL_BYKK_MIRACLECHINE, 13) / 10;
local HP_healRate = sq_GetLevelData(obj, SKILL_BYKK_MIRACLECHINE, 0, sq_GetSkillLevel(obj, SKILL_BYKK_MIRACLECHINE));
// if(obj.isMyControlObject()){
if(sq_GetLevelData(obj, SKILL_BYKK_MIRACLECHINE, 2, sq_GetSkillLevel(obj, SKILL_BYKK_MIRACLECHINE)) > 0){//stone
createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,250,0,100,obj.getDirection(),1,SKILL_BYKK_MIRACLECHINE,10,power,hitTime,hitMax,HP_healRate,0,0,0,0);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atmiracleshine/userhealing02_end02.ani", 40, 0, 95);
obj.setTimeEvent(0, 500, 1, false);
break;
}
createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,40,0,95,obj.getDirection(),1,SKILL_BYKK_MIRACLECHINE,1,targetMax,firstTargetXRange,firstTargetYRange,power,hitTime,hitMax,addRate,HP_healRate);
// }
local stateTime = hitTime * hitMax;
local currentAni = obj.getCurrentAnimation();
sq_SetFrameDelayTime(currentAni, 1, stateTime);
break;
}
}
function onEndCurrentAni_Miraclechine(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
obj.sq_IntVectClear();
obj.sq_IntVectPush(1);
obj.sq_AddSetStatePacket(STATE_BYKK_MIRACLECHINE, STATE_PRIORITY_AUTO, true);
break;
case 1:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
}
}
function onProcCon_Miraclechine(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
}
}
function onKeyFrameFlag_Miraclechine(obj, flagIndex)
{
if(!obj) return false;
switch(flagIndex){
case 201:
sq_flashScreen(obj,0,0,480,255, sq_RGB(0,0,0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
break;
}
return true;
}
function onTimeEvent_Miraclechine(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
switch(timeEventIndex){
case 0:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
}
}
function onEndState_Miraclechine(obj, new_state)
{
if(!obj) return;
}
function setLightning_atp_Miraclechine_bykk(obj, drawObj, targetObj)
{
if(!obj) return;
//if(!pTargetChr) return;
local X = drawObj.getXPos();
local Y = drawObj.getYPos();
local Z = drawObj.getZPos();
local pAni = drawObj.getCurrentAnimation();
local activeObj = sq_GetCNRDObjectToActiveObject(targetObj);
local posX = activeObj.getXPos();
local posY = activeObj.getYPos() + 1;
local posZ = activeObj.getZPos() + (sq_GetObjectHeight(activeObj) / 2);
if(posX == -1) return;
local offset = posX - X;
if(offset < 0) drawObj.setCurrentDirection(ENUM_DIRECTION_LEFT);
else drawObj.setCurrentDirection(ENUM_DIRECTION_RIGHT);
local distance = sq_GetDistance( X, Y - Z, posX, posY - posZ, true);
local w = posX - X;
if(w < 0) w = -w;
local h = (posY) - (Y);
local width = sq_Abs(posX - X);
local angle = sq_Atan2( h.tofloat(), width.tofloat());
angle = -angle;
local nRevision = distance;
local cos = nRevision.tofloat() * sq_Cos(angle);
local sin = nRevision.tofloat() * sq_Sin(angle);
local nX = sq_Abs( cos.tointeger() );
local nY = sq_Abs( sin.tointeger() );
sq_SetfRotateAngle(pAni, angle);
local dis = 300;
local cos_x = dis.tofloat() * sq_Cos(angle);
local sin_y = dis.tofloat() * sq_Sin(angle);
local nW = sq_Abs( cos_x.tointeger() );
local nH = sq_Abs( sin_y.tointeger() );
local wRate = width.tofloat() / nW.tofloat();
local hRate = h.tofloat() / nH.tofloat();
pAni.setImageRate(wRate.tofloat(), hRate.tofloat());
}
//救赎彼岸:惩戒圣枪
function checkExecutableSkill_Brionac(obj)
{
if (!obj) return false;
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_BRIONAC);
if (isUse){
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_BRIONAC, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_Brionac(obj)
{
if (!obj) return false;
return true;
}
function onSetState_Brionac(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_BRIONACBODY_BODY);
obj.sq_PlaySound("R_PW_BRUNAQ");
obj.sq_PlaySound("BRUNAQ_CAST");
break;
}
// obj.sq_SetStaticSpeedInfo(SPEED_TYPE_CAST_SPEED, SPEED_TYPE_CAST_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
local currentAni = obj.getCurrentAnimation();
local delay = currentAni.getDelaySum(0, 5);
local delay2 = currentAni.getDelaySum(5, 11);
sq_flashScreen(obj,delay,delay2,delay,150, sq_RGB(255, 255, 255), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
}
function onEndCurrentAni_Brionac(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
}
}
function onProcCon_Brionac(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
}
}
function onKeyFrameFlag_Brionac(obj, flagIndex)
{
if(!obj) return false;
switch(flagIndex){
case 102:
//`HoldStart` 18 0 -50
obj.getVar("Brionac_Tar").clear_obj_vector();
local objectManager = obj.getObjectManager();
local objectNumber = objectManager.getCollisionObjectNumber();
for (local i = 0; i < objectNumber; i++){
local object = objectManager.getCollisionObject(i);
if(object && object.isObjectType(OBJECTTYPE_ACTIVE) && obj.isEnemy(object) && object.isInDamagableState(obj)){
if(!obj.getVar("Brionac_Tar").is_obj_vector(object)) obj.getVar("Brionac_Tar").push_obj_vector(object);
local AddAppendage;
if(CNSquirrelAppendage.sq_IsAppendAppendage(object, APDPATH_BRIONAC)) AddAppendage = CNSquirrelAppendage.sq_GetAppendage(object, APDPATH_BRIONAC);
else AddAppendage = CNSquirrelAppendage.sq_AppendAppendage(object, obj, -1, false, APDPATH_BRIONAC, true);
sq_HoldAndDelayDie(object, obj, true, true, true, 200, 200, ENUM_DIRECTION_NEUTRAL , AddAppendage);
sq_AddDrawOnlyAniFromParent(object, "character/swordman/effect/animation/1_atpriest_bykk/atbrionac/hold/bbholdlight_eff01.ani", 0, 0, sq_GetHeightObject(object) / 2);
sq_AddDrawOnlyAniFromParent(object, "character/swordman/effect/animation/1_atpriest_bykk/atbrionac/hold/bbholdaa_eff01.ani", 0, 0, sq_GetHeightObject(object) / 2);
sq_AddDrawOnlyAniFromParent(object, "character/swordman/effect/animation/1_atpriest_bykk/atbrionac/hold/bbholdab_eff11.ani", 0, 0, sq_GetHeightObject(object) / 2);
}
}
break;
case 104:
//`CutIn` 20 0 -42
local currentAni = obj.getCurrentAnimation();
local speedRate = 6000.0 / currentAni.getDelaySum(0, 0).tofloat();
local aniPath = "character/swordman/effect/animation/1_atpriest_bykk/atbrionac/cutin/brionaccutina_eff01.ani";
local aniPath2 = "character/swordman/effect/animation/1_atpriest_bykk/atbrionac/cutin/brionaccutinc_bg05.ani";
local pooledObj = createOnlyDrawObject_ATPriest_bykk(obj,aniPath,true,obj.getDirection(),sq_GetXPos(obj),sq_GetYPos(obj),sq_GetZPos(obj)+142,ENUM_DRAWLAYER_BOTTOM);
local pooledObj2 = createOnlyDrawObject_ATPriest_bykk(obj,aniPath2,true,obj.getDirection(),sq_GetXPos(obj),sq_GetYPos(obj) - 1,sq_GetZPos(obj)+142,ENUM_DRAWLAYER_BOTTOM);
local sizeRate = 1.2;
local pAni = pooledObj.getCurrentAnimation();
pAni.setImageRateFromOriginal(sizeRate, sizeRate);
pAni.setAutoLayerWorkAnimationAddSizeRate(sizeRate);
local pAni2 = pooledObj2.getCurrentAnimation();
pAni2.setImageRateFromOriginal(sizeRate, sizeRate);
pAni2.setAutoLayerWorkAnimationAddSizeRate(sizeRate);
pAni.setSpeedRate(speedRate);
pAni2.setSpeedRate(speedRate);
break;
case 110:
local currentAni = obj.getCurrentAnimation();
local speedRate = 6000.0 / currentAni.getDelaySum(0, 0).tofloat();
local pooledObj = sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atbrionac/body/brionacbody_eff09.ani", 0, -1, 0);
local pAni = pooledObj.getCurrentAnimation();
pAni.setSpeedRate(speedRate);
break;
case 111:
//`FlyStart` 0 0 0
local currentAni = obj.getCurrentAnimation();
obj.setTimeEvent(1, currentAni.getDelaySum(11, 14) / 60, 60, true);
break;
case 113:
sq_SetMyShake(obj, 5, 80);
break;
case 132:
//`DrawSpearCircle` 0 0 0
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atbrionac/spear/brionaclanceeff_eff08.ani", 0, 0, 0);
break;
case 152:
//`ThrowSpear` 100 -2 0
local currentAni = obj.getCurrentAnimation();
local speedRate = 6000.0 / currentAni.getDelaySum(0, 0).tofloat();
local power = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_BRIONAC, -1, 0, 1.0);
local power_exp = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_BRIONAC, -1, 1, 1.0);
// if(obj.isMyControlObject())
createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,-50,-2,sq_GetZPos(obj) - 10,obj.getDirection(),1,SKILL_BYKK_BRIONAC,1,power,power_exp,speedRate.tointeger(),0,0,0,0,0);
break;
case 153:
//`SlowDown` 17 0 1
//`MoveScroll` -8 0 -40
obj.sq_SetXScrollStart(300, 200);
break;
case 162:
//`FlyEnd` -5 0 -27
local currentAni = obj.getCurrentAnimation();
obj.setTimeEvent(2, currentAni.getDelaySum(62, 65) / 60, 60, true);
obj.setTimeEvent(3, currentAni.getDelaySum(62, 64), 1, false);
break;
}
return true;
}
function onTimeEvent_Brionac(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
switch(timeEventIndex){
case 1:
local v = sq_GetAccel(0, 42, timeEventCount, 30, true);
sq_setCurrentAxisPos(obj, 2, v);
break;
case 2:
local v = sq_GetAccel(42, 0, timeEventCount, 60, false);
sq_setCurrentAxisPos(obj, 2, v);
// if(timeEventCount == 10) obj.setTimeEvent(3, 1000, 1, true);
break;
case 3:
sq_flashScreen(obj,80,200,0,255, sq_RGB(255,255,255), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_COVER);
sq_SetMyShake(obj, 24, 600);
local power_exp = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_BRIONAC, -1, 1, 1.0);
createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,150,1,-sq_GetZPos(obj),obj.getDirection(),1,SKILL_BYKK_BRIONAC,2,power_exp,0,0,0,0,0,0,0);
break;
}
}
function onEndState_Brionac(obj, new_state)
{
if(!obj) return;
if(new_state != STATE_BYKK_BRIONAC){
obj.sq_SetXScrollStop(200);
local size = obj.getVar("Brionac_Tar").get_obj_vector_size();
if(size > 0){
for(local i = 0; i < size; i++){
local targetObj = obj.getVar("Brionac_Tar").get_obj_vector(i);
if(targetObj){
local activeObj = sq_GetCNRDObjectToActiveObject(targetObj);
CNSquirrelAppendage.sq_RemoveAppendage(activeObj, APDPATH_BRIONAC);
}
}
}
}
}
//圣言十字
function checkExecutableSkill_Cruxofshapiel(obj)
{
if (!obj) return false;
if(obj.getVar("cruxofshapiel_bool").getBool(0)){
obj.getVar("cruxofshapiel_bool").setBool(0, false);
local size = obj.getVar("cruxofshapiel_obj").get_obj_vector_size();
if(size > 0){
for(local i = 0; i < size; i++){
local aObj = obj.getVar("cruxofshapiel_obj").get_obj_vector(i);
if(aObj){
local colObj = sq_GetCNRDObjectToCollisionObject(aObj);
if(colObj.getVar("subtype").getInt(0) == 1) colObj.addSetStatePacket(23, null, STATE_PRIORITY_AUTO, false, "");
else colObj.addSetStatePacket(22, null, STATE_PRIORITY_AUTO, false, "");
}
}
}
return false;
}
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_CRUXOFSHAPIEL);
if (isUse){
obj.getVar("cruxofshapiel_obj").clear_obj_vector();
obj.getVar("cruxofshapiel_bool").setBool(0, false);
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_CRUXOFSHAPIEL, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_Cruxofshapiel(obj)
{
if (!obj) return false;
return true;
}
function onSetState_Cruxofshapiel(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_CRUXOFSHAPIELREADY_BODY);
break;
}
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_CAST_SPEED, SPEED_TYPE_CAST_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
local currentAni = obj.getCurrentAnimation();
local speedRate = 4100.0 / currentAni.getDelaySum(0, 0).tofloat();
local delay1 = 150 / speedRate.tointeger() * 100, delay2 = 1800 / speedRate.tointeger() * 100, delay3 = 400 / speedRate.tointeger() * 100;
sq_flashScreen(obj,delay1,delay2,delay3,204, sq_RGB(0, 0, 0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
}
function onEndCurrentAni_Cruxofshapiel(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
}
}
function onProcCon_Cruxofshapiel(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
}
}
function onKeyFrameFlag_Cruxofshapiel(obj, flagIndex)
{
if(!obj) return false;
switch(flagIndex){
case 108:
obj.sq_PlaySound("R_PW_CRUXOFSHAPIEL");
obj.sq_PlaySound("CRUXOFSHAPIEL_SHOT");
break;
case 109:
//`CreateCruxOfShapiel` 0 0 0
local power_fall = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_CRUXOFSHAPIEL, -1, 0, 1.0);
local power = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_CRUXOFSHAPIEL, -1, 1, 1.0);
local power_exp = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_CRUXOFSHAPIEL, -1, 2, 1.0);
local hitTime = sq_GetIntData(obj, SKILL_BYKK_CRUXOFSHAPIEL, 0);
// if(obj.isMyControlObject())
createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,200,0,0,obj.getDirection(),1,SKILL_BYKK_CRUXOFSHAPIEL,1,power_fall,power,power_exp,hitTime,0,0,0,0);
local buffTime = hitTime * 21 + 2080;
if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, APDPATH_CRUXOFSHAPIEL)) CNSquirrelAppendage.sq_RemoveAppendage(obj, APDPATH_CRUXOFSHAPIEL);
local AddAppendage = CNSquirrelAppendage.sq_AppendAppendage(obj, obj, -1, false, APDPATH_CRUXOFSHAPIEL, true);
AddAppendage.sq_SetValidTime(buffTime);
AddAppendage.setAppendCauseSkill(BUFF_CAUSE_SKILL, sq_getJob(obj), SKILL_BYKK_CRUXOFSHAPIEL, sq_GetSkillLevel(obj, SKILL_BYKK_CRUXOFSHAPIEL));
CNSquirrelAppendage.sq_Append(AddAppendage, obj, obj, true);
break;
}
return true;
}
function onTimeEvent_Cruxofshapiel(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
switch(timeEventIndex){
case 0:
break;
}
}
function onEndState_Cruxofshapiel(obj, new_state)
{
if(!obj) return;
}
////////////////////女圣骑设置
function setSkillBonusBate_Crusader_bykk(obj)
{
local bonusRate = 1000;
if(sq_GetSkillLevel(obj, SKILL_BYKK_CRUSADE) > 0) bonusRate = bonusRate * (1000 + sq_GetLevelData(obj, SKILL_BYKK_CRUSADE, 6, sq_GetSkillLevel(obj, SKILL_BYKK_CRUSADE))) / 1000;
print("bonusRate1 = "+bonusRate);
if(sq_GetSkillLevel(obj, SKILL_BYKK_LUCULENTUISANGEL) > 0) bonusRate = bonusRate * (1000 + sq_GetLevelData(obj, SKILL_BYKK_LUCULENTUISANGEL, 0, sq_GetSkillLevel(obj, SKILL_BYKK_LUCULENTUISANGEL))) / 1000;
print("bonusRate2 = "+bonusRate);
if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, APDPATH_BLESSOFCOURAGE)) bonusRate * (1000 + bonusRate + sq_GetLevelData(obj, SKILL_BYKK_BLESSOFCOURAGE, 7, sq_GetSkillLevel(obj, SKILL_BYKK_BLESSOFCOURAGE))) / 1000;
print("bonusRate3 = "+bonusRate);
obj.getVar("setSkillBonusRate").setInt(0, bonusRate.tointeger());
//sq_SetSkillAttackBonus(obj, bonusRate);
}
function onStartDungeon_Crusader_bykk(obj)
{
local apdPath = [APDPATH_BLESSOFCOURAGE, APDPATH_BLESSOFPROTECTION, APDPATH_HOLYLIGHT, APDPATH_EDIFICATION];
for(local i = 0; i < apdPath.len(); i++){
local AddAppendage = CNSquirrelAppendage.sq_GetAppendage(obj, apdPath[i]);
if(AddAppendage) CNSquirrelAppendage.sq_RemoveAppendage(obj, apdPath[i]);
}
setSkillBonusBate_Crusader_bykk(obj);
local now_mgAttack = sq_GetCharacterAttribute(0x2394);//1000;//
now_mgAttack = now_mgAttack * (100 + sq_GetIntData(obj, 169, 102)) / 100;
obj.getVar("isReset").setInt(0, 1);
obj.getVar("mgAttackSave").setInt(0, now_mgAttack);
print("now_mgAttack = "+now_mgAttack);
}
function retset_Crusader_bykk(obj)
{
setSkillBonusBate_Crusader_bykk(obj);
if(obj.getVar("mgAttackSave").getInt(0) > 0) return;
local now_mgAttack = sq_GetCharacterAttribute(0x2394);//1000;//
now_mgAttack = now_mgAttack * (100 + sq_GetIntData(obj, 169, 102)) / 100;
obj.getVar("mgAttackSave").setInt(0, now_mgAttack);
print("now_mgAttack = "+now_mgAttack);
}
function procSkill_Crusader_bykk(obj)
{
if(obj.getVar("canUseSkill").getBool(0)){
obj.setSkillCommandEnable(SKILL_BYKK_BLESSOFCOURAGE, false);
// obj.setSkillCommandEnable(SKILL_BYKK_CRUXOFVICTORIA, false);
}
if(sq_GetIntData(obj, SKILL_BYKK_REPENTENCESMASH, 10) > 0 && sq_GetIntData(obj, SKILL_BYKK_REPENTENCESMASH, 10) != 5000){
local loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_REPENTENCESMASH);
if(loadSlot){
if(!loadSlot.isCooling()){
local getNumber = loadSlot.getRemainLoadNumber();
if(getNumber + 1 <= 2){
loadSlot.increaseLoadCount(1);
}
}
}
else{
local coolTime = 15000;
if(sq_GetIntData(obj, SKILL_BYKK_REPENTENCESMASH, 10) > 5000) coolTime = 10000;
obj.sq_AddSkillLoad(SKILL_BYKK_REPENTENCESMASH, 112, 2, coolTime);
}
}
else{
local loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_REPENTENCESMASH);
if(loadSlot) obj.sq_RemoveSkillLoad(SKILL_BYKK_REPENTENCESMASH);
}
}
function setState_Crusader_canUseSkill(obj, state, datas, isResetTimer)
{
if(state == 13 && (sq_GetVectorData(datas, 2) == 7 || sq_GetVectorData(datas, 2) == 53)){
print("test");
local objectManager = obj.getObjectManager();
local objectNumber = objectManager.getCollisionObjectNumber();
local count = 0;
for (local i = 0; i < objectNumber; i++){
local object = objectManager.getCollisionObject(i);
if(object && !obj.isEnemy(object) && object.isObjectType(OBJECTTYPE_CHARACTER)){
local sqrChr = sq_GetCNRDObjectToSQRCharacter(object);
if(!CNSquirrelAppendage.sq_IsAppendAppendage(sqrChr, APDPATH_BLESSOFCOURAGEBOOL)) CNSquirrelAppendage.sq_AppendAppendage(sqrChr, obj, -1, false, APDPATH_BLESSOFCOURAGEBOOL, true);
if(sq_getJob(sqrChr) == ENUM_CHARACTERJOB_AT_MAGE && sq_getGrowType(sqrChr) == 1){
sqrChr.getVar("canUseSkill").setBool(0, true);
count = count + 1;
}
}
}
if(count > 0){
for (local i = 0; i < objectNumber; i++){
local object = objectManager.getCollisionObject(i);
if(object && !obj.isEnemy(object) && object.isObjectType(OBJECTTYPE_CHARACTER)){
local sqrChr = sq_GetCNRDObjectToSQRCharacter(object);
if(CNSquirrelAppendage.sq_IsAppendAppendage(sqrChr, APDPATH_BLESSOFCOURAGE)) CNSquirrelAppendage.sq_RemoveAppendage(sqrChr, APDPATH_BLESSOFCOURAGE);
}
}
}
}
}
/////////////////////////////被动
function onStart_appendage_atpriest_aria(appendage)
{
if(!appendage) return;
local parentObj = appendage.getParent();
local obj = sq_GetCNRDObjectToSQRCharacter(parentObj);
if(!obj || obj.getState() == STATE_DIE) return;
local skillLevel = sq_GetSkillLevel(obj, SKILL_BYKK_ARIA);
local mgAttack = sq_GetLevelData(obj, SKILL_BYKK_ARIA, 0, skillLevel);
local change_appendage = appendage.sq_getChangeStatus("atpriest_aria");
if(!change_appendage) change_appendage = appendage.sq_AddChangeStatus("atpriest_aria", obj, obj, 0, CHANGE_STATUS_TYPE_PHYSICAL_ATTACK, true, 1000);
if(change_appendage){
change_appendage.clearParameter();
change_appendage.addParameter(CHANGE_STATUS_TYPE_MAGICAL_ATTACK, false, (mgAttack).tofloat());
}
}
function onStart_appendage_atpriest_blessofraphael(appendage)
{
if(!appendage) return;
local parentObj = appendage.getParent();
local obj = sq_GetCNRDObjectToSQRCharacter(parentObj);
if(!obj || obj.getState() == STATE_DIE) return;
local skillLevel = sq_GetSkillLevel(obj, SKILL_BYKK_BLESSOFRAPHAEL);
local mgAttack = sq_GetLevelData(obj, SKILL_BYKK_BLESSOFRAPHAEL, 0, skillLevel);
local mgctlRate = sq_GetLevelData(obj, SKILL_BYKK_BLESSOFRAPHAEL, 1, skillLevel);
local mgctldmgRate = sq_GetLevelData(obj, SKILL_BYKK_BLESSOFRAPHAEL, 2, skillLevel);
local change_appendage = appendage.sq_getChangeStatus("atpriest_blessofraphael");
if(!change_appendage) change_appendage = appendage.sq_AddChangeStatus("atpriest_blessofraphael", obj, obj, 0, CHANGE_STATUS_TYPE_PHYSICAL_ATTACK, true, 1000);
if(change_appendage){
change_appendage.clearParameter();
change_appendage.addParameter(CHANGE_STATUS_TYPE_MAGICAL_ATTACK, false, (mgAttack).tofloat());
change_appendage.addParameter(CHANGE_STATUS_TYPE_MAGICAL_CRITICAL_HIT_RATE, false, (mgctlRate * 0.1).tofloat());
change_appendage.addParameter(CHANGE_STATUS_TYPE_MAGICAL_CRITICAL_DAMAGE_RATE, false, (mgAttack * 0.1 / 0.667).tofloat());
}
}
function onStart_appendage_atcrusader_weaponmastery(appendage)
{
if(!appendage) return;
local parentObj = appendage.getParent();
local obj = sq_GetCNRDObjectToSQRCharacter(parentObj);
if(!obj || obj.getState() == STATE_DIE) return;
local weaponType = obj.getWeaponSubType();
if(weaponType == -1) return;
if(weaponType == 0){
local skillLevel = sq_GetSkillLevel(obj, SKILL_BYKK_CROSSMASTERY);
local adtEquAttack = sq_GetLevelData(obj, SKILL_BYKK_CROSSMASTERY, 0, skillLevel);
local castSpeed = sq_GetLevelData(obj, SKILL_BYKK_CROSSMASTERY, 1, skillLevel);
local mgctlRate = sq_GetLevelData(obj, SKILL_BYKK_CROSSMASTERY, 2, skillLevel);
local change_appendage = appendage.sq_getChangeStatus("crossmastery");
if(!change_appendage) change_appendage = appendage.sq_AddChangeStatus("crossmastery",obj, obj, 0, CHANGE_STATUS_TYPE_PHYSICAL_ATTACK, true, 1000);
if(change_appendage){
change_appendage.clearParameter();
change_appendage.addParameter(CHANGE_STATUS_TYPE_EQUIPMENT_MAGICAL_ATTACK , true, (adtEquAttack * 0.1).tofloat());
change_appendage.addParameter(CHANGE_STATUS_TYPE_CAST_SPEED, false, (castSpeed * 0.1).tofloat());
change_appendage.addParameter(CHANGE_STATUS_TYPE_MAGICAL_BACK_ATTACK_CRITICAL, false, (mgctlRate * 0.1).tofloat());
}
}
}
function onStart_appendage_atpriest_crusade(appendage)
{
if(!appendage) return;
local parentObj = appendage.getParent();
local obj = sq_GetCNRDObjectToSQRCharacter(parentObj);
if(!obj || obj.getState() == STATE_DIE) return;
local skillLevel = sq_GetSkillLevel(obj, SKILL_BYKK_CRUSADE);
local attackSpeed = sq_GetLevelData(obj, SKILL_BYKK_CRUSADE, 5, skillLevel);
local change_appendage = appendage.sq_getChangeStatus("atpriest_crusade");
if(!change_appendage) change_appendage = appendage.sq_AddChangeStatus("atpriest_crusade", 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 * 0.1).tofloat());
}
}
function onStart_appendage_atpriest_graceofdevine(appendage)
{
if(!appendage) return;
local parentObj = appendage.getParent();
local obj = sq_GetCNRDObjectToSQRCharacter(parentObj);
if(!obj || obj.getState() == STATE_DIE) return;
local lightTolerance = sq_GetIntData(obj, SKILL_BYKK_GRACEOFDEVINE, 2);
local actTolerance = sq_GetIntData(obj, SKILL_BYKK_GRACEOFDEVINE, 3);
local countMax = sq_GetIntData(obj, SKILL_BYKK_GRACEOFDEVINE, 0);
local debuffTime = sq_GetIntData(obj, SKILL_BYKK_GRACEOFDEVINE, 1);
local decrease = sq_GetLevelData(obj, SKILL_BYKK_GRACEOFDEVINE, 0, sq_GetSkillLevel(obj, SKILL_BYKK_GRACEOFDEVINE));
appendage.getVar("custom").setInt(10, countMax);
appendage.getVar("custom").setInt(11, debuffTime);
appendage.getVar("custom").setInt(12, decrease);
local change_appendage = appendage.sq_getChangeStatus("atpriest_graceofdevine");
if(!change_appendage) change_appendage = appendage.sq_AddChangeStatus("atpriest_graceofdevine", obj, obj, 0, CHANGE_STATUS_TYPE_PHYSICAL_ATTACK, true, 1000);
if(change_appendage){
change_appendage.clearParameter();
change_appendage.addParameter(CHANGE_STATUS_TYPE_ELEMENT_TOLERANCE_LIGHT, false, (lightTolerance).tofloat());
change_appendage.addParameter(CHANGE_STATUS_TYPE_ACTIVESTATUS_TOLERANCE_ALL, false, (actTolerance).tofloat());
}
}
function onAttackParent_appendage_atpriest_graceofdevine(appendage, realAttacker, damager, boundingBox, isStuck)
{
if(!appendage) return;
return;
if(isStuck) return;
local parentObj = appendage.getParent();
local obj = sq_GetCNRDObjectToSQRCharacter(parentObj);
if(!obj || obj.getState() == STATE_DIE) return;
if(!damager.isObjectType(OBJECTTYPE_ACTIVE)) return;
local activeObj = sq_GetCNRDObjectToActiveObject(damager);
local AddAppendage;
if(CNSquirrelAppendage.sq_IsAppendAppendage(activeObj, APDPATH_GRACEOFDEVINEDEBUFF)) AddAppendage = CNSquirrelAppendage.sq_GetAppendage(activeObj, APDPATH_GRACEOFDEVINEDEBUFF);
else{
AddAppendage = CNSquirrelAppendage.sq_AppendAppendage(activeObj, obj, -1, false, APDPATH_GRACEOFDEVINEDEBUFF, true);
AddAppendage.getVar("debuffTime").setInt(10, appendage.getVar("custom").getInt(11));
}
local timer = AddAppendage.getVar().get_ct_vector(0);
if(!timer){
AddAppendage.getVar().clear_ct_vector();
AddAppendage.getVar().push_ct_vector();
timer = AddAppendage.getVar().get_ct_vector(0);
}
timer.Reset();
timer.Start(10000,0);
if(AddAppendage.getVar("count").getInt(10) < appendage.getVar("custom").getInt(10)){
AddAppendage.getVar("count").setInt(10, AddAppendage.getVar("count").getInt(10) + 1);
}
local decrease = appendage.getVar("custom").getInt(12) * AddAppendage.getVar("count").getInt(10);
local change_appendage = AddAppendage.sq_getChangeStatus("atpriest_graceofdevine");
if(!change_appendage) change_appendage = AddAppendage.sq_AddChangeStatus("atpriest_graceofdevine", activeObj, obj, 0, CHANGE_STATUS_TYPE_PHYSICAL_ATTACK, true, 1000);
if(change_appendage){
change_appendage.clearParameter();
change_appendage.addParameter(CHANGE_STATUS_TYPE_ELEMENT_TOLERANCE_ALL, false, (decrease * -1).tofloat());
}
}
function proc_appendage_graceofdevinedebuff(appendage)
{
if(!appendage) return;
local parentObj = appendage.getParent();
if(!parentObj || parentObj.getState() == STATE_DIE){
appendage.setValid(false);
return;
}
local timer = appendage.getVar().get_ct_vector(0);
if(timer){
local currentT = timer.Get();
if(currentT > appendage.getVar("debuffTime").getInt(10)){
appendage.getVar("count").setInt(10, 0);
timer.Reset();
timer.Start(10000,0);
}
}
}
function onStart_appendage_atpriest_luculentuisangel(appendage)
{
if(!appendage) return;
local parentObj = appendage.getParent();
local obj = sq_GetCNRDObjectToSQRCharacter(parentObj);
if(!obj || obj.getState() == STATE_DIE) return;
local skillLevel = sq_GetSkillLevel(obj, SKILL_BYKK_LUCULENTUISANGEL);
local mgAttack = sq_GetLevelData(obj, SKILL_BYKK_LUCULENTUISANGEL, 1, skillLevel);
local change_appendage = appendage.sq_getChangeStatus("atpriest_luculentuisangel");
if(!change_appendage) change_appendage = appendage.sq_AddChangeStatus("atpriest_luculentuisangel", obj, obj, 0, CHANGE_STATUS_TYPE_PHYSICAL_ATTACK, true, 1000);
if(change_appendage){
change_appendage.clearParameter();
change_appendage.addParameter(CHANGE_STATUS_TYPE_MAGICAL_ATTACK, false, (mgAttack).tofloat());
}
}
function onStart_appendage_atpriest_zealoffaith(appendage)
{
if(!appendage) return;
local parentObj = appendage.getParent();
local obj = sq_GetCNRDObjectToSQRCharacter(parentObj);
local skillLevel = sq_GetSkillLevel(obj, SKILL_BYKK_ZEALOFFAITH);
local addAttack = sq_GetLevelData(obj, SKILL_BYKK_ZEALOFFAITH, 0, skillLevel);
local addDefense = sq_GetLevelData(obj, SKILL_BYKK_ZEALOFFAITH, 1, skillLevel);
local attackSpeed = sq_GetLevelData(obj, SKILL_BYKK_ZEALOFFAITH, 2, skillLevel);
local moveSpeed = sq_GetLevelData(obj, SKILL_BYKK_ZEALOFFAITH, 3, skillLevel);
// local addTime = sq_GetIntData(obj, SKILL_BYKK_ZEALOFFAITH, 1);
// appendage.getVar("custom").setInt(10, addAttack);
// appendage.getVar("custom").setInt(11, addDefense);
// appendage.getVar("custom").setInt(12, attackSpeed);
// appendage.getVar("custom").setInt(13, moveSpeed);
// appendage.getVar("custom").setInt(14, addTime);
// appendage.getVar("user").clear_obj_vector();
// appendage.getVar().clear_timer_vector();
// appendage.getVar().push_timer_vector();
// local t = appendage.getVar().get_timer_vector(0);
// t.setParameter(1000, -1);
// t.resetInstant(0);
local change_appendage = appendage.sq_getChangeStatus("atpriest_luculentuisangel");
if(!change_appendage) change_appendage = appendage.sq_AddChangeStatus("atpriest_luculentuisangel", obj, obj, 0, CHANGE_STATUS_TYPE_PHYSICAL_ATTACK, true, 1000);
if(change_appendage){
change_appendage.clearParameter();
change_appendage.addParameter(CHANGE_STATUS_TYPE_PHYSICAL_ATTACK, false, (addAttack).tofloat());
change_appendage.addParameter(CHANGE_STATUS_TYPE_MAGICAL_ATTACK, false, (addAttack).tofloat());
change_appendage.addParameter(CHANGE_STATUS_TYPE_MAGICAL_DEFENSE, false, (addDefense).tofloat());
change_appendage.addParameter(CHANGE_STATUS_TYPE_PHYSICAL_DEFENSE, false, (addDefense).tofloat());
change_appendage.addParameter(CHANGE_STATUS_TYPE_ATTACK_SPEED, false, (attackSpeed).tofloat());
change_appendage.addParameter(CHANGE_STATUS_TYPE_MOVE_SPEED, false, (moveSpeed).tofloat());
}
}
function proc_appendage_atpriest_zealoffaith(appendage)
{
if(!appendage) return;
// if(sq_GetCurrentModuleType() != 3) return;
local parentObj = appendage.getParent();
local obj = sq_GetCNRDObjectToSQRCharacter(parentObj);
if(!obj || obj.getState() == STATE_DIE){
appendage.setValid(false);
return;
}
// local t = appendage.getVar().get_timer_vector(0);
// local currentT = appendage.getTimer().Get();
// if(t && t.isOnEvent(currentT)){
// local addAttack = appendage.getVar("custom").getInt(10);
// local addDefense = appendage.getVar("custom").getInt(11);
// local attackSpeed = appendage.getVar("custom").getInt(12);
// local moveSpeed = appendage.getVar("custom").getInt(13);
// local objectManager = obj.getObjectManager();
// local objectNumber = objectManager.getCollisionObjectNumber();
// for (local i = 0; i < objectNumber; i++){
// local object = objectManager.getCollisionObject(i);
// if(object && object.isObjectType(OBJECTTYPE_CHARACTER) && !obj.isEnemy(object)){// && isSameObject(obj, object)
// local sqrChr = sq_GetCNRDObjectToSQRCharacter(object);
// if(sqrChr.getState() == STATE_DIE || sqrChr.getHp() <= 0) continue;
// if(!CNSquirrelAppendage.sq_IsAppendAppendage(sqrChr, APDPATH_ZEALOFFAITHBUFF)){
// if(!appendage.getVar("user").is_obj_vector(sqrChr)) appendage.getVar("user").push_obj_vector(sqrChr);
// local AddAppendage = CNSquirrelAppendage.sq_AppendAppendage(sqrChr, obj, -1, false, APDPATH_ZEALOFFAITHBUFF, true);
// AddAppendage.setAppendCauseSkill(BUFF_CAUSE_SKILL, sq_getJob(obj), SKILL_BYKK_ZEALOFFAITH, sq_GetSkillLevel(obj, SKILL_BYKK_ZEALOFFAITH));
// CNSquirrelAppendage.sq_Append(AddAppendage, sqrChr, obj, true);
// local tiaozheng = 1;
// if(isSameObject(obj, sqrChr)){
// tiaozheng = 0;
// }
// local change_appendage = AddAppendage.sq_getChangeStatus("atpriest_zealoffaithbuff");
// if(!change_appendage) change_appendage = AddAppendage.sq_AddChangeStatus("atpriest_zealoffaithbuff", sqrChr, obj, 0, CHANGE_STATUS_TYPE_PHYSICAL_ATTACK, true, 1000);
// if(change_appendage){
// change_appendage.clearParameter();
// change_appendage.addParameter(CHANGE_STATUS_TYPE_PHYSICAL_ATTACK, false, (addAttack * tiaozheng).tofloat());
// change_appendage.addParameter(CHANGE_STATUS_TYPE_MAGICAL_ATTACK, false, (addAttack * tiaozheng).tofloat());
// change_appendage.addParameter(CHANGE_STATUS_TYPE_MAGICAL_DEFENSE, false, (addDefense).tofloat());
// change_appendage.addParameter(CHANGE_STATUS_TYPE_PHYSICAL_DEFENSE, false, (addDefense).tofloat());
// change_appendage.addParameter(CHANGE_STATUS_TYPE_ATTACK_SPEED, false, (attackSpeed).tofloat());
// change_appendage.addParameter(CHANGE_STATUS_TYPE_MOVE_SPEED, false, (moveSpeed).tofloat());
// }
// }
// }
// }
// }
}
function onAttackParent_appendage_atpriest_zealoffaith(appendage, realAttacker, damager, boundingBox, isStuck)
{
if(!appendage) return;
return;
// if(isStuck) return;
// local parentObj = appendage.getParent();
// local obj = sq_GetCNRDObjectToSQRCharacter(parentObj);
// if(!obj || obj.getState() == STATE_DIE) return;
// if(obj.getState() == STATE_ATTACK || obj.getState() == STATE_DASH_ATTACK || obj.getState() == STATE_JUMP_ATTACK) return;
// if(!damager.isObjectType(OBJECTTYPE_ACTIVE)) return;
// local size = appendage.getVar("user").get_obj_vector_size();
// if(size > 0){
// local addTime = appendage.getVar("custom").getInt(14);
// for(local i = 0; i < size; i++){
// local sqr = appendage.getVar("user").get_obj_vector(i);
// if(sqr){
// local activeObj = sq_GetCNRDObjectToActiveObject(sqr);
// if(CNSquirrelAppendage.sq_IsAppendAppendage(activeObj, APDPATH_BLESSOFCOURAGE)){
// local AddAppendage = CNSquirrelAppendage.sq_GetAppendage(activeObj, APDPATH_BLESSOFCOURAGE);
// if(AddAppendage){
// local useTime = AddAppendage.getTimer().Get();
// local validT = AddAppendage.getAppendageInfo().getValidTime();
// AddAppendage.sq_SetValidTime(validT + addTime - useTime);
// print(validT + addTime - useTime);
// AddAppendage.setAppendCauseSkill(BUFF_CAUSE_SKILL, sq_getJob(obj), SKILL_BYKK_BLESSOFCOURAGE, sq_GetSkillLevel(obj, SKILL_BYKK_BLESSOFCOURAGE));
// CNSquirrelAppendage.sq_Append(AddAppendage, activeObj, obj, true);
// local phAttack = AddAppendage.getVar("custom").getInt(10);
// local mgAttack = AddAppendage.getVar("custom").getInt(11);
// local adtAttack = AddAppendage.getVar("custom").getInt(12);
// local phlAttack = AddAppendage.getVar("custom").getInt(13);
// local mglAttack = AddAppendage.getVar("custom").getInt(14);
// local stuckRate = AddAppendage.getVar("custom").getInt(15);
// local change_appendage = AddAppendage.sq_getChangeStatus("AT_Blessofcourage");
// if(!change_appendage) change_appendage = AddAppendage.sq_AddChangeStatus("AT_Blessofcourage",activeObj, obj, 0, CHANGE_STATUS_TYPE_PHYSICAL_ATTACK, true, 1000);
// if(change_appendage){
// change_appendage.clearParameter();
// change_appendage.addParameter(CHANGE_STATUS_TYPE_EQUIPMENT_PHYSICAL_ATTACK, false, (phAttack).tofloat());
// change_appendage.addParameter(CHANGE_STATUS_TYPE_EQUIPMENT_MAGICAL_ATTACK, false, (mgAttack).tofloat());
// change_appendage.addParameter(CHANGE_STATUS_TYPE_ADDITIONAL_PHYSICAL_GENUINE_ATTACK, false, (adtAttack).tofloat());
// change_appendage.addParameter(CHANGE_STATUS_TYPE_ADDITIONAL_MAGICAL_GENUINE_ATTACK, false, (adtAttack).tofloat());
// change_appendage.addParameter(CHANGE_STATUS_TYPE_PHYSICAL_ATTACK, false, (phlAttack).tofloat());
// change_appendage.addParameter(CHANGE_STATUS_TYPE_MAGICAL_ATTACK, false, (mglAttack).tofloat());
// change_appendage.addParameter(CHANGE_STATUS_TYPE_STUCK, false, (stuckRate * -0.1).tofloat());
// }
// }
// }
// if(CNSquirrelAppendage.sq_IsAppendAppendage(activeObj, APDPATH_BLESSOFPROTECTION)){
// local AddAppendage = CNSquirrelAppendage.sq_GetAppendage(activeObj, APDPATH_BLESSOFPROTECTION);
// if(AddAppendage){
// local useTime = AddAppendage.getTimer().Get();
// local validT = AddAppendage.getAppendageInfo().getValidTime();
// AddAppendage.sq_SetValidTime(validT + addTime - useTime);
// AddAppendage.setAppendCauseSkill(BUFF_CAUSE_SKILL, sq_getJob(obj), SKILL_BYKK_BLESSOFPROTECTION, sq_GetSkillLevel(obj, SKILL_BYKK_BLESSOFPROTECTION));
// CNSquirrelAppendage.sq_Append(AddAppendage, activeObj, obj, true);
// local hpMax = AddAppendage.getVar("custom").getInt(11);
// local mpMax = AddAppendage.getVar("custom").getInt(12);
// local phDefense = AddAppendage.getVar("custom").getInt(13);
// local mgDefense = AddAppendage.getVar("custom").getInt(14);
// local phlDefense = AddAppendage.getVar("custom").getInt(15);
// local mglDefense = AddAppendage.getVar("custom").getInt(16);
// local change_appendage = AddAppendage.sq_getChangeStatus("AT_Blessofprotection");
// if(!change_appendage) change_appendage = AddAppendage.sq_AddChangeStatus("AT_Blessofprotection",activeObj, obj, 0, CHANGE_STATUS_TYPE_PHYSICAL_ATTACK, true, 1000);
// if(change_appendage){
// change_appendage.clearParameter();
// change_appendage.addParameter(CHANGE_STATUS_TYPE_HP_MAX, false, (hpMax).tofloat());
// change_appendage.addParameter(CHANGE_STATUS_TYPE_MP_MAX, false, (mpMax).tofloat());
// change_appendage.addParameter(CHANGE_STATUS_TYPE_EQUIPMENT_PHYSICAL_DEFENSE, false, (phDefense).tofloat());
// change_appendage.addParameter(CHANGE_STATUS_TYPE_EQUIPMENT_MAGICAL_DEFENSE, false, (mgDefense).tofloat());
// change_appendage.addParameter(CHANGE_STATUS_TYPE_MAGICAL_DEFENSE, false, (phlDefense).tofloat());
// change_appendage.addParameter(CHANGE_STATUS_TYPE_PHYSICAL_DEFENSE, false, (mglDefense).tofloat());
// }
// }
// }
// }
// }
// }
}
function proc_appendage_atpriest_zealoffaithbuff(appendage)
{
if(!appendage) return;
local parentObj = appendage.getParent();
if(!parentObj || parentObj.getState() == STATE_DIE){
appendage.setValid(false);
return;
}
local sourceObj = appendage.getSource();
if(!sourceObj || sourceObj.getState() == STATE_DIE){
appendage.setValid(false);
return;
}
}
////////////////////////////////////////////////////////////////
function getAttackAni_DemonicSwordman(obj, index)
{
if(!obj) return null;
local ani = obj.sq_GetAttackAni(index);
if(sq_GetSkillLevel(obj, SKILL_BYKK_BODYPRESSEDSIN) > 0){
ani = sq_GetCustomAni(obj, ATPANI_BYKK_MISTRESS_ATTACK1 + index);
if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)){
local aniName = ["demonizationattack_basic_a_body","demonizationattack_basic_b_body","demonizationattack_basic_c_body"];
ani = getCurrentAnimation_demonization(obj, aniName[index], false);
}
}
else if(sq_GetSkillLevel(obj, SKILL_BYKK_CRUSADE) > 0){
ani = sq_GetCustomAni(obj, ATPANI_BYKK_CRUSADEATTACK1_BODY + index);
}
else if(sq_GetSkillLevel(obj, SKILL_BYKK_WILLOFINQUISITOR) > 0){
ani = sq_GetCustomAni(obj, ATPANI_BYKK_INQUISITOR_ATTACK1 + index);
}
return ani;
}
function getStayAni_DemonicSwordman(obj)
{
if(!obj) return null;
local ani = obj.sq_GetStayAni();
if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)){
ani = getCurrentAnimation_demonization(obj, "demonization_stay", false);
return ani;
}
return ani;
}
function getMoveAni_DemonicSwordman(obj)
{
if(!obj) return null;
local ani = obj.sq_GetMoveAni();
if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)){
ani = getCurrentAnimation_demonization(obj, "demonization_move", false);
return ani;
}
return ani;
}
function getSitAni_DemonicSwordman(obj)
{
if(!obj) return null;
local ani = obj.sq_GetSitAni();
if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)){
ani = getCurrentAnimation_demonization(obj, "demonization_sit", false);
return ani;
}
return ani;
}
function getDamageAni_DemonicSwordman(obj, index)
{
if(!obj) return null;
local ani = obj.sq_GetDamageAni(index);
local aniName = ["demonization_damage1","demonization_damage2"];
if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)){
ani = getCurrentAnimation_demonization(obj, aniName[index], false);
return ani;
}
return ani;
}
function getDownAni_DemonicSwordman(obj)
{
if(!obj) return null;
local ani = obj.sq_GetDownAni();
if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)){
ani = getCurrentAnimation_demonization(obj, "demonization_down", false);
return ani;
}
return ani;
}
function getOverturnAni_DemonicSwordman(obj)
{
if(!obj) return null;
local ani = obj.sq_GetOverturnAni();
return ani;
}
function getJumpAni_DemonicSwordman(obj)
{
if(!obj) return null;
local ani = obj.sq_GetJumpAni();
if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)){
ani = getCurrentAnimation_demonization(obj, "demonization_jump", false);
return ani;
}
return ani;
}
function getJumpAttackAni_DemonicSwordman(obj)
{
if(!obj) return null;
local ani = obj.sq_GetJumpAttackAni();
if(sq_GetSkillLevel(obj, SKILL_BYKK_CRUSADE) > 0){
ani = sq_GetCustomAni(obj, ATPANI_BYKK_CRUSADEJUMPATTACK_BODY);
}
else if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)){
ani = getCurrentAnimation_demonization(obj, "demonizationattack_jump_body", false);
return ani;
}
return ani;
}
function getRestAni_DemonicSwordman(obj)
{
if(!obj) return null;
local ani = obj.sq_GetRestAni();
if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)){
ani = getCurrentAnimation_demonization(obj, "demonization_stay", false);
return ani;
}
return ani;
}
function getThrowChargeAni_DemonicSwordman(obj, index)
{
if(!obj) return null;
local ani = obj.sq_GetThrowChargeAni(index);
if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)){
ani = getCurrentAnimation_demonization(obj, "demonization_throw1", false);
return ani;
}
return ani;
}
function getThrowShootAni_DemonicSwordman(obj, index)
{
if(!obj) return null;
local ani = obj.sq_GetThrowShootAni(index);
if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)){
ani = getCurrentAnimation_demonization(obj, "demonization_throw2", false);
return ani;
}
return ani;
}
function getDashAni_DemonicSwordman(obj)
{
if(!obj) return null;
local ani = obj.sq_GetDashAni();
if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)){
ani = getCurrentAnimation_demonization(obj, "demonization_dash", false);
return ani;
}
return ani;
}
function getDashAttackAni_DemonicSwordman(obj)
{
if(!obj) return null;
local ani = obj.sq_GetDashAttackAni();
if(sq_GetSkillLevel(obj, SKILL_BYKK_CRUSADE) > 0){
ani = sq_GetCustomAni(obj, ATPANI_BYKK_CRUSADEDASHATTACK_BODY);
}
else if(sq_GetSkillLevel(obj, SKILL_BYKK_WILLOFINQUISITOR) > 0){
ani = sq_GetCustomAni(obj, ATPANI_BYKK_HOLYFLAME_FRONT_BODY);
}
else if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)){
ani = getCurrentAnimation_demonization(obj, "demonizationattack_dash_body", false);
return ani;
}
return ani;
}
function getGetItemAni_DemonicSwordman(obj)
{
if(!obj) return null;
local ani = obj.sq_GetGetItemAni();
if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)){
ani = getCurrentAnimation_demonization(obj, "demonization_sit", false);
return ani;
}
return ani;
}
function getBuffAni_DemonicSwordman(obj)
{
if(!obj) return null;
local ani = obj.sq_GetBuffAni();
if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)){
ani = getCurrentAnimation_demonization(obj, "demonization_buff", false);
return ani;
}
return ani;
}
function getDefaultAttackInfo_DemonicSwordman(obj, index)
{
if (!obj) return null;
local attackInfo = obj.sq_GetDefaultAttackInfo(index);
local growType = sq_getGrowType(obj);
switch(growType){
case 1:
if(index == 4) index = 0;
attackInfo = sq_GetCustomAttackInfo(obj, ATPRIESTATK_BYKK_CRUSADERATTACK1 + index);
break;
case 2:
attackInfo = sq_GetCustomAttackInfo(obj, ATPATK_BYKK_INQUISITOR_ATTACK1 + index);
break;
}
return attackInfo;
}
function getDashAttackInfo_DemonicSwordman(obj)
{
if (!obj) return null;
local attackInfo = obj.sq_GetDashAttackInfo();
if(sq_getGrowType(obj) == 1){
attackInfo = sq_GetCustomAttackInfo(obj, ATPRIESTATK_BYKK_CRUSADERDASHATTACK);
}
return attackInfo;
}
function getJumpAttackInfo_DemonicSwordman(obj)
{
if (!obj) return null;
local attackInfo = obj.sq_GetJumpAttackInfo();
if(sq_getGrowType(obj) == 1){
attackInfo = sq_GetCustomAttackInfo(obj, ATPRIESTATK_BYKK_CRUSADERJUMPATTACK);
}
return attackInfo;
}
function onSetState_ATPriestAttack(obj, state, datas, isResetTimer)
{
if(sq_getGrowType(obj) == 4){
if(sq_GetVectorData(datas, 0) != 0) return;
if(sq_GetSkillLevel(obj, SKILL_BYKK_BODYPRESSEDSIN) > 0){
//print("test");
obj.sq_IntVectClear();
obj.sq_IntVectPush(10);
obj.sq_AddSetStatePacket(STATE_BYKK_DEPRAVITYSEVENSINS, STATE_PRIORITY_IGNORE_FORCE, true);
}
}
else if(sq_getGrowType(obj) == 1) {
local attackIndex = sq_GetVectorData(datas, 0);
switch(attackIndex){
case 0: obj.sq_PlaySound("R_PW_1ATK"); break;
case 1: obj.sq_PlaySound("R_PW_2ATK"); break;
case 2: obj.sq_PlaySound("R_PW_3ATK"); break;
}
}
}
function onAfterSetState_ATPriestAttack(obj, state, datas, isResetTimer)
{
//
local growType = sq_getGrowType(obj);
switch(growType){
case 2:
if(sq_GetSkillLevel(obj, SKILL_BYKK_WILLOFINQUISITOR) > 0){
local attackIndex = obj.getAttackIndex();
switch(attackIndex){
case 0: obj.sq_PlaySound("R_PW_INQUISITOR_READING_01"); obj.sq_PlaySound("R_PW_1ATK"); break;
case 1: obj.sq_PlaySound("R_PW_INQUISITOR_READING_02"); obj.sq_PlaySound("R_PW_2ATK"); break;
case 2: obj.sq_PlaySound("R_PW_INQUISITOR_READING_03"); obj.sq_PlaySound("R_PW_3ATK"); break;
}
local loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_HOLYFLAME);
if(loadSlot){
local attackInfo = sq_GetCurrentAttackInfo(obj);
attackInfo.setElement(ENUM_ELEMENT_LIGHT);
attackInfo.setElement(ENUM_ELEMENT_FIRE);
switch(attackIndex){
case 0:
obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/holyflameweaponeffect/attack1.ani"), 0, 0);
sq_AddDrawOnlyAniFromParent(obj, "passiveobject/atpriest_bykk/animation/2_inquistor/animation/atwillofinquisitor/attack1_holyflamea_1hitsmokea.ani", 0, 1, 0);
break;
case 1:
obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/holyflameweaponeffect/attack2.ani"), 0, 0);
sq_AddDrawOnlyAniFromParent(obj, "passiveobject/atpriest_bykk/animation/2_inquistor/animation/atwillofinquisitor/attack2_holyflame_2hitsmoke.ani", 0, 1, 0);
local currentAni = obj.getCurrentAnimation();
obj.setTimeEvent(1, currentAni.getDelaySum(0, 3), 1, false);
break;
case 2:
obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/holyflameweaponeffect/attack3.ani"), 0, 0);
sq_AddDrawOnlyAniFromParent(obj, "passiveobject/atpriest_bykk/animation/2_inquistor/animation/atwillofinquisitor/attack3_holyflame_3hitsmoke.ani", 0, 1, 0);
local currentAni = obj.getCurrentAnimation();
obj.setTimeEvent(1, currentAni.getDelaySum(0, 6), 1, false);
break;
}
}
}
break;
}
obj.getVar("cansetAttackInfo").setBool(0, true);
}
function onTimeEvent_ATPriestAttack(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
local growType = sq_getGrowType(obj);
switch(growType){
case 2:
switch(timeEventIndex){
case 1:
local epObj = obj.getVar("EssenceofPhlegeObj").get_obj_vector(0);
if(epObj){
local colObj = sq_GetCNRDObjectToCollisionObject(epObj);
if(((sq_GetXPos(colObj) - sq_GetXPos(obj)) <= 200 && sq_GetDirection(obj) == ENUM_DIRECTION_RIGHT || (sq_GetXPos(obj) - sq_GetXPos(colObj)) <= 200 && sq_GetDirection(obj) == ENUM_DIRECTION_LEFT) && sq_Abs(sq_GetYPos(colObj) - sq_GetYPos(obj)) <= 40){
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_ESSENCEOFPHLEGE, -1, 1, 1.0);
local sizeRate = sq_GetIntData(obj, SKILL_BYKK_ESSENCEOFPHLEGE, 13);
createSkillPassive_ATPriest_bykk(obj,colObj,PASSIVEOBJ_BYKK_ATPRIEST,0,0,-sq_GetZPos(obj) + 100,obj.getDirection(),2,SKILL_BYKK_ESSENCEOFPHLEGE,5,totalDamage,sizeRate,0,0,0,0,0,0);
sq_SetMyShake(obj, 2, 100);
colObj.setTimeEvent(1, 1000, 1, true);
return;
}
}
break;
}
break;
}
}
function onBeforeAttack_ATPriestAttack(obj,damager,boundingBox,isStuck)
{
if(obj.getVar("cansetAttackInfo").getBool(0)){
obj.getVar("cansetAttackInfo").setBool(0, false);
obj.applyBasicAttackUp(sq_GetCurrentAttackInfo(obj),obj.getState());
sq_SetCurrentAttackInfo(obj, sq_GetCurrentAttackInfo(obj));
}
local growType = sq_getGrowType(obj);
switch(growType){
case 1:
if(sq_GetSkillLevel(obj, SKILL_BYKK_GRACEOFDEVINE) > 0){
local attackInfo = sq_GetCurrentAttackInfo(obj);
attackInfo.setElement(ENUM_ELEMENT_LIGHT);
}
break;
}
}
function onAttack_ATPriestAttack(obj, damager, boundingBox, isStuck)
{
if(!obj || isStuck) return;
if(damager.isObjectType(OBJECTTYPE_ACTIVE)){
local loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_HOLYFLAME);
if(loadSlot) onAttack_EssenceofPhlege_SetFireBomb(obj, damager, boundingBox);
}
}
function getAttackCancelStartFrameSize_DemonicSwordman(obj)
{
local maxAttackNumber = obj.sq_GetAttackCancelStartFrameSize();
if(sq_getGrowType(obj) == 2){
if(sq_GetSkillLevel(obj, SKILL_BYKK_WILLOFINQUISITOR) > 0) maxAttackNumber = 2;
}
return maxAttackNumber;
}
function getAttackCancelStartFrame_DemonicSwordman(obj, index)
{
if(!obj) return null;
local growType = sq_getGrowType(obj);
local frm = obj.sq_GetAttackCancelStartFrame(index);
switch(growType){
case 1:
switch(index){
case 0: frm = 2; break;
case 1: frm = 3; break;
}
break;
case 2: frm = 3; break;
}
return frm;
}
function onSetState_ATPriestDashAttack(obj, state, datas, isResetTimer)
{
if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)){
obj.sq_PlaySound("PW_DASHATK_DM");
obj.sq_PlaySound("R_SCYTHE");
obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/atdepravitysevensins/attack/demonizationattack_dash_glow.ani"), 0, 0);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atdepravitysevensins/attack/demonizationattack_dash_staydusta.ani", 0, -1, 0);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atdepravitysevensins/attack/demonizationattack_dash_staydustb.ani", 0, -1, 0);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atdepravitysevensins/attack/demonizationattack_dash_staydustc.ani", 0, -1, 0);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atdepravitysevensins/attack/demonizationattack_dash_stayrosea.ani", 0, 1, 0);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atdepravitysevensins/attack/demonizationattack_dash_stayroseb.ani", 0, 1, 0);
}
else obj.sq_PlaySound("R_PW_3ATK");
}
function onAfterSetState_ATPriestDashAttack(obj, state, datas, isResetTimer)
{
local growType = sq_getGrowType(obj);
switch(growType){
case 2:
if(sq_GetSkillLevel(obj, SKILL_BYKK_WILLOFINQUISITOR) > 0){
obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/atwillofinquisitor/dashattack_effect_dashtail.ani"), 0, 0);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atwillofinquisitor/dashattack_effect_dashdust.ani", 0, 1, 0);
obj.sq_PlaySound("R_PW_3ATK");
local loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_HOLYFLAME);
if(loadSlot){
obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/holyflameweaponeffect/dashattack.ani"), 0, 0);
sq_AddDrawOnlyAniFromParent(obj, "passiveobject/atpriest_bykk/animation/2_inquistor/animation/atholyflame/holyflame_beffect2_bdodge2.ani", 125, 0, 0);
local currentAni = obj.getCurrentAnimation();
obj.setTimeEvent(1, currentAni.getDelaySum(0, 1), 1, false);
}
}
break;
}
obj.getVar("cansetAttackInfo").setBool(0, true);
}
function onTimeEvent_ATPriestDashAttack(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
local growType = sq_getGrowType(obj);
switch(growType){
case 2:
switch(timeEventIndex){
case 1:
local epObj = obj.getVar("EssenceofPhlegeObj").get_obj_vector(0);
if(epObj){
local colObj = sq_GetCNRDObjectToCollisionObject(epObj);
if(((sq_GetXPos(colObj) - sq_GetXPos(obj)) <= 200 && sq_GetDirection(obj) == ENUM_DIRECTION_RIGHT || (sq_GetXPos(obj) - sq_GetXPos(colObj)) <= 200 && sq_GetDirection(obj) == ENUM_DIRECTION_LEFT) && sq_Abs(sq_GetYPos(colObj) - sq_GetYPos(obj)) <= 40){
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_ESSENCEOFPHLEGE, -1, 1, 1.0);
local sizeRate = sq_GetIntData(obj, SKILL_BYKK_ESSENCEOFPHLEGE, 13);
createSkillPassive_ATPriest_bykk(obj,colObj,PASSIVEOBJ_BYKK_ATPRIEST,0,0,-sq_GetZPos(obj) + 100,obj.getDirection(),2,SKILL_BYKK_ESSENCEOFPHLEGE,5,totalDamage,sizeRate,0,0,0,0,0,0);
sq_SetMyShake(obj, 2, 100);
colObj.setTimeEvent(1, 1000, 1, true);
return;
}
}
break;
}
break;
}
}
function onBeforeAttack_ATPriestDashAttack(obj,damager,boundingBox,isStuck)
{
if(obj.getVar("cansetAttackInfo").getBool(0)){
obj.getVar("cansetAttackInfo").setBool(0, false);
obj.applyBasicAttackUp(sq_GetCurrentAttackInfo(obj),obj.getState());
sq_SetCurrentAttackInfo(obj, sq_GetCurrentAttackInfo(obj));
local loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_HOLYFLAME);
if(loadSlot){
local attackInfo = sq_GetCurrentAttackInfo(obj);
attackInfo.setElement(ENUM_ELEMENT_LIGHT);
attackInfo.setElement(ENUM_ELEMENT_FIRE);
}
}
if(sq_GetSkillLevel(obj, SKILL_BYKK_GRACEOFDEVINE) > 0){
local attackInfo = sq_GetCurrentAttackInfo(obj);
attackInfo.setElement(ENUM_ELEMENT_LIGHT);
}
}
function onAttack_ATPriestDashAttack(obj, damager, boundingBox, isStuck)
{
if(!obj || isStuck) return;
if(damager.isObjectType(OBJECTTYPE_ACTIVE)){
local loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_HOLYFLAME);
if(loadSlot) onAttack_EssenceofPhlege_SetFireBomb(obj, damager, boundingBox);
}
}
function onKeyFrameFlag_ATPriestDashAttack(obj, flagIndex)
{}
function onSetState_ATPriestJumpAttack(obj, state, datas, isResetTimer)
{
// print("state = "+state);
if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)){
obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/atdepravitysevensins/attack/demonizationattack_jump_effb01.ani"), 0, 0);
obj.sq_AddStateLayerAnimation(2,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/atdepravitysevensins/attack/demonizationattack_jump_stayrosea.ani"), 0, 0);
obj.sq_AddStateLayerAnimation(3,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/atdepravitysevensins/attack/demonizationattack_jump_stayroseb.ani"), 0, 0);
obj.sq_PlaySound("PW_JUMPATK_DM");
obj.sq_PlaySound("R_SCYTHE");
}
else obj.sq_PlaySound("PW_JUMPATK");
}
function onAfterSetState_ATPriestJumpAttack(obj, state, datas, isResetTimer)
{
local growType = sq_getGrowType(obj);
switch(growType){
case 2:
if(sq_GetSkillLevel(obj, SKILL_BYKK_WILLOFINQUISITOR) > 0){
obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/atwillofinquisitor/jumpattack_effect_jumptail.ani"), 0, 0);
local loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_HOLYFLAME);
if(loadSlot){
obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/holyflameweaponeffect/jumpattack.ani"), 0, 0);
sq_AddDrawOnlyAniFromParent(obj, "passiveobject/atpriest_bykk/animation/2_inquistor/animation/atwillofinquisitor/jumpattack_holyflame_jumpsmoke.ani", 0, 1, 0);
}
}
break;
}
obj.getVar("cansetAttackInfo").setBool(0, true);
}
function onBeforeAttack_ATPriestJumpAttack(obj,damager,boundingBox,isStuck)
{
if(obj.getVar("cansetAttackInfo").getBool(0)){
obj.getVar("cansetAttackInfo").setBool(0, false);
obj.applyBasicAttackUp(sq_GetCurrentAttackInfo(obj),obj.getState());
sq_SetCurrentAttackInfo(obj, sq_GetCurrentAttackInfo(obj));
local loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_HOLYFLAME);
if(loadSlot){
local attackInfo = sq_GetCurrentAttackInfo(obj);
attackInfo.setElement(ENUM_ELEMENT_LIGHT);
attackInfo.setElement(ENUM_ELEMENT_FIRE);
}
}
if(sq_GetSkillLevel(obj, SKILL_BYKK_GRACEOFDEVINE) > 0){
local attackInfo = sq_GetCurrentAttackInfo(obj);
attackInfo.setElement(ENUM_ELEMENT_LIGHT);
}
}
function onAttack_ATPriestJumpAttack(obj, damager, boundingBox, isStuck)
{
if(!obj || isStuck) return;
if(damager.isObjectType(OBJECTTYPE_ACTIVE)){
local loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_HOLYFLAME);
if(loadSlot) onAttack_EssenceofPhlege_SetFireBomb(obj, damager, boundingBox);
}
}
function onKeyFrameFlag_ATPriestJumpAttack(obj, flagIndex)
{
}
function onAfterSetState_ATPriestJump(obj, state, datas, isResetTimer)
{
local growType = sq_getGrowType(obj);
switch(growType){
case 2:
local isBackStep = sq_GetVectorData(datas, 1);
if(isBackStep == 1 && sq_GetSkillLevel(obj, SKILL_BYKK_WILLOFINQUISITOR) > 0){
local timer = obj.getVar("ATPriestJumpTimer").get_ct_vector(0);
if(!timer){
obj.getVar("ATPriestJumpTimer").clear_ct_vector();
obj.getVar("ATPriestJumpTimer").push_ct_vector();
timer = obj.getVar("ATPriestJumpTimer").get_ct_vector(0);
timer.Reset();
timer.Start(10000,0);
}
obj.getVar("ATPriestJumpSet").setBool(0, true);
}
local loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_HOLYFLAME);
if(loadSlot){
obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/holyflameweaponeffect/jump.ani"), 0, 0);
}
break;
}
}
function onProc_ATPriestJump(obj)
{
if(!obj) return;
if(obj.getVar("ATPriestJumpSet").getBool(0)){
local timer = obj.getVar("ATPriestJumpTimer").get_ct_vector(0);
if(timer){
local currentT = timer.Get();
local coolTime = sq_GetIntData(obj, SKILL_BYKK_WILLOFINQUISITOR, 14);
if(currentT >= coolTime){
obj.setSkillCommandEnable(SKILL_BYKK_PATROLBOMB,true);
if(obj.sq_IsEnterSkill(SKILL_BYKK_PATROLBOMB) != -1){
obj.getVar("ATPriestJumpSet").setBool(0, false);
timer.Reset();
timer.Start(10000,0);
obj.sq_IntVectClear();
obj.sq_IntVectPush(1);
obj.sq_AddSetStatePacket(STATE_BYKK_PATROLBOMB, STATE_PRIORITY_IGNORE_FORCE, true);
return;
}
obj.setSkillCommandEnable(SKILL_BYKK_ESSENCEOFPHLEGE,true);
if(obj.sq_IsEnterSkill(SKILL_BYKK_ESSENCEOFPHLEGE) != -1){
obj.getVar("ATPriestJumpSet").setBool(0, false);
timer.Reset();
timer.Start(10000,0);
obj.sq_IntVectClear();
obj.sq_IntVectPush(1);
obj.sq_AddSetStatePacket(STATE_BYKK_ESSENCEOFPHLEGE, STATE_PRIORITY_IGNORE_FORCE, true);
return;
}
sq_SetKeyxEnable(obj, E_ATTACK_COMMAND, true);
if(sq_IsEnterCommand(obj, E_ATTACK_COMMAND)){
obj.getVar("ATPriestJumpSet").setBool(0, false);
timer.Reset();
timer.Start(10000,0);
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_JUMP_ATTACK, STATE_PRIORITY_IGNORE_FORCE, true);
return;
}
}
}
}
}
function onEndState_ATPriestJump(obj, new_state)
{
if(!obj) return;
local growType = sq_getGrowType(obj);
switch(growType){
case 2:
if(obj.getVar("ATPriestJumpSet").getBool(0)) obj.getVar("ATPriestJumpSet").setBool(0, false);
break;
}
}
function onAfterSetState_ATPriestStand(obj, state, datas, isResetTimer)
{
local growType = sq_getGrowType(obj);
switch(growType){
case 2:
obj.getVar("StaySet").setInt(0, 0);
break;
}
}
function onProc_ATPriestStand(obj)
{
if(!obj) return;
local growType = sq_getGrowType(obj);
switch(growType){
case 2:
local loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_HOLYFLAME);
if(loadSlot && CNSquirrelAppendage.sq_IsAppendAppendage(obj, "character/demonicswordman/2_inquistor/ap_holyflame_buff.nut")){
local poleAni = obj.getCurrentAnimation();
local poleAniFrameNumber = sq_GetAniFrameNumber(poleAni, 0);
if(poleAniFrameNumber != obj.getVar("StaySet").getInt(0)){
obj.getVar("StaySet").setInt(0, poleAniFrameNumber);
local addAppendage = CNSquirrelAppendage.sq_GetAppendage(obj, "character/demonicswordman/2_inquistor/ap_holyflame_buff.nut");
if(addAppendage){
addAppendage.sq_DeleteEffectFront();
switch(poleAniFrameNumber){
case 15: addAppendage.sq_AddEffectFront("character/swordman/effect/animation/1_atpriest_bykk/holyflameweaponeffect/rest.ani"); break;//rest
case 4: addAppendage.sq_AddEffectFront("character/swordman/effect/animation/1_atpriest_bykk/holyflameweaponeffect/stay.ani"); break;//stay
case 8: addAppendage.sq_AddEffectFront("character/swordman/effect/animation/1_atpriest_bykk/holyflameweaponeffect/move.ani"); break;//move
}
}
}
}
break;
}
}
function onEndState_ATPriestStand(obj, new_state)
{
if(!obj) return;
local growType = sq_getGrowType(obj);
switch(growType){
case 2:
local addAppendage = CNSquirrelAppendage.sq_GetAppendage(obj, "character/demonicswordman/2_inquistor/ap_holyflame_buff.nut");
if(addAppendage){
addAppendage.sq_DeleteEffectFront();
obj.getVar("StaySet").setInt(0, 0);
}
break;
}
}
function onAfterSetState_ATPriestDash(obj, state, datas, isResetTimer)
{
local growType = sq_getGrowType(obj);
switch(growType){
case 2:
local loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_HOLYFLAME);
if(loadSlot){
obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/holyflameweaponeffect/dash.ani"), 0, 0);
}
break;
}
}
function onStartDungeon_AtPriest_2bykk(obj)
{
if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, "character/demonicswordman/2_inquistor/ap_holyflame_buff.nut")) CNSquirrelAppendage.sq_RemoveAppendage(obj, "character/demonicswordman/2_inquistor/ap_holyflame_buff.nut");
local loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_HOLYFLAME);
if(loadSlot) obj.sq_RemoveSkillLoad(SKILL_BYKK_HOLYFLAME);
obj.getVar("isReset").setInt(0, 1);
}
////////////////////团长
function onAttack_EssenceofPhlege_SetFireBomb(obj, damager, boundingBox)
{
if(damager.isObjectType(OBJECTTYPE_ACTIVE) && damager.getState() != STATE_DIE){
local activeObj = sq_GetCNRDObjectToActiveObject(damager);
local epObj = activeObj.getVar("EssenceofPhlege").get_obj_vector(0);
if(epObj){
//character/demonicswordman/2_inquistor/ap_holyflame_hold.nut
local colObj = sq_GetCNRDObjectToCollisionObject(epObj);
if(colObj.getState() >= 20) return;
if(colObj.isExistTimeEvent(1)) colObj.stopTimeEvent(1);
if(CNSquirrelAppendage.sq_IsAppendAppendage(damager, "character/demonicswordman/2_inquistor/ap_holyflame_hold.nut")) CNSquirrelAppendage.sq_RemoveAppendage(damager, "character/demonicswordman/2_inquistor/ap_holyflame_hold.nut");
local AddAppendage = CNSquirrelAppendage.sq_AppendAppendage(damager, colObj, -1, false, "character/demonicswordman/2_inquistor/ap_holyflame_hold.nut", true);
sq_HoldAndDelayDie(damager, colObj, true, true, true, 200, 200, ENUM_DIRECTION_NEUTRAL , AddAppendage);
local lifeTimeForBurning = colObj.getVar("custom").getInt(0);
AddAppendage.sq_SetValidTime(lifeTimeForBurning);
sq_EffectLayerAppendage(damager,sq_RGB(0,0,0),255,0,0,lifeTimeForBurning + 500);
sq_SendHitObjectPacket(colObj,damager,0,0,0);
colObj.addSetStatePacket(20, null, STATE_PRIORITY_AUTO, false, "");
colObj.setTimeEvent(2, lifeTimeForBurning - 500, 1, false);
}
}
}
//净化火焰瓶
function checkExecutableSkill_PatrolBomb(obj)
{
if (!obj) return false;
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_PATROLBOMB);
if (isUse){
obj.sq_IntVectClear();
if(sq_GetSkillLevel(obj, SKILL_BYKK_POURESSENCE) > 0 && (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.sq_IntVectPush(2);
else obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_PATROLBOMB, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_PatrolBomb(obj)
{
if (!obj) return false;
return true;
}
function onSetState_PatrolBomb(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_PETROLBOMB_STANDING_BODY);
obj.sq_PlaySound("R_PW_PETROL_BOMB");
obj.sq_PlaySound("PETROL_BOMB_READY");
local loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_HOLYFLAME);
if(loadSlot){
if(loadSlot.getRemainLoadNumber() > 0){
obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/holyflameweaponeffect/petrolbomb_standing_body.ani"), 0, 0);
obj.getVar("PatrolBombSet").setInt(0, 1);
loadSlot.decreaseLoadCount(1);
}
else obj.getVar("PatrolBombSet").setInt(0, 0);
}
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
local currentAni = obj.getCurrentAnimation();
obj.setTimeEvent(1, currentAni.getDelaySum(0, 7), 1, false);
break;
case 1:
obj.sq_SetCurrentAnimation(ATPANI_BYKK_PETROLBOMB_BACKSTEP_BODY);
obj.sq_PlaySound("R_PW_PETROL_BOMB");
obj.sq_PlaySound("PETROL_BOMB_READY");
local loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_HOLYFLAME);
if(loadSlot){
if(loadSlot.getRemainLoadNumber() > 0){
obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/holyflameweaponeffect/petrolbomb_backstep_body.ani"), 0, 0);
obj.getVar("PatrolBombSet").setInt(0, 1);
loadSlot.decreaseLoadCount(1);
}
else obj.getVar("PatrolBombSet").setInt(0, 0);
}
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
local currentAni = obj.getCurrentAnimation();
obj.setTimeEvent(1, currentAni.getDelaySum(0, 4), 1, false);
break;
case 2:
obj.sq_SetCurrentAnimation(ATPANI_BYKK_MALLEUSMALEFICARUM);
obj.sq_PlaySound("PW_PETROL_BOMB");
obj.sq_PlaySound("ESSENCE_PHLEGE_EXP");
local loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_HOLYFLAME);
if(loadSlot){
if(loadSlot.getRemainLoadNumber() > 0){
obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/holyflameweaponeffect/petrolbomb_backstep_body.ani"), 0, 0);
obj.getVar("PatrolBombSet").setInt(0, 1);
loadSlot.decreaseLoadCount(1);
}
else obj.getVar("PatrolBombSet").setInt(0, 0);
}
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
local currentAni = obj.getCurrentAnimation();
obj.setTimeEvent(2, currentAni.getDelaySum(0, 4), 1, false);
break;
}
}
function onEndCurrentAni_PatrolBomb(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
case 2:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
case 1:
obj.sq_IntVectClear();
obj.sq_IntVectPush(1);
obj.sq_IntVectPush(0);
obj.sq_IntVectPush(sq_GetZPos(obj));
obj.sq_AddSetStatePacket(STATE_JUMP, STATE_PRIORITY_AUTO, true);
break;
}
}
function onProcCon_PatrolBomb(obj)
{
if(!obj) return;
}
function onKeyFrameFlag_PatrolBomb(obj, flagIndex)
{
if(!obj) return false;
return true;
}
function onTimeEvent_PatrolBomb(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
switch(timeEventIndex){
case 1:
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_PATROLBOMB, -1, 0, 1.0);
local sizeRate = sq_GetIntData(obj, SKILL_BYKK_PATROLBOMB, 5);
local isFire = obj.getVar("PatrolBombSet").getInt(0);
if(obj.getSkillSubState() == 0) createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,51,0,97,obj.getDirection(),2,SKILL_BYKK_PATROLBOMB,1,totalDamage,sizeRate,isFire,0,0,0,0,0);
else createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,31,1,97,obj.getDirection(),2,SKILL_BYKK_PATROLBOMB,1,totalDamage,sizeRate,isFire,0,0,0,0,0);
break;
case 2:
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_PATROLBOMB, -1, 0, 1.0);
local isFire = obj.getVar("PatrolBombSet").getInt(0);
createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,-50,0,0,obj.getDirection(),2,SKILL_BYKK_PATROLBOMB,4,totalDamage,isFire,0,0,0,0,0,0);
break;
}
}
function onEndState_PatrolBomb(obj, new_state)
{
if(!obj) return;
}
//裁决之击
function checkExecutableSkill_PunishmentBlow(obj)
{
if (!obj) return false;
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_PUNISHMENTBLOW);
if (isUse){
local loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_HOLYFLAME);
if(loadSlot){
if(loadSlot.getRemainLoadNumber() > 0){
obj.getVar("PunishmentBlowBool").setBool(2, true);
loadSlot.decreaseLoadCount(1);
}
else obj.getVar("PunishmentBlowBool").setBool(2, false);
}
else obj.getVar("PunishmentBlowBool").setBool(2, false);
obj.sq_IntVectClear();
if(obj.getState() == STATE_JUMP){
obj.getVar("PunishmentBlowSet").setInt(1, sq_GetZPos(obj));
obj.sq_IntVectPush(1);
}
else if(sq_GetSkillLevel(obj, SKILL_BYKK_FIRECONFESSION) > 0) obj.sq_IntVectPush(3);
else obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_PUNISHMENTBLOW, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_PunishmentBlow(obj)
{
if (!obj) return false;
return true;
}
function onSetState_PunishmentBlow(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_PUNISHMENTBLOW_BODY_A);
obj.getVar("PunishmentBlowSet").setInt(0, sq_GetXPos(obj));
obj.getVar("PunishmentBlowBool").setBool(0, true);
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
local currentAni = obj.getCurrentAnimation();
local speedRate = 3000 / currentAni.getDelaySum(0, 0);
currentAni.setSpeedRate(speedRate.tofloat() * 2.0);
obj.sq_PlaySound("R_PW_PUNISHMENT_BLOW_01");
obj.sq_PlaySound("PUNISHMENT_BLOW_JUMP");
if(obj.getVar("PunishmentBlowBool").getBool(2)) obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/holyflameweaponeffect/punishmentblow_body_a.ani"), 0, 0);
break;
case 1:
obj.sq_SetCurrentAnimation(ATPANI_BYKK_PUNISHMENTBLOW_BODY_B);
obj.getVar("PunishmentBlowSet").setInt(0, sq_GetXPos(obj));
obj.getVar("PunishmentBlowBool").setBool(0, true);
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
local currentAni = obj.getCurrentAnimation();
local speedRate = 3000 / currentAni.getDelaySum(0, 0);
currentAni.setSpeedRate(speedRate.tofloat() * 3.0);
if(obj.getVar("PunishmentBlowBool").getBool(2)) obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/holyflameweaponeffect/punishmentblow_body_b.ani"), 0, 0);
break;
case 2:
obj.sq_SetCurrentAnimation(ATPANI_BYKK_PUNISHMENTBLOW_BODY_ATTACK);
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
local currentAni = obj.getCurrentAnimation();
local speedRate = 6000 / currentAni.getDelaySum(0, 0);
print(speedRate);
currentAni.setSpeedRate(speedRate * 3.0);
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_PATROLBOMB, -1, 0, 1.0);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, ATPATK_BYKK_PUNISHMENTBLOW_ATTACK));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
if(obj.getVar("PunishmentBlowBool").getBool(2)) {
totalDamage = totalDamage * sq_GetLevelData(obj, SKILL_BYKK_HOLYFLAME, 0, sq_GetSkillLevel(obj, SKILL_BYKK_HOLYFLAME)) / 1000;
obj.getVar("holyflameDamageSet").setInt(0, totalDamage);
local attackInfo = sq_GetCurrentAttackInfo(obj);
attackInfo.setElement(ENUM_ELEMENT_FIRE);
attackInfo.setElement(ENUM_ELEMENT_LIGHT);
}
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atpunishmentblow/pslash_01.ani", 0, 2, 0);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atpunishmentblow/pslash_02.ani", 0, 1, 0);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atpunishmentblow/floor.ani", 0, -1, 0);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atpunishmentblow/dust.ani", 0, -2, 0);
obj.sq_PlaySound("R_PW_PUNISHMENT_BLOW_02");
if(obj.getVar("PunishmentBlowBool").getBool(2)){
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atpunishmentblow/psaintfire_01.ani", 0, 2, 0);
obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/holyflameweaponeffect/punishmentblow_body_attack.ani"), 0, 0);
obj.sq_PlaySound("PUNISHMENT_BLOW_FLAME");
}
else obj.sq_PlaySound("PUNISHMENT_BLOW");
break;
case 3:
obj.sq_SetCurrentAnimation(ATPANI_BYKK_PUNISHMENTBLOWDASH_BODY);
obj.sq_PlaySound("PUNISHMENT_BLOW_DASH");
if(obj.getVar("PunishmentBlowBool").getBool(2)){
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atpunishmentblow/pendfire_01.ani", -200, 2, 0);
obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/holyflameweaponeffect/punishmentblowdash_body.ani"), 0, 0);
}
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
obj.getVar("PunishmentBlowSet").setInt(0, sq_GetXPos(obj));
obj.getVar("PunishmentBlowBool").setBool(0, true);
local currentAni = obj.getCurrentAnimation();
sq_AddAttackBox(currentAni, -50, -30, -5, 250, 60, 155);
local bonusRate = sq_GetLevelData(obj, SKILL_BYKK_FIRECONFESSION, 3, sq_GetSkillLevel(obj, SKILL_BYKK_FIRECONFESSION));
bonusRate = bonusRate.tofloat() / 1000.0;
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_PATROLBOMB, -1, 0, bonusRate);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, ATPATK_BYKK_PUNISHMENTBLOW_DASHATTACK));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
if(obj.getVar("PunishmentBlowBool").getBool(2)) {
totalDamage = totalDamage * sq_GetLevelData(obj, SKILL_BYKK_HOLYFLAME, 0, sq_GetSkillLevel(obj, SKILL_BYKK_HOLYFLAME)) / 1000;
obj.getVar("holyflameDamageSet").setInt(0, totalDamage);
local attackInfo = sq_GetCurrentAttackInfo(obj);
attackInfo.setElement(ENUM_ELEMENT_FIRE);
attackInfo.setElement(ENUM_ELEMENT_LIGHT);
}
break;
case 4:
obj.sq_SetCurrentAnimation(ATPANI_BYKK_PUNISHMENTBLOWDASHATTACK_BODY);
if(obj.getVar("PunishmentBlowBool").getBool(2)){
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atfireconfession/punishmentblowdashattack_dashsmokea.ani", 0, 2, 0);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atfireconfession/punishmentblowdashattack_dashsmokeb.ani", 0, -1, 0);
obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/holyflameweaponeffect/punishmentblowdashattack_body.ani"), 0, 0);
}
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
local currentAni = obj.getCurrentAnimation();
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_PATROLBOMB, -1, 0, 1.0);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, ATPATK_BYKK_PUNISHMENTBLOW_ATTACK));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
if(obj.getVar("PunishmentBlowBool").getBool(2)) {
totalDamage = totalDamage * sq_GetLevelData(obj, SKILL_BYKK_HOLYFLAME, 0, sq_GetSkillLevel(obj, SKILL_BYKK_HOLYFLAME)) / 1000;
obj.getVar("holyflameDamageSet").setInt(0, totalDamage);
local attackInfo = sq_GetCurrentAttackInfo(obj);
attackInfo.setElement(ENUM_ELEMENT_FIRE);
attackInfo.setElement(ENUM_ELEMENT_LIGHT);
}
break;
}
}
function onEndCurrentAni_PunishmentBlow(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
obj.getVar("PunishmentBlowSet").setInt(1, sq_GetZPos(obj));
case 1:
case 3:
obj.sq_IntVectClear();
obj.sq_IntVectPush(subState + 1);
obj.sq_AddSetStatePacket(STATE_BYKK_PUNISHMENTBLOW, STATE_PRIORITY_AUTO, true);
break;
case 2:
case 4:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
}
}
function onProcCon_PunishmentBlow(obj)
{
if(!obj) return;
}
function onProc_PunishmentBlow(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
local stateTime = obj.sq_GetStateTimer();
local currentAni = obj.getCurrentAnimation();
local fullTime = currentAni.getDelaySum(false);
if(obj.getVar("PunishmentBlowBool").getBool(0)){
local vx = sq_GetUniformVelocity(0, 50, stateTime, fullTime);
local dstX = sq_GetDistancePos(obj.getVar("PunishmentBlowSet").getInt(0), sq_GetDirection(obj), vx);
if(obj.isMovablePos(dstX, sq_GetYPos(obj))) sq_setCurrentAxisPos(obj, 0, dstX);
else obj.getVar("PunishmentBlowBool").setBool(0, false);
}
local vz = sq_GetAccel(0, 100, stateTime, fullTime / 2, true);
sq_setCurrentAxisPos(obj, 2, vz);
break;
case 1:
local stateTime = obj.sq_GetStateTimer();
local currentAni = obj.getCurrentAnimation();
local fullTime = currentAni.getDelaySum(false);
if(obj.getVar("PunishmentBlowBool").getBool(0)){
local vx = sq_GetUniformVelocity(0, 50, stateTime, fullTime);
local dstX = sq_GetDistancePos(obj.getVar("PunishmentBlowSet").getInt(0), sq_GetDirection(obj), vx);
if(obj.isMovablePos(dstX, sq_GetYPos(obj))) sq_setCurrentAxisPos(obj, 0, dstX);
else obj.getVar("PunishmentBlowBool").setBool(0, false);
}
local vz = sq_GetAccel(obj.getVar("PunishmentBlowSet").getInt(1), 0, stateTime, fullTime, false);
sq_setCurrentAxisPos(obj, 2, vz);
break;
case 3:
local stateTime = obj.sq_GetStateTimer();
local currentAni = obj.getCurrentAnimation();
local fullTime = currentAni.getDelaySum(false);
if(obj.getVar("PunishmentBlowBool").getBool(0)){
local vx = sq_GetUniformVelocity(0, 200, stateTime, fullTime);
local dstX = sq_GetDistancePos(obj.getVar("PunishmentBlowSet").getInt(0), sq_GetDirection(obj), vx);
if(obj.isMovablePos(dstX, sq_GetYPos(obj))) sq_setCurrentAxisPos(obj, 0, dstX);
else obj.getVar("PunishmentBlowBool").setBool(0, false);
}
obj.setSkillCommandEnable(SKILL_BYKK_PUNISHMENTBLOW,true);
if(obj.sq_IsEnterSkill(SKILL_BYKK_PUNISHMENTBLOW) != -1){
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_PUNISHMENTBLOW, STATE_PRIORITY_AUTO, true);
return false;
}
break;
}
}
function onKeyFrameFlag_PunishmentBlow(obj, flagIndex)
{
if(!obj) return false;
switch(flagIndex){
case 101:
obj.getVar("HolyFlameEnable").setBool(0, true);
obj.getVar("PurificationEnable").setBool(0, true);
break;
}
return true;
}
function onTimeEvent_PunishmentBlow(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
}
function onEndState_PunishmentBlow(obj, new_state)
{
if(!obj) return;
if(new_state != STATE_BYKK_PUNISHMENTBLOW){
sq_SimpleMoveToNearMovablePos(obj,200);
obj.getVar("PunishmentBlowBool").setBool(1, false);
}
}
function onAttack_PunishmentBlow(obj, damager, boundingBox, isStuck)
{
if(!obj || isStuck) return;
if(damager.isObjectType(OBJECTTYPE_ACTIVE) && obj.getSkillSubState() == 2){
if(obj.getVar("PunishmentBlowBool").getBool(2)) onAttack_EssenceofPhlege_SetFireBomb(obj, damager, boundingBox);
}
}
//火焰精华
function checkExecutableSkill_EssenceofPhlege(obj)
{
if (!obj) return false;
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_ESSENCEOFPHLEGE);
if (isUse){
obj.sq_IntVectClear();
if(sq_GetSkillLevel(obj, SKILL_BYKK_POURESSENCE) > 0 && (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.sq_IntVectPush(2);
else obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_ESSENCEOFPHLEGE, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_EssenceofPhlege(obj)
{
if (!obj) return false;
return true;
}
function onSetState_EssenceofPhlege(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_ESSENCEOFPHLEGE_BODY);
break;
case 1:
obj.sq_SetCurrentAnimation(ATPANI_BYKK_ESSENCEOFPHLEGEAIR_BODY);
break;
case 2:
obj.sq_SetCurrentAnimation(ATPANI_BYKK_POURESSENCE_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_EssenceofPhlege(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
case 2:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
case 1:
obj.sq_IntVectClear();
obj.sq_IntVectPush(1);
obj.sq_IntVectPush(0);
obj.sq_IntVectPush(sq_GetZPos(obj));
obj.sq_AddSetStatePacket(STATE_JUMP, STATE_PRIORITY_AUTO, true);
break;
}
}
function onProcCon_EssenceofPhlege(obj)
{
if(!obj) return;
}
function onKeyFrameFlag_EssenceofPhlege(obj, flagIndex)
{
if(!obj) return false;
switch(flagIndex){
case 101://`throw bottle` 56 0 95
obj.getVar("EssenceofPhlegeObj").clear_obj_vector();
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_ESSENCEOFPHLEGE, -1, 1, 1.0);
local lifeTimeForTarget = sq_GetIntData(obj, SKILL_BYKK_ESSENCEOFPHLEGE, 3);
local lifeTimeForBurning = sq_GetIntData(obj, SKILL_BYKK_ESSENCEOFPHLEGE, 4);
local lifeTimeForLanding = sq_GetIntData(obj, SKILL_BYKK_ESSENCEOFPHLEGE, 9);
local sizeRate = sq_GetIntData(obj, SKILL_BYKK_ESSENCEOFPHLEGE, 13);
createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,56,0,95,obj.getDirection(),2,SKILL_BYKK_ESSENCEOFPHLEGE,1,totalDamage,lifeTimeForTarget,lifeTimeForBurning,lifeTimeForLanding,sizeRate,0,0,0);
break;
case 102://`throw bottle` 38 0 89
obj.getVar("EssenceofPhlegeObj").clear_obj_vector();
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_ESSENCEOFPHLEGE, -1, 1, 1.0);
local lifeTimeForTarget = sq_GetIntData(obj, SKILL_BYKK_ESSENCEOFPHLEGE, 3);
local lifeTimeForBurning = sq_GetIntData(obj, SKILL_BYKK_ESSENCEOFPHLEGE, 4);
local lifeTimeForLanding = sq_GetIntData(obj, SKILL_BYKK_ESSENCEOFPHLEGE, 9);
local sizeRate = sq_GetIntData(obj, SKILL_BYKK_ESSENCEOFPHLEGE, 13);
createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,38,0,89,obj.getDirection(),2,SKILL_BYKK_ESSENCEOFPHLEGE,1,totalDamage,lifeTimeForTarget,lifeTimeForBurning,lifeTimeForLanding,sizeRate,0,0,0);
break;
case 103://
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_ESSENCEOFPHLEGE, -1, 1, 1.0);
local lifeTimeForTarget = sq_GetIntData(obj, SKILL_BYKK_ESSENCEOFPHLEGE, 3);
local lifeTimeForBurning = sq_GetIntData(obj, SKILL_BYKK_ESSENCEOFPHLEGE, 4);
local sizeRate = sq_GetIntData(obj, SKILL_BYKK_ESSENCEOFPHLEGE, 19);
createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,0,0,0,obj.getDirection(),2,SKILL_BYKK_ESSENCEOFPHLEGE,2,totalDamage,lifeTimeForTarget,lifeTimeForBurning,sizeRate,0,0,0,0);
break;
}
return true;
}
function onTimeEvent_EssenceofPhlege(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
}
function onEndState_EssenceofPhlege(obj, new_state)
{
if(!obj) return;
}
//神焰
function checkExecutableSkill_HolyFlame(obj)
{
if (!obj) return false;
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_HOLYFLAME);
if (isUse){
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_HOLYFLAME, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_HolyFlame(obj)
{
if (!obj) return false;
return true;
}
function onSetState_HolyFlame(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_HOLYFLAME_BODY);
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
local currentAni = obj.getCurrentAnimation();
local speedRate = 4000 / currentAni.getDelaySum(0, 0);
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_HOLYFLAME, -1, 1, 1.0);
local sizeRate = sq_GetIntData(obj, SKILL_BYKK_HOLYFLAME, 10);
createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,0,0,0,obj.getDirection(),2,SKILL_BYKK_HOLYFLAME,1,totalDamage,sizeRate,speedRate,0,0,0,0,0);
obj.sq_PlaySound("R_PW_HOLY_FLAME");
break;
}
}
function onEndCurrentAni_HolyFlame(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
}
}
function onProcCon_HolyFlame(obj)
{
if(!obj) return;
}
function onKeyFrameFlag_HolyFlame(obj, flagIndex)
{
if(!obj) return false;
switch(flagIndex){
case 102:
sq_SetMyShake(obj, 2, 100);
sq_flashScreen(obj,20,100,80,150, sq_RGB(0,0,0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
local loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_HOLYFLAME);
if(!loadSlot){
local loadNumber = sq_GetIntData(obj, SKILL_BYKK_HOLYFLAME, 0);
local skillLevel = sq_GetSkillLevel(obj, SKILL_BYKK_BRANDOFHERESY);
if(skillLevel > 0) loadNumber = loadNumber + sq_GetLevelData(obj, SKILL_BYKK_BRANDOFHERESY, 0, skillLevel);
if(sq_GetSkillLevel(obj, SKILL_BYKK_FIRECONFESSION) > 0) loadNumber = loadNumber + 2;
obj.sq_AddSkillLoad(SKILL_BYKK_HOLYFLAME, 147, loadNumber, 5000);
if(!CNSquirrelAppendage.sq_IsAppendAppendage(obj, "character/demonicswordman/2_inquistor/ap_holyflame_buff.nut")){
local AddAppendage = CNSquirrelAppendage.sq_AppendAppendage(obj, obj, -1, false, "character/demonicswordman/2_inquistor/ap_holyflame_buff.nut", true);
local burnTime = sq_GetIntData(obj, SKILL_BYKK_HOLYFLAME, 1);
AddAppendage.getVar("custom").setInt(0, burnTime);
}
}
else{
local nowNumber = loadSlot.getRemainLoadNumber();
local loadNumber = sq_GetIntData(obj, SKILL_BYKK_HOLYFLAME, 0);
local skillLevel = sq_GetSkillLevel(obj, SKILL_BYKK_BRANDOFHERESY);
if(skillLevel > 0) loadNumber = loadNumber + sq_GetLevelData(obj, SKILL_BYKK_BRANDOFHERESY, 0, skillLevel);
if(sq_GetSkillLevel(obj, SKILL_BYKK_FIRECONFESSION) > 0) loadNumber = loadNumber + 2;
if(nowNumber < loadNumber){
loadSlot.increaseLoadCount(loadNumber - nowNumber);
}
// obj.sq_RemoveSkillLoad(SKILL_BYKK_HOLYFLAME);
}
break;
}
return true;
}
function onTimeEvent_HolyFlame(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
}
function onEndState_HolyFlame(obj, new_state)
{
if(!obj) return;
}
//审判重击
function checkExecutableSkill_JudgmentBlow(obj)
{
if (!obj) return false;
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_JUDGMENTBLOW);
if (isUse){
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_JUDGMENTBLOW, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_JudgmentBlow(obj)
{
if (!obj) return false;
return true;
}
function onSetState_JudgmentBlow(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 loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_HOLYFLAME);
local atkIndex = ATPATK_BYKK_JUDGMENTBLOW;
if(loadSlot){
if(loadSlot.getRemainLoadNumber() > 0){
obj.sq_SetCurrentAnimation(ATPANI_BYKK_HOLYFLAME_JUDGMENTBLOW);
atkIndex = ATPATK_BYKK_HOLYFLAME_JUDGMENTBLOW;
loadSlot.decreaseLoadCount(1);
obj.getVar("JudgmentBlowSet").setInt(0, 1);
}
else{
obj.sq_SetCurrentAnimation(ATPANI_BYKK_JUDGMENTBLOW_BODY);
obj.getVar("JudgmentBlowSet").setInt(0, 0);
}
}
else{
obj.sq_SetCurrentAnimation(ATPANI_BYKK_JUDGMENTBLOW_BODY);
obj.getVar("JudgmentBlowSet").setInt(0, 0);
}
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_JUDGMENTBLOW, -1, 0, 1.0);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, atkIndex));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
if(obj.getVar("JudgmentBlowSet").getInt(0) > 0) {
totalDamage = totalDamage * sq_GetLevelData(obj, SKILL_BYKK_HOLYFLAME, 0, sq_GetSkillLevel(obj, SKILL_BYKK_HOLYFLAME)) / 1000;
obj.getVar("holyflameDamageSet").setInt(0, totalDamage);
local attackInfo = sq_GetCurrentAttackInfo(obj);
attackInfo.setElement(ENUM_ELEMENT_FIRE);
attackInfo.setElement(ENUM_ELEMENT_LIGHT);
}
break;
}
}
function onEndCurrentAni_JudgmentBlow(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
}
}
function onProcCon_JudgmentBlow(obj)
{
if(!obj) return;
}
function onKeyFrameFlag_JudgmentBlow(obj, flagIndex)
{
if(!obj) return false;
switch(flagIndex){
case 101:
obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/atholyflame/atjudgmentblow/atjudgmentblow_att1_01.ani"), 0, 0);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atholyflame/atjudgmentblow/atjudgmentblow_stone_6.ani", 0, 1, 0);
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_JUDGMENTBLOW, -1, 1, 1.0);
local sizeRate = sq_GetIntData(obj, SKILL_BYKK_JUDGMENTBLOW, 0);
local isFire = obj.getVar("JudgmentBlowSet").getInt(0);
createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,185,0,0,obj.getDirection(),2,SKILL_BYKK_JUDGMENTBLOW,1,totalDamage,sizeRate,isFire,0,0,0,0,0);
sq_SetMyShake(obj, 5, 80);
break;
case 102:
obj.getVar("HolyFlameEnable").setBool(0, true);
obj.getVar("PurificationEnable").setBool(0, true);
obj.sq_PlaySound("JUDGMENT_BLOW");
break;
case 111://69
sq_SetMyShake(obj, 2, 120);
sq_flashScreen(obj,0,80,40,204, sq_RGB(255,255,255), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
break;
case 112:
obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/atholyflame/atjudgmentblow/atjudgmentblow_att2_02.ani"), 0, 0);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atholyflame/atjudgmentblow/atjudgmentblow_stone_6.ani", 0, 1, 0);
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_JUDGMENTBLOW, -1, 1, 1.0);
local sizeRate = sq_GetIntData(obj, SKILL_BYKK_JUDGMENTBLOW, 0);
local isFire = obj.getVar("JudgmentBlowSet").getInt(0);
createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,185,0,0,obj.getDirection(),2,SKILL_BYKK_JUDGMENTBLOW,1,totalDamage,sizeRate,isFire,0,0,0,0,0);
sq_SetMyShake(obj, 12, 120);
local skillLevel = sq_GetSkillLevel(obj, SKILL_BYKK_FIRECONFESSION);
if(skillLevel > 0){
local addTime = sq_GetIntData(obj, SKILL_BYKK_FIRECONFESSION, 11);
local hitMax = sq_GetIntData(obj, SKILL_BYKK_FIRECONFESSION, 12);
local totalDamage2 = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_JUDGMENTBLOW, -1, 0, 1.0);
totalDamage = totalDamage + totalDamage2
local bonusRate = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_FIRECONFESSION, -1, 4, 1.0);
totalDamage = totalDamage * bonusRate / 1000;
createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,185,0,0,obj.getDirection(),2,SKILL_BYKK_JUDGMENTBLOW,2,totalDamage,sizeRate,isFire,hitMax,addTime,0,0,0);
createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,185,0,0,obj.getDirection(),2,SKILL_BYKK_JUDGMENTBLOW,3,sizeRate,0,0,0,0,0,0,0);
}
break;
case 113:
obj.sq_PlaySound("JUDGMENT_BLOW_FLAME");
break;
}
return true;
}
function onTimeEvent_JudgmentBlow(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
}
function onEndState_JudgmentBlow(obj, new_state)
{
if(!obj) return;
}
function onAttack_JudgmentBlow(obj, damager, boundingBox, isStuck)
{
if(!obj || isStuck) return;
if(damager.isObjectType(OBJECTTYPE_ACTIVE)){
if(obj.getVar("JudgmentBlowSet").getInt(0) > 0) onAttack_EssenceofPhlege_SetFireBomb(obj, damager, boundingBox);
}
}
//神焰斩
function checkExecutableSkill_Summarytiral(obj)
{
if (!obj) return false;
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_SUMMARYTIRAL);
if (isUse){
obj.getVar("Summarytiral").setInt(1, 0);
local loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_HOLYFLAME);
if(loadSlot){
if(loadSlot.getRemainLoadNumber() > 0){
loadSlot.decreaseLoadCount(1);
obj.getVar("Summarytiral").setInt(1, 1);
}
}
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_SUMMARYTIRAL, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_Summarytiral(obj)
{
if (!obj) return false;
return true;
}
function onSetState_Summarytiral(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_SUMMARYTIRAL_BODY_PIERCE_ATK1);
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
obj.getVar("Summarytiral").setInt(0, 0);
obj.getVar("SummarytiralTar").clear_obj_vector();
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_SUMMARYTIRAL, -1, 0, 1.0);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, ATPATK_BYKK_SUMMARYTIRALPIERCE));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
print("test : "+obj.getVar("Summarytiral").getInt(1));
if(obj.getVar("Summarytiral").getInt(1) > 0) {
totalDamage = totalDamage * sq_GetLevelData(obj, SKILL_BYKK_HOLYFLAME, 0, sq_GetSkillLevel(obj, SKILL_BYKK_HOLYFLAME)) / 1000;
obj.getVar("holyflameDamageSet").setInt(0, totalDamage);
local attackInfo = sq_GetCurrentAttackInfo(obj);
attackInfo.setElement(ENUM_ELEMENT_FIRE);
attackInfo.setElement(ENUM_ELEMENT_LIGHT);
obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/holyflameweaponeffect/summarytiral_body_pierce_atk1.ani"), 0, 0);
}
break;
case 1:
obj.sq_SetCurrentAnimation(ATPANI_BYKK_SUMMARYTIRAL_BODY_NOMAL_ATTACK2);
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_SUMMARYTIRAL, -1, 1, 1.0);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, ATPATK_BYKK_SUMMARYTIRALNOMALSWING));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
if(obj.getVar("Summarytiral").getInt(1) > 0){
totalDamage = totalDamage * sq_GetLevelData(obj, SKILL_BYKK_HOLYFLAME, 0, sq_GetSkillLevel(obj, SKILL_BYKK_HOLYFLAME)) / 1000;
obj.getVar("holyflameDamageSet").setInt(0, totalDamage);
local attackInfo = sq_GetCurrentAttackInfo(obj);
attackInfo.setElement(ENUM_ELEMENT_FIRE);
attackInfo.setElement(ENUM_ELEMENT_LIGHT);
obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/holyflameweaponeffect/summarytiral_body_nomal_attack2.ani"), 0, 0);
local currentAni = obj.getCurrentAnimation();
local speedRate = 8000 / currentAni.getDelaySum(0, 2);
local pooledObj = sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atsummarytiral/normal/statk1fire_firedodge.ani", 0, 1, 0);
local pAni = pooledObj.getCurrentAnimation();
pAni.setSpeedRate(speedRate.tofloat() * 0.9);
}
break;
case 2:
obj.sq_SetCurrentAnimation(ATPANI_BYKK_SUMMARYTIRAL_BODY_INCINERATION_ATTACK2);
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_SUMMARYTIRAL, -1, 2, 1.0);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, ATPATK_BYKK_SUMMARYTIRALINCINERATIONSWING));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
if(obj.getVar("Summarytiral").getInt(1) > 0){
totalDamage = totalDamage * sq_GetLevelData(obj, SKILL_BYKK_HOLYFLAME, 0, sq_GetSkillLevel(obj, SKILL_BYKK_HOLYFLAME)) / 1000;
obj.getVar("holyflameDamageSet").setInt(0, totalDamage);
local attackInfo = sq_GetCurrentAttackInfo(obj);
attackInfo.setElement(ENUM_ELEMENT_FIRE);
attackInfo.setElement(ENUM_ELEMENT_LIGHT);
obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/holyflameweaponeffect/summarytiral_body_incineration_attack2.ani"), 0, 0);
local currentAni = obj.getCurrentAnimation();
local speedRate = 8000 / currentAni.getDelaySum(0, 2);
local pooledObj = sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atsummarytiral/incineration/statk2fire_fire01.ani", 0, 1, 0);
local pAni = pooledObj.getCurrentAnimation();
pAni.setSpeedRate(speedRate.tofloat());
}
break;
}
}
function onEndCurrentAni_Summarytiral(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
if(obj.getVar("SummarytiralTar").get_obj_vector_size() > 0){
obj.setTimeEvent(1, 200, 1, false);
return;
}
case 1:
case 2:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
}
}
function onProcCon_Summarytiral(obj)
{
if(!obj) return;
}
function onKeyFrameFlag_Summarytiral(obj, flagIndex)
{
if(!obj) return false;
switch(flagIndex){
case 201:
if(obj.getVar("Summarytiral").getInt(1) > 0) obj.sq_PlaySound("SUMMARY_TIRAL_SWISH_FLAME");
else obj.sq_PlaySound("SUMMARY_TIRAL_SWISH");
break;
case 202:
sq_SetMyShake(obj, 5, 240);
break;
case 203:
//`purification enable`
obj.getVar("PurificationEnable").setBool(0, true);
break;
case 204:
//`SwingEndHolyFlameEffect` -11 0 -21
if(obj.getVar("Summarytiral").getInt(1) > 0) sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atsummarytiral/normal/statk1endfire_01.ani", -11, 0, -21);
//`holy flame enable`
obj.getVar("HolyFlameEnable").setBool(0, true);
obj.getVar("PurificationEnable").setBool(0, true);
break;
case 301://flag=2
//`HoldMonsterMovePos` 166 0 -20
local size = obj.getVar("SummarytiralTar").get_obj_vector_size();
if(size > 0){
local currentAni = obj.getCurrentAnimation();
local delay = currentAni.getDelaySum(2, 2);
for(local i = 0; i < size; i++){
local targetObj = obj.getVar("SummarytiralTar").get_obj_vector(i);
if(targetObj && targetObj.getState() != STATE_DIE){
local addAppendage = CNSquirrelAppendage.sq_GetAppendage(targetObj, "character/demonicswordman/2_inquistor/ap_holyflame_hold.nut");
if(!sq_IsFixture(targetObj)) sq_MoveToAppendageForce(targetObj, obj, obj, 166, 0, -20, delay, true, addAppendage);
}
}
}
//`CreateHoleEffect` 136 0 -66
//`CreateDustEffect` 108 0 -103
break;
case 302://flag=3
sq_SetMyShake(obj, 5, 160);
//`HoldMonsterMovePos` 153 0 -40
local size = obj.getVar("SummarytiralTar").get_obj_vector_size();
if(size > 0){
local currentAni = obj.getCurrentAnimation();
local delay = currentAni.getDelaySum(3, 3);
for(local i = 0; i < size; i++){
local targetObj = obj.getVar("SummarytiralTar").get_obj_vector(i);
if(targetObj && targetObj.getState() != STATE_DIE){
local addAppendage = CNSquirrelAppendage.sq_GetAppendage(targetObj, "character/demonicswordman/2_inquistor/ap_holyflame_hold.nut");
if(!sq_IsFixture(targetObj)) sq_MoveToAppendageForce(targetObj, obj, obj, 153, 0, -40, delay, true, addAppendage);
}
}
}
if(obj.getVar("Summarytiral").getInt(1) > 0) obj.sq_PlaySound("SUMMARY_TIRAL_DOWN_FLAME");
else obj.sq_PlaySound("SUMMARY_TIRAL_DOWN");
break;
case 303://flag=7
local size = obj.getVar("SummarytiralTar").get_obj_vector_size();
if(size > 0){
local currentAni = obj.getCurrentAnimation();
local delay = currentAni.getDelaySum(7, 7);
for(local i = 0; i < size; i++){
local targetObj = obj.getVar("SummarytiralTar").get_obj_vector(i);
if(targetObj && targetObj.getState() != STATE_DIE){
local addAppendage = CNSquirrelAppendage.sq_GetAppendage(targetObj, "character/demonicswordman/2_inquistor/ap_holyflame_hold.nut");
if(!sq_IsFixture(targetObj)) sq_MoveToAppendageForce(targetObj, obj, obj, 213, 0, 10, delay, true, addAppendage);
}
}
}
//`HoldMonsterMovePos` 213 0 10
//`CreateDustEffect` 192 0 -43
//`RemoveHoleEffect` 162 0 -91
if(obj.getVar("Summarytiral").getInt(1) > 0) obj.sq_PlaySound("SUMMARY_TIRAL_UP_FLAME");
else obj.sq_PlaySound("SUMMARY_TIRAL_UP");
break;
case 304://flag=8
local size = obj.getVar("SummarytiralTar").get_obj_vector_size();
if(size > 0){
local currentAni = obj.getCurrentAnimation();
local delay = currentAni.getDelaySum(8, 8);
for(local i = 0; i < size; i++){
local targetObj = obj.getVar("SummarytiralTar").get_obj_vector(i);
if(targetObj && targetObj.getState() != STATE_DIE){
local addAppendage = CNSquirrelAppendage.sq_GetAppendage(targetObj, "character/demonicswordman/2_inquistor/ap_holyflame_hold.nut");
if(!sq_IsFixture(targetObj)) sq_MoveToAppendageForce(targetObj, obj, obj, 199, 0, 50, delay, true, addAppendage);
}
}
}
//`HoldMonsterMovePos` 199 0 50
//`HoldMonsterCutting` 192 0 14
break;
case 305://flag=9
sq_flashScreen(obj,0,80,240,204, sq_RGB(255,255,255), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_COVER);
break;
case 306://flag=10
sq_SetMyShake(obj, 5, 240);
break;
case 307://flag=11
//`holy flame enable` 0 0 0
obj.getVar("HolyFlameEnable").setBool(0, true);
//`purification enable` 0 0 0
obj.getVar("PurificationEnable").setBool(0, true);
break;
}
return true;
}
function onTimeEvent_Summarytiral(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
switch(timeEventIndex){
case 1:
obj.sq_IntVectClear();
if(obj.getVar("Summarytiral").getInt(0) > 0) obj.sq_IntVectPush(2);
else obj.sq_IntVectPush(1);
obj.sq_AddSetStatePacket(STATE_BYKK_SUMMARYTIRAL, STATE_PRIORITY_AUTO, true);
break;
}
}
function onEndState_Summarytiral(obj, new_state)
{
if(!obj) return;
if(new_state != STATE_BYKK_SUMMARYTIRAL){
local size = obj.getVar("SummarytiralTar").get_obj_vector_size();
if(size > 0){
for(local i = 0; i < size; i++){
local targetObj = obj.getVar("SummarytiralTar").get_obj_vector(i);
if(targetObj && targetObj.getState() != STATE_DIE){
// local AddAppendage = CNSquirrelAppendage.sq_GetAppendage(targetObj, "character/demonicswordman/2_inquistor/ap_holyflame_hold.nut");
// if(AddAppendage && !sq_IsFixture(targetObj)) sq_MoveToAppendageForce(targetObj, obj, targetObj, 0, 0, -sq_GetZPos(targetObj), 300, true, AddAppendage);
CNSquirrelAppendage.sq_RemoveAppendage(targetObj, "character/demonicswordman/2_inquistor/ap_summarytiral_hold.nut");
}
}
}
}
}
function onAttack_Summarytiral(obj, damager, boundingBox, isStuck)
{
if(!obj || isStuck) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
if(damager.isObjectType(OBJECTTYPE_ACTIVE)){
if(obj.getVar("Summarytiral").getInt(1) > 0) onAttack_EssenceofPhlege_SetFireBomb(obj, damager, boundingBox);
if(!obj.getVar("SummarytiralTar").is_obj_vector(damager)) obj.getVar("SummarytiralTar").push_obj_vector(damager);
local currentAni = obj.getCurrentAnimation();
local frameIndex = sq_GetCurrentFrameIndex(obj);
local delay = currentAni.getDelaySum(frameIndex, 4);
if(CNSquirrelAppendage.sq_IsAppendAppendage(damager, "character/demonicswordman/2_inquistor/ap_holyflame_hold.nut")){
if(obj.getVar("Summarytiral").getInt(0) != 1) obj.getVar("Summarytiral").setInt(0, 1);
local AddAppendage = CNSquirrelAppendage.sq_GetAppendage(damager, "character/demonicswordman/2_inquistor/ap_holyflame_hold.nut");
if(!sq_IsFixture(damager)) sq_MoveToAppendageForce(damager, obj, obj, 151, 0, 52, delay, true, AddAppendage);
return;
}
else{
local apdPath = "character/demonicswordman/2_inquistor/ap_summarytiral_hold.nut";
if(CNSquirrelAppendage.sq_IsAppendAppendage(damager, apdPath)) CNSquirrelAppendage.sq_RemoveAppendage(damager, apdPath);
local AddAppendage = CNSquirrelAppendage.sq_AppendAppendage(damager, obj, -1, false, apdPath, true);
sq_HoldAndDelayDie(damager, obj, true, true, true, 200, 200, ENUM_DIRECTION_NEUTRAL , AddAppendage);
if(!sq_IsFixture(damager)) sq_MoveToAppendageForce(damager, obj, obj, 151, 0, 52, delay, true, AddAppendage);
}
}
break;
}
}
//神焰洗礼
function checkExecutableSkill_FlameOfBaptism(obj)
{
if (!obj) return false;
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_FLAMEOFBAPTISM);
if (isUse){
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_FLAMEOFBAPTISM, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_FlameOfBaptism(obj)
{
if (!obj) return false;
return true;
}
function onSetState_FlameOfBaptism(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_FLAMEOFBAPTISM_BODY);
obj.sq_PlaySound("PW_FLAME_BAPTISM_01");
obj.sq_PlaySound("FLAME_BAPTISM_SPLASH");
obj.getVar("FlameOfBaptism").setInt(0, 0);
local loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_HOLYFLAME);
if(loadSlot){
if(loadSlot.getRemainLoadNumber() > 0){
obj.getVar("FlameOfBaptism").setInt(0, 1);
loadSlot.decreaseLoadCount(1);
}
}
break;
}
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
}
function onEndCurrentAni_FlameOfBaptism(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
}
}
function onProcCon_FlameOfBaptism(obj)
{
if(!obj) return;
}
function onKeyFrameFlag_FlameOfBaptism(obj, flagIndex)
{
if(!obj) return false;
switch(flagIndex){
case 101:
local currentAni = obj.getCurrentAnimation();
local speedRate = 5000 / currentAni.getDelaySum(0, 0);
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_FLAMEOFBAPTISM, -1, 0, 1.0);
local sizeRate = sq_GetIntData(obj, SKILL_BYKK_FLAMEOFBAPTISM, 2);
local sub = obj.getVar("FlameOfBaptism").getInt(0);
createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,0,0,0,obj.getDirection(),2,SKILL_BYKK_FLAMEOFBAPTISM,1,totalDamage,sizeRate,speedRate,sub,0,0,0,0);
break;
case 102:
local currentAni = obj.getCurrentAnimation();
local speedRate = 5000 / currentAni.getDelaySum(0, 0);
local pooledObj = sq_AddDrawOnlyAniFromParent(obj, "passiveobject/atpriest_bykk/animation/2_inquistor/animation/atflameofbaptism/flameofbaptismback_24.ani", 0, -1, 0);
local pAni = pooledObj.getCurrentAnimation();
pAni.setSpeedRate(speedRate.tofloat());
if(obj.getVar("FlameOfBaptism").getInt(0) > 0){
local sizeRate = sq_GetIntData(obj, SKILL_BYKK_FLAMEOFBAPTISM, 2);
local rangeX = 290 * sizeRate / 100, rangeY = 70 * sizeRate / 100;;
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_ESSENCEOFPHLEGE, -1, 1, 1.0);
local lifeTimeForTarget = sq_GetIntData(obj, SKILL_BYKK_ESSENCEOFPHLEGE, 3);
local lifeTimeForBurning = sq_GetIntData(obj, SKILL_BYKK_ESSENCEOFPHLEGE, 4);
sizeRate = sq_GetIntData(obj, SKILL_BYKK_ESSENCEOFPHLEGE, 19);
local sub = obj.getVar("FlameOfBaptism").getInt(0);
local objectManager = obj.getObjectManager();
local objectNumber = objectManager.getCollisionObjectNumber();
for (local i = 0; i < objectNumber; i++){
local object = objectManager.getCollisionObject(i);
if (object && object.isObjectType(OBJECTTYPE_ACTIVE) && obj.isEnemy(object) && object.isInDamagableState(obj) && sq_Abs(sq_GetXPos(obj) - sq_GetXPos(object)) <= rangeX && sq_Abs(sq_GetYPos(obj) - sq_GetYPos(object)) <= rangeY) {
local group = sq_GetGroup(object);
local uniqueId = sq_GetUniqueId(object);
local aObj = object.getVar("EssenceofPhlege").get_obj_vector(0);
if(aObj){
local colObj = sq_GetCNRDObjectToCollisionObject(aObj);
if(colObj.getState() >= 20) continue;
else colObj.setTimeEvent(1, 1000, 1, true);
}
createSkillPassive_ATPriest_bykk(obj,object,PASSIVEOBJ_BYKK_ATPRIEST,0,1,sq_GetZPos(object) + sq_GetHeightObject(object) / 2 - sq_GetZPos(obj),obj.getDirection(),2,SKILL_BYKK_ESSENCEOFPHLEGE,3,totalDamage,lifeTimeForTarget,lifeTimeForBurning,sizeRate,group,uniqueId,0,0);
}
}
}
break;
case 103:
sq_SetShake(obj, 3, 250);
break;
case 104:
obj.sq_PlaySound("PW_FLAME_BAPTISM_02");
obj.sq_PlaySound("FLAME_BAPTISM_FIRE");
break;
}
return true;
}
function onTimeEvent_FlameOfBaptism(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
}
function onEndState_FlameOfBaptism(obj, new_state)
{
if(!obj) return;
}
//神焰怒火
function checkExecutableSkill_Virtuousfury(obj)
{
if (!obj) return false;
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_VIRTUOUSFURY);
if (isUse){
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_VIRTUOUSFURY, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_Virtuousfury(obj)
{
if (!obj) return false;
return true;
}
function onSetState_Virtuousfury(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.getVar("FlameOfBaptism").setInt(0, 0);
local loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_HOLYFLAME);
if(loadSlot){
if(loadSlot.getRemainLoadNumber() > 0){
obj.getVar("FlameOfBaptism").setInt(0, 1);
loadSlot.decreaseLoadCount(1);
local flashScreenObj = sq_flashScreen(obj,80,99990,240,255, sq_RGB(0,0,0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
obj.getVar("Virtuousfury_Flashobj").clear_obj_vector();
obj.getVar("Virtuousfury_Flashobj").push_obj_vector(flashScreenObj);
}
}
if(obj.getVar("FlameOfBaptism").getInt(0) > 0){
obj.sq_SetCurrentAnimation(ATPANI_BYKK_VIRTUOUSFURY_HOLYFLAME_BODY);
obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/holyflameweaponeffect/virtuousfury_holyflame_body.ani"), 0, 0);
}
else obj.sq_SetCurrentAnimation(ATPANI_BYKK_VIRTUOUSFURY_NORMAL_BODY);
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
obj.getVar("VirtuousfuryBool").setBool(0, true);
break;
}
}
function onEndCurrentAni_Virtuousfury(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
}
}
function onProcCon_Virtuousfury(obj)
{
if(!obj) return;
if(obj.getVar("VirtuousfuryBool").getBool(0)){
sq_SetKeyxEnable(obj, E_JUMP_COMMAND, true);
if(sq_IsEnterCommand(obj, E_JUMP_COMMAND)){
obj.getVar("VirtuousfuryBool").setBool(0, false);
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
}
}
}
function onKeyFrameFlag_Virtuousfury(obj, flagIndex)
{
if(!obj) return false;
switch(flagIndex){
case 103:
case 203:
local atkIndex = ATPATK_BYKK_VIRTUOUSFURY_NORMAL;
if(obj.getVar("FlameOfBaptism").getInt(0) > 0) atkIndex = ATPATK_BYKK_VIRTUOUSFURY_HOLYFLAME;
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_VIRTUOUSFURY, -1, 0, 1.0);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, atkIndex));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
if(obj.getVar("FlameOfBaptism").getInt(0) > 0){
totalDamage = totalDamage * sq_GetLevelData(obj, SKILL_BYKK_HOLYFLAME, 0, sq_GetSkillLevel(obj, SKILL_BYKK_HOLYFLAME)) / 1000;
obj.getVar("holyflameDamageSet").setInt(0, totalDamage);
local attackInfo = sq_GetCurrentAttackInfo(obj);
attackInfo.setElement(ENUM_ELEMENT_FIRE);
attackInfo.setElement(ENUM_ELEMENT_LIGHT);
}
break;
case 104:
case 204:
//`loop start`
break;
case 107:
case 207:
case 113:
case 213:
case 117:
case 217:
case 119:
case 219:
obj.resetHitObjectList();
break;
case 124:
case 224:
if(obj.getVar("VirtuousfuryBool").getBool(0)) obj.getVar("VirtuousfuryBool").setBool(0, false);
break;
case 125:
case 225:
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_VIRTUOUSFURY, -1, 1, 1.0);
local atkIndex = ATPATK_BYKK_VIRTUOUSFURY_LAST_NORMAL;
if(obj.getVar("FlameOfBaptism").getInt(0) > 0) atkIndex = ATPATK_BYKK_VIRTUOUSFURY_LAST_HOLYFLAME;
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, atkIndex));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
if(obj.getVar("FlameOfBaptism").getInt(0) > 0){
totalDamage = totalDamage * sq_GetLevelData(obj, SKILL_BYKK_HOLYFLAME, 0, sq_GetSkillLevel(obj, SKILL_BYKK_HOLYFLAME)) / 1000;
obj.getVar("holyflameDamageSet").setInt(0, totalDamage);
local attackInfo = sq_GetCurrentAttackInfo(obj);
attackInfo.setElement(ENUM_ELEMENT_FIRE);
attackInfo.setElement(ENUM_ELEMENT_LIGHT);
}
obj.sq_PlaySound("R_PW_VIRTUOUS_FURY");
break;
case 126:
case 226:
if(obj.getVar("FlameOfBaptism").getInt(0) > 0){
//`off flash`
local flashScreenObj = obj.getVar("Virtuousfury_Flashobj").get_obj_vector(0);
local pflashScreen = sq_GetCNRDObjectToFlashScreen(flashScreenObj);
if(pflashScreen) pflashScreen.fadeOut();
sq_flashScreen(obj,0,80,160,204, sq_RGB(255,255,255), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_COVER);
}
else sq_flashScreen(obj,0,60,300,204, sq_RGB(255,255,255), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
sq_SetMyShake(obj, 5, 360);
obj.resetHitObjectList();
break;
case 128:
case 228:
//`holy flame enable`
obj.getVar("HolyFlameEnable").setBool(0, true);
obj.getVar("PurificationEnable").setBool(0, true);
break;
case 230:
//`add holy flame off effect`
if(obj.getVar("FlameOfBaptism").getInt(0) > 0){
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atvirtuousfury/holyflame/vfsaintendfire_endfire01.ani", 0, 1, 0);
}
//`remove holy flame weapon effect`
break;
}
return true;
}
function onTimeEvent_Virtuousfury(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
}
function onEndState_Virtuousfury(obj, new_state)
{
if(!obj) return;
}
function onAttack_Virtuousfury(obj, damager, boundingBox, isStuck)
{
if(!obj || isStuck) return;
if(damager.isObjectType(OBJECTTYPE_ACTIVE)){
if(obj.getVar("FlameOfBaptism").getInt(0) > 0) onAttack_EssenceofPhlege_SetFireBomb(obj, damager, boundingBox);
}
}
//行刑
function checkExecutableSkill_Decollation(obj)
{
if (!obj) return false;
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_DECOLLATION);
if (isUse){
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_DECOLLATION, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_Decollation(obj)
{
if (!obj) return false;
return true;
}
function onSetState_Decollation(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.getVar("Decollation").setInt(0, 0);
local loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_HOLYFLAME);
if(loadSlot){
if(loadSlot.getRemainLoadNumber() > 0){
obj.getVar("Decollation").setInt(0, 1);
loadSlot.decreaseLoadCount(1);
}
}
if(obj.getVar("Decollation").getInt(0) > 0){
obj.sq_SetCurrentAnimation(ATPANI_BYKK_DECOLLATIONFIREBODY_BODY);
obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/holyflameweaponeffect/decollationfirebody_body.ani"), 0, 0);
}
else obj.sq_SetCurrentAnimation(ATPANI_BYKK_DECOLLATIONNORMAL_BODY);
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.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_Decollation(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
}
}
function onProcCon_Decollation(obj)
{
if(!obj) return;
}
function onKeyFrameFlag_Decollation(obj, flagIndex)
{
if(!obj) return false;
switch(flagIndex){
case 102:
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, ATPATK_BYKK_DECOLLATION_PUSH));
obj.getVar("DecollationBool").setBool(0, true);
break;
case 107:
sq_SetMyShake(obj, 2, 160);
local flashScreenObj = sq_flashScreen(obj,80,99990,240,255, sq_RGB(0,0,0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
obj.getVar("Decollation_Flashobj").clear_obj_vector();
obj.getVar("Decollation_Flashobj").push_obj_vector(flashScreenObj);
local currentAni = obj.getCurrentAnimation();
local delay = currentAni.getDelaySum(7, 10);
local delay2 = currentAni.getDelaySum(11, 12);
sq_flashScreen(obj,120,delay,delay2,102, sq_RGB(255,0,0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
break;
case 115:
obj.getVar("DecollationBool").setBool(0, false);
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_DECOLLATION, -1, 0, 1.0);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, ATPATK_BYKK_DECOLLATION));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
if(obj.getVar("Decollation").getInt(0) > 0){
totalDamage = totalDamage * sq_GetLevelData(obj, SKILL_BYKK_HOLYFLAME, 0, sq_GetSkillLevel(obj, SKILL_BYKK_HOLYFLAME)) / 1000;
obj.getVar("holyflameDamageSet").setInt(0, totalDamage);
local attackInfo = sq_GetCurrentAttackInfo(obj);
attackInfo.setElement(ENUM_ELEMENT_FIRE);
attackInfo.setElement(ENUM_ELEMENT_LIGHT);
}
break;
case 116:
sq_SetMyShake(obj, 5, 320);
//off flash
local flashScreenObj = obj.getVar("Decollation_Flashobj").get_obj_vector(0);
local pflashScreen = sq_GetCNRDObjectToFlashScreen(flashScreenObj);
if(pflashScreen) pflashScreen.fadeOut();
// sq_flashScreen(obj,0,0,80,102, sq_RGB(255,0,0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
sq_flashScreen(obj,0,0,320,255, sq_RGB(0,0,0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
break;
case 117:
//`holy flame enable`
obj.getVar("HolyFlameEnable").setBool(0, true);
obj.getVar("PurificationEnable").setBool(0, true);
break;
case 120:
//`add holy flame off effect`
if(obj.getVar("Decollation").getInt(0) > 0){
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atdecollation/decollationendfire_endfire_01.ani", 0, 1, 0);
}
break;
}
return true;
}
function onTimeEvent_Decollation(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
}
function onEndState_Decollation(obj, new_state)
{
if(!obj) return;
}
function onAttack_Decollation(obj, damager, boundingBox, isStuck)
{
if(!obj || isStuck) return;
if(damager.isObjectType(OBJECTTYPE_ACTIVE)){
if(obj.getVar("Decollation").getInt(0) > 0) onAttack_EssenceofPhlege_SetFireBomb(obj, damager, boundingBox);
if(obj.getVar("DecollationBool").getBool(0)){
}
}
}
//神焰漩涡
function checkExecutableSkill_VortexOfHellFire(obj)
{
if (!obj) return false;
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_VORTEXOFHELLFIRE);
if (isUse){
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_VORTEXOFHELLFIRE, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_VortexOfHellFire(obj)
{
if (!obj) return false;
return true;
}
function onSetState_VortexOfHellFire(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_VORTEXOFHELLFIREBODYREADY_00);
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
obj.getVar("VortexOfHellFire").setInt(0, 0);
local loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_HOLYFLAME);
if(loadSlot){
if(loadSlot.getRemainLoadNumber() > 0){
obj.getVar("VortexOfHellFire").setInt(0, 1);
loadSlot.decreaseLoadCount(1);
obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/holyflameweaponeffect/vortexofhellfirebodyready_00.ani"), 0, 0);
}
}
obj.startRapidInput();
obj.getVar("VortexOfHellFire").setInt(1, 0);
obj.getVar("VortexOfHellFire").setInt(2, 0);
break;
case 1:
// local atkIndex = ATPATK_BYKK_VORTEXOFHELLFIRELOOP;
local sub = obj.getVar("VortexOfHellFire").getInt(0);
if(sub > 0){
obj.sq_SetCurrentAnimation(ATPANI_BYKK_VORTEXOFHELLFIREBODYLOOP_00_HOLYFRAME);
// atkIndex = ATPATK_BYKK_VORTEXOFHELLFIRELOOP_HOLYFRAME;
obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/holyflameweaponeffect/vortexofhellfirebodyloop_00_holyframe.ani"), 0, 0);
}
else obj.sq_SetCurrentAnimation(ATPANI_BYKK_VORTEXOFHELLFIREBODYLOOP_00);
// obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/atvortexofhellfire/loop/vortexofhellfireeffloop_00.ani"), 0, 0);
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_VORTEXOFHELLFIRE, -1, 0, 1.0);
local sizeRate = sq_GetIntData(obj, SKILL_BYKK_VORTEXOFHELLFIRE, 14);
local currentAni = obj.getCurrentAnimation();
local speedRate = 8000 / currentAni.getDelaySum(0, 0);
sq_ClearAttackBox(currentAni);
createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,0,0,0,obj.getDirection(),2,SKILL_BYKK_VORTEXOFHELLFIRE,1,totalDamage,sizeRate,speedRate,sub,0,0,0,0);
if(obj.getVar("VortexOfHellFire").getInt(2) == 0){
obj.getVar("VortexOfHellFire").setInt(2, 1);
local aniPath = "character/swordman/effect/animation/1_atpriest_bykk/atvortexofhellfire/loop/vortexofhellfireeffloop_00.ani";
local pooledObj = createOnlyDrawObjectEX_ATPriest_bykk(obj,aniPath,false,sq_GetDirection(obj),sq_GetXPos(obj),sq_GetYPos(obj),0,ENUM_DRAWLAYER_NORMAL,sizeRate,sizeRate);
sq_moveWithParent(obj, pooledObj);
local pAni = pooledObj.getCurrentAnimation();
pAni.setLoop(true);
pAni.setSpeedRate(speedRate.tofloat());
obj.getVar("VortexOfHellFireEffect").clear_obj_vector();
obj.getVar("VortexOfHellFireEffect").push_obj_vector(pooledObj);
}
if(!obj.isExistTimeEvent(1)) obj.setTimeEvent(1, 20, -1, false);
break;
case 2:
obj.stopTimeEvent(1);
local sub = obj.getVar("VortexOfHellFire").getInt(0);
if(sub > 0){
obj.sq_SetCurrentAnimation(ATPANI_BYKK_VORTEXOFHELLFIREBODYEND_00_HOLYFRAME);
obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/holyflameweaponeffect/vortexofhellfirebodyend_00_holyframe.ani"), 0, 0);
local sizeRate = sq_GetIntData(obj, SKILL_BYKK_VORTEXOFHELLFIRE, 14);
local direction = sq_GetDirection(obj), xPos = sq_GetXPos(obj), yPos = sq_GetYPos(obj);
createOnlyDrawObjectEX_ATPriest_bykk(obj,"character/swordman/effect/animation/1_atpriest_bykk/atvortexofhellfire/endfire/vortexofhellfireatkfire_01.ani",true,direction,xPos,yPos,0,ENUM_DRAWLAYER_NORMAL,sizeRate,sizeRate);
createOnlyDrawObjectEX_ATPriest_bykk(obj,"character/swordman/effect/animation/1_atpriest_bykk/atvortexofhellfire/endfire/vortexofhellfireatksmoke_01.ani",true,direction,xPos,yPos - 1,0,ENUM_DRAWLAYER_NORMAL,sizeRate,sizeRate);
}
else obj.sq_SetCurrentAnimation(ATPANI_BYKK_VORTEXOFHELLFIREBODYEND_00);
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_VORTEXOFHELLFIRE, -1, 1, 1.0);
local sizeRate = sq_GetIntData(obj, SKILL_BYKK_VORTEXOFHELLFIRE, 14);
local currentAni = obj.getCurrentAnimation();
local speedRate = 8000 / currentAni.getDelaySum(0, 0);
sq_ClearAttackBox(currentAni);
createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,0,0,0,obj.getDirection(),2,SKILL_BYKK_VORTEXOFHELLFIRE,2,totalDamage,sizeRate,speedRate,sub,0,0,0,0);
createOnlyDrawObjectEX_ATPriest_bykk(obj,"character/swordman/effect/animation/1_atpriest_bykk/atvortexofhellfire/end/vortexofhellfirebodyend_eff.ani",true,sq_GetDirection(obj),sq_GetXPos(obj),sq_GetYPos(obj),0,ENUM_DRAWLAYER_NORMAL,sizeRate,sizeRate);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atvortexofhellfire/end/vortexofhellfirebodyend_smoke00.ani", 0, -1, 0);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atvortexofhellfire/end/vortexofhellfirebodyend_smoke01.ani", 0, -1, 0);
break;
}
}
function onEndCurrentAni_VortexOfHellFire(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
sq_SetMyShake(obj, 3, 80);
obj.sq_IntVectClear();
obj.sq_IntVectPush(1);
obj.sq_AddSetStatePacket(STATE_BYKK_VORTEXOFHELLFIRE, STATE_PRIORITY_AUTO, true);
break;
case 1:
local roundMax = 5;
if(obj.getRapidInputFrequency() > 0) roundMax = 10;
if(obj.getVar("VortexOfHellFire").getInt(1) + 1 >= roundMax){
obj.sq_IntVectClear();
obj.sq_IntVectPush(2);
obj.sq_AddSetStatePacket(STATE_BYKK_VORTEXOFHELLFIRE, STATE_PRIORITY_AUTO, true);
}
else{
obj.getVar("VortexOfHellFire").setInt(1, obj.getVar("VortexOfHellFire").getInt(1) + 1);
obj.sq_IntVectClear();
obj.sq_IntVectPush(1);
obj.sq_AddSetStatePacket(STATE_BYKK_VORTEXOFHELLFIRE, STATE_PRIORITY_AUTO, true);
}
break;
case 2:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
}
}
function onProcCon_VortexOfHellFire(obj)
{
if(!obj) return;
}
function onProc_VortexOfHellFire(obj)
{
if(!obj) return;
sq_SetKeyxEnable(obj, E_ATTACK_COMMAND, true);
obj.setSkillCommandEnable(SKILL_BYKK_VORTEXOFHELLFIRE,true);
if(obj.sq_IsEnterSkill(SKILL_BYKK_VORTEXOFHELLFIRE) != -1 || sq_IsEnterCommand(obj, E_ATTACK_COMMAND))
obj.addRapidInput();
}
function onKeyFrameFlag_VortexOfHellFire(obj, flagIndex)
{
if(!obj) return false;
switch(flagIndex){
case 0:
obj.resetHitObjectList();
local currentAni = obj.getCurrentAnimation();
local speedRate = 8000 / currentAni.getDelaySum(0, 0);
if(obj.getRapidInputFrequency() > 0){
currentAni.setSpeedRate(speedRate.tofloat() * 1.5);
local pooledObj = obj.getVar("VortexOfHellFireEffect").get_obj_vector(0);
if(pooledObj){
local pAni = pooledObj.getCurrentAnimation();
pAni.setSpeedRate(speedRate.tofloat() * 1.5);
}
}
if(obj.getVar("VortexOfHellFire").getInt(0) > 0){
local sizeRate = sq_GetIntData(obj, SKILL_BYKK_VORTEXOFHELLFIRE, 14);
local direction = sq_GetDirection(obj), xPos = sq_GetXPos(obj), yPos = sq_GetYPos(obj);
createOnlyDrawObjectEX_ATPriest_bykk(obj,"character/swordman/effect/animation/1_atpriest_bykk/atvortexofhellfire/loopfire/vortexofhellfireloopfirea_01.ani",true,direction,xPos,yPos,0,ENUM_DRAWLAYER_NORMAL,sizeRate,sizeRate);
createOnlyDrawObjectEX_ATPriest_bykk(obj,"character/swordman/effect/animation/1_atpriest_bykk/atvortexofhellfire/loopfire/vortexofhellfireloopsmokea_01.ani",true,direction,xPos,yPos - 1,0,ENUM_DRAWLAYER_NORMAL,sizeRate,sizeRate);
}
break;
case 1:
if(obj.getVar("VortexOfHellFire").getInt(0) > 0){
local sizeRate = sq_GetIntData(obj, SKILL_BYKK_VORTEXOFHELLFIRE, 14);
local direction = sq_GetDirection(obj), xPos = sq_GetXPos(obj), yPos = sq_GetYPos(obj);
createOnlyDrawObjectEX_ATPriest_bykk(obj,"character/swordman/effect/animation/1_atpriest_bykk/atvortexofhellfire/loopfire/vortexofhellfireloopfireb_01.ani",true,direction,xPos,yPos,0,ENUM_DRAWLAYER_NORMAL,sizeRate,sizeRate);
createOnlyDrawObjectEX_ATPriest_bykk(obj,"character/swordman/effect/animation/1_atpriest_bykk/atvortexofhellfire/loopfire/vortexofhellfireloopsmokeb_01.ani",true,direction,xPos,yPos - 1,0,ENUM_DRAWLAYER_NORMAL,sizeRate,sizeRate);
}
break;
case 2:
// if(obj.getRapidInputFrequency() > 0) obj.resetHitObjectList();
if(obj.getVar("VortexOfHellFire").getInt(0) > 0){
local sizeRate = sq_GetIntData(obj, SKILL_BYKK_VORTEXOFHELLFIRE, 14);
local direction = sq_GetDirection(obj), xPos = sq_GetXPos(obj), yPos = sq_GetYPos(obj);
createOnlyDrawObjectEX_ATPriest_bykk(obj,"character/swordman/effect/animation/1_atpriest_bykk/atvortexofhellfire/loopfire/vortexofhellfireloopfirec_01.ani",true,direction,xPos,yPos,0,ENUM_DRAWLAYER_NORMAL,sizeRate,sizeRate);
createOnlyDrawObjectEX_ATPriest_bykk(obj,"character/swordman/effect/animation/1_atpriest_bykk/atvortexofhellfire/loopfire/vortexofhellfireloopsmokec_01.ani",true,direction,xPos,yPos - 1,0,ENUM_DRAWLAYER_NORMAL,sizeRate,sizeRate);
}
break;
case 3:
if(obj.getVar("VortexOfHellFire").getInt(0) > 0){
local sizeRate = sq_GetIntData(obj, SKILL_BYKK_VORTEXOFHELLFIRE, 14);
local direction = sq_GetDirection(obj), xPos = sq_GetXPos(obj), yPos = sq_GetYPos(obj);
createOnlyDrawObjectEX_ATPriest_bykk(obj,"character/swordman/effect/animation/1_atpriest_bykk/atvortexofhellfire/loopfire/vortexofhellfireloopfired_01.ani",true,direction,xPos,yPos,0,ENUM_DRAWLAYER_NORMAL,sizeRate,sizeRate);
createOnlyDrawObjectEX_ATPriest_bykk(obj,"character/swordman/effect/animation/1_atpriest_bykk/atvortexofhellfire/loopfire/vortexofhellfireloopsmoked_01.ani",true,direction,xPos,yPos - 1,0,ENUM_DRAWLAYER_NORMAL,sizeRate,sizeRate);
}
break;
case 100:
//`EndEffectCorrection`
local pooledObj = obj.getVar("VortexOfHellFireEffect").get_obj_vector(0);
if(pooledObj) pooledObj.setValid(false);
break;
case 101:
obj.sq_PlaySound("PW_VORTEX_HELL_FIRE");
sq_SetMyShake(obj, 8, 200);
break;
case 102:
//`holy flame enable`
obj.getVar("HolyFlameEnable").setBool(0, true);
obj.getVar("PurificationEnable").setBool(0, true);
break;
case 106:
//`add holy flame end effect`
if(obj.getVar("VortexOfHellFire").getInt(0) > 0){
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atvortexofhellfire/end/vortexofhellfirebodyend_fireend01.ani", 0, 0, 0);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atvortexofhellfire/end/vortexofhellfirebodyend_fireend02.ani", 0, -1, 0);
}
break;
}
return true;
}
function onTimeEvent_VortexOfHellFire(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
switch(timeEventIndex){
case 1:
if(obj.isMyControlObject()){
local speed = 400.0;
if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_RIGHT, ENUM_SUBKEY_TYPE_ALL)) sq_SetVelocity(obj, 0, speed);
else if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_LEFT, ENUM_SUBKEY_TYPE_ALL)) sq_SetVelocity(obj, 0, -speed);
else sq_SetVelocity(obj, 0, 0.0);
if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_UP, ENUM_SUBKEY_TYPE_ALL)) sq_SetVelocity(obj, 1, -speed * 0.2);
else if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_DOWN, ENUM_SUBKEY_TYPE_ALL)) sq_SetVelocity(obj, 1, speed * 0.2);
else sq_SetVelocity(obj, 1, 0.0);
}
break;
}
}
function onEndState_VortexOfHellFire(obj, new_state)
{
if(!obj) return;
if(new_state != STATE_BYKK_VORTEXOFHELLFIRE){
local pooledObj = obj.getVar("VortexOfHellFireEffect").get_obj_vector(0);
if(pooledObj) pooledObj.setValid(false);
}
}
function onAttack_VortexOfHellFire(obj, damager, boundingBox, isStuck)
{
if(!obj || isStuck) return;
if(damager.isObjectType(OBJECTTYPE_ACTIVE)){
if(obj.getVar("VortexOfHellFire").getInt(0) > 0) onAttack_EssenceofPhlege_SetFireBomb(obj, damager, boundingBox);
}
}
//净化之焰
function checkExecutableSkill_Purification(obj)
{
if (!obj) return false;
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_PURIFICATION);
if (isUse){
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_PURIFICATION, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_Purification(obj)
{
if (!obj) return false;
return true;
}
function onSetState_Purification(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_PURIFICATION_LOOP_BODY);
obj.getVar("PurificationSet").setInt(0, 0);
obj.getVar("PurificationTar").clear_obj_vector();
local loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_HOLYFLAME);
if(loadSlot){
obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/holyflameweaponeffect/purification_loop_body.ani"), 0, 0);
}
break;
case 1:
obj.sq_SetCurrentAnimation(ATPANI_BYKK_PURIFICATION_END_BODY);
local sub = 0;
local loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_HOLYFLAME);
if(loadSlot){
sub = 1;
obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/holyflameweaponeffect/purification_end_body.ani"), 0, 0);
}
local size = obj.getVar("PurificationTar").get_obj_vector_size();
print("size = "+size);
if(size > 0){
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_PURIFICATION, -1, 0, 1.0);
local sizeRate = sq_GetIntData(obj, SKILL_BYKK_PURIFICATION, 2);
for(local i = 0; i < size; i++){
local targetObj = obj.getVar("PurificationTar").get_obj_vector(i);
if(targetObj && targetObj.getState() != STATE_DIE) createSkillPassive_ATPriest_bykk(obj,targetObj,PASSIVEOBJ_BYKK_ATPRIEST,0,0,0,obj.getDirection(),2,SKILL_BYKK_PURIFICATION,1,totalDamage,sizeRate,sub,0,0,0,0,0);
}
}
break;
}
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
}
function onEndCurrentAni_Purification(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 1:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
}
}
function onProcCon_Purification(obj)
{
if(!obj) return;
}
function onKeyFrameFlag_Purification(obj, flagIndex)
{
if(!obj) return false;
switch(flagIndex){
case 101:
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) && object.isInDamagableState(obj)){
if(CNSquirrelAppendage.sq_IsAppendAppendage(object, "character/demonicswordman/2_inquistor/passiveskill/ap_brandofheresy_debuff.nut") || CNSquirrelAppendage.sq_IsAppendAppendage(object, "character/demonicswordman/2_inquistor/ap_holyflame_hold.nut")){
if(!CNSquirrelAppendage.sq_IsAppendAppendage(object, "character/demonicswordman/2_inquistor/ap_holyflame_hold.nut")){
local AddAppendage = CNSquirrelAppendage.sq_AppendAppendage(object, obj, -1, false, "character/demonicswordman/2_inquistor/ap_holyflame_hold.nut", true);
sq_HoldAndDelayDie(object, obj, true, true, true, 200, 200, ENUM_DIRECTION_NEUTRAL , AddAppendage);
AddAppendage.sq_SetValidTime(1500);
}
if(!obj.getVar("PurificationTar").is_obj_vector(object)) obj.getVar("PurificationTar").push_obj_vector(object);
obj.getVar("PurificationSet").setInt(0, obj.getVar("PurificationSet").getInt(0) + 1);
}
}
}
if(obj.getVar("PurificationSet").getInt(0) > 3){
obj.sq_IntVectClear();
obj.sq_IntVectPush(1);
obj.sq_AddSetStatePacket(STATE_BYKK_PURIFICATION, STATE_PRIORITY_IGNORE_FORCE, true);
}
else obj.getVar("PurificationSet").setInt(0, obj.getVar("PurificationSet").getInt(0) + 1);
break;
}
return true;
}
function onTimeEvent_Purification(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
}
function onEndState_Purification(obj, new_state)
{
if(!obj) return;
}