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

3759 lines
145 KiB
C

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