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

3680 lines
144 KiB
C

//聖潔之光
function checkExecutableSkill_Holyflash(obj)
{
if (!obj) return false;
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_HOLYFLASH);
if (isUse){
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_HOLYFLASH, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_Holyflash(obj)
{
if (!obj) return false;
return true;
}
function onSetState_Holyflash(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_HOLYFLASH_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_Holyflash(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_Holyflash(obj)
{
if(!obj) return;
}
function onKeyFrameFlag_Holyflash(obj, flagIndex)
{
if(!obj) return false;
switch(flagIndex){
case 101:
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_HOLYFLASH, -1, 0, 1.0) + 100;
local sizeRate = sq_GetIntData(obj, SKILL_BYKK_HOLYFLASH, 3);
local moveX = sq_GetIntData(obj, SKILL_BYKK_HOLYFLASH, 5);
// if(obj.isMyControlObject())
createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,47,1,94,obj.getDirection(),0,SKILL_BYKK_HOLYFLASH,1,totalDamage,sizeRate,moveX,0,0,0,0,0);
break;
}
return true;
}
function onTimeEvent_Holyflash(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
}
function onEndState_Holyflash(obj, new_state)
{
if(!obj) return;
}
//治愈祈禱
function checkExecutableSkill_Prayerofheal(obj)
{
if (!obj) return false;
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_PRAYEROFHEAL);
if (isUse){
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_PRAYEROFHEAL, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_Prayerofheal(obj)
{
if (!obj) return false;
if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)) return false;
return true;
}
function onSetState_Prayerofheal(obj, state, datas, isResetTimer)
{
if(!obj) return;//126
local subState = obj.sq_GetVectorData(datas, 0);
obj.setSkillSubState(subState);
obj.sq_StopMove();
obj.sq_ZStop();
switch(subState){
case 0://normal
obj.sq_SetCurrentAnimation(ATPANI_BYKK_PRAYEROFHEAL_BODY);
obj.sq_PlaySound("R_PW_PRAYERHEAL");//
//obj.sq_AddStateLayerAnimation(-1, obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/atprayerofheal/groundrange_00.ani"), 0, 0);
local aniPath = "character/swordman/effect/animation/1_atpriest_bykk/atprayerofheal/groundrange_00.ani";
local sizeRate = sq_GetIntData(obj, SKILL_BYKK_PRAYEROFHEAL, 1).tofloat() / 207.5;
local pooledObj = createOnlyDrawObject_ATPriest_bykk(obj, aniPath, true, obj.getDirection(), sq_GetXPos(obj), sq_GetYPos(obj), 0, ENUM_DRAWLAYER_BOTTOM);
local pAni = pooledObj.getCurrentAnimation();
pAni.setImageRateFromOriginal(sizeRate, sizeRate);
pAni.setAutoLayerWorkAnimationAddSizeRate(sizeRate);
break;
}
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(0, currentAni.getDelaySum(false) / 4 * 3, 1, false);
}
function onEndCurrentAni_Prayerofheal(obj)
{
if(!obj) return;
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
}
function onProcCon_Prayerofheal(obj)
{
if(!obj) return;
}
function onKeyFrameFlag_Prayerofheal(obj, flagIndex)
{
if(!obj) return false;
return true;
}
function onTimeEvent_Prayerofheal(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
switch(timeEventIndex){
case 0:
local range = sq_GetIntData(obj, SKILL_BYKK_PRAYEROFHEAL, 1);
local skillLevel = sq_GetSkillLevel(obj, SKILL_BYKK_PRAYEROFHEAL);
local HP_heal = sq_GetLevelData(obj, SKILL_BYKK_PRAYEROFHEAL, 1, skillLevel);
local apdPath = "character/demonicswordman/0_common/ap_prayerofheal.nut";
local objectManager = obj.getObjectManager();
local objectNumber = objectManager.getCollisionObjectNumber();
for (local i = 0; i < objectNumber; i++){
local object = objectManager.getCollisionObject(i);
if (object && !obj.isEnemy(object) && sq_Abs(sq_GetXPos(object) - sq_GetXPos(obj)) <= range && sq_Abs(sq_GetYPos(object) - sq_GetYPos(obj)) <= range / 2) {
local appendage = CNSquirrelAppendage.sq_AppendAppendage(object, obj, -1, false, apdPath, true);
local change_appendage = appendage.sq_GetCNChangeHp("changehp");
if (!change_appendage) change_appendage = appendage.sq_AddCNChangeHp("changehp", object, obj, 0, HP_heal.tofloat(), 1000);
appendage.sq_SetValidTime(1000);
}
}
break;
}
}
function onEndState_Prayerofheal(obj, new_state)
{
if(!obj) return;
}
//升空斬
function checkExecutableSkill_Risingslash(obj)
{
if (!obj) return false;
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_RISINGSLASH);
if (isUse){
obj.sq_IntVectClear();
if(false) obj.sq_IntVectPush(1);
else if(sq_GetSkillLevel(obj, SKILL_BYKK_CRUSADE) > 0) obj.sq_IntVectPush(3);
else if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)) obj.sq_IntVectPush(2);
else obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_RISINGSLASH, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_Risingslash(obj)
{
if (!obj) return false;
return true;
}
function onSetState_Risingslash(obj, state, datas, isResetTimer)
{
if(!obj) return;
local subState = obj.sq_GetVectorData(datas, 0);
obj.setSkillSubState(subState);
obj.sq_StopMove();
obj.sq_ZStop();
switch(subState){
case 0://normal
obj.sq_SetCurrentAnimation(ATPANI_BYKK_CRUSADERISINGSLASH_BODY);
obj.sq_PlaySound("PW_RISING_SLASH");
break;
case 1://FFF
obj.sq_SetCurrentAnimation(ATPANI_BYKK_RISINGSLASH_BODY);
obj.sq_PlaySound("PW_RISING_SLASH");
break;
case 2:
local ani = getCurrentAnimation_demonization(obj, "demonizationattack_basic_z_body", false);
obj.setCurrentAnimation(ani);
obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/atdepravitysevensins/attack/demonizationattack_basic_z_eff01.ani"), 0, 0);
obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/atdepravitysevensins/attack/demonizationattack_basic_z_eff02.ani"), 0, 0);
obj.sq_AddStateLayerAnimation(0,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/atdepravitysevensins/attack/demonizationattack_basic_z_eff03.ani"), 0, 0);
obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/atdepravitysevensins/attack/demonizationattack_basic_z_eff04.ani"), 0, 0);
obj.sq_AddStateLayerAnimation(0,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/atdepravitysevensins/attack/demonizationattack_basic_z_eff05.ani"), 0, 0);
obj.sq_PlaySound("R_PW_CUTINDASH_02");
obj.sq_PlaySound("CUTINDASH_SWISH");
break;
case 3:
obj.sq_SetCurrentAnimation(ATPANI_BYKK_CRUSADERISINGSLASH_BODY);
obj.sq_PlaySound("PW_RISING_SLASH");
break;
}
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_RISINGSLASH, -1, 1, 1.0) + 100;
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, ATPRIESTATK_BYKK_RISINGSLASH));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
local attackInfo = sq_GetCurrentAttackInfo(obj);
sq_SetCurrentAttacknBackForce(attackInfo, 100);
sq_SetCurrentAttacknUpForce(attackInfo, 600);
if(obj.getDirection() == ENUM_DIRECTION_RIGHT) sq_SetVelocity(obj, 0, 100.0);
else if(obj.getDirection() == ENUM_DIRECTION_LEFT) sq_SetVelocity(obj, 0, -100.0);
}
function onEndCurrentAni_Risingslash(obj)
{
if(!obj) return;
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
}
function onProcCon_Risingslash(obj)
{
if(!obj) return;
}
function onKeyFrameFlag_Risingslash(obj, flagIndex)
{
if(!obj) return false;
return true;
}
function onTimeEvent_Risingslash(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
}
function onEndState_Risingslash(obj, new_state)
{
if(!obj) return;
}
//净化
function checkExecutableSkill_Cure(obj)
{
if (!obj) return false;
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_CURE);
if (isUse){
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_CURE, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_Cure(obj)
{
if (!obj) return false;
if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, DEMONIZATION_APDPATH)) return false;
return true;
}
function onSetState_Cure(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_CURE_CAST_BODY);
break;
case 1:
obj.sq_SetCurrentAnimation(ATPANI_BYKK_CURE_START_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_Cure(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
obj.sq_IntVectClear();
obj.sq_IntVectPush(1);
obj.sq_AddSetStatePacket(STATE_BYKK_CURE, STATE_PRIORITY_AUTO, true);
break;
case 1:
local range = sq_GetIntData(obj, SKILL_BYKK_CURE, 5);
local skillLevel = sq_GetSkillLevel(obj, SKILL_BYKK_CURE);
local realeaseMax = sq_GetLevelData(obj, SKILL_BYKK_CURE, 0, skillLevel);
local objectManager = obj.getObjectManager();
local objectNumber = objectManager.getCollisionObjectNumber();
for (local i = 0; i < objectNumber; i++){
local object = objectManager.getCollisionObject(i);
if (object && !obj.isEnemy(object) && sq_Abs(sq_GetXPos(object) - sq_GetXPos(obj)) <= range && sq_Abs(sq_GetYPos(object) - sq_GetYPos(obj)) <= range / 2) {
local activeObj = sq_GetCNRDObjectToActiveObject(object);
local count = 0;
for(local ui = 0; ui < 18; ui++){
if (sq_IsValidActiveStatus(activeObj, ui)){
sq_ReleaseActiveStatus(activeObj, ui);
count = count + 1;
if(count > realeaseMax) continue;
}
}
}
}
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
}
}
function onProcCon_Cure(obj)
{
if(!obj) return;
}
function onKeyFrameFlag_Cure(obj, flagIndex)
{
if(!obj) return false;
return true;
}
function onTimeEvent_Cure(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
}
function onEndState_Cure(obj, new_state)
{
if(!obj) return;
}
//胜利之矛
function checkExecutableSkill_Spearofvictory(obj)
{
if (!obj) return false;
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_SPEAROFVICTORY);
if (isUse){
obj.sq_IsEnterSkillLastKeyUnits(SKILL_BYKK_SPEAROFVICTORY);
obj.getVar("spv").setBool(0, false);
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_SPEAROFVICTORY, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_Spearofvictory(obj)
{
if (!obj) return false;
return true;
}
function onSetState_Spearofvictory(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_SPEAROFVICTORY_BODY_READY);
break;
case 1:
obj.sq_SetCurrentAnimation(ATPANI_BYKK_SPEAROFVICTORY_BODY_CHARGELOOP);
obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/atspearofvictory/spearnochargeloop_01.ani"), 0, -76);
break;
case 2:
obj.sq_SetCurrentAnimation(ATPANI_BYKK_SPEAROFVICTORY_BODYSHOT_02);
break;
}
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_CAST_SPEED, SPEED_TYPE_CAST_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
}
function onEndCurrentAni_Spearofvictory(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
obj.sq_IntVectClear();
obj.sq_IntVectPush(1);
obj.sq_AddSetStatePacket(STATE_BYKK_SPEAROFVICTORY, STATE_PRIORITY_AUTO, true);
break;
case 2:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
}
}
function onProcCon_Spearofvictory(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 1:
local pAni = obj.getCurrentAnimation();
local chargeTime = sq_GetCurrentTime(pAni);
if((chargeTime >= sq_GetIntData(obj, SKILL_BYKK_SPEAROFVICTORY, 0) || sq_GetSkillLevel(obj, SKILL_BYKK_LUCULENTUISANGEL) > 0) && obj.getVar("spv").getBool(0) == false){
obj.sq_PlaySound("WSPEAR_CREATE_BIG");
obj.getVar("spv").setBool(0, true);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atspearofvictory/speartchargeeff_01.ani", 0, 0, 76);
obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/atspearofvictory/spearchargeokloop.ani"), 0, -76);
}
local bDownKey = obj.isDownSkillLastKey();
if(!bDownKey){
obj.sq_IntVectClear();
obj.sq_IntVectPush(2);
obj.sq_AddSetStatePacket(STATE_BYKK_SPEAROFVICTORY, STATE_PRIORITY_AUTO, true);
}
break;
}
}
function onKeyFrameFlag_Spearofvictory(obj, flagIndex)
{
if(!obj) return false;
switch(flagIndex){
case 101:
local pooledObj = sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atspearofvictory/spearstart_01.ani", 0, 0, 76);
local pAni = pooledObj.getCurrentAnimation();
obj.setTimeEvent(0, pAni.getDelaySum(false), 1, false);
obj.sq_PlaySound("PW_VICTORYSPEAR_01");
obj.sq_PlaySound("WSPEAR_CREATE");
break;
case 102: obj.sq_PlaySound("VICTORYSPEAR"); break;
case 103:
if(obj.getVar("spv").getBool(0)) sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atspearofvictory/shot_charge.ani", -40, 0, 145);
else sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atspearofvictory/shot_normal.ani", -40, 0, 145);
break;
case 104:
obj.sq_PlaySound("PW_VICTORYSPEAR_02");
obj.sq_PlaySound("SPEAR_THROW_BIG");
//`CreateSpear` 0 0 130
local power = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_SPEAROFVICTORY, -1, 0, 1.0);
local power_exp = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_SPEAROFVICTORY, -1, 2, 1.0);
local holdTime = sq_GetIntData(obj, SKILL_BYKK_SPEAROFVICTORY, 2);
local isCharge = 0;
if(obj.getVar("spv").getBool(0) || sq_GetSkillLevel(obj, SKILL_BYKK_LUCULENTUISANGEL) > 0){holdTime = sq_GetIntData(obj, SKILL_BYKK_SPEAROFVICTORY, 3); isCharge = 1;}
// if(obj.isMyControlObject())
createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,0,0,130,obj.getDirection(),1,SKILL_BYKK_SPEAROFVICTORY,0,power,power_exp,holdTime,isCharge,0,0,0,0);
break;
}
return true;
}
function onTimeEvent_Spearofvictory(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
switch(timeEventIndex){
case 0:
obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/atspearofvictory/spearnochargeloop_01.ani"), 0, -76);
break;
}
}
function onEndState_Spearofvictory(obj, new_state)
{
if(!obj) return;
}
//守护祝福
function checkExecutableSkill_Blessofprotection(obj)
{
if (!obj) return false;
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_BLESSOFPROTECTION);
if (isUse){
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_BLESSOFPROTECTION, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_Blessofprotection(obj)
{
if (!obj) return false;
return true;
}
function onSetState_Blessofprotection(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_BLESSOFPROTECTIONCAST_BODY);
local castTime = sq_GetCastTime(obj, SKILL_BYKK_BLESSOFPROTECTION, sq_GetSkillLevel(obj, SKILL_BYKK_BLESSOFPROTECTION));
local currentAni = obj.getCurrentAnimation();
local delaySum = currentAni.getDelaySum(false);
local speedRate = delaySum.tofloat() / castTime.tofloat();
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_CAST_SPEED, SPEED_TYPE_CAST_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, speedRate, speedRate);
sq_StartDrawCastGauge(obj, castTime, true);
break;
case 1:
sq_EndDrawCastGauge(obj);
obj.sq_SetCurrentAnimation(ATPANI_BYKK_BLESSOFPROTECTIONSTART_BODY);
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_CAST_SPEED, SPEED_TYPE_CAST_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
break;
}
}
function onEndCurrentAni_Blessofprotection(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
obj.sq_IntVectClear();
obj.sq_IntVectPush(1);
obj.sq_AddSetStatePacket(STATE_BYKK_BLESSOFPROTECTION, STATE_PRIORITY_AUTO, true);
break;
case 1:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
}
}
function onProcCon_Blessofprotection(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
}
}
function onKeyFrameFlag_Blessofprotection(obj, flagIndex)
{
if(!obj) return false;
switch(flagIndex){
case 101:
obj.sq_PlaySound("PW_BLESSPROTECTION");
obj.sq_PlaySound("BLESSPROTECTION_CAST");
break;
case 102:
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atblessofprotection/start_sky.ani", 0, -1, 0);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atblessofprotection/start_front_4.ani", 0, 1, 0);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atblessofprotection/start_back_1.ani", 0, -1, 0);
createOnlyDrawObject_ATPriest_bykk(obj,"character/swordman/effect/animation/1_atpriest_bykk/atblessofprotection/start_floor.ani",true,obj.getDirection(),sq_GetXPos(obj),sq_GetYPos(obj),0,ENUM_DRAWLAYER_BOTTOM);
if(!obj.isMyControlObject()) break;
local skillLevel = sq_GetSkillLevel(obj, SKILL_BYKK_BLESSOFPROTECTION);
local range = sq_GetIntData(obj, SKILL_BYKK_BLESSOFPROTECTION, 0);
local damageRate = sq_GetIntData(obj, SKILL_BYKK_BLESSOFPROTECTION, 1);
local buffTime = sq_GetLevelData(obj, SKILL_BYKK_BLESSOFPROTECTION, 0, skillLevel);
local hpMax = sq_GetLevelData(obj, SKILL_BYKK_BLESSOFPROTECTION, 6, skillLevel);
local mpMax = sq_GetLevelData(obj, SKILL_BYKK_BLESSOFPROTECTION, 7, skillLevel);
local phDefense = sq_GetLevelData(obj, SKILL_BYKK_BLESSOFPROTECTION, 2, skillLevel);
local mgDefense = sq_GetLevelData(obj, SKILL_BYKK_BLESSOFPROTECTION, 3, skillLevel);
local phlDefense = sq_GetLevelData(obj, SKILL_BYKK_BLESSOFPROTECTION, 4, skillLevel);
local mglDefense = sq_GetLevelData(obj, SKILL_BYKK_BLESSOFPROTECTION, 5, skillLevel);
local now_mgAttack = sq_GetMagicalAttack();//1000;//
now_mgAttack = now_mgAttack * (100 + sq_GetIntData(obj, 169, 2)) / 100;
local addRate = now_mgAttack.tofloat() / sq_GetIntData(obj, SKILL_BYKK_BLESSOFCOURAGE, 1).tofloat();
if(addRate > 1){
hpMax = hpMax.tofloat() * (1.0 + addRate);
mpMax = mpMax.tofloat() * (1.0 + addRate);
phDefense = phDefense.tofloat() * (1.0 + addRate);
mgDefense = mgDefense.tofloat() * (1.0 + addRate);
}
sq_BinaryStartWrite();
sq_BinaryWriteDword(1);
sq_BinaryWriteDword(SKILL_BYKK_BLESSOFPROTECTION);
sq_BinaryWriteDword(1);
sq_BinaryWriteDword(skillLevel);
sq_BinaryWriteDword(range);
sq_BinaryWriteDword(buffTime);
sq_BinaryWriteDword(hpMax.tointeger());
sq_BinaryWriteDword(mpMax.tointeger());
sq_BinaryWriteDword(phDefense.tointeger());
sq_BinaryWriteDword(mgDefense.tointeger());
sq_BinaryWriteDword(phlDefense);
sq_BinaryWriteDword(mglDefense);
sq_BinaryWriteDword(damageRate);
sq_SendCreatePassiveObjectPacket(obj, PASSIVEOBJ_BYKK_ATPRIEST, 0, 0, 0, 0, obj.getDirection());
break;
}
return true;
}
function onTimeEvent_Blessofprotection(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
switch(timeEventIndex){
case 0:
break;
}
}
function onEndState_Blessofprotection(obj, new_state)
{
if(!obj) return;
if(new_state != STATE_BYKK_BLESSOFPROTECTION){
sq_EndDrawCastGauge(obj);
}
}
function getImmuneTypeDamageRate_appendage_at_blessofprotection(appendage, damageRate, attacker)
{
local parentObj = appendage.getParent();
parentObj = sq_GetCNRDObjectToSQRCharacter(parentObj);
local targetObj = appendage.getVar("source").get_obj_vector(0);
if(targetObj && targetObj.getState() != STATE_DIE && !isSameObject(targetObj, parentObj)){
local new_damageRate = damageRate - appendage.getVar("custom").getInt(10);
return new_damageRate;
}
else{
return damageRate;
}
}
//圣光守护
function checkExecutableSkill_Holylight(obj)
{
if (!obj) return false;
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_HOLYLIGHT);
if (isUse){
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_HOLYLIGHT, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_Holylight(obj)
{
if (!obj) return false;
return true;
}
function onSetState_Holylight(obj, state, datas, isResetTimer)
{
if(!obj) return;
local subState = obj.sq_GetVectorData(datas, 0);
obj.setSkillSubState(subState);
obj.sq_StopMove();
switch(subState){
case 0:
if(sq_GetSkillLevel(obj, SKILL_BYKK_ARIA) > 0) obj.sq_SetCurrentAnimation(ATPANI_BYKK_HOLYLIGHTARIA_CAST_BODY);
else obj.sq_SetCurrentAnimation(ATPANI_BYKK_HOLYLIGHT_CAST_BODY);
local castTime = sq_GetCastTime(obj, SKILL_BYKK_HOLYLIGHT, sq_GetSkillLevel(obj, SKILL_BYKK_HOLYLIGHT));
local currentAni = obj.getCurrentAnimation();
local delaySum = currentAni.getDelaySum(false);
local speedRate = delaySum.tofloat() / castTime.tofloat();
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_CAST_SPEED, SPEED_TYPE_CAST_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, speedRate, speedRate);
sq_StartDrawCastGauge(obj, castTime, true);
break;
case 1:
sq_EndDrawCastGauge(obj);
if(sq_GetSkillLevel(obj, SKILL_BYKK_ARIA) > 0) obj.sq_SetCurrentAnimation(ATPANI_BYKK_HOLYLIGHTARIA_START_BODY);
else obj.sq_SetCurrentAnimation(ATPANI_BYKK_HOLYLIGHT_START_BODY);
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_CAST_SPEED, SPEED_TYPE_CAST_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
break;
}
}
function onEndCurrentAni_Holylight(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
obj.sq_IntVectClear();
obj.sq_IntVectPush(1);
obj.sq_AddSetStatePacket(STATE_BYKK_HOLYLIGHT, STATE_PRIORITY_AUTO, true);
break;
case 1:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
}
}
function onProcCon_Holylight(obj)
{
if(!obj) return;
// local subState = obj.getSkillSubState();
// switch(subState){
// }
}
function onKeyFrameFlag_Holylight(obj, flagIndex)
{
if(!obj) return false;
switch(flagIndex){
case 101:
obj.sq_PlaySound("PW_HOLYLIGHT");
obj.sq_PlaySound("CURE_CAST");
break;
case 102:
local skillLevel = sq_GetSkillLevel(obj, SKILL_BYKK_HOLYLIGHT);
local range = sq_GetIntData(obj, SKILL_BYKK_HOLYLIGHT, 0);
local buffTime = sq_GetLevelData(obj, SKILL_BYKK_HOLYLIGHT, 0, skillLevel) + 720;
local power_Chr = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_HOLYLIGHT, -1, 1, 1.0);
local power_Pty = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_HOLYLIGHT, -1, 5, 1.0);
local damageRate = sq_GetLevelData(obj, SKILL_BYKK_HOLYLIGHT, 2, skillLevel);
local increaseRate = sq_GetIntData(obj, SKILL_BYKK_HOLYLIGHT, 4);
local skillLevel2 = sq_GetSkillLevel(obj, SKILL_BYKK_BLESSOFPROTECTION);
local hpMax = sq_GetLevelData(obj, SKILL_BYKK_BLESSOFPROTECTION, 6, skillLevel2) * (100 + increaseRate) / 100;
local mpMax = sq_GetLevelData(obj, SKILL_BYKK_BLESSOFPROTECTION, 7, skillLevel2) * (100 + increaseRate) / 100;
local phDefense = sq_GetLevelData(obj, SKILL_BYKK_BLESSOFPROTECTION, 2, skillLevel2) * (100 + increaseRate) / 100;
local mgDefense = sq_GetLevelData(obj, SKILL_BYKK_BLESSOFPROTECTION, 3, skillLevel2) * (100 + increaseRate) / 100;
local phlDefense = sq_GetLevelData(obj, SKILL_BYKK_BLESSOFPROTECTION, 4, skillLevel2) * (100 + increaseRate) / 100;
local mglDefense = sq_GetLevelData(obj, SKILL_BYKK_BLESSOFPROTECTION, 5, skillLevel2) * (100 + increaseRate) / 100;
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) && sq_Abs(sq_GetXPos(object) - sq_GetXPos(obj)) <= range && sq_Abs(sq_GetYPos(object) - sq_GetYPos(obj)) <= range / 2) {
local activeObj = sq_GetCNRDObjectToActiveObject(object);
if(CNSquirrelAppendage.sq_IsAppendAppendage(activeObj, APDPATH_HOLYLIGHT)) CNSquirrelAppendage.sq_RemoveAppendage(activeObj, APDPATH_HOLYLIGHT);
local AddAppendage = CNSquirrelAppendage.sq_AppendAppendage(activeObj, obj, -1, false, APDPATH_HOLYLIGHT, true);
if(buffTime > 0) AddAppendage.sq_SetValidTime(buffTime);
AddAppendage.setBuffIconImage(44);
AddAppendage.setEnableIsBuff(true);
AddAppendage.setAppendCauseSkill(BUFF_CAUSE_SKILL, sq_getJob(obj), SKILL_BYKK_HOLYLIGHT, skillLevel);
CNSquirrelAppendage.sq_Append(AddAppendage, activeObj, obj, true);
AddAppendage.getVar("custom").setInt(10, damageRate);
if(CNSquirrelAppendage.sq_IsAppendAppendage(activeObj, APDPATH_BLESSOFPROTECTION)){
local ptcAppendage = CNSquirrelAppendage.sq_GetAppendage(activeObj, APDPATH_BLESSOFPROTECTION);
local change_appendage = ptcAppendage.sq_getChangeStatus("AT_Blessofprotection");
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());
}
}
local group = sq_GetGroup(activeObj);
local uniqueId = sq_GetUniqueId(activeObj);
local power = power_Pty;
if(isSameObject(obj, activeObj)) power = power_Chr;
// if(obj.isMyControlObject())
createSkillPassive_ATPriest_bykk(obj,activeObj,PASSIVEOBJ_BYKK_ATPRIEST,0,0,sq_GetHeightObject(activeObj) / 2,obj.getDirection(),1,SKILL_BYKK_HOLYLIGHT,0,power,buffTime,group,uniqueId,0,0,0,0);
}
}
break;
}
return true;
}
function onTimeEvent_Holylight(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
switch(timeEventIndex){
case 0:
break;
}
}
function onEndState_Holylight(obj, new_state)
{
if(!obj) return;
if(new_state != STATE_BYKK_HOLYLIGHT){
sq_EndDrawCastGauge(obj);
}
}
function getImmuneTypeDamageRate_appendage_at_holylight(appendage, damageRate, attacker)
{
local new_damageRate = damageRate - appendage.getVar("custom").getInt(10) / 10;
return new_damageRate;
}
function onDamageParent_appendage_at_holylight(appendage ,attacker, boundingBox, isStuck)
{
if(!appendage) return;
local parentObj = appendage.getParent();
parentObj = sq_GetCNRDObjectToSQRCharacter(parentObj);
if (!parentObj) {
appendage.setValid(false);
return;
}
local aniPath = "character/swordman/effect/animation/1_atpriest_bykk/atholylight/barrier/hiteffect.ani";
local pooledObj = createOnlyDrawObject_ATPriest_bykk(parentObj,aniPath,true,attacker.getDirection(),sq_GetXPos(parentObj),sq_GetYPos(parentObj),sq_GetZPos(parentObj) + sq_GetHeightObject(parentObj) / 2,ENUM_DRAWLAYER_NORMAL);
sq_moveWithParent(parentObj, pooledObj);
}
//洗礼之光
function checkExecutableSkill_Lightofhaptism(obj)
{
if (!obj) return false;
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_LIGHTOFHAPTISM);
if (isUse){
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_LIGHTOFHAPTISM, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_Lightofhaptism(obj)
{
if (!obj) return false;
return true;
}
function onSetState_Lightofhaptism(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_ATLIGHTOFHAPTISM_CASTING_BODY);
break;
case 1:
obj.sq_SetCurrentAnimation(ATPANI_BYKK_ATLIGHTOFHAPTISM_SHOOT_BODY);
break;
}
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_CAST_SPEED, SPEED_TYPE_CAST_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
}
function onEndCurrentAni_Lightofhaptism(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
obj.sq_IntVectClear();
obj.sq_IntVectPush(1);
obj.sq_AddSetStatePacket(STATE_BYKK_LIGHTOFHAPTISM, STATE_PRIORITY_AUTO, true);
break;
case 1:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
}
}
function onProcCon_Lightofhaptism(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
}
}
function onKeyFrameFlag_Lightofhaptism(obj, flagIndex)
{
if(!obj) return false;
switch(flagIndex){
case 1:
local power = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_LIGHTOFHAPTISM, SKILL_BYKK_LIGHTOFHAPTISM, 0, 1.0);
local sizeRate = sq_GetIntData(obj, SKILL_BYKK_LIGHTOFHAPTISM, 0);
// if(obj.isMyControlObject())
createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,250,0,0,obj.getDirection(),1,SKILL_BYKK_LIGHTOFHAPTISM,0,power,sizeRate,0,0,0,0,0,0);
break;
}
return true;
}
function onTimeEvent_Lightofhaptism(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
switch(timeEventIndex){
case 0:
break;
}
}
function onEndState_Lightofhaptism(obj, new_state)
{
if(!obj) return;
}
//勇气祝福
function checkExecutableSkill_Blessofcourage(obj)
{
if (!obj) return false;
if(obj.getVar("canUseSkill").getBool(0)) return false;
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_BLESSOFCOURAGE);
if (isUse){
if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, APDPATH_BLESSOFCOURAGE)) CNSquirrelAppendage.sq_RemoveAppendage(obj, APDPATH_BLESSOFCOURAGE);
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_BLESSOFCOURAGE, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_Blessofcourage(obj)
{
if (!obj) return false;
if(obj.getVar("canUseSkill").getBool(0)) return false;
return true;
}
function onSetState_Blessofcourage(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_BLESSOFCOURAGECAST_BODY);
//if(obj.isMyControlObject()){
// obj.getVar("Save_mgAttack").setInt(10, now_mgAttack);
//}
break;
case 1:
obj.sq_SetCurrentAnimation(ATPANI_BYKK_BLESSOFCOURAGESTART_BODY);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atblessofcourage/starta_effect_front_d1.ani", 0, 0, 0);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atblessofcourage/startb_effect_1.ani", 0, 0, 0);
local aniPath = "character/swordman/effect/animation/1_atpriest_bykk/atblessofcourage/starta_effect_back_floor.ani";
local aniPath2 = "character/swordman/effect/animation/1_atpriest_bykk/atblessofcourage/starta_effect_back_glow.ani";
createOnlyDrawObject_ATPriest_bykk(obj,aniPath,true,obj.getDirection(),sq_GetXPos(obj),sq_GetYPos(obj),0,ENUM_DRAWLAYER_BOTTOM);
createOnlyDrawObject_ATPriest_bykk(obj,aniPath2,true,obj.getDirection(),sq_GetXPos(obj),sq_GetYPos(obj),0,ENUM_DRAWLAYER_BOTTOM);
break;
}
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_CAST_SPEED, SPEED_TYPE_CAST_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
}
function onEndCurrentAni_Blessofcourage(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
obj.sq_IntVectClear();
obj.sq_IntVectPush(1);
obj.sq_AddSetStatePacket(STATE_BYKK_BLESSOFCOURAGE, STATE_PRIORITY_AUTO, true);
break;
case 1:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
}
}
function onProcCon_Blessofcourage(obj)
{
if(!obj) return;
// local subState = obj.getSkillSubState();
// switch(subState){
// }
}
function onKeyFrameFlag_Blessofcourage(obj, flagIndex)
{
if(!obj) return false;
switch(flagIndex){
case 101:
obj.sq_PlaySound("PW_BLESSCOURAGE");
obj.sq_PlaySound("DAWN_BLESS_CAST");
break;
case 102:
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(sq_getJob(sqrChr) == ENUM_CHARACTERJOB_PRIEST && sq_getGrowType(sqrChr) == GROW_TYPE_CRUSADER) count = count + 1;
}
}
print("count = "+count);
if(count > 0){
obj.getVar("canUseSkill").setBool(0, true);
return;
}
if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, "character/priest/1crusader_bykk/ap_gloriousbless.nut")) CNSquirrelAppendage.sq_RemoveAppendage(obj, "character/priest/1crusader_bykk/ap_gloriousbless.nut");
if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, APDPATH_CRUXOFVICTORIA)) CNSquirrelAppendage.sq_RemoveAppendage(obj, APDPATH_CRUXOFVICTORIA);
local skillLevel = sq_GetSkillLevel(obj, SKILL_BYKK_BLESSOFCOURAGE);
local range = sq_GetIntData(obj, SKILL_BYKK_BLESSOFCOURAGE, 0);
local buffTime = sq_GetLevelData(obj, SKILL_BYKK_BLESSOFCOURAGE, 0, skillLevel);
local phAttack = sq_GetLevelData(obj, SKILL_BYKK_BLESSOFCOURAGE, 1, skillLevel);
local mgAttack = sq_GetLevelData(obj, SKILL_BYKK_BLESSOFCOURAGE, 2, skillLevel);
local adtAttack = sq_GetLevelData(obj, SKILL_BYKK_BLESSOFCOURAGE, 3, skillLevel);
local phlAttack = sq_GetLevelData(obj, SKILL_BYKK_BLESSOFCOURAGE, 4, skillLevel);
local mglAttack = sq_GetLevelData(obj, SKILL_BYKK_BLESSOFCOURAGE, 5, skillLevel);
local stuckRate = sq_GetLevelData(obj, SKILL_BYKK_BLESSOFCOURAGE, 6, skillLevel);
//local now_mgAttack = obj.getVar("Save_mgAttack").getInt(10);
local now_mgAttack = obj.getVar("mgAttackSave").getInt(0);
print("now_mgAttack = "+now_mgAttack);
local addRate = now_mgAttack.tofloat() / sq_GetIntData(obj, SKILL_BYKK_BLESSOFCOURAGE, 1).tofloat();
if(addRate > 1){
phAttack = phAttack.tofloat() * (1.0 + addRate);
mgAttack = mgAttack.tofloat() * (1.0 + addRate);
adtAttack = adtAttack.tofloat() * (1.0 + addRate);
phlAttack = phlAttack.tofloat() * (1.0 + addRate);
mglAttack = mglAttack.tofloat() * (1.0 + addRate);
}
// print("addRate = "+addRate);
sq_BinaryStartWrite();
sq_BinaryWriteDword(1);
sq_BinaryWriteDword(SKILL_BYKK_BLESSOFCOURAGE);
sq_BinaryWriteDword(1);
sq_BinaryWriteDword(skillLevel);
sq_BinaryWriteDword(range);
sq_BinaryWriteDword(buffTime);
sq_BinaryWriteDword(phAttack.tointeger());
sq_BinaryWriteDword(mgAttack.tointeger());
sq_BinaryWriteDword(adtAttack.tointeger());
sq_BinaryWriteDword(phlAttack.tointeger());
sq_BinaryWriteDword(mglAttack.tointeger());
sq_BinaryWriteDword(stuckRate);
sq_SendCreatePassiveObjectPacket(obj, PASSIVEOBJ_BYKK_ATPRIEST, 0, 0, 0, 0, obj.getDirection());
setSkillBonusBate_Crusader_bykk(obj);
break;
case 103:
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atblessofcourage/cast_effect_1.ani", 0, 1, 0);
break;
}
return true;
}
function onTimeEvent_Blessofcourage(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
switch(timeEventIndex){
case 0:
break;
}
}
function onEndState_Blessofcourage(obj, new_state)
{
if(!obj) return;
}
function onEnd_appendage_at_blessofcourage(appendage)
{
if(!appendage) return;
local parentObj = appendage.getParent();
if(!parentObj || parentObj.getState() == STATE_DIE){
appendage.setValid(false);
return;
}
local sqrChr = sq_GetCNRDObjectToSQRCharacter(parentObj);
if(sq_getJob(sqrChr) == ENUM_CHARACTERJOB_AT_MAGE && sq_getGrowType(sqrChr) == 1) setSkillBonusBate_Crusader_bykk(sqrChr);
}
//圣光烬盾
function checkExecutableSkill_Saintflash(obj)
{
if (!obj) return false;
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_SAINTFLASH);
if (isUse){
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_SAINTFLASH, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_Saintflash(obj)
{
if (!obj) return false;
return true;
}
function onSetState_Saintflash(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_SAINTFLASH_CAST_BODY);
local power = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_SAINTFLASH, -1, 4, 1.0);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, ATPRIESTATK_BYKK_SAINTWALLCAST));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), power);
break;
case 1:
obj.sq_SetCurrentAnimation(ATPANI_BYKK_SAINTFLASH_SHOOT_BODY);
break;
}
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_CAST_SPEED, SPEED_TYPE_CAST_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
}
function onEndCurrentAni_Saintflash(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
obj.sq_IntVectClear();
obj.sq_IntVectPush(1);
obj.sq_AddSetStatePacket(STATE_BYKK_SAINTFLASH, STATE_PRIORITY_AUTO, true);
break;
case 1:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
}
}
function onProcCon_Saintflash(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
}
}
function onKeyFrameFlag_Saintflash(obj, flagIndex)
{
if(!obj) return false;
switch(flagIndex){
case 101:
obj.sq_PlaySound("R_PW_SAINTWALL_01");
obj.sq_PlaySound("SAINTWALL");
sq_SetMyShake(obj, 5, 200);
local sizeRate = sq_GetIntData(obj, SKILL_BYKK_SAINTFLASH, 0);
local pooledObj = sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atsaintwall/saintwall_ready_creatshield.ani", 60, 0, 0);
local currentAni = pooledObj.getCurrentAnimation();
sizeRate = sizeRate.tofloat() / 100.0;
currentAni.setImageRateFromOriginal(sizeRate, sizeRate);
currentAni.setAutoLayerWorkAnimationAddSizeRate(sizeRate);
sq_SetAttackBoundingBoxSizeRate(currentAni, sizeRate, sizeRate, sizeRate);
break;
case 102:
obj.sq_PlaySound("FINALTEMPEST_MOVE_02");
obj.sq_PlaySound("R_PW_SAINTWALL_02");
local power = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_SAINTFLASH, -1, 4, 1.0);
local power_exp = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_SAINTFLASH, -1, 0, 1.0);
local sizeRate = sq_GetIntData(obj, SKILL_BYKK_SAINTFLASH, 0);
// if(obj.isMyControlObject())
createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,60,0,0,obj.getDirection(),1,SKILL_BYKK_SAINTFLASH,0,power,power_exp,sizeRate,0,0,0,0,0);
break;
}
return true;
}
function onTimeEvent_Saintflash(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
switch(timeEventIndex){
case 0:
break;
}
}
function onEndState_Saintflash(obj, new_state)
{
if(!obj) return;
}
//勇气圣歌
function checkExecutableSkill_Ariaofcourage(obj)
{
if (!obj) return false;
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_ARIAOFCOURAGE);
if (isUse){
obj.getVar("hitCount").setInt(10, 0);
obj.getVar("Ariaofcourage_Tar").clear_obj_vector();
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_ARIAOFCOURAGE, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_Ariaofcourage(obj)
{
if (!obj) return false;
return true;
}
function onSetState_Ariaofcourage(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_ARIAOFCOURAGESTART_BODY);
obj.sq_PlaySound("R_PW_ARIACOURAGE");
obj.sq_PlaySound("ARIACOURAGE_CAST");
obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/atariaofcourage/ora/orastartfront_1.ani"), 0, 0);
obj.sq_AddStateLayerAnimation(-1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/atariaofcourage/ora/orastartback_1.ani"), 0, 0);
local skillLevel = sq_GetSkillLevel(obj, SKILL_BYKK_ARIAOFCOURAGE);
local damageRate = sq_GetLevelData(obj, SKILL_BYKK_ARIAOFCOURAGE, 1, skillLevel);
local allTolerance = sq_GetIntData(obj, SKILL_BYKK_ARIAOFCOURAGE, 9);
local AddAppendage = CNSquirrelAppendage.sq_AppendAppendage(obj, obj, -1, false, APDPATH_ARIAOFCOURAGE, true);
AddAppendage.getVar("custom").setInt(10, damageRate);
local change_appendage = AddAppendage.sq_getChangeStatus("AT_Ariaofcourage");
if(!change_appendage) change_appendage = AddAppendage.sq_AddChangeStatus("AT_Ariaofcourage",obj, obj, 0, CHANGE_STATUS_TYPE_PHYSICAL_ATTACK, true, 1000);
if(change_appendage){
change_appendage.clearParameter();
change_appendage.addParameter(CHANGE_STATUS_TYPE_ACTIVESTATUS_TOLERANCE_ALL, false, (allTolerance).tofloat());
}
break;
case 1:
obj.sq_SetCurrentAnimation(ATPANI_BYKK_ARIAOFCOURAGELOOP_BODY);
obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/atariaofcourage/ora/oraloopfront_5.ani"), 0, 0);
obj.sq_AddStateLayerAnimation(-1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/atariaofcourage/ora/oraloopback_1.ani"), 0, 0);
//-270 -70 -4 540 140 300
local skill = sq_GetSkill(obj, SKILL_BYKK_ARIA);
if(!skill.isSealFunction()){
local currentAni = obj.getCurrentAnimation();
sq_AddAttackBox(currentAni,-270, -70, -4, 540, 140, 300);
}
break;
case 2:
obj.stopSound(2001);
obj.stopTimeEvent(2);
obj.sq_SetCurrentAnimation(ATPANI_BYKK_ARIAOFCOURAGEEND_BODY);
obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/atariaofcourage/ora/oraendfront_6.ani"), 0, 0);
obj.sq_AddStateLayerAnimation(-1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/atariaofcourage/ora/oraendback_1.ani"), 0, 0);
obj.sq_PlaySound("ARIACOURAGE_END");
local pooledObj = obj.getVar("Ariaofcourage_eff").get_obj_vector(0);
local pooledObj2 = obj.getVar("Ariaofcourage_eff").get_obj_vector(1);
if(pooledObj) pooledObj.setValid(false);
if(pooledObj2) pooledObj2.setValid(false);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atariaofcourage/ora/oraendfront_6.ani", 0, 1, 0);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atariaofcourage/ora/oraendback_1.ani", 0, -1, 0);
local floorObj = obj.getVar("ARIAOFCOURAGE_FLOOR").get_obj_vector(0);
local effectObj = obj.getVar("ARIAOFCOURAGE_EFFECT").get_obj_vector(0);
local musicObj = obj.getVar("ARIAOFCOURAGE_MUSIC").get_obj_vector(0);
if(floorObj){
local colObj = sq_GetCNRDObjectToCollisionObject(floorObj);
colObj.addSetStatePacket(22, null, STATE_PRIORITY_AUTO, false, "");
}
if(effectObj){
local colObj = sq_GetCNRDObjectToCollisionObject(effectObj);
colObj.addSetStatePacket(22, null, STATE_PRIORITY_AUTO, false, "");
}
if(musicObj){
local colObj = sq_GetCNRDObjectToCollisionObject(musicObj);
colObj.setValid(false);
}
break;
}
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_CAST_SPEED, SPEED_TYPE_CAST_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
}
function onEndCurrentAni_Ariaofcourage(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
local isStone = sq_GetIntData(obj, SKILL_BYKK_ARIAOFCOURAGE, 13);
if(isStone > 0) {//stone
local power = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_ARIAOFCOURAGE, -1, 0, 1.0);
local hitTime = sq_GetIntData(obj, SKILL_BYKK_ARIAOFCOURAGE, 5);
local hitMax = sq_GetIntData(obj, SKILL_BYKK_ARIAOFCOURAGE, 6);
local range = sq_GetIntData(obj, SKILL_BYKK_ARIAOFCOURAGE, 7);
if(sq_GetSkillLevel(obj, SKILL_BYKK_BLESSOFRAPHAEL) > 0) range = range * (1000 + sq_GetLevelData(obj, SKILL_BYKK_BLESSOFRAPHAEL, 5, sq_GetSkillLevel(obj, SKILL_BYKK_BLESSOFRAPHAEL))) / 1000;
if(isStone > 100) hitTime = hitTime / 2;
print("range = "+range);
local sizeRate = range * 100 / 275;
local lifeTime = sq_GetIntData(obj, SKILL_BYKK_ARIAOFCOURAGE, 0);
local increaseRate = sq_GetIntData(obj, SKILL_BYKK_ARIAOFCOURAGE, 8);
local buffTime = sq_GetIntData(obj, SKILL_BYKK_ARIAOFCOURAGE, 12);
if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, APDPATH_CRUXOFSHAPIEL)) buffTime = buffTime + sq_GetLevelData(obj, SKILL_BYKK_CRUXOFSHAPIEL, 3, sq_GetSkillLevel(obj, SKILL_BYKK_CRUXOFSHAPIEL));
// if(obj.isMyControlObject()){
createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,0,0,0,obj.getDirection(),1,SKILL_BYKK_ARIAOFCOURAGE,4,sizeRate,power,hitTime,hitMax,lifeTime,range,increaseRate,buffTime);
createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,0,0,0,obj.getDirection(),1,SKILL_BYKK_ARIAOFCOURAGE,5,sizeRate,lifeTime,0,0,0,0,0,0);
createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,0,0,0,obj.getDirection(),1,SKILL_BYKK_ARIAOFCOURAGE,6,sizeRate,lifeTime,0,0,0,0,0,0);
// }
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
}
local hitTime = sq_GetIntData(obj, SKILL_BYKK_ARIAOFCOURAGE, 5);
local skill = sq_GetSkill(obj, SKILL_BYKK_ARIA);
if(!skill.isSealFunction()){
local power = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_ARIAOFCOURAGE, -1, 0, 1.0);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, ATPRIESTATK_BYKK_ARIAOFCOURAGEATTACK));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), power);
obj.setTimeEvent(1, hitTime, 1, false);
}
else{
local lifeTime = hitTime * sq_GetIntData(obj, SKILL_BYKK_ARIAOFCOURAGE, 6);
obj.setTimeEvent(4, lifeTime, 1, false);
}
obj.setTimeEvent(2,20,-1,false);
obj.setTimeEvent(3,hitTime,-1,true);
local pooledObj = sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atariaofcourage/buffeffect/buffloop_front.ani", 0, 0, 67);
local pooledObj2 = sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atariaofcourage/buffeffect/buffloop_back.ani", 0, -1, 67);
sq_moveWithParent(obj, pooledObj);
sq_moveWithParent(obj, pooledObj2);
obj.getVar("Ariaofcourage_eff").clear_obj_vector();
obj.getVar("Ariaofcourage_eff").push_obj_vector(pooledObj);
obj.getVar("Ariaofcourage_eff").push_obj_vector(pooledObj2);
local range = sq_GetIntData(obj, SKILL_BYKK_ARIAOFCOURAGE, 7);
if(sq_GetSkillLevel(obj, SKILL_BYKK_BLESSOFRAPHAEL) > 0) range = range * (1000 + sq_GetLevelData(obj, SKILL_BYKK_BLESSOFRAPHAEL, 5, sq_GetSkillLevel(obj, SKILL_BYKK_BLESSOFRAPHAEL))) / 1000;
local sizeRate = range * 100 / 275;
// if(obj.isMyControlObject())
createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,0,0,0,obj.getDirection(),1,SKILL_BYKK_ARIAOFCOURAGE,3,sizeRate,0,0,0,0,0,0,0);
obj.sq_PlaySound("ARIACOURAGE", 2001);
obj.sq_IntVectClear();
obj.sq_IntVectPush(1);
obj.sq_AddSetStatePacket(STATE_BYKK_ARIAOFCOURAGE, STATE_PRIORITY_AUTO, true);
break;
case 1:
obj.sq_IntVectClear();
obj.sq_IntVectPush(1);
obj.sq_AddSetStatePacket(STATE_BYKK_ARIAOFCOURAGE, STATE_PRIORITY_AUTO, true);
break;
case 2:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
}
}
function onProcCon_Ariaofcourage(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 1:
sq_SetKeyxEnable(obj, E_JUMP_COMMAND, true);
if(sq_IsEnterCommand(obj, E_JUMP_COMMAND)){
obj.sq_IntVectClear();
obj.sq_IntVectPush(2);
obj.sq_AddSetStatePacket(STATE_BYKK_ARIAOFCOURAGE, STATE_PRIORITY_AUTO, true);
}
sq_SetKeyxEnable(obj, E_ATTACK_COMMAND, true);
if(sq_IsEnterCommand(obj, E_ATTACK_COMMAND)) obj.addRapidInput();
if(sq_GetSkillLevel(obj, SKILL_BYKK_LIGHTOFHAPTISM) > 0 && !sq_GetSkill(obj, SKILL_BYKK_LIGHTOFHAPTISM).isInCoolTime()){
obj.setSkillCommandEnable(SKILL_BYKK_LIGHTOFHAPTISM,true);
local b_useskill = obj.sq_IsEnterSkill(SKILL_BYKK_LIGHTOFHAPTISM);
if(b_useskill != -1){
obj.startSkillCoolTime(SKILL_BYKK_LIGHTOFHAPTISM, sq_GetSkillLevel(obj, SKILL_BYKK_LIGHTOFHAPTISM), -1);
local power = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_LIGHTOFHAPTISM, SKILL_BYKK_LIGHTOFHAPTISM, 0, 1.0);
local sizeRate = sq_GetIntData(obj, SKILL_BYKK_LIGHTOFHAPTISM, 0);
// if(obj.isMyControlObject()){
local target = sq_FindTarget(obj, 0, 500, 500, 500);
if(target) createSkillPassive_ATPriest_bykk(obj,target,PASSIVEOBJ_BYKK_ATPRIEST,0,0,0,obj.getDirection(),1,SKILL_BYKK_LIGHTOFHAPTISM,0,power,sizeRate,0,0,0,0,0,0);
else createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,250,0,0,obj.getDirection(),1,SKILL_BYKK_LIGHTOFHAPTISM,0,power,sizeRate,0,0,0,0,0,0);
// }
}
}
if(sq_GetSkillLevel(obj, SKILL_BYKK_BLESSOFANGEL) > 0 && !sq_GetSkill(obj, SKILL_BYKK_BLESSOFANGEL).isInCoolTime()){
obj.setSkillCommandEnable(SKILL_BYKK_BLESSOFANGEL,true);
local b_useskill = obj.sq_IsEnterSkill(SKILL_BYKK_BLESSOFANGEL);
if(b_useskill != -1){
obj.startSkillCoolTime(SKILL_BYKK_BLESSOFANGEL, sq_GetSkillLevel(obj, SKILL_BYKK_BLESSOFANGEL), -1);
local range = sq_GetIntData(obj, SKILL_BYKK_BLESSOFANGEL, 1);
local skillLevel = sq_GetSkillLevel(obj, SKILL_BYKK_BLESSOFANGEL);
local buffTime = sq_GetLevelData(obj, SKILL_BYKK_BLESSOFANGEL, 0, skillLevel);
obj.sq_AddSkillLoad(SKILL_BYKK_BLESSOFANGEL, 111, 1, buffTime);
local loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_BLESSOFANGEL);
if(loadSlot) loadSlot.setStartCool();
local attackSpeed = sq_GetLevelData(obj, SKILL_BYKK_BLESSOFANGEL, 2, skillLevel);
local moveSpeed = sq_GetLevelData(obj, SKILL_BYKK_BLESSOFANGEL, 3, skillLevel);
local castSpeed = sq_GetLevelData(obj, SKILL_BYKK_BLESSOFANGEL, 4, skillLevel);
local power_Chr = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_BLESSOFANGEL, -1, 1, 1.0);
local power_Pty = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_BLESSOFANGEL, -1, 5, 1.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_CHARACTER) && !obj.isEnemy(object) && sq_Abs(sq_GetXPos(object) - sq_GetXPos(obj)) <= range && sq_Abs(sq_GetYPos(object) - sq_GetYPos(obj)) <= range / 2) {
local activeObj = sq_GetCNRDObjectToActiveObject(object);
if(!obj.getVar("Blessofangel_sqr").is_obj_vector(activeObj)) obj.getVar("Blessofangel_sqr").push_obj_vector(activeObj);
if(CNSquirrelAppendage.sq_IsAppendAppendage(activeObj, APDPATH_BLESSOFANGEL)){
CNSquirrelAppendage.sq_RemoveAppendage(activeObj, APDPATH_BLESSOFANGEL);
local effectObj = activeObj.getVar("Blessofangel_eff").get_obj_vector(0);
if(effectObj){
local colObj = sq_GetCNRDObjectToCollisionObject(effectObj);
colObj.setValid(false);
}
}
local power = power_Pty;
if(isSameObject(obj, activeObj)) power = power_Chr;
local group = sq_GetGroup(activeObj);
local uniqueId = sq_GetUniqueId(activeObj);
// if(obj.isMyControlObject())
createSkillPassive_ATPriest_bykk(obj,activeObj,PASSIVEOBJ_BYKK_ATPRIEST,0,0,sq_GetHeightObject(activeObj) + 30,obj.getDirection(),1,SKILL_BYKK_BLESSOFANGEL,1,power,buffTime,group,uniqueId,0,0,0,0);
if(obj.getVar("Blessofangel_Bool").getBool(0) == false) obj.getVar("Blessofangel_Bool").setBool(0, true);
local AddAppendage = CNSquirrelAppendage.sq_AppendAppendage(activeObj, obj, -1, false, APDPATH_BLESSOFANGEL, true);
AddAppendage.setBuffIconImage(131);
AddAppendage.sq_SetValidTime(buffTime);
AddAppendage.getVar("tar").clear_obj_vector();
AddAppendage.getVar("tar").push_obj_vector(obj);
local change_appendage = AddAppendage.sq_getChangeStatus("AT_Blessofangel");
if(!change_appendage) change_appendage = AddAppendage.sq_AddChangeStatus("AT_Blessofangel",activeObj, 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).tofloat());
change_appendage.addParameter(CHANGE_STATUS_TYPE_MOVE_SPEED, false, (moveSpeed).tofloat());
change_appendage.addParameter(CHANGE_STATUS_TYPE_CAST_SPEED, false, (castSpeed).tofloat());
}
}
}
}
}
if(sq_GetSkillLevel(obj, SKILL_BYKK_PROTECTIONOFURIEL) > 0 && !sq_GetSkill(obj, SKILL_BYKK_PROTECTIONOFURIEL).isInCoolTime()){
obj.setSkillCommandEnable(SKILL_BYKK_PROTECTIONOFURIEL,true);
local b_useskill = obj.sq_IsEnterSkill(SKILL_BYKK_PROTECTIONOFURIEL);
if(b_useskill != -1){
obj.startSkillCoolTime(SKILL_BYKK_PROTECTIONOFURIEL, sq_GetSkillLevel(obj, SKILL_BYKK_PROTECTIONOFURIEL), -1);
local lifeTime = sq_GetIntData(obj, SKILL_BYKK_PROTECTIONOFURIEL, 1);
local range = sq_GetIntData(obj, SKILL_BYKK_PROTECTIONOFURIEL, 4);
local hitTime = sq_GetIntData(obj, SKILL_BYKK_PROTECTIONOFURIEL, 2);
local skillLevel = sq_GetSkillLevel(obj, SKILL_BYKK_PROTECTIONOFURIEL);
local attackSpeed = sq_GetLevelData(obj, SKILL_BYKK_PROTECTIONOFURIEL, 2, skillLevel);
local moveSpeed = sq_GetLevelData(obj, SKILL_BYKK_PROTECTIONOFURIEL, 3, skillLevel);
local castSpeed = sq_GetLevelData(obj, SKILL_BYKK_PROTECTIONOFURIEL, 4, skillLevel);
if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, APDPATH_CRUXOFSHAPIEL)){
local addRate = sq_GetLevelData(obj, SKILL_BYKK_CRUXOFSHAPIEL, 5, sq_GetSkillLevel(obj, SKILL_BYKK_CRUXOFSHAPIEL));
attackSpeed = attackSpeed + addRate;
moveSpeed = moveSpeed + addRate;
castSpeed = castSpeed + addRate;
}
local damageRate = sq_GetLevelData(obj, SKILL_BYKK_PROTECTIONOFURIEL, 5, skillLevel) / 10;
local power = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_PROTECTIONOFURIEL, -1, 0, 1.0);
// if(obj.isMyControlObject())
createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,0,0,0,obj.getDirection(),1,SKILL_BYKK_PROTECTIONOFURIEL,1,power,lifeTime,hitTime,range,attackSpeed,moveSpeed,castSpeed,damageRate);
}
}
if(sq_GetSkillLevel(obj, SKILL_BYKK_HOLYLIGHT) > 0 && !sq_GetSkill(obj, SKILL_BYKK_HOLYLIGHT).isInCoolTime()){
obj.setSkillCommandEnable(SKILL_BYKK_HOLYLIGHT,true);
local b_useskill = obj.sq_IsEnterSkill(SKILL_BYKK_HOLYLIGHT);
if(b_useskill != -1){
local skillLevel = sq_GetSkillLevel(obj, SKILL_BYKK_HOLYLIGHT);
obj.startSkillCoolTime(SKILL_BYKK_HOLYLIGHT, skillLevel, -1);
local range = sq_GetIntData(obj, SKILL_BYKK_HOLYLIGHT, 0);
local buffTime = sq_GetLevelData(obj, SKILL_BYKK_HOLYLIGHT, 0, skillLevel) + 720;
local power_Chr = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_HOLYLIGHT, -1, 1, 1.0);
local power_Pty = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_HOLYLIGHT, -1, 5, 1.0);
local damageRate = sq_GetLevelData(obj, SKILL_BYKK_HOLYLIGHT, 2, skillLevel);
local increaseRate = sq_GetIntData(obj, SKILL_BYKK_HOLYLIGHT, 4);
local skillLevel2 = sq_GetSkillLevel(obj, SKILL_BYKK_BLESSOFPROTECTION);
local hpMax = sq_GetLevelData(obj, SKILL_BYKK_BLESSOFPROTECTION, 6, skillLevel2) * (100 + increaseRate) / 100;
local mpMax = sq_GetLevelData(obj, SKILL_BYKK_BLESSOFPROTECTION, 7, skillLevel2) * (100 + increaseRate) / 100;
local phDefense = sq_GetLevelData(obj, SKILL_BYKK_BLESSOFPROTECTION, 2, skillLevel2) * (100 + increaseRate) / 100;
local mgDefense = sq_GetLevelData(obj, SKILL_BYKK_BLESSOFPROTECTION, 3, skillLevel2) * (100 + increaseRate) / 100;
local phlDefense = sq_GetLevelData(obj, SKILL_BYKK_BLESSOFPROTECTION, 4, skillLevel2) * (100 + increaseRate) / 100;
local mglDefense = sq_GetLevelData(obj, SKILL_BYKK_BLESSOFPROTECTION, 5, skillLevel2) * (100 + increaseRate) / 100;
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) && sq_Abs(sq_GetXPos(object) - sq_GetXPos(obj)) <= range && sq_Abs(sq_GetYPos(object) - sq_GetYPos(obj)) <= range / 2) {
local activeObj = sq_GetCNRDObjectToActiveObject(object);
if(CNSquirrelAppendage.sq_IsAppendAppendage(activeObj, APDPATH_HOLYLIGHT)) CNSquirrelAppendage.sq_RemoveAppendage(activeObj, APDPATH_HOLYLIGHT);
local AddAppendage = CNSquirrelAppendage.sq_AppendAppendage(activeObj, obj, -1, false, APDPATH_HOLYLIGHT, true);
if(buffTime > 0) AddAppendage.sq_SetValidTime(buffTime);
AddAppendage.setBuffIconImage(44);
AddAppendage.setEnableIsBuff(true);
AddAppendage.setAppendCauseSkill(BUFF_CAUSE_SKILL, sq_getJob(obj), SKILL_BYKK_HOLYLIGHT, skillLevel);
CNSquirrelAppendage.sq_Append(AddAppendage, activeObj, obj, true);
AddAppendage.getVar("custom").setInt(10, damageRate);
if(CNSquirrelAppendage.sq_IsAppendAppendage(activeObj, APDPATH_BLESSOFPROTECTION)){
local ptcAppendage = CNSquirrelAppendage.sq_GetAppendage(activeObj, APDPATH_BLESSOFPROTECTION);
local change_appendage = ptcAppendage.sq_getChangeStatus("AT_Blessofprotection");
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());
}
}
local group = sq_GetGroup(activeObj);
local uniqueId = sq_GetUniqueId(activeObj);
local power = power_Pty;
if(isSameObject(obj, activeObj)) power = power_Chr;
// if(obj.isMyControlObject())
createSkillPassive_ATPriest_bykk(obj,activeObj,PASSIVEOBJ_BYKK_ATPRIEST,0,0,sq_GetHeightObject(activeObj) / 2,obj.getDirection(),1,SKILL_BYKK_HOLYLIGHT,0,power,buffTime,group,uniqueId,0,0,0,0);
}
}
}
}
if(sq_GetSkillLevel(obj, SKILL_BYKK_EDIFICATION) > 0 && !sq_GetSkill(obj, SKILL_BYKK_EDIFICATION).isInCoolTime()){
obj.setSkillCommandEnable(SKILL_BYKK_EDIFICATION,true);
local b_useskill = obj.sq_IsEnterSkill(SKILL_BYKK_EDIFICATION);
if(b_useskill != -1){
local skillLevel = sq_GetSkillLevel(obj, SKILL_BYKK_EDIFICATION);
obj.startSkillCoolTime(SKILL_BYKK_HOLYLIGHT, skillLevel, -1);
local buffTime = sq_GetLevelData(obj, SKILL_BYKK_EDIFICATION, 0, skillLevel);
local moveSpeed = sq_GetLevelData(obj, SKILL_BYKK_EDIFICATION, 1, skillLevel);
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)) {
local activeObj = sq_GetCNRDObjectToActiveObject(object);
if(CNSquirrelAppendage.sq_IsAppendAppendage(activeObj, APDPATH_EDIFICATION)) CNSquirrelAppendage.sq_RemoveAppendage(activeObj, APDPATH_EDIFICATION);
local AddAppendage = CNSquirrelAppendage.sq_AppendAppendage(activeObj, obj, -1, false, APDPATH_EDIFICATION, true);
AddAppendage.sq_SetValidTime(buffTime);
AddAppendage.setBuffIconImage(128);
AddAppendage.setAppendCauseSkill(BUFF_CAUSE_SKILL, sq_getJob(obj), SKILL_BYKK_EDIFICATION, skillLevel);
CNSquirrelAppendage.sq_Append(AddAppendage, activeObj, obj, true);
AddAppendage.getVar("custom").setInt(10, moveSpeed);
local change_appendage = AddAppendage.sq_getChangeStatus("AT_Edification");
if(!change_appendage) change_appendage = AddAppendage.sq_AddChangeStatus("AT_Edification",activeObj, obj, 0, CHANGE_STATUS_TYPE_PHYSICAL_ATTACK, true, 1000);
if(change_appendage){
change_appendage.clearParameter();
change_appendage.addParameter(CHANGE_STATUS_TYPE_MOVE_SPEED, false, (moveSpeed).tofloat());
}
}
}
}
}
if(sq_GetSkillLevel(obj, SKILL_BYKK_CRUXOFSHAPIEL) > 0 && !sq_GetSkill(obj, SKILL_BYKK_CRUXOFSHAPIEL).isInCoolTime()){
obj.setSkillCommandEnable(SKILL_BYKK_CRUXOFSHAPIEL,true);
local b_useskill = obj.sq_IsEnterSkill(SKILL_BYKK_CRUXOFSHAPIEL);
if(b_useskill != -1){
local skillLevel = sq_GetSkillLevel(obj, SKILL_BYKK_CRUXOFSHAPIEL);
obj.startSkillCoolTime(SKILL_BYKK_CRUXOFSHAPIEL, skillLevel, -1);
obj.getVar("cruxofshapiel_obj").clear_obj_vector();
obj.getVar("cruxofshapiel_bool").setBool(0, false);
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);
}
}
if(obj.getVar("cruxofshapiel_bool").getBool(0)){
obj.setSkillCommandEnable(SKILL_BYKK_CRUXOFSHAPIEL,true);
local b_useskill = obj.sq_IsEnterSkill(SKILL_BYKK_CRUXOFSHAPIEL);
if(b_useskill != -1){
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, "");
}
}
}
}
}
break;
}
}
function onKeyFrameFlag_Ariaofcourage(obj, flagIndex)
{
if(!obj) return false;
switch(flagIndex){
case 103:
if(sq_GetIntData(obj, SKILL_BYKK_ARIAOFCOURAGE, 13) > 0) break; //stone
local range = sq_GetIntData(obj, SKILL_BYKK_ARIAOFCOURAGE, 7);
if(sq_GetSkillLevel(obj, SKILL_BYKK_BLESSOFRAPHAEL) > 0) range = range * (1000 + sq_GetLevelData(obj, SKILL_BYKK_BLESSOFRAPHAEL, 5, sq_GetSkillLevel(obj, SKILL_BYKK_BLESSOFRAPHAEL))) / 1000;
local sizeRate = range * 100 / 275;
// if(obj.isMyControlObject())
createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,0,0,0,obj.getDirection(),1,SKILL_BYKK_ARIAOFCOURAGE,1,sizeRate,0,0,0,0,0,0,0);
// if(obj.isMyControlObject())
createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,0,0,0,obj.getDirection(),1,SKILL_BYKK_ARIAOFCOURAGE,2,sizeRate,0,0,0,0,0,0,0);
break;
case 106:
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atariaofcourage/ora/orastartfront_1.ani", 0, 1, 0);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atariaofcourage/ora/orastartback_1.ani", 0, -1, 0);
break;
}
return true;
}
function onTimeEvent_Ariaofcourage(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
switch(timeEventIndex){
case 1:
local inputConut = obj.getRapidInputFrequency();
inputConut = inputConut.tointeger();
local inputMax = 2;
local gapByInputMin = sq_GetIntData(obj, SKILL_BYKK_ARIAOFCOURAGE, 5) / 2;
local gapByInputMax = gapByInputMin * 2;
local hitMax = sq_GetIntData(obj, SKILL_BYKK_ARIAOFCOURAGE, 6);
if(obj.getVar("hitCount").getInt(10) + 1 >= hitMax){
obj.sq_IntVectClear();
obj.sq_IntVectPush(2);
obj.sq_AddSetStatePacket(STATE_BYKK_ARIAOFCOURAGE, STATE_PRIORITY_AUTO, true);
break;
}
else obj.getVar("hitCount").setInt(10, obj.getVar("hitCount").getInt(10) + 1);
if(inputConut >= inputMax) obj.setTimeEvent(1, gapByInputMin, 1, false);
else obj.setTimeEvent(1, gapByInputMax, 1, false);
obj.resetHitObjectList();
break;
case 2:
local xpos = sq_GetXPos(obj), ypos = sq_GetYPos(obj);
if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_UP, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(xpos,ypos - 1)) sq_setCurrentAxisPos(obj, 1, ypos - 2);
if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_LEFT, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(xpos - 2,ypos)) sq_setCurrentAxisPos(obj, 0, xpos - 2);
return;
}
else if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_RIGHT, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(xpos + 2,ypos)) sq_setCurrentAxisPos(obj, 0, xpos + 2);
return;
}
}
else if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_DOWN, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(xpos,ypos + 1)) sq_setCurrentAxisPos(obj, 1, ypos + 2);
if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_LEFT, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(xpos - 2,ypos)) sq_setCurrentAxisPos(obj, 0, xpos - 2);
return;
}
else if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_RIGHT, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(xpos + 2,ypos)) sq_setCurrentAxisPos(obj, 0, xpos + 2);
return;
}
}
if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_LEFT, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(xpos - 2,ypos)) sq_setCurrentAxisPos(obj, 0, xpos - 2);
return;
}
else if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_RIGHT, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(xpos + 2,ypos)) sq_setCurrentAxisPos(obj, 0, xpos + 2);
return;
}
break;
case 3:
local skillLevel = sq_GetSkillLevel(obj, SKILL_BYKK_ARIAOFCOURAGE);
local increaseRate = sq_GetIntData(obj, SKILL_BYKK_ARIAOFCOURAGE, 8);
local buffTime = sq_GetIntData(obj, SKILL_BYKK_ARIAOFCOURAGE, 12);
if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, APDPATH_CRUXOFSHAPIEL)) buffTime = buffTime + sq_GetLevelData(obj, SKILL_BYKK_CRUXOFSHAPIEL, 3, sq_GetSkillLevel(obj, SKILL_BYKK_CRUXOFSHAPIEL));
local range = sq_GetIntData(obj, SKILL_BYKK_ARIAOFCOURAGE, 7);
if(sq_GetSkillLevel(obj, SKILL_BYKK_BLESSOFRAPHAEL) > 0) range = range * (1000 + sq_GetLevelData(obj, SKILL_BYKK_BLESSOFRAPHAEL, 5, sq_GetSkillLevel(obj, SKILL_BYKK_BLESSOFRAPHAEL))) / 1000;
local power = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_ARIAOFCOURAGE, -1, 0, 1.0) / 2;
local skill = sq_GetSkill(obj, SKILL_BYKK_ARIAOFCOURAGE);
local isSeal = skill.isSealFunction();
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) && sq_Abs(sq_GetXPos(object) - sq_GetXPos(obj)) <= range && sq_Abs(sq_GetYPos(object) - sq_GetYPos(obj)) <= range / 2) {
local activeObj = sq_GetCNRDObjectToActiveObject(object);
if(!obj.getVar("Ariaofcourage_Tar").is_obj_vector(activeObj)) obj.getVar("Ariaofcourage_Tar").push_obj_vector(activeObj);
if(CNSquirrelAppendage.sq_IsAppendAppendage(activeObj, APDPATH_ARIAOFCOURAGEBUFF)){
CNSquirrelAppendage.sq_RemoveAppendage(activeObj, APDPATH_ARIAOFCOURAGEBUFF);
}
local AddAppendage = CNSquirrelAppendage.sq_AppendAppendage(activeObj, obj, -1, false, APDPATH_ARIAOFCOURAGEBUFF, true);
if(!isSeal){
local change2_appendage = AddAppendage.sq_GetCNChangeHp("changehp");
if (!change2_appendage) change2_appendage = AddAppendage.sq_AddCNChangeHp("changehp", activeObj, obj, 0, power.tofloat(), 1000);
AddAppendage.sq_SetValidTime(buffTime);
AddAppendage.setAppendCauseSkill(BUFF_CAUSE_SKILL, sq_getJob(obj), SKILL_BYKK_ARIAOFCOURAGE, skillLevel);
CNSquirrelAppendage.sq_Append(AddAppendage, activeObj, obj, true);
}
AddAppendage.getVar("custom").setInt(16, buffTime);
AddAppendage.getVar("custom").setInt(17, range);
AddAppendage.getVar("bool").setBool(0, true);
if(!CNSquirrelAppendage.sq_IsAppendAppendage(activeObj, APDPATH_BLESSOFCOURAGE)) continue;
local AddAppendage2 = CNSquirrelAppendage.sq_GetAppendage(activeObj, APDPATH_BLESSOFCOURAGE);
local phAttack = AddAppendage2.getVar("custom").getInt(10);
local mgAttack = AddAppendage2.getVar("custom").getInt(11);
local adtAttack = AddAppendage2.getVar("custom").getInt(12);
local phlAttack = AddAppendage2.getVar("custom").getInt(13);
local mglAttack = AddAppendage2.getVar("custom").getInt(14);
local stuckRate = AddAppendage2.getVar("custom").getInt(15);
// print("phAttack = "+phAttack+"; mgAttack ="+mgAttack+"; adtAttack ="+adtAttack+"; phlAttack ="+phlAttack+"; mglAttack ="+mglAttack+"; stuckRate ="+stuckRate);
local change_appendage = AddAppendage.sq_getChangeStatus("AT_AriaofcourageBuff");
if(!change_appendage) change_appendage = AddAppendage.sq_AddChangeStatus("AT_AriaofcourageBuff",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 * increaseRate / 100).tofloat());
change_appendage.addParameter(CHANGE_STATUS_TYPE_EQUIPMENT_MAGICAL_ATTACK, false, (mgAttack * increaseRate / 100).tofloat());
change_appendage.addParameter(CHANGE_STATUS_TYPE_ADDITIONAL_PHYSICAL_GENUINE_ATTACK, false, (adtAttack * increaseRate / 100).tofloat());
change_appendage.addParameter(CHANGE_STATUS_TYPE_ADDITIONAL_MAGICAL_GENUINE_ATTACK, false, (adtAttack * increaseRate / 100).tofloat());
change_appendage.addParameter(CHANGE_STATUS_TYPE_PHYSICAL_ATTACK, false, (phlAttack * increaseRate / 100).tofloat());
change_appendage.addParameter(CHANGE_STATUS_TYPE_MAGICAL_ATTACK, false, (mglAttack * increaseRate / 100).tofloat());
change_appendage.addParameter(CHANGE_STATUS_TYPE_STUCK, false, (stuckRate * -0.1 * increaseRate / 100).tofloat());
}
}
}
break;
case 4:
obj.sq_IntVectClear();
obj.sq_IntVectPush(2);
obj.sq_AddSetStatePacket(STATE_BYKK_ARIAOFCOURAGE, STATE_PRIORITY_AUTO, true);
break;
}
}
function onEndState_Ariaofcourage(obj, new_state)
{
if(!obj) return;
if(new_state != STATE_BYKK_ARIAOFCOURAGE){
local size = obj.getVar("Ariaofcourage_Tar").get_obj_vector_size();
if(size > 0){
local buffTime = sq_GetIntData(obj, SKILL_BYKK_ARIAOFCOURAGE, 12);
for(local i = 0; i < size; i++){
local targetObj = obj.getVar("Ariaofcourage_Tar").get_obj_vector(i);
if(targetObj && targetObj.getState() != STATE_DIE){
local AddAppendage = CNSquirrelAppendage.sq_GetAppendage(targetObj, APDPATH_ARIAOFCOURAGEBUFF);
local validT = AddAppendage.getAppendageInfo().getValidTime();
AddAppendage.getAppendageInfo().setValidTime(buffTime);
}
}
}
local floorObj = obj.getVar("ARIAOFCOURAGE_FLOOR").get_obj_vector(0);
local effectObj = obj.getVar("ARIAOFCOURAGE_EFFECT").get_obj_vector(0);
local musicObj = obj.getVar("ARIAOFCOURAGE_MUSIC").get_obj_vector(0);
if(floorObj){
local colObj = sq_GetCNRDObjectToCollisionObject(floorObj);
colObj.setValid(false);
}
if(effectObj){
local colObj = sq_GetCNRDObjectToCollisionObject(effectObj);
colObj.setValid(false);
}
if(musicObj){
local colObj = sq_GetCNRDObjectToCollisionObject(musicObj);
colObj.setValid(false);
}
local pooledObj = obj.getVar("Ariaofcourage_eff").get_obj_vector(0);
local pooledObj2 = obj.getVar("Ariaofcourage_eff").get_obj_vector(1);
if(pooledObj) pooledObj.setValid(false);
if(pooledObj2) pooledObj2.setValid(false);
}
}
function getImmuneTypeDamageRate_appendage_at_ariaofcourage(appendage, damageRate, attacker)
{
local new_damageRate = damageRate - appendage.getVar("custom").getInt(10) / 10;
return new_damageRate;
}
function proc_appendage_at_ariaofcouragebuff(appendage)
{
if(!appendage) return;
local parentObj = appendage.getParent();
if(!CNSquirrelAppendage.sq_IsAppendAppendage(parentObj, APDPATH_BLESSOFCOURAGE)){
appendage.setValid(false);
return;
}
if((!parentObj || parentObj.getState() == STATE_DIE) && appendage.getVar("bool").getBool(1) == false){
appendage.getVar("bool").setBool(1, true);
appendage.sq_SetValidTime(appendage.getVar("custom").getInt(16));
return;
}
local sourceObj = appendage.getSource();
if((!parentObj || parentObj.getState() == STATE_DIE) && appendage.getVar("bool").getBool(1) == false){
appendage.getVar("bool").setBool(1, true);
appendage.sq_SetValidTime(appendage.getVar("custom").getInt(16));
return;
}
local range = appendage.getVar("custom").getInt(17);
if(sq_Abs(sourceObj.getXPos() - parentObj.getXPos()) > range && sq_Abs(sourceObj.getYPos() - parentObj.getYPos()) > range / 2 && appendage.getVar("bool").getBool(0)){
appendage.getVar("bool").setBool(0, false);
appendage.sq_SetValidTime(appendage.getVar("custom").getInt(16));
}
}
function onEnd_appendage_at_ariaofcouragebuff(appendage)
{
if(!appendage) return;
local parentObj = appendage.getParent();
if(!parentObj || parentObj.getState() == STATE_DIE){
appendage.setValid(false);
return;
}
}
//神之教诲
function checkExecutableSkill_Edification(obj)
{
if (!obj) return false;
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_EDIFICATION);
if (isUse){
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_EDIFICATION, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_Edification(obj)
{
if (!obj) return false;
return true;
}
function onSetState_Edification(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_EDIFICATION_CAST_BODY);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atedification/edification_top_angelbody.ani", 0, 1, 0);
local aniPath = "character/swordman/effect/animation/1_atpriest_bykk/atedification/edification_bottom_glow.ani";
createOnlyDrawObject_ATPriest_bykk(obj,aniPath,true,obj.getDirection(),sq_GetXPos(obj),sq_GetYPos(obj),0,ENUM_DRAWLAYER_BOTTOM);
obj.sq_PlaySound("R_PW_EDITICATION");
obj.sq_PlaySound("EDIFICATION_CAST");
break;
case 1:
obj.sq_SetCurrentAnimation(ATPANI_BYKK_EDIFICATION_START_BODY);
local skillLevel = sq_GetSkillLevel(obj, SKILL_BYKK_EDIFICATION);
local buffTime = sq_GetLevelData(obj, SKILL_BYKK_EDIFICATION, 0, skillLevel);
local moveSpeed = sq_GetLevelData(obj, SKILL_BYKK_EDIFICATION, 1, skillLevel);
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)) {
local activeObj = sq_GetCNRDObjectToActiveObject(object);
if(CNSquirrelAppendage.sq_IsAppendAppendage(activeObj, APDPATH_EDIFICATION)) CNSquirrelAppendage.sq_RemoveAppendage(activeObj, APDPATH_EDIFICATION);
local AddAppendage = CNSquirrelAppendage.sq_AppendAppendage(activeObj, obj, -1, false, APDPATH_EDIFICATION, true);
AddAppendage.sq_SetValidTime(buffTime);
AddAppendage.setBuffIconImage(128);
AddAppendage.setAppendCauseSkill(BUFF_CAUSE_SKILL, sq_getJob(obj), SKILL_BYKK_EDIFICATION, skillLevel);
CNSquirrelAppendage.sq_Append(AddAppendage, activeObj, obj, true);
AddAppendage.getVar("custom").setInt(10, moveSpeed);
local change_appendage = AddAppendage.sq_getChangeStatus("AT_Edification");
if(!change_appendage) change_appendage = AddAppendage.sq_AddChangeStatus("AT_Edification",activeObj, obj, 0, CHANGE_STATUS_TYPE_PHYSICAL_ATTACK, true, 1000);
if(change_appendage){
change_appendage.clearParameter();
change_appendage.addParameter(CHANGE_STATUS_TYPE_MOVE_SPEED, false, (moveSpeed).tofloat());
}
}
}
break;
}
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_CAST_SPEED, SPEED_TYPE_CAST_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
}
function onEndCurrentAni_Edification(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
obj.sq_IntVectClear();
obj.sq_IntVectPush(1);
obj.sq_AddSetStatePacket(STATE_BYKK_EDIFICATION, STATE_PRIORITY_AUTO, true);
break;
case 1:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
}
}
function onProcCon_Edification(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
}
}
function onKeyFrameFlag_Edification(obj, flagIndex)
{
if(!obj) return false;
switch(flagIndex){
}
return true;
}
function onTimeEvent_Edification(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
switch(timeEventIndex){
case 0:
break;
}
}
function onEndState_Edification(obj, new_state)
{
if(!obj) return;
}
//神光惩戒
function checkExecutableSkill_Shinecross(obj)
{
if (!obj) return false;
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_SHINECROSS);
if (isUse){
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_SHINECROSS, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_Shinecross(obj)
{
if (!obj) return false;
return true;
}
function onSetState_Shinecross(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_SC_BODYA);
local power = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_SHINECROSS, -1, 0, 1.0);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, ATPRIESTATK_BYKK_SHINECROSSATK1));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), power);
break;
case 1:
obj.sq_SetCurrentAnimation(ATPANI_BYKK_SC_BODYB);
local power = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_SHINECROSS, -1, 1, 1.0);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, ATPRIESTATK_BYKK_SHINECROSSATK2));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), power);
break;
case 2:
obj.sq_SetCurrentAnimation(ATPANI_BYKK_SC_BODYC);
local power = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_SHINECROSS, -1, 2, 1.0);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, ATPRIESTATK_BYKK_SHINECROSSATK3));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), power);
break;
}
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_CAST_SPEED, SPEED_TYPE_CAST_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
}
function onEndCurrentAni_Shinecross(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
obj.sq_IntVectClear();
obj.sq_IntVectPush(1);
obj.sq_AddSetStatePacket(STATE_BYKK_SHINECROSS, STATE_PRIORITY_AUTO, true);
break;
case 1:
obj.sq_IntVectClear();
obj.sq_IntVectPush(2);
obj.sq_AddSetStatePacket(STATE_BYKK_SHINECROSS, STATE_PRIORITY_AUTO, true);
break;
case 2:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
}
}
function onProcCon_Shinecross(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
}
}
function onKeyFrameFlag_Shinecross(obj, flagIndex)
{
if(!obj) return false;
switch(flagIndex){
case 101: obj.sq_PlaySound("PW_1ATK_01"); break;
case 103: obj.sq_PlaySound("SHINECROSS_01"); break;
case 105: sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atshinecross/sc_slasha_01.ani", 0, 1, 0); break;
case 200:
obj.sq_PlaySound("PW_3ATK_02");
obj.sq_PlaySound("SHINECROSS_02");
break;
case 203: sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atshinecross/sc_slashb_01.ani", 0, 1, 0); break;
case 300: obj.sq_PlaySound("PW_RISING_SLASH"); break;
case 301:
obj.sq_PlaySound("SHINECROSS_03");
sq_flashScreen(obj,0,80,0,153, sq_RGB(255,255,255), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
sq_SetMyShake(obj, 6, 100);
break;
case 310: sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atshinecross/sc_slashc_01.ani", 0, 1, 0); break;
}
return true;
}
function onTimeEvent_Shinecross(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
switch(timeEventIndex){
case 0:
break;
}
}
function onEndState_Shinecross(obj, new_state)
{
if(!obj) return;
}
//神圣锁环
function checkExecutableSkill_Holycirclet(obj)
{
if (!obj) return false;
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_HOLYCIRCLET);
if (isUse){
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_HOLYCIRCLET, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_Holycirclet(obj)
{
if (!obj) return false;
return true;
}
function onSetState_Holycirclet(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_HOLYCIRCLET_A_BODY);
break;
case 1:
obj.sq_SetCurrentAnimation(ATPANI_BYKK_HOLYCIRCLET_B_BODY);
sq_SetMyShake(obj, 2, 40);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atholycirclet/holycirclet_b_bodyeff.ani", 0, 1, 0);
break;
}
}
function onEndCurrentAni_Holycirclet(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
obj.sq_IntVectClear();
obj.sq_IntVectPush(1);
obj.sq_AddSetStatePacket(STATE_BYKK_HOLYCIRCLET, STATE_PRIORITY_AUTO, true);
break;
case 1:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
}
}
function onProcCon_Holycirclet(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
}
}
function onKeyFrameFlag_Holycirclet(obj, flagIndex)
{
if(!obj) return false;
switch(flagIndex){
case 101:
//`ShootHolyCirclet` 300 0 70
local power = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_HOLYCIRCLET, -1, 0, 1.0);
local power_exp = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_HOLYCIRCLET, -1, 1, 1.0);
local hitTime = sq_GetIntData(obj, SKILL_BYKK_HOLYCIRCLET, 6);
local subTime = sq_GetIntData(obj, SKILL_BYKK_HOLYCIRCLET, 0);
local lifeTime = sq_GetIntData(obj, SKILL_BYKK_HOLYCIRCLET, 2);
local sizeRate = sq_GetIntData(obj, SKILL_BYKK_HOLYCIRCLET, 10);
// if(obj.isMyControlObject())
createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,300,0,70,obj.getDirection(),1,SKILL_BYKK_HOLYCIRCLET,1,power,power_exp,hitTime,lifeTime,subTime,sizeRate,0,0);
break;
case 104: sq_SetMyShake(obj, 2, 80); break;
}
return true;
}
function onTimeEvent_Holycirclet(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
switch(timeEventIndex){
case 0:
break;
}
}
function onEndState_Holycirclet(obj, new_state)
{
if(!obj) return;
}
//复苏之光
function checkExecutableSkill_Revive(obj)
{
if (!obj) return false;
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_CUTINDASH);
if (isUse){
//obj.sq_IntVectClear();
//obj.sq_IntVectPush(0);
//obj.sq_AddSetStatePacket(STATE_BYKK_CUTINDASH, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_Revive(obj)
{
if (!obj) return false;
// return true;
return false;
}
function onSetState_Revive(obj, state, datas, isResetTimer)
{
if(!obj) return;
local subState = obj.sq_GetVectorData(datas, 0);
obj.setSkillSubState(subState);
obj.sq_StopMove();
switch(subState){
}
}
function onEndCurrentAni_Revive(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
}
}
function onProcCon_Revive(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
}
}
function onKeyFrameFlag_Revive(obj, flagIndex)
{
if(!obj) return false;
switch(flagIndex){
}
return true;
}
function onTimeEvent_Revive(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
switch(timeEventIndex){
case 0:
break;
}
}
function onEndState_Revive(obj, new_state)
{
if(!obj) return;
}
//忏悔之雷
function checkExecutableSkill_Thunderofcleans(obj)
{
if (!obj) return false;
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_THUNDEROFCLEANS);
if (isUse){
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_THUNDEROFCLEANS, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_Thunderofcleans(obj)
{
if (!obj) return false;
return true;
}
function onSetState_Thunderofcleans(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_ATTHUNDEROFCLEANS_CASTING_BODY);
break;
case 1:
obj.sq_SetCurrentAnimation(ATPANI_BYKK_ATTHUNDEROFCLEANS_START_BODY);
if(sq_GetIntData(obj, SKILL_BYKK_THUNDEROFCLEANS, 23) < 1){//stone
local createMax = sq_GetIntData(obj, SKILL_BYKK_THUNDEROFCLEANS, 2);
local createTime = sq_GetIntData(obj, SKILL_BYKK_THUNDEROFCLEANS, 3);
local power = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_THUNDEROFCLEANS, -1, 3, 1.0);
local power_exp = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_THUNDEROFCLEANS, -1, 0, 1.0);
local minSizeRate = sq_GetIntData(obj, SKILL_BYKK_THUNDEROFCLEANS, 10);
// if(obj.isMyControlObject())
createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,300,0,0,obj.getDirection(),1,SKILL_BYKK_THUNDEROFCLEANS,1,power,power_exp,createMax,createTime,0,minSizeRate,0,0);
}
else{
local createTime = sq_GetIntData(obj, SKILL_BYKK_THUNDEROFCLEANS, 3);
local power_exp = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_THUNDEROFCLEANS, -1, 0, -1, 2.0);
local sub = sq_GetIntData(obj, SKILL_BYKK_THUNDEROFCLEANS, 23);
local speed = 200;
if(sub > 50) speed = 300;
// if(obj.isMyControlObject())
createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,200,0,0,obj.getDirection(),1,SKILL_BYKK_THUNDEROFCLEANS,1,0,power_exp,0,createTime,sub,0,speed,0);
obj.setTimeEvent(0, 100, 1, false);
}
break;
}
}
function onEndCurrentAni_Thunderofcleans(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
obj.sq_IntVectClear();
obj.sq_IntVectPush(1);
obj.sq_AddSetStatePacket(STATE_BYKK_THUNDEROFCLEANS, STATE_PRIORITY_AUTO, true);
break;
case 1:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
}
}
function onProcCon_Thunderofcleans(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
}
}
function onKeyFrameFlag_Thunderofcleans(obj, flagIndex)
{
if(!obj) return false;
switch(flagIndex){
}
return true;
}
function onTimeEvent_Thunderofcleans(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_Thunderofcleans(obj, new_state)
{
if(!obj) return;
}
//新生圣歌
function checkExecutableSkill_Ariaofregeneration(obj)
{
if (!obj) return false;
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_ARIAOFREGENERATION);
if (isUse){
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_ARIAOFREGENERATION, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_Ariaofregeneration(obj)
{
if (!obj) return false;
return true;
}
function onSetState_Ariaofregeneration(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_ARIAOFREGENERATIONSTART_BODY);
obj.sq_PlaySound("R_PW_ARIAREGENERATION");
obj.sq_PlaySound("ARIAREGENERATION", 2001);
local skillLevel = sq_GetSkillLevel(obj, SKILL_BYKK_ARIAOFREGENERATION);
local damageRate = sq_GetLevelData(obj, SKILL_BYKK_ARIAOFREGENERATION, 1, skillLevel);
local allTolerance = sq_GetIntData(obj, SKILL_BYKK_ARIAOFREGENERATION, 9);
local AddAppendage = CNSquirrelAppendage.sq_AppendAppendage(obj, obj, -1, false, APDPATH_ARIAOFCOURAGE, true);
AddAppendage.getVar("custom").setInt(10, damageRate);
local change_appendage = AddAppendage.sq_getChangeStatus("AT_Ariaofcourage");
if(!change_appendage) change_appendage = AddAppendage.sq_AddChangeStatus("AT_Ariaofcourage",obj, obj, 0, CHANGE_STATUS_TYPE_PHYSICAL_ATTACK, true, 1000);
if(change_appendage){
change_appendage.clearParameter();
change_appendage.addParameter(CHANGE_STATUS_TYPE_ACTIVESTATUS_TOLERANCE_ALL, false, (allTolerance).tofloat());
}
break;
case 1:
obj.sq_SetCurrentAnimation(ATPANI_BYKK_ARIAOFREGENERATIONLOOP_BODY);
obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/atariaofregeneration/ora/oraloopfront_1.ani"), 0, -67);
obj.sq_AddStateLayerAnimation(-1,obj.sq_CreateCNRDAnimation("effect/animation/1_atpriest_bykk/atariaofregeneration/ora/oraloopback_glow.ani"), 0, -67);
break;
case 2:
obj.sq_SetCurrentAnimation(ATPANI_BYKK_ARIAOFREGENERATIONEND_BODY);
obj.stopSound(2001);
obj.removeAllTimeEvent();
local floorObj = obj.getVar("ARIAOFREGENERATION_FLOOR").get_obj_vector(0);
local effectObj = obj.getVar("ARIAOFREGENERATION_EFFECT").get_obj_vector(0);
local musicObj = obj.getVar("ARIAOFREGENERATION_MUSIC").get_obj_vector(0);
if(floorObj){
local colObj = sq_GetCNRDObjectToCollisionObject(floorObj);
colObj.addSetStatePacket(22, null, STATE_PRIORITY_AUTO, false, "");
}
if(effectObj){
local colObj = sq_GetCNRDObjectToCollisionObject(effectObj);
colObj.addSetStatePacket(22, null, STATE_PRIORITY_AUTO, false, "");
}
if(musicObj){
local colObj = sq_GetCNRDObjectToCollisionObject(musicObj);
colObj.setValid(false);
}
break;
}
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_CAST_SPEED, SPEED_TYPE_CAST_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
}
function onEndCurrentAni_Ariaofregeneration(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
if(sq_GetIntData(obj, SKILL_BYKK_ARIAOFREGENERATION, 13) > 0) {//stone
local range = sq_GetIntData(obj, SKILL_BYKK_ARIAOFREGENERATION, 5);
if(sq_GetSkillLevel(obj, SKILL_BYKK_BLESSOFRAPHAEL) > 0) range = range * (1000 + sq_GetLevelData(obj, SKILL_BYKK_BLESSOFRAPHAEL, 7, sq_GetSkillLevel(obj, SKILL_BYKK_BLESSOFRAPHAEL))) / 1000;
local sizeRate = range * 100 / 275;
local lifeTime = sq_GetIntData(obj, SKILL_BYKK_ARIAOFREGENERATION, 0);
local skillLevel = sq_GetSkillLevel(obj, SKILL_BYKK_ARIAOFREGENERATION);
local HP_healRate = sq_GetLevelData(obj, SKILL_BYKK_ARIAOFREGENERATION, 0, skillLevel);
local decreaseMax = sq_GetIntData(obj, SKILL_BYKK_ARIAOFREGENERATION, 0) / 1000;
// if(obj.isMyControlObject()){
createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,0,0,0,obj.getDirection(),1,SKILL_BYKK_ARIAOFREGENERATION,4,sizeRate,lifeTime,HP_healRate,decreaseMax,range,0,0,0);
createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,0,0,0,obj.getDirection(),1,SKILL_BYKK_ARIAOFREGENERATION,5,sizeRate,lifeTime,0,0,0,0,0,0);
createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,0,0,0,obj.getDirection(),1,SKILL_BYKK_ARIAOFREGENERATION,6,sizeRate,lifeTime,0,0,0,0,0,0);
// }
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
}
local lifeTime = sq_GetIntData(obj, SKILL_BYKK_ARIAOFREGENERATION, 0);
obj.setTimeEvent(1,lifeTime,1,false);
obj.setTimeEvent(2,20,-1,false);
obj.setTimeEvent(3,1000,-1,true);
obj.sq_IntVectClear();
obj.sq_IntVectPush(1);
obj.sq_AddSetStatePacket(STATE_BYKK_ARIAOFREGENERATION, STATE_PRIORITY_AUTO, true);
break;
case 1:
obj.sq_IntVectClear();
obj.sq_IntVectPush(1);
obj.sq_AddSetStatePacket(STATE_BYKK_ARIAOFREGENERATION, STATE_PRIORITY_AUTO, true);
break;
case 2:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
}
}
function onProcCon_Ariaofregeneration(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 1:
sq_SetKeyxEnable(obj, E_JUMP_COMMAND, true);
if(sq_IsEnterCommand(obj, E_JUMP_COMMAND)){
obj.sq_IntVectClear();
obj.sq_IntVectPush(2);
obj.sq_AddSetStatePacket(STATE_BYKK_ARIAOFREGENERATION, STATE_PRIORITY_AUTO, true);
}
if(sq_GetSkillLevel(obj, SKILL_BYKK_LIGHTOFHAPTISM) > 0 && !sq_GetSkill(obj, SKILL_BYKK_LIGHTOFHAPTISM).isInCoolTime()){
obj.setSkillCommandEnable(SKILL_BYKK_LIGHTOFHAPTISM,true);
local b_useskill = obj.sq_IsEnterSkill(SKILL_BYKK_LIGHTOFHAPTISM);
if(b_useskill != -1){
obj.startSkillCoolTime(SKILL_BYKK_LIGHTOFHAPTISM, sq_GetSkillLevel(obj, SKILL_BYKK_LIGHTOFHAPTISM), -1);
local power = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_LIGHTOFHAPTISM, SKILL_BYKK_LIGHTOFHAPTISM, 0, -1, 1.0);
local sizeRate = sq_GetIntData(obj, SKILL_BYKK_LIGHTOFHAPTISM, 0);
// if(obj.isMyControlObject()){
local target = sq_FindTarget(obj, 0, 500, 500, 500);
if(target) createSkillPassive_ATPriest_bykk(obj,target,PASSIVEOBJ_BYKK_ATPRIEST,0,0,0,obj.getDirection(),1,SKILL_BYKK_LIGHTOFHAPTISM,0,power,sizeRate,0,0,0,0,0,0);
else createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,250,0,0,obj.getDirection(),1,SKILL_BYKK_LIGHTOFHAPTISM,0,power,sizeRate,0,0,0,0,0,0);
// }
}
}
if(sq_GetSkillLevel(obj, SKILL_BYKK_BLESSOFANGEL) > 0 && !sq_GetSkill(obj, SKILL_BYKK_BLESSOFANGEL).isInCoolTime()){
obj.setSkillCommandEnable(SKILL_BYKK_BLESSOFANGEL,true);
local b_useskill = obj.sq_IsEnterSkill(SKILL_BYKK_BLESSOFANGEL);
if(b_useskill != -1){
obj.startSkillCoolTime(SKILL_BYKK_BLESSOFANGEL, sq_GetSkillLevel(obj, SKILL_BYKK_BLESSOFANGEL), -1);
local range = sq_GetIntData(obj, SKILL_BYKK_BLESSOFANGEL, 1);
local skillLevel = sq_GetSkillLevel(obj, SKILL_BYKK_BLESSOFANGEL);
local buffTime = sq_GetLevelData(obj, SKILL_BYKK_BLESSOFANGEL, 0, skillLevel);
obj.sq_AddSkillLoad(SKILL_BYKK_BLESSOFANGEL, 111, 1, buffTime);
local loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_BLESSOFANGEL);
if(loadSlot) loadSlot.setStartCool();
local attackSpeed = sq_GetLevelData(obj, SKILL_BYKK_BLESSOFANGEL, 2, skillLevel);
local moveSpeed = sq_GetLevelData(obj, SKILL_BYKK_BLESSOFANGEL, 3, skillLevel);
local castSpeed = sq_GetLevelData(obj, SKILL_BYKK_BLESSOFANGEL, 4, skillLevel);
local power_Chr = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_BLESSOFANGEL, -1, 1, 1.0);
local power_Pty = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_BLESSOFANGEL, -1, 5, 1.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_CHARACTER) && !obj.isEnemy(object) && sq_Abs(sq_GetXPos(object) - sq_GetXPos(obj)) <= range && sq_Abs(sq_GetYPos(object) - sq_GetYPos(obj)) <= range / 2) {
local activeObj = sq_GetCNRDObjectToActiveObject(object);
if(!obj.getVar("Blessofangel_sqr").is_obj_vector(activeObj)) obj.getVar("Blessofangel_sqr").push_obj_vector(activeObj);
if(CNSquirrelAppendage.sq_IsAppendAppendage(activeObj, APDPATH_BLESSOFANGEL)){
CNSquirrelAppendage.sq_RemoveAppendage(activeObj, APDPATH_BLESSOFANGEL);
local effectObj = activeObj.getVar("Blessofangel_eff").get_obj_vector(0);
if(effectObj){
local colObj = sq_GetCNRDObjectToCollisionObject(effectObj);
colObj.setValid(false);
}
}
local power = power_Pty;
if(isSameObject(obj, activeObj)) power = power_Chr;
local group = sq_GetGroup(activeObj);
local uniqueId = sq_GetUniqueId(activeObj);
// if(obj.isMyControlObject())
createSkillPassive_ATPriest_bykk(obj,activeObj,PASSIVEOBJ_BYKK_ATPRIEST,0,0,sq_GetHeightObject(activeObj) + 30,obj.getDirection(),1,SKILL_BYKK_BLESSOFANGEL,1,power,buffTime,group,uniqueId,0,0,0,0);
if(obj.getVar("Blessofangel_Bool").getBool(0) == false) obj.getVar("Blessofangel_Bool").setBool(0, true);
local AddAppendage = CNSquirrelAppendage.sq_AppendAppendage(activeObj, obj, -1, false, APDPATH_BLESSOFANGEL, true);
AddAppendage.setBuffIconImage(131);
AddAppendage.sq_SetValidTime(buffTime);
AddAppendage.getVar("tar").clear_obj_vector();
AddAppendage.getVar("tar").push_obj_vector(obj);
local change_appendage = AddAppendage.sq_getChangeStatus("AT_Blessofangel");
if(!change_appendage) change_appendage = AddAppendage.sq_AddChangeStatus("AT_Blessofangel",activeObj, 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).tofloat());
change_appendage.addParameter(CHANGE_STATUS_TYPE_MOVE_SPEED, false, (moveSpeed).tofloat());
change_appendage.addParameter(CHANGE_STATUS_TYPE_CAST_SPEED, false, (castSpeed).tofloat());
}
}
}
}
}
if(sq_GetSkillLevel(obj, SKILL_BYKK_PROTECTIONOFURIEL) > 0 && !sq_GetSkill(obj, SKILL_BYKK_PROTECTIONOFURIEL).isInCoolTime()){
obj.setSkillCommandEnable(SKILL_BYKK_PROTECTIONOFURIEL,true);
local b_useskill = obj.sq_IsEnterSkill(SKILL_BYKK_PROTECTIONOFURIEL);
if(b_useskill != -1){
obj.startSkillCoolTime(SKILL_BYKK_PROTECTIONOFURIEL, sq_GetSkillLevel(obj, SKILL_BYKK_PROTECTIONOFURIEL), -1);
local lifeTime = sq_GetIntData(obj, SKILL_BYKK_PROTECTIONOFURIEL, 1);
local range = sq_GetIntData(obj, SKILL_BYKK_PROTECTIONOFURIEL, 4);
local hitTime = sq_GetIntData(obj, SKILL_BYKK_PROTECTIONOFURIEL, 2);
local skillLevel = sq_GetSkillLevel(obj, SKILL_BYKK_PROTECTIONOFURIEL);
local attackSpeed = sq_GetLevelData(obj, SKILL_BYKK_PROTECTIONOFURIEL, 2, skillLevel);
local moveSpeed = sq_GetLevelData(obj, SKILL_BYKK_PROTECTIONOFURIEL, 3, skillLevel);
local castSpeed = sq_GetLevelData(obj, SKILL_BYKK_PROTECTIONOFURIEL, 4, skillLevel);
if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, APDPATH_CRUXOFSHAPIEL)){
local addRate = sq_GetLevelData(obj, SKILL_BYKK_CRUXOFSHAPIEL, 5, sq_GetSkillLevel(obj, SKILL_BYKK_CRUXOFSHAPIEL));
attackSpeed = attackSpeed + addRate;
moveSpeed = moveSpeed + addRate;
castSpeed = castSpeed + addRate;
}
local damageRate = sq_GetLevelData(obj, SKILL_BYKK_PROTECTIONOFURIEL, 5, skillLevel) / 10;
local power = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_PROTECTIONOFURIEL, -1, 0, 1.0);
// if(obj.isMyControlObject())
createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,0,0,0,obj.getDirection(),1,SKILL_BYKK_PROTECTIONOFURIEL,1,power,lifeTime,hitTime,range,attackSpeed,moveSpeed,castSpeed,damageRate);
}
}
if(sq_GetSkillLevel(obj, SKILL_BYKK_HOLYLIGHT) > 0 && !sq_GetSkill(obj, SKILL_BYKK_HOLYLIGHT).isInCoolTime()){
obj.setSkillCommandEnable(SKILL_BYKK_HOLYLIGHT,true);
local b_useskill = obj.sq_IsEnterSkill(SKILL_BYKK_HOLYLIGHT);
if(b_useskill != -1){
local skillLevel = sq_GetSkillLevel(obj, SKILL_BYKK_HOLYLIGHT);
obj.startSkillCoolTime(SKILL_BYKK_HOLYLIGHT, skillLevel, -1);
local range = sq_GetIntData(obj, SKILL_BYKK_HOLYLIGHT, 0);
local buffTime = sq_GetLevelData(obj, SKILL_BYKK_HOLYLIGHT, 0, skillLevel) + 720;
local power_Chr = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_HOLYLIGHT, -1, 1, 1.0);
local power_Pty = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_HOLYLIGHT, -1, 5, 1.0);
local damageRate = sq_GetLevelData(obj, SKILL_BYKK_HOLYLIGHT, 2, skillLevel);
local increaseRate = sq_GetIntData(obj, SKILL_BYKK_HOLYLIGHT, 4);
local skillLevel2 = sq_GetSkillLevel(obj, SKILL_BYKK_BLESSOFPROTECTION);
local hpMax = sq_GetLevelData(obj, SKILL_BYKK_BLESSOFPROTECTION, 6, skillLevel2) * (100 + increaseRate) / 100;
local mpMax = sq_GetLevelData(obj, SKILL_BYKK_BLESSOFPROTECTION, 7, skillLevel2) * (100 + increaseRate) / 100;
local phDefense = sq_GetLevelData(obj, SKILL_BYKK_BLESSOFPROTECTION, 2, skillLevel2) * (100 + increaseRate) / 100;
local mgDefense = sq_GetLevelData(obj, SKILL_BYKK_BLESSOFPROTECTION, 3, skillLevel2) * (100 + increaseRate) / 100;
local phlDefense = sq_GetLevelData(obj, SKILL_BYKK_BLESSOFPROTECTION, 4, skillLevel2) * (100 + increaseRate) / 100;
local mglDefense = sq_GetLevelData(obj, SKILL_BYKK_BLESSOFPROTECTION, 5, skillLevel2) * (100 + increaseRate) / 100;
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) && sq_Abs(sq_GetXPos(object) - sq_GetXPos(obj)) <= range && sq_Abs(sq_GetYPos(object) - sq_GetYPos(obj)) <= range / 2) {
local activeObj = sq_GetCNRDObjectToActiveObject(object);
if(CNSquirrelAppendage.sq_IsAppendAppendage(activeObj, APDPATH_HOLYLIGHT)) CNSquirrelAppendage.sq_RemoveAppendage(activeObj, APDPATH_HOLYLIGHT);
local AddAppendage = CNSquirrelAppendage.sq_AppendAppendage(activeObj, obj, -1, false, APDPATH_HOLYLIGHT, true);
if(buffTime > 0) AddAppendage.sq_SetValidTime(buffTime);
AddAppendage.setBuffIconImage(44);
AddAppendage.setEnableIsBuff(true);
AddAppendage.setAppendCauseSkill(BUFF_CAUSE_SKILL, sq_getJob(obj), SKILL_BYKK_HOLYLIGHT, skillLevel);
CNSquirrelAppendage.sq_Append(AddAppendage, activeObj, obj, true);
AddAppendage.getVar("custom").setInt(10, damageRate);
if(CNSquirrelAppendage.sq_IsAppendAppendage(activeObj, APDPATH_BLESSOFPROTECTION)){
local ptcAppendage = CNSquirrelAppendage.sq_GetAppendage(activeObj, APDPATH_BLESSOFPROTECTION);
local change_appendage = ptcAppendage.sq_getChangeStatus("AT_Blessofprotection");
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());
}
}
local group = sq_GetGroup(activeObj);
local uniqueId = sq_GetUniqueId(activeObj);
local power = power_Pty;
if(isSameObject(obj, activeObj)) power = power_Chr;
// if(obj.isMyControlObject())
createSkillPassive_ATPriest_bykk(obj,activeObj,PASSIVEOBJ_BYKK_ATPRIEST,0,0,sq_GetHeightObject(activeObj) / 2,obj.getDirection(),1,SKILL_BYKK_HOLYLIGHT,0,power,buffTime,group,uniqueId,0,0,0,0);
}
}
}
}
if(sq_GetSkillLevel(obj, SKILL_BYKK_EDIFICATION) > 0 && !sq_GetSkill(obj, SKILL_BYKK_EDIFICATION).isInCoolTime()){
obj.setSkillCommandEnable(SKILL_BYKK_EDIFICATION,true);
local b_useskill = obj.sq_IsEnterSkill(SKILL_BYKK_EDIFICATION);
if(b_useskill != -1){
local skillLevel = sq_GetSkillLevel(obj, SKILL_BYKK_EDIFICATION);
obj.startSkillCoolTime(SKILL_BYKK_HOLYLIGHT, skillLevel, -1);
local buffTime = sq_GetLevelData(obj, SKILL_BYKK_EDIFICATION, 0, skillLevel);
local moveSpeed = sq_GetLevelData(obj, SKILL_BYKK_EDIFICATION, 1, skillLevel);
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)) {
local activeObj = sq_GetCNRDObjectToActiveObject(object);
if(CNSquirrelAppendage.sq_IsAppendAppendage(activeObj, APDPATH_EDIFICATION)) CNSquirrelAppendage.sq_RemoveAppendage(activeObj, APDPATH_EDIFICATION);
local AddAppendage = CNSquirrelAppendage.sq_AppendAppendage(activeObj, obj, -1, false, APDPATH_EDIFICATION, true);
AddAppendage.sq_SetValidTime(buffTime);
AddAppendage.setBuffIconImage(128);
AddAppendage.setAppendCauseSkill(BUFF_CAUSE_SKILL, sq_getJob(obj), SKILL_BYKK_EDIFICATION, skillLevel);
CNSquirrelAppendage.sq_Append(AddAppendage, activeObj, obj, true);
AddAppendage.getVar("custom").setInt(10, moveSpeed);
local change_appendage = AddAppendage.sq_getChangeStatus("AT_Edification");
if(!change_appendage) change_appendage = AddAppendage.sq_AddChangeStatus("AT_Edification",activeObj, obj, 0, CHANGE_STATUS_TYPE_PHYSICAL_ATTACK, true, 1000);
if(change_appendage){
change_appendage.clearParameter();
change_appendage.addParameter(CHANGE_STATUS_TYPE_MOVE_SPEED, false, (moveSpeed).tofloat());
}
}
}
}
}
if(sq_GetSkillLevel(obj, SKILL_BYKK_CRUXOFSHAPIEL) > 0 && !sq_GetSkill(obj, SKILL_BYKK_CRUXOFSHAPIEL).isInCoolTime()){
obj.setSkillCommandEnable(SKILL_BYKK_CRUXOFSHAPIEL,true);
local b_useskill = obj.sq_IsEnterSkill(SKILL_BYKK_CRUXOFSHAPIEL);
if(b_useskill != -1){
local skillLevel = sq_GetSkillLevel(obj, SKILL_BYKK_CRUXOFSHAPIEL);
obj.startSkillCoolTime(SKILL_BYKK_CRUXOFSHAPIEL, skillLevel, -1);
obj.getVar("cruxofshapiel_obj").clear_obj_vector();
obj.getVar("cruxofshapiel_bool").setBool(0, false);
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);
}
}
if(obj.getVar("cruxofshapiel_bool").getBool(0)){
obj.setSkillCommandEnable(SKILL_BYKK_CRUXOFSHAPIEL,true);
local b_useskill = obj.sq_IsEnterSkill(SKILL_BYKK_CRUXOFSHAPIEL);
if(b_useskill != -1){
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, "");
}
}
}
}
}
break;
}
}
function onKeyFrameFlag_Ariaofregeneration(obj, flagIndex)
{
if(!obj) return false;
switch(flagIndex){
case 103:
//`StartEffect` 61 0 60
if(sq_GetIntData(obj, SKILL_BYKK_ARIAOFREGENERATION, 13) > 0) break;
local range = sq_GetIntData(obj, SKILL_BYKK_ARIAOFREGENERATION, 5);
if(sq_GetSkillLevel(obj, SKILL_BYKK_BLESSOFRAPHAEL) > 0) range = range * (1000 + sq_GetLevelData(obj, SKILL_BYKK_BLESSOFRAPHAEL, 7, sq_GetSkillLevel(obj, SKILL_BYKK_BLESSOFRAPHAEL))) / 1000;
local sizeRate = range * 100 / 275;
// if(obj.isMyControlObject())
createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,0,0,0,obj.getDirection(),1,SKILL_BYKK_ARIAOFREGENERATION,1,sizeRate,0,0,0,0,0,0,0);
// if(obj.isMyControlObject())
createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,0,0,0,obj.getDirection(),1,SKILL_BYKK_ARIAOFREGENERATION,2,sizeRate,0,0,0,0,0,0,0);
break;
case 106:
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atariaofregeneration/ora/orastartfront_1.ani", 0, 1, 0);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atariaofregeneration/ora/orastartback_backlight.ani", 0, -1, 0);
break;
case 300:
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atariaofregeneration/ora/oraendfront_1.ani", 0, 1, 0);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atariaofregeneration/ora/oraendback_1.ani", 0, -1, 0);
break;
}
return true;
}
function onTimeEvent_Ariaofregeneration(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
switch(timeEventIndex){
case 1:
obj.sq_IntVectClear();
obj.sq_IntVectPush(2);
obj.sq_AddSetStatePacket(STATE_BYKK_ARIAOFREGENERATION, STATE_PRIORITY_AUTO, true);
break;
case 2:
local xpos = sq_GetXPos(obj), ypos = sq_GetYPos(obj);
if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_UP, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(xpos,ypos - 1)) sq_setCurrentAxisPos(obj, 1, ypos - 2);
if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_LEFT, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(xpos - 2,ypos)) sq_setCurrentAxisPos(obj, 0, xpos - 2);
return;
}
else if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_RIGHT, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(xpos + 2,ypos)) sq_setCurrentAxisPos(obj, 0, xpos + 2);
return;
}
}
else if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_DOWN, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(xpos,ypos + 1)) sq_setCurrentAxisPos(obj, 1, ypos + 2);
if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_LEFT, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(xpos - 2,ypos)) sq_setCurrentAxisPos(obj, 0, xpos - 2);
return;
}
else if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_RIGHT, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(xpos + 2,ypos)) sq_setCurrentAxisPos(obj, 0, xpos + 2);
return;
}
}
if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_LEFT, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(xpos - 2,ypos)) sq_setCurrentAxisPos(obj, 0, xpos - 2);
return;
}
else if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_RIGHT, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(xpos + 2,ypos)) sq_setCurrentAxisPos(obj, 0, xpos + 2);
return;
}
break;
case 3:
local skillLevel = sq_GetSkillLevel(obj, SKILL_BYKK_ARIAOFREGENERATION);
local HP_healRate = sq_GetLevelData(obj, SKILL_BYKK_ARIAOFREGENERATION, 0, skillLevel);
if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, APDPATH_CRUXOFSHAPIEL)) HP_healRate = HP_healRate + sq_GetLevelData(obj, SKILL_BYKK_CRUXOFSHAPIEL, 4, sq_GetSkillLevel(obj, SKILL_BYKK_CRUXOFSHAPIEL)) / 10;
local decreaseMax = sq_GetIntData(obj, SKILL_BYKK_ARIAOFREGENERATION, 0) / 1000;
local range = sq_GetIntData(obj, SKILL_BYKK_ARIAOFREGENERATION, 5);
if(sq_GetSkillLevel(obj, SKILL_BYKK_BLESSOFRAPHAEL) > 0) range = range * (1000 + sq_GetLevelData(obj, SKILL_BYKK_BLESSOFRAPHAEL, 7, sq_GetSkillLevel(obj, SKILL_BYKK_BLESSOFRAPHAEL))) / 1000;
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) && sq_Abs(sq_GetXPos(object) - sq_GetXPos(obj)) <= range && sq_Abs(sq_GetYPos(object) - sq_GetYPos(obj)) <= range / 2) {
local activeObj = sq_GetCNRDObjectToActiveObject(object);
local hp = activeObj.getHp() * HP_healRate / 100;
local appendage = CNSquirrelAppendage.sq_AppendAppendage(activeObj, obj, -1, false, APDPATH_ARIAOFREGENERATIONBUFF, true);
local change_appendage = appendage.sq_GetCNChangeHp("changehp");
if (!change_appendage) change_appendage = appendage.sq_AddCNChangeHp("changehp", activeObj, obj, 0, hp.tofloat(), 800);
appendage.sq_SetValidTime(500);
local activeStatus = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 15, 16];
local count = 0;
for(local ui = 0; ui < activeStatus.len(); ui++){
if (sq_IsValidActiveStatus(activeObj, activeStatus[ui])){
if(count + 1 < decreaseMax){
sq_ReleaseActiveStatus(activeObj, activeStatus[ui]);
count = count + 1;
}
}
}
}
}
break;
}
}
function onEndState_Ariaofregeneration(obj, new_state)
{
if(!obj) return;
if(new_state != STATE_BYKK_ARIAOFREGENERATION){
local floorObj = obj.getVar("ARIAOFREGENERATION_FLOOR").get_obj_vector(0);
local effectObj = obj.getVar("ARIAOFREGENERATION_EFFECT").get_obj_vector(0);
local musicObj = obj.getVar("ARIAOFREGENERATION_MUSIC").get_obj_vector(0);
if(floorObj){
local colObj = sq_GetCNRDObjectToCollisionObject(floorObj);
colObj.setValid(false);
}
if(effectObj){
local colObj = sq_GetCNRDObjectToCollisionObject(effectObj);
colObj.setValid(false);
}
if(musicObj){
local colObj = sq_GetCNRDObjectToCollisionObject(musicObj);
colObj.setValid(false);
}
}
}
//神光十字
function checkExecutableSkill_Grandcrosscrash(obj)
{
if (!obj) return false;
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_GRANDCROSSCRASH);
if (isUse){
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_GRANDCROSSCRASH, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_Grandcrosscrash(obj)
{
if (!obj) return false;
return true;
}
function onSetState_Grandcrosscrash(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_ATGRANDCROSSCRASH_READY_BODY);
break;
case 1:
obj.sq_SetCurrentAnimation(ATPANI_BYKK_ATGRANDCROSSCRASH_SMASH_BODY);
local power = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_GRANDCROSSCRASH, -1, 2, 1.0);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, ATPRIESTATK_BYKK_GRANDCROSSCRASHATTACK));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), power);
obj.sq_PlaySound("PW_GRANDCROSS_02");
obj.sq_PlaySound("HOLYSANCTUARY_EXP");
sq_SetMyShake(obj, 15, 300);
break;
}
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_CAST_SPEED, SPEED_TYPE_CAST_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
if(subState == 1){
local currentAni = obj.getCurrentAnimation();
local speedRate = 5000.0 / currentAni.getDelaySum(0, 0).tofloat();
local pooledObj = sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atgrandcrosscrash/screen/atgrandcrosscrash_screen.ani", 302, 10, 0);
local pAni = pooledObj.getCurrentAnimation();
pAni.setSpeedRate(speedRate);
}
}
function onEndCurrentAni_Grandcrosscrash(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
obj.sq_IntVectClear();
obj.sq_IntVectPush(1);
obj.sq_AddSetStatePacket(STATE_BYKK_GRANDCROSSCRASH, STATE_PRIORITY_AUTO, true);
break;
case 1:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
}
}
function onProcCon_Grandcrosscrash(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
}
}
function onKeyFrameFlag_Grandcrosscrash(obj, flagIndex)
{
if(!obj) return false;
switch(flagIndex){
case 1:
//75 0 5
local power_exp = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_GRANDCROSSCRASH, -1, 0, 1.0);
// if(obj.isMyControlObject())
createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,75,0,5,obj.getDirection(),1,SKILL_BYKK_GRANDCROSSCRASH,1,power_exp,0,0,0,0,0,0,0);
break;
case 2:
local lifeTime = sq_GetIntData(obj, SKILL_BYKK_GRANDCROSSCRASH, 1);
local addTime = sq_GetLevelData(obj, SKILL_BYKK_GRANDCROSSCRASH, 1, sq_GetSkillLevel(obj, SKILL_BYKK_GRANDCROSSCRASH));
// if(obj.isMyControlObject())
createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,74,0,5,obj.getDirection(),1,SKILL_BYKK_GRANDCROSSCRASH,2,lifeTime,addTime,0,0,0,0,0,0);
break;
}
return true;
}
function onTimeEvent_Grandcrosscrash(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
switch(timeEventIndex){
case 0:
break;
}
}
function onEndState_Grandcrosscrash(obj, new_state)
{
if(!obj) return;
}
//圣光天启
function checkExecutableSkill_Cruxofvictoria(obj)
{
if (!obj) return false;
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_CRUXOFVICTORIA);
if (isUse){
if(sq_GetSkillLevel(obj, SKILL_BYKK_CRUXOFVICTORIA) >= 6) sq_SetCustomDamageType(obj, true, 2);
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_CRUXOFVICTORIA, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_Cruxofvictoria(obj)
{
if (!obj) return false;
return true;
}
function onSetState_Cruxofvictoria(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_VICTORY1);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atcruxofvictoria/ready/covreadyeff_skylight.ani", 0, 1, 0);
break;
case 1:
obj.sq_SetCurrentAnimation(ATPANI_BYKK_VICTORY2);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atcruxofvictoria/fly/covflyeff_01.ani", 0, 1, 0);
local pooledObj = sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atcruxofvictoria/fly/covflycross_01.ani", 0, -1, -50);
obj.getVar("Cruxofvictoria_Eff").clear_obj_vector();
obj.getVar("Cruxofvictoria_Eff").push_obj_vector(pooledObj);
break;
case 2:
obj.sq_SetCurrentAnimation(ATPANI_BYKK_VICTORY3);
local pooledObj = obj.getVar("Cruxofvictoria_Eff").get_obj_vector(0);
if(pooledObj) pooledObj.setValid(false);
sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atcruxofvictoria/crosscatch/covsetupeff_feather_00.ani", 0, 1, 0);
sq_flashScreen(obj,100,500,100,255, sq_RGB(255,255,255), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_CLOSEBACK);
break;
case 3:
obj.sq_SetCurrentAnimation(ATPANI_BYKK_VICTORY_ITEM4);
sq_SetMyShake(obj, 5, 320);
break;
case 4:
obj.sq_SetCurrentAnimation(ATPANI_BYKK_COVBUFFFINISHBODY_BODY);
sq_SetMyShake(obj, 5, 320);
break;
}
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
if(subState == 1){
local currentAni = obj.getCurrentAnimation();
local delay = currentAni.getDelaySum(false);
obj.setTimeEvent(0, delay / 50, 40, true);
}
else if(subState == 3){
local currentAni = obj.getCurrentAnimation();
local delay = currentAni.getDelaySum(0, 1);
// obj.getVar("Cruxofvictoria_move").setInt(10, sq_GetZPos(obj));
obj.setTimeEvent(1, delay / 10, 10, true);
}
}
function onEndCurrentAni_Cruxofvictoria(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
case 1:
case 2:
case 3:
obj.sq_IntVectClear();
obj.sq_IntVectPush(subState + 1);
obj.sq_AddSetStatePacket(STATE_BYKK_CRUXOFVICTORIA, STATE_PRIORITY_AUTO, true);
break;
case 4:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
}
}
function onProcCon_Cruxofvictoria(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
}
}
function onKeyFrameFlag_Cruxofvictoria(obj, flagIndex)
{
if(!obj) return false;
switch(flagIndex){
case 101:
obj.sq_PlaySound("R_PW_CRUXVICTORIA");
obj.sq_PlaySound("CRUXVICTORIA_CAST");
break;
case 104:
//`CreateBuffChaser` 40 0 150
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)) {
local sqrChr = sq_GetCNRDObjectToSQRCharacter(object);
if(sq_getJob(sqrChr) == ENUM_CHARACTERJOB_PRIEST && sq_getGrowType(sqrChr) == GROW_TYPE_CRUSADER) continue;
local activeObj = sq_GetCNRDObjectToActiveObject(object);
local group = sq_GetGroup(activeObj);
local uniqueId = sq_GetUniqueId(activeObj);
// if(obj.isMyControlObject())
createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,10,0,50,obj.getDirection(),1,SKILL_BYKK_CRUXOFVICTORIA,2,group,uniqueId,0,0,0,0,0,0);
}
}
obj.setTimeEvent(2, 1100, 1, false);
break;
case 404:
sq_SetMyShake(obj, 2, 2400);
local bonusRate = 1.0;
local skillLevel = sq_GetSkillLevel(obj, SKILL_BYKK_CRUXOFVICTORIA);
if(skillLevel >= 3) bonusRate = 1.1;
local power = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_CRUXOFVICTORIA, -1, 0, bonusRate);
local power_exp = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_CRUXOFVICTORIA, -1, 1, bonusRate);
local hitTime = sq_GetLevelData(obj, SKILL_BYKK_CRUXOFVICTORIA, 12, skillLevel);
// if(obj.isMyControlObject())
createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,10,0,-sq_GetZPos(obj),obj.getDirection(),1,SKILL_BYKK_CRUXOFVICTORIA,1,power,power_exp,hitTime,0,0,0,0,0);
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
case 427:
//`AddFlash` 62 0 131
break;
case 439:
sq_SetMyShake(obj, 5, 400);
//`FinishExplosion` 69 0 47
break;
}
return true;
}
function onTimeEvent_Cruxofvictoria(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
switch(timeEventIndex){
case 0:
local v = sq_GetUniformVelocity(0, 150, timeEventCount, 40);
sq_setCurrentAxisPos(obj, 2, v);
break;
case 1:
local v = sq_GetUniformVelocity(150, 0, timeEventCount, 4);
sq_setCurrentAxisPos(obj, 2, v);
break;
case 2:
local skillLevel = sq_GetSkillLevel(obj, SKILL_BYKK_CRUXOFVICTORIA);
local buffTime = sq_GetLevelData(obj, SKILL_BYKK_CRUXOFVICTORIA, 11, skillLevel);
if(skillLevel >= 9) buffTime = buffTime + 3000;
local phAttack = sq_GetLevelData(obj, SKILL_BYKK_CRUXOFVICTORIA, 4, skillLevel);
local mgAttack = sq_GetLevelData(obj, SKILL_BYKK_CRUXOFVICTORIA, 5, skillLevel);
local attackSpeed = sq_GetLevelData(obj, SKILL_BYKK_CRUXOFVICTORIA, 2, skillLevel);
local moveSpeed = sq_GetLevelData(obj, SKILL_BYKK_CRUXOFVICTORIA, 3, skillLevel);
local phDefense = sq_GetLevelData(obj, SKILL_BYKK_CRUXOFVICTORIA, 6, skillLevel);
local mgDefense = sq_GetLevelData(obj, SKILL_BYKK_CRUXOFVICTORIA, 7, skillLevel);
local now_mgAttack = sq_GetMagicalAttack();//1000;//
now_mgAttack = now_mgAttack * (100 + sq_GetIntData(obj, 169, 2)) / 100;
// print("now_mgAttack = "+now_mgAttack);
local addRate = now_mgAttack.tofloat() / sq_GetIntData(obj, SKILL_BYKK_CRUXOFVICTORIA, 1).tofloat();
// print("addRate = "+addRate);
if(addRate > 1){
phAttack = (phAttack.tofloat() * (1.0 + addRate)).tointeger();
mgAttack = (mgAttack.tofloat() * (1.0 + addRate)).tointeger();
}
sq_BinaryStartWrite();
sq_BinaryWriteDword(1);
sq_BinaryWriteDword(SKILL_BYKK_CRUXOFVICTORIA);
sq_BinaryWriteDword(3);
sq_BinaryWriteDword(skillLevel);
sq_BinaryWriteDword(buffTime);
sq_BinaryWriteDword(phAttack.tointeger());
sq_BinaryWriteDword(mgAttack.tointeger());
sq_BinaryWriteDword(attackSpeed);
sq_BinaryWriteDword(moveSpeed);
sq_BinaryWriteDword(phDefense);
sq_BinaryWriteDword(mgDefense);
sq_SendCreatePassiveObjectPacket(obj, PASSIVEOBJ_BYKK_ATPRIEST, 0, 0, 0, 0, obj.getDirection());
break;
}
}
function onEndState_Cruxofvictoria(obj, new_state)
{
if(!obj) return;
if(new_state != STATE_BYKK_CRUXOFVICTORIA){
sq_SetCustomDamageType(obj, true, 0);
}
}
//忏悔重击
function checkExecutableSkill_Repentencesmash(obj)
{
if (!obj) return false;
local isStone = sq_GetIntData(obj, SKILL_BYKK_REPENTENCESMASH, 10);
if(isStone > 0 && isStone != 5000){
local loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_REPENTENCESMASH);
if(loadSlot){
local getNumber = loadSlot.getRemainLoadNumber()
if(getNumber > 0){
loadSlot.decreaseLoadCount(1);
loadSlot.setStartCool();
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_REPENTENCESMASH, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
else return false;
}
else return false;
}
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_REPENTENCESMASH);
if (isUse){
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_REPENTENCESMASH, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_Repentencesmash(obj)
{
if (!obj) return false;
return true;
}
function onSetState_Repentencesmash(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_ATREPENTENCESMASH_READY_BODY);
obj.sq_PlaySound("PW_REPENTENCE_01");
obj.sq_PlaySound("THUNDERHAMMER");
break;
case 1:
obj.sq_SetCurrentAnimation(ATPANI_BYKK_ATREPENTENCESMASH_SMASH01_BODY);
local power = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_REPENTENCESMASH, -1, 0, 1.0);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, ATPRIESTATK_BYKK_REPENTENCESMASHATK1));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), power);
break;
case 2:
obj.sq_SetCurrentAnimation(ATPANI_BYKK_ATREPENTENCESMASH_SMASH02_BODY);
local power = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_REPENTENCESMASH, -1, 1, 1.0);
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, ATPRIESTATK_BYKK_REPENTENCESMASHATK2));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), power);
obj.sq_PlaySound("PW_REPENTENCE_02");
obj.sq_PlaySound("IMPACT_SMASH");
break;
case 3:
obj.sq_SetCurrentAnimation(ATPANI_BYKK_ATREPENTENCESMASH_END_BODY);
break;
}
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_CAST_SPEED, SPEED_TYPE_CAST_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
if(subState == 0){
local pooledObj = sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atrepentencesmash/atrepentencesmash_ready_front.ani", 0, 0, 0);
local currentAni = obj.getCurrentAnimation();
local speedRate = 10000.0 / currentAni.getDelaySum(0, 0).tofloat();
local pAni = pooledObj.getCurrentAnimation();
pAni.setSpeedRate(speedRate);
}
}
function onEndCurrentAni_Repentencesmash(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
case 1:
case 2:
obj.sq_IntVectClear();
obj.sq_IntVectPush(subState + 1);
obj.sq_AddSetStatePacket(STATE_BYKK_REPENTENCESMASH, STATE_PRIORITY_AUTO, true);
break;
case 3:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
}
}
function onProcCon_Repentencesmash(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
}
}
function onKeyFrameFlag_Repentencesmash(obj, flagIndex)
{
if(!obj) return false;
switch(flagIndex){
case 101: sq_SetMyShake(obj, 12, 100); break;
case 1:
sq_flashScreen(obj,0,80,0,89, sq_RGB(255,255,255), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
sq_SetMyShake(obj, 15, 300);
break;
case 2:
sq_flashScreen(obj,0,200,200,127, sq_RGB(0, 0, 0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
break;
}
return true;
}
function onTimeEvent_Repentencesmash(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
switch(timeEventIndex){
case 0:
break;
}
}
function onEndState_Repentencesmash(obj, new_state)
{
if(!obj) return;
}
function onAttack_Repentencesmash(obj, damager, boundingBox, isStuck)
{
if(!obj) return;
if(!damager.isObjectType(OBJECTTYPE_ACTIVE)) return;
local subState = obj.getSkillSubState();
switch(subState){
case 1:
sq_AddDrawOnlyAniFromParent(damager, "character/swordman/effect/animation/1_atpriest_bykk/atrepentencesmash/atrepentencesmash_hit_normal.ani", 0, 0, sq_GetCenterZPos(boundingBox));
break;
case 2:
sq_AddDrawOnlyAniFromParent(damager, "character/swordman/effect/animation/1_atpriest_bykk/atrepentencesmash/atrepentencesmash_hit_finish.ani", 0, 0, sq_GetCenterZPos(boundingBox) - 75);
break;
}
if(sq_IsFixture(damager)) return;
if(sq_GetIntData(obj, SKILL_BYKK_REPENTENCESMASH, 10) > 0){
//APDPATH_REPENTENCESMASH
if(!CNSquirrelAppendage.sq_IsAppendAppendage(damager, APDPATH_REPENTENCESMASH)){
local AddAppendage = CNSquirrelAppendage.sq_AppendAppendage(damager, obj, -1, false, APDPATH_REPENTENCESMASH, true);
AddAppendage.sq_SetValidTime(500);
sq_MoveToAppendageForce(damager, obj, obj, 200, 0, damager.getZPos(), 300, true, AddAppendage);
}
}
}
//圣佑之阵
function checkExecutableSkill_Protectionofuriel(obj)
{
if (!obj) return false;
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_PROTECTIONOFURIEL);
if (isUse){
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_PROTECTIONOFURIEL, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_Protectionofuriel(obj)
{
if (!obj) return false;
return true;
}
function onSetState_Protectionofuriel(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_PROTECTIONOFURIEL_CAST_BODY);
obj.sq_PlaySound("R_PW_URIEL");
obj.sq_PlaySound("URIEL_CAST");
break;
}
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_CAST_SPEED, SPEED_TYPE_CAST_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
}
function onEndCurrentAni_Protectionofuriel(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_Protectionofuriel(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
}
}
function onKeyFrameFlag_Protectionofuriel(obj, flagIndex)
{
if(!obj) return false;
switch(flagIndex){
case 101:
//`CreateProtection` 0 0 0
local lifeTime = sq_GetIntData(obj, SKILL_BYKK_PROTECTIONOFURIEL, 1);
local range = sq_GetIntData(obj, SKILL_BYKK_PROTECTIONOFURIEL, 4);
local hitTime = sq_GetIntData(obj, SKILL_BYKK_PROTECTIONOFURIEL, 2);
local skillLevel = sq_GetSkillLevel(obj, SKILL_BYKK_PROTECTIONOFURIEL);
local attackSpeed = sq_GetLevelData(obj, SKILL_BYKK_PROTECTIONOFURIEL, 2, skillLevel);
local moveSpeed = sq_GetLevelData(obj, SKILL_BYKK_PROTECTIONOFURIEL, 3, skillLevel);
local castSpeed = sq_GetLevelData(obj, SKILL_BYKK_PROTECTIONOFURIEL, 4, skillLevel);
if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, APDPATH_CRUXOFSHAPIEL)){
local addRate = sq_GetLevelData(obj, SKILL_BYKK_CRUXOFSHAPIEL, 5, sq_GetSkillLevel(obj, SKILL_BYKK_CRUXOFSHAPIEL));
attackSpeed = attackSpeed + addRate;
moveSpeed = moveSpeed + addRate;
castSpeed = castSpeed + addRate;
}
local damageRate = sq_GetLevelData(obj, SKILL_BYKK_PROTECTIONOFURIEL, 5, skillLevel) / 10;
local power = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_PROTECTIONOFURIEL, -1, 0, 1.0);
// if(obj.isMyControlObject())
createSkillPassive_ATPriest_bykk(obj,obj,PASSIVEOBJ_BYKK_ATPRIEST,0,0,0,obj.getDirection(),1,SKILL_BYKK_PROTECTIONOFURIEL,1,power,lifeTime,hitTime,range,attackSpeed,moveSpeed,castSpeed,damageRate);
break;
}
return true;
}
function onTimeEvent_Protectionofuriel(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
switch(timeEventIndex){
case 0:
break;
}
}
function onEndState_Protectionofuriel(obj, new_state)
{
if(!obj) return;
}
function getImmuneTypeDamageRate_appendage_at_protectionofuriel(appendage, damageRate, attacker)
{
local new_damageRate = damageRate - appendage.getVar("custom").getInt(10);
return new_damageRate;
}
function onEnd_appendage_at_protectionofuriel(appendage)
{
local parentObj = appendage.getParent();
local sqrChr = sq_GetCNRDObjectToSQRCharacter(parentObj);
if(sqrChr && sqrChr.getState() != STATE_DIE){
sq_SendMessage(sqrChr, 0, 0, 0);
}
}
//圣洁之翼
function checkExecutableSkill_Blessofangel(obj)
{
if (!obj) return false;
if(obj.getVar("Blessofangel_Bool").getBool(0)){
obj.getVar("Blessofangel_Bool").setBool(0, false);
local size = obj.getVar("Blessofangel_sqr").get_obj_vector_size();//
if(size > 0){
obj.sq_PlaySound("URIEL_END");
local power_Chr = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_BLESSOFANGEL, -1, 1, 1.0);
local power_Pty = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_BLESSOFANGEL, -1, 5, 1.0);
local sizeRate = 100;
local loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_BLESSOFANGEL);
if(loadSlot){
local count = loadSlot.getRemainLoadNumber();
if(count > 1) sizeRate = sizeRate * (100 + sq_GetIntData(obj, SKILL_BYKK_BLESSOFANGEL, 0) * count) / 100;
obj.sq_RemoveSkillLoad(SKILL_BYKK_BLESSOFANGEL);
}
for(local i = 0; i < size; i++){
local targetObj = obj.getVar("Blessofangel_sqr").get_obj_vector(i);
if(!targetObj || targetObj.getState() == STATE_DIE) continue;
local activeObj = sq_GetCNRDObjectToActiveObject(targetObj);
CNSquirrelAppendage.sq_RemoveAppendage(activeObj, APDPATH_BLESSOFANGEL);
local power = power_Pty;
if(isSameObject(obj, activeObj)) power = power_Chr;
// if(obj.isMyControlObject())
createSkillPassive_ATPriest_bykk(obj,activeObj,PASSIVEOBJ_BYKK_ATPRIEST,0,0,0,obj.getDirection(),1,SKILL_BYKK_BLESSOFANGEL,2,power,sizeRate,0,0,0,0,0,0);
}
print("testsize = "+obj.getVar("Blessofangel_eff").get_obj_vector_size());
local size2 = obj.getVar("Blessofangel_eff").get_obj_vector_size();
if(size2 > 0){
for(local i = 0; i < size2; i++){
local effect = obj.getVar("Blessofangel_eff").get_obj_vector(i);
if(effect){
local colObj = sq_GetCNRDObjectToCollisionObject(effect);
colObj.setValid(false);
}
}
}
}
local state = obj.getState();
if(state == 0 || state == 14){
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(state, STATE_PRIORITY_IGNORE_FORCE, true);
}
return false;
}
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_BLESSOFANGEL);
if (isUse){
obj.getVar("Blessofangel_sqr").clear_obj_vector();
obj.getVar("Blessofangel_eff").clear_obj_vector();
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_BLESSOFANGEL, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_Blessofangel(obj)
{
if (!obj) return false;
return true;
}
function onSetState_Blessofangel(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_BLESSOFANGEL_PHASE1_BODY);
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_URIEL");
obj.sq_PlaySound("URIEL_CAST");
local pooledObj = sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atblessofangel/blessofangel_phase1bottom_feather02.ani", 0, -1 ,0);
local pooledObj2 = sq_AddDrawOnlyAniFromParent(obj, "character/swordman/effect/animation/1_atpriest_bykk/atblessofangel/blessofangel_phase1top_sparkle02.ani", 0, 1 ,0);
sq_moveWithParent(obj, pooledObj);
sq_moveWithParent(obj, pooledObj2);
local currentAni = obj.getCurrentAnimation();
local delay = currentAni.getDelaySum(0, 0);
local speedRate = 15000.0 / delay.tofloat();
local pAni = pooledObj.getCurrentAnimation();
local pAni2 = pooledObj2.getCurrentAnimation();
pAni.setSpeedRate(speedRate);
pAni2.setSpeedRate(speedRate);
break;
}
}
function onEndCurrentAni_Blessofangel(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_Blessofangel(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
}
}
function onKeyFrameFlag_Blessofangel(obj, flagIndex)
{
if(!obj) return false;
switch(flagIndex){
case 1:
local range = sq_GetIntData(obj, SKILL_BYKK_BLESSOFANGEL, 1);
local skillLevel = sq_GetSkillLevel(obj, SKILL_BYKK_BLESSOFANGEL);
local buffTime = sq_GetLevelData(obj, SKILL_BYKK_BLESSOFANGEL, 0, skillLevel);
obj.sq_AddSkillLoad(SKILL_BYKK_BLESSOFANGEL, 111, 1, buffTime);
local loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_BLESSOFANGEL);
if(loadSlot) loadSlot.setStartCool();
local attackSpeed = sq_GetLevelData(obj, SKILL_BYKK_BLESSOFANGEL, 2, skillLevel);
local moveSpeed = sq_GetLevelData(obj, SKILL_BYKK_BLESSOFANGEL, 3, skillLevel);
local castSpeed = sq_GetLevelData(obj, SKILL_BYKK_BLESSOFANGEL, 4, skillLevel);
// local power_Chr = obj.sq_GetPowerWithPassive(SKILL_BYKK_BLESSOFANGEL, -1, 1, -1, 1.0);
// local power_Pty = obj.sq_GetPowerWithPassive(SKILL_BYKK_BLESSOFANGEL, -1, 5, -1, 1.0);
print("size = "+obj.getVar("Blessofangel_eff").get_obj_vector_size());
local size2 = obj.getVar("Blessofangel_eff").get_obj_vector_size();
if(size2 > 0){
for(local i = 0; i < size2; i++){
local effect = obj.getVar("Blessofangel_eff").get_obj_vector(i);
if(effect){
local colObj = sq_GetCNRDObjectToCollisionObject(effect);
colObj.setValid(false);
}
}
}
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) && sq_Abs(sq_GetXPos(object) - sq_GetXPos(obj)) <= range && sq_Abs(sq_GetYPos(object) - sq_GetYPos(obj)) <= range / 2) {
local activeObj = sq_GetCNRDObjectToActiveObject(object);
if(!obj.getVar("Blessofangel_sqr").is_obj_vector(activeObj)) obj.getVar("Blessofangel_sqr").push_obj_vector(activeObj);
if(CNSquirrelAppendage.sq_IsAppendAppendage(activeObj, APDPATH_BLESSOFANGEL)){
CNSquirrelAppendage.sq_RemoveAppendage(activeObj, APDPATH_BLESSOFANGEL);
}
// local power = power_Pty;
// if(isSameObject(obj, activeObj)) power = power_Chr;
local group = sq_GetGroup(activeObj);
local uniqueId = sq_GetUniqueId(activeObj);
// if(obj.isMyControlObject())
createSkillPassive_ATPriest_bykk(obj,activeObj,PASSIVEOBJ_BYKK_ATPRIEST,0,0,sq_GetHeightObject(activeObj) + 30,obj.getDirection(),1,SKILL_BYKK_BLESSOFANGEL,1,0,buffTime,group,uniqueId,0,0,0,0);
if(obj.getVar("Blessofangel_Bool").getBool(0) == false) obj.getVar("Blessofangel_Bool").setBool(0, true);
local AddAppendage = CNSquirrelAppendage.sq_AppendAppendage(activeObj, obj, -1, false, APDPATH_BLESSOFANGEL, true);
AddAppendage.setBuffIconImage(131);
AddAppendage.sq_SetValidTime(buffTime);
AddAppendage.setAppendCauseSkill(BUFF_CAUSE_SKILL, sq_getJob(obj), SKILL_BYKK_BLESSOFANGEL, skillLevel);
CNSquirrelAppendage.sq_Append(AddAppendage, activeObj, obj, true);
AddAppendage.getVar("tar").clear_obj_vector();
AddAppendage.getVar("tar").push_obj_vector(obj);
local change_appendage = AddAppendage.sq_getChangeStatus("AT_Blessofangel");
if(!change_appendage) change_appendage = AddAppendage.sq_AddChangeStatus("AT_Blessofangel",activeObj, 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).tofloat());
change_appendage.addParameter(CHANGE_STATUS_TYPE_MOVE_SPEED, false, (moveSpeed).tofloat());
change_appendage.addParameter(CHANGE_STATUS_TYPE_CAST_SPEED, false, (castSpeed).tofloat());
}
}
}
break;
}
return true;
}
function onTimeEvent_Blessofangel(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
// switch(timeEventIndex){
// case 0:
// break;
// }
}
function onEndState_Blessofangel(obj, new_state)
{
if(!obj) return;
}
function onAttackParent_appendage_at_blessofangel(appendage, realAttacker, damager, boundingBox, isStuck)
{
if(!appendage) return;
if(isStuck) return;
local parentObj = appendage.getParent();
if(!parentObj || parentObj.getState() == STATE_DIE){
appendage.setValid(false);
return;
}
local targetObj = appendage.getVar("tar").get_obj_vector(0);
if(!targetObj || targetObj.getState() == STATE_DIE){
appendage.setValid(false);
return;
}
if(!isSameObject(targetObj, parentObj)) return;
if(!damager.isObjectType(OBJECTTYPE_ACTIVE)) return;
if(parentObj.getState() == STATE_ATTACK) return;
local sqrChr = sq_GetCNRDObjectToSQRCharacter(targetObj);
local loadSlot = sqrChr.sq_GetSkillLoad(SKILL_BYKK_BLESSOFANGEL);
local maxCount = sq_GetIntData(sqrChr, SKILL_BYKK_BLESSOFANGEL, 3);
if(loadSlot){
local count = loadSlot.getRemainLoadNumber();
if(count + 1 <= maxCount) loadSlot.increaseLoadCount(1);
}
}
function onEnd_appendage_at_blessofangel(appendage)
{
if(!appendage) return;
local parentObj = appendage.getParent();
if(!parentObj || parentObj.getState() == STATE_DIE){
appendage.setValid(false);
return;
}
local targetObj = appendage.getVar("tar").get_obj_vector(0);
if(!targetObj || targetObj.getState() == STATE_DIE){
appendage.setValid(false);
return;
}
if(!isSameObject(targetObj, parentObj)) return;
local sqrChr = sq_GetCNRDObjectToSQRCharacter(targetObj);
local loadSlot = sqrChr.sq_GetSkillLoad(SKILL_BYKK_BLESSOFANGEL);
if(loadSlot) sqrChr.sq_RemoveSkillLoad(SKILL_BYKK_BLESSOFANGEL);
sqrChr.getVar("Blessofangel_Bool").setBool(0, false);
}