Rindro-Sqr/user/114.66.51.249/1_atgunner_1.c

3397 lines
126 KiB
C

/////////////////////////////////////////////////////////////////////////////////////////////////////////
function createOnlyDrawObject_ATGunner_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_ATGunner_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_ATGunner_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 setHitonSubweapon_bykk(obj)
{
obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("gunner/effect/animation/hitonsubweaponat.ani"), 0, 0);//4
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_HITONSUBWEAPON, -1, 2, 1.0) + 100;
local hitDelayRate = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_HITONSUBWEAPON, -1, 1, 1.0) + 100;
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 4));
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
local attackInfo = sq_GetCurrentAttackInfo(obj);
local rateDamager = sq_GetAttackInfoHitDelayRateDamager(attackInfo);
rateDamager = rateDamager * (100.0 + hitDelayRate.tofloat()) / 100.0;
// print("rateDamager = "+rateDamager);
sq_SetAttackInfoHitDelayRateDamager(attackInfo, rateDamager);
}
function ProcPassiveSkill_ATGunner_Blaster(obj, skill_index, skill_level)
{
switch(skill_index){
case SKILL_BYKK_SUBWEAPONMASTERY:
if(skill_level > 0){
local appendage = CNSquirrelAppendage.sq_AppendAppendage(obj, obj, -1, false, "character/atgunner/2_blaster_bykk/ap_subweaponmastery.nut", true);
}
break;
case SKILL_BYKK_APG_63:
if(skill_level > 0){
local appendage = CNSquirrelAppendage.sq_AppendAppendage(obj, obj, -1, false, "character/atgunner/2_blaster_bykk/ap_apg_63.nut", true);
}
break;
}
}
function onStart_appendage_at_subweaponmastery(appendage)
{
if(!appendage) return;
if(!appendage) return;
local parentObj = appendage.getParent();
local obj = sq_GetCNRDObjectToSQRCharacter(parentObj);
local weaponType = obj.getWeaponSubType();
if(weaponType == -1) return;
if(weaponType == 3){
local skillLevel = sq_GetSkillLevel(obj, SKILL_BYKK_SUBWEAPONMASTERY);
local physicalEquAttack = sq_GetLevelData(obj, SKILL_BYKK_SUBWEAPONMASTERY, 2, skillLevel);
// print(magicalEquAttack);
local change_appendage = appendage.sq_getChangeStatus("subweaponmastery");
if(!change_appendage) change_appendage = appendage.sq_AddChangeStatus("subweaponmastery",obj, obj, 0, CHANGE_STATUS_TYPE_PHYSICAL_ATTACK, true, 1000);
if(change_appendage){
change_appendage.clearParameter();
change_appendage.addParameter(CHANGE_STATUS_TYPE_EQUIPMENT_PHYSICAL_ATTACK, true, (physicalEquAttack * 0.1).tofloat());
}
}
//if(sq_GetCurrentModuleType() == 3){
// setSkillBonusRate_AtBlaster_bykk(obj);
//}
}
function onStart_appendage_at_apg_63(appendage)
{
if(!appendage) return;
if(!appendage) return;
local parentObj = appendage.getParent();
local obj = sq_GetCNRDObjectToSQRCharacter(parentObj);
local skillLevel = sq_GetSkillLevel(obj, SKILL_BYKK_APG_63);
local physicalEquAttack = sq_GetLevelData(obj, SKILL_BYKK_APG_63, 1, skillLevel);
local criticaldRate = sq_GetLevelData(obj, SKILL_BYKK_APG_63, 0, skillLevel);
// print(magicalEquAttack);
local change_appendage = appendage.sq_getChangeStatus("apg_63");
if(!change_appendage) change_appendage = appendage.sq_AddChangeStatus("apg_63",obj, obj, 0, CHANGE_STATUS_TYPE_PHYSICAL_ATTACK, true, 1000);
if(change_appendage){
change_appendage.clearParameter();
change_appendage.addParameter(CHANGE_STATUS_TYPE_EQUIPMENT_PHYSICAL_ATTACK, true, (physicalEquAttack * 0.1).tofloat());
change_appendage.addParameter(CHANGE_STATUS_TYPE_PHYSICAL_CRITICAL_HIT_RATE, false, (criticaldRate * 0.1).tofloat());
}
}
function useSkill_before_ATGunner_Blaster(obj, skillIndex, consumeMp, consumeItem, oldSkillMpRate)
{
local bChangedMp = false;
// print("oldSkillMpRate = "+oldSkillMpRate);
local skillLevel = sq_GetSkillLevel(obj, SKILL_BYKK_SUBWEAPONMASTERY);
// print("skillLevel = "+skillLevel);
if(skillLevel > 0 && obj.getWeaponSubType() == 3){
if(skillIndex != SKILL_BYKK_ANCIENTTRIGGER && skillIndex != SKILL_BYKK_OPERATIONRAZE){
local mpComsumeRate = sq_GetLevelData(obj, SKILL_BYKK_SUBWEAPONMASTERY, 0, skillLevel);
local newMpRate = (100.0 - mpComsumeRate.tofloat()) / 100.0;
// print("newMpRate = "+newMpRate);
obj.setSkillMpRate(skillIndex, newMpRate);
bChangedMp = true;
}
}
return true;
}
function startSkillCoolTime_atgunner_2blaster_bykk(obj, skillIndex, skillLevel, currentCoolTime)
{
print("currentCoolTime11 = "+currentCoolTime);
local skillLevel = sq_GetSkillLevel(obj, SKILL_BYKK_SUBWEAPONMASTERY);
if(skillLevel > 0){
local coolTimeRate = sq_GetLevelData(obj, SKILL_BYKK_SUBWEAPONMASTERY, 4, skillLevel);
local newCoolTime = currentCoolTime * (100 - coolTimeRate) / 100;
print("test = "+newCoolTime);
return newCoolTime;
}
else return currentCoolTime;
}
function procSkill_ATGunner_2blaster_bykk(obj)
{
if(sq_GetIntData(obj, SKILL_BYKK_FLAMETHROWERBOOST, 5) > 0) obj.setSkillCommandEnable(SKILL_BYKK_FLAMETHROWER, false);
if(sq_GetIntData(obj, SKILL_BYKK_STINGEREX, 7) > 0){
obj.setSkillCommandEnable(SKILL_BYKK_STINGEREX, false);
if(!CNSquirrelAppendage.sq_IsAppendAppendage(obj, "character/atgunner/2_blaster_bykk/ap_stingerex.nut")){
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_STINGEREX, -1, 0, 1.0);
local hitMax = sq_GetIntData(obj, SKILL_BYKK_STINGEREX, 4);
local sizeRate = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_STINGEREX, -1, 10, 1.0) + 100;
local proc = sq_GetIntData(obj, SKILL_BYKK_STINGEREX, 7);
local AddAppendage = CNSquirrelAppendage.sq_AppendAppendage(obj, obj, -1, false, "character/atgunner/2_blaster_bykk/ap_stingerex.nut", true);
AddAppendage.getVar("custom").setInt(0, proc);
AddAppendage.getVar("custom").setInt(1, totalDamage);
AddAppendage.getVar("custom").setInt(2, hitMax);
AddAppendage.getVar("custom").setInt(3, sizeRate);
}
}
else{
if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, "character/atgunner/2_blaster_bykk/ap_stingerex.nut")) CNSquirrelAppendage.sq_RemoveAppendage(obj, "character/atgunner/2_blaster_bykk/ap_stingerex.nut");
}
local attackObj = obj.getVar("AncientTrigger_att").get_obj_vector(0);
if(attackObj){
local colObj = sq_GetCNRDObjectToCollisionObject(attackObj);
local state = colObj.getState();
switch(state){
case 0:
case 1:
case 3:
case 4:
case 6:
if(colObj.getVar().getBool(state) == false){
colObj.getVar().setBool(state, true);
local pAni = colObj.getCurrentAnimation();
if(pAni) pAni.setSpeedRate(200.0);
}
break;
case 2:
if(obj.getVar("AncientTrigger_bool").getBool(2) == false){
obj.getVar("AncientTrigger_bool").setBool(2, true);
local pAni = colObj.getCurrentAnimation();
if(pAni) pAni.setSpeedRate(200.0);
createSkillPassive_ATGunner_bykk(obj,obj,PASSIVEOBJ_BYKK_ATGUNNER,240,1,10,obj.getDirection(),2,SKILL_BYKK_ANCIENTTRIGGER,8,0,0,0,0,0,0,0,0);
createSkillPassive_ATGunner_bykk(obj,obj,PASSIVEOBJ_BYKK_ATGUNNER,240,1,10,obj.getDirection(),2,SKILL_BYKK_ANCIENTTRIGGER,9,0,0,0,0,0,0,0,0);
}
break;
case 5:
if(obj.getVar("AncientTrigger_bool").getBool(0) == false){
local pAni = colObj.getCurrentAnimation();
if(pAni) pAni.setSpeedRate(200.0);
sq_ClearAttackBox(pAni);
obj.getVar("AncientTrigger_bool").setBool(0, true);
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_ANCIENTTRIGGER, -1, 6, 1.0) + 100;
local hitMax = sq_GetIntData(obj, SKILL_BYKK_ANCIENTTRIGGER, 1);
local lifeTime = sq_GetIntData(obj, SKILL_BYKK_ANCIENTTRIGGER, 0);
createSkillPassive_ATGunner_bykk(obj,obj,PASSIVEOBJ_BYKK_ATGUNNER,400,1,65,obj.getDirection(),2,SKILL_BYKK_ANCIENTTRIGGER,1,totalDamage,hitMax,lifeTime,0,0,0,0,0);
sq_flashScreen(obj,300,lifeTime - 300,100,150, sq_RGB(0,0,0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
}
break;
case 7:
if(obj.getVar("AncientTrigger_bool").getBool(1) == false){
obj.getVar("AncientTrigger_bool").setBool(1, true);
local pAni = colObj.getCurrentAnimation();
if(pAni) pAni.setSpeedRate(200.0);
local size = obj.getVar("AncientTrigger_obj").get_obj_vector_size();
if(size > 0){
for(local i = 0; i < size; i++){
local attackObj = obj.getVar("AncientTrigger_obj").get_obj_vector(i);
if(attackObj){
local colObj = sq_GetCNRDObjectToCollisionObject(attackObj);
colObj.setValid(false);
}
}
}
}
break;
}
}
if(sq_GetSkillLevel(obj, SKILL_BYKK_ALPHASUPPORT) > 0){
local loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_STINGER);
if(loadSlot){
local loadnumber = loadSlot.getRemainLoadNumber();
if(loadnumber > 0){
if(!loadSlot.isCooling() && loadnumber + 1 <= 3 + sq_GetIntData(obj, SKILL_BYKK_STINGER, 6)) loadSlot.increaseLoadCount(1);
local state = obj.getState();
if(state > 12 || state == 0){
obj.setSkillCommandEnable(SKILL_BYKK_STINGER,true);
local b_useskill = obj.sq_IsEnterSkill(SKILL_BYKK_STINGER);
if(b_useskill != -1){
sq_AddDrawOnlyAniFromParent(obj, "character/gunner/effect/animation/2_blaster/lancer/stingerfm92mk2lancer_00.ani", 0, -1, 85);
obj.sq_PlaySound("FG_LANCER");
obj.sq_PlaySound("STINGER_SHOT");
local createMax = sq_GetIntData(obj, SKILL_BYKK_STINGER, 4);
local bonusRate = 1.0;
if(sq_GetSkillLevel(obj, SKILL_BYKK_ALPHASUPPORT) > 0) bonusRate = 0.6;
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_STINGER, -1, 0, bonusRate) + 100;
local sizeRate = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_STINGER, -1, 3, 1.0) + 100;
createSkillPassive_ATGunner_bykk(obj,obj,PASSIVEOBJ_BYKK_ATGUNNER,35,-1,130,obj.getDirection(),2,SKILL_BYKK_STINGER,4,totalDamage,sizeRate,createMax,0,0,0,0,0);
if(loadSlot.getEndCoolTime() != 6000 + sq_GetIntData(obj, SKILL_BYKK_STINGER, 10)){obj.sq_RemoveSkillLoad(SKILL_BYKK_STINGER); return;}
loadSlot.decreaseLoadCount(1);
loadSlot.setStartCool();
}
}
}
else{
if(!loadSlot.isCooling()){
loadSlot.increaseLoadCount(1);
loadSlot.setStartCool();
}
}
}
else{
local loadnumber = 3 + sq_GetIntData(obj, SKILL_BYKK_STINGER, 6);
local coolTime = 6000 + sq_GetIntData(obj, SKILL_BYKK_STINGER, 10);
print("coolTime = "+coolTime);
obj.sq_AddSkillLoad(SKILL_BYKK_STINGER, 184, loadnumber, coolTime);
}
}
else{
local loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_STINGER);
if(loadSlot) obj.sq_RemoveSkillLoad(SKILL_BYKK_STINGER);
}
local isLaserLoad = sq_GetIntData(obj, SKILL_BYKK_LASERRIFLE, 3);
if(isLaserLoad > 0){
local loadSlot2 = obj.sq_GetSkillLoad(SKILL_BYKK_LASERRIFLE);
if(loadSlot2){
obj.setSkillCommandEnable(SKILL_BYKK_LASERRIFLE, false);
local loadnumber = loadSlot2.getRemainLoadNumber();
if(loadnumber > 0){
if(!loadSlot2.isCooling()){
local loadMax = sq_GetIntData(obj, SKILL_BYKK_LASERRIFLE, 3);
local addLoadNumber = loadMax - loadnumber;
loadSlot2.increaseLoadCount(addLoadNumber);
}
local state = obj.getState();
if(state > 12 || state == 0){
obj.setSkillCommandEnable(SKILL_BYKK_LASERRIFLE,true);
local b_useskill = obj.sq_IsEnterSkill(SKILL_BYKK_LASERRIFLE);
if(b_useskill != -1){
obj.getVar("laserCharge_bool").setBool(0, false);
obj.getVar("laserCharge_bool").setBool(1, false);
obj.getVar("laserCharge_bool").setBool(2, false);
obj.getVar("laserCharge_custom").setInt(10, 0);
obj.sq_IsEnterSkillLastKeyUnits(SKILL_BYKK_LASERRIFLE);
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_LASERRIFLE, STATE_PRIORITY_IGNORE_FORCE, true);
loadSlot2.decreaseLoadCount(1);
loadSlot2.setStartCool();
}
}
}
else{
if(!loadSlot2.isCooling()){
local loadMax = sq_GetIntData(obj, SKILL_BYKK_LASERRIFLE, 3);
loadSlot2.increaseLoadCount(loadMax);
loadSlot2.setStartCool();
}
}
}
else{
local loadMax = sq_GetIntData(obj, SKILL_BYKK_LASERRIFLE, 3);
local coolTime = sq_GetIntData(obj, SKILL_BYKK_LASERRIFLE, 4);
print("laser cool time = " + coolTime);
obj.sq_AddSkillLoad(SKILL_BYKK_LASERRIFLE, 171, loadMax, coolTime);
}
}
else{
local loadSlot2 = obj.sq_GetSkillLoad(SKILL_BYKK_LASERRIFLE);
if(loadSlot2) obj.sq_RemoveSkillLoad(SKILL_BYKK_LASERRIFLE);
}
//FSC7
if(FSC7_STONE == 1 && sq_GetSkillLevel(obj, SKILL_BYKK_FSC_7) > 0){
local loadSlot3 = obj.sq_GetSkillLoad(SKILL_BYKK_FSC_7);
if(loadSlot3){
obj.setSkillCommandEnable(SKILL_BYKK_FSC_7, false);
local loadnumber = loadSlot3.getRemainLoadNumber();
if(loadnumber > 0){
if(!loadSlot3.isCooling()){
local loadMax = 2;
if(loadnumber < 2){
loadSlot3.increaseLoadCount(1);
loadSlot3.setStartCool();
}
}
local state = obj.getState();
if(state == STATE_BYKK_FSC_7) return;
if(state > 12 || state == 0){
obj.setSkillCommandEnable(SKILL_BYKK_FSC_7,true);
local b_useskill = obj.sq_IsEnterSkill(SKILL_BYKK_FSC_7);
if(b_useskill != -1){
obj.sq_IntVectClear();
obj.sq_IntVectPush(1);
obj.sq_AddSetStatePacket(SKILL_BYKK_FSC_7, STATE_PRIORITY_IGNORE_FORCE, true);
loadSlot3.decreaseLoadCount(1);
loadSlot3.setStartCool();
}
}
}
else{
if(!loadSlot3.isCooling()){
loadSlot3.increaseLoadCount(1);
loadSlot3.setStartCool();
}
}
}
else{
local loadMax = 2;
local coolTime = 15000;
print("fsc7 cool time = " + coolTime);
obj.sq_AddSkillLoad(SKILL_BYKK_FSC_7, 137, loadMax, coolTime);
}
}
else{
local loadSlot3 = obj.sq_GetSkillLoad(SKILL_BYKK_FSC_7);
if(loadSlot3) obj.sq_RemoveSkillLoad(SKILL_BYKK_FSC_7);
}
//FM31-125
if(FM31_STONE == 1 && sq_GetSkillLevel(obj, SKILL_BYKK_FM31) > 0){
local loadSlot4 = obj.sq_GetSkillLoad(SKILL_BYKK_FM31);
if(loadSlot4){
obj.setSkillCommandEnable(SKILL_BYKK_FM31, false);
local loadnumber = loadSlot4.getRemainLoadNumber();
if(loadnumber > 0){
if(!loadSlot4.isCooling()){
local loadMax = 4;
if(loadnumber < 4){
loadSlot4.increaseLoadCount(1);
loadSlot4.setStartCool();
}
}
local state = obj.getState();
if(state == STATE_BYKK_FM31) return;
if(state > 12 || state == 0){
obj.setSkillCommandEnable(SKILL_BYKK_FM31,true);
local b_useskill = obj.sq_IsEnterSkill(SKILL_BYKK_FM31);
if(b_useskill != -1){
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_FM31, STATE_PRIORITY_IGNORE_FORCE, true);
loadSlot4.decreaseLoadCount(1);
loadSlot4.setStartCool();
}
}
}
else{
if(!loadSlot4.isCooling()){
loadSlot4.increaseLoadCount(1);
loadSlot4.setStartCool();
}
}
}
else{
local loadMax = 4;
local coolTime = 2500;
print("FM31 cool time = " + coolTime);
obj.sq_AddSkillLoad(SKILL_BYKK_FM31, 137, loadMax, coolTime);
}
}
else{
local loadSlot4 = obj.sq_GetSkillLoad(SKILL_BYKK_FM31);
if(loadSlot4) obj.sq_RemoveSkillLoad(SKILL_BYKK_FM31);
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//M-3喷火器
function checkExecutableSkill_FlameThrower(obj)
{
if (!obj) return false;
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_FLAMETHROWER);
if (isUse){
obj.sq_IsEnterSkillLastKeyUnits(SKILL_BYKK_FLAMETHROWER);
local timer = obj.getVar("flamethrower").get_ct_vector(0);
if(!timer){
obj.getVar("flamethrower").clear_ct_vector();
obj.getVar("flamethrower").push_ct_vector();
timer = obj.getVar("flamethrower").get_ct_vector(0);
}
timer.Reset();
timer.Start(10000,0);
obj.sq_IntVectClear();
if(sq_GetSkillLevel(obj, SKILL_BYKK_ALPHASUPPORT) > 0) obj.sq_IntVectPush(10);
else obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_FLAMETHROWER, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_FlameThrower(obj)
{
if (!obj) return false;
return true;
}
function onSetState_FlameThrower(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(185);
obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/2_blaster/subweapon/flamethrower/atfrontrapid1a.ani"), 0, 0);
if(sq_GetSkillLevel(obj, SKILL_BYKK_HITONSUBWEAPON) > 0) setHitonSubweapon_bykk(obj);
if(sq_GetSkillLevel(obj, SKILL_BYKK_SUBWEAPONMASTERY) > 0) obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.2, 1.2);
else obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
obj.sq_PlaySound("FG_FGUN");
break;
case 1:
obj.sq_SetCurrentAnimation(186);
obj.sq_AddStateLayerAnimation(3,obj.sq_CreateCNRDAnimation("effect/animation/2_blaster/subweapon/flamethrower/atweapon_glow.ani"), 0, 0);
obj.sq_AddStateLayerAnimation(2,obj.sq_CreateCNRDAnimation("effect/animation/2_blaster/subweapon/flamethrower/atfrontrapid2a.ani"), 0, 0);
obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/2_blaster/subweapon/flamethrower/body_glow_woman.ani"), 0, 0);
break;
case 10:
obj.sq_SetCurrentAnimation(149);
if(sq_GetSkillLevel(obj, SKILL_BYKK_SUBWEAPONMASTERY) > 0) obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.2, 1.2);
else obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
obj.sq_PlaySound("FG_FGUN");
break;
case 11:
obj.sq_SetCurrentAnimation(148);
obj.sq_AddStateLayerAnimation(3,obj.sq_CreateCNRDAnimation("effect/animation/2_blaster/atajreinforceparts/flamethrower/weapon_glow_3.ani"), -20, 15);
if(sq_GetSkillLevel(obj, SKILL_BYKK_PANDORA_01) > 0) obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/2_blaster/atpandora01/lv95pandora01_05.ani"), 50, 0);
break;
case 12:
obj.sq_SetCurrentAnimation(147);
break;
}
}
function onEndCurrentAni_FlameThrower(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
case 10:
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_FLAMETHROWER, -1, 4, 1.0);
local skillLevel = sq_GetSkillLevel(obj, SKILL_BYKK_FLAMETHROWER);
local hitTime = sq_GetLevelData(obj, SKILL_BYKK_FLAMETHROWER, 2, skillLevel);
local hitDelayRate = sq_GetLevelData(obj, SKILL_BYKK_FLAMETHROWER, 3, skillLevel);
local moveRate = sq_GetLevelData(obj, SKILL_BYKK_FLAMETHROWER, 3, skillLevel);
local sizeRate = sq_GetIntData(obj, SKILL_BYKK_FLAMETHROWER, 3);
local sub = 0, speed = 150 / moveRate * 1000;
if(sq_GetIntData(obj, SKILL_BYKK_FLAMETHROWER, 4) > 0){
local timeMax = sq_GetLevelData(obj, SKILL_BYKK_FLAMETHROWER, 1, skillLevel);
local hitMax = timeMax / hitTime;
totalDamage = totalDamage * hitMax;
createSkillPassive_ATGunner_bykk(obj,obj,PASSIVEOBJ_BYKK_ATGUNNER,140,0,65,obj.getDirection(),2,SKILL_BYKK_FLAMETHROWER,2,totalDamage,sizeRate,0,0,0,0,0,0);
obj.setTimeEvent(2, 50, 1, false);
obj.sq_PlaySound("FG_FGUN");
return;
}
if(subState == 10){
sub = 1;
if(sq_GetSkillLevel(obj, SKILL_BYKK_PANDORA_01) > 0) speed = speed / sq_GetIntData(obj, SKILL_BYKK_PANDORA_01, 0) * 100;
}
obj.setTimeEvent(1, speed, -1, false);
createSkillPassive_ATGunner_bykk(obj,obj,PASSIVEOBJ_BYKK_ATGUNNER,140,0,65,obj.getDirection(),2,SKILL_BYKK_FLAMETHROWER,1,totalDamage,hitTime,hitDelayRate,sub,sizeRate,0,0,0);
obj.sq_IntVectClear();
obj.sq_IntVectPush(subState + 1);
obj.sq_AddSetStatePacket(STATE_BYKK_FLAMETHROWER, STATE_PRIORITY_AUTO, true);
break;
case 1:
obj.sq_IntVectClear();
obj.sq_IntVectPush(1);
obj.sq_AddSetStatePacket(STATE_BYKK_FLAMETHROWER, STATE_PRIORITY_AUTO, true);
break;
case 12:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
}
}
function onProcCon_FlameThrower(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 1:
case 11:
local bDownKey = obj.isDownSkillLastKey();
if(!bDownKey){
if(subState >= 10){
obj.sq_IntVectClear();
obj.sq_IntVectPush(12);
obj.sq_AddSetStatePacket(STATE_BYKK_FLAMETHROWER, STATE_PRIORITY_AUTO, true);
return;
}
else{
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
return;
}
}
else{
local timer = obj.getVar("flamethrower").get_ct_vector(0);
if(timer){
local timeMax = sq_GetLevelData(obj, SKILL_BYKK_FLAMETHROWER, 1, sq_GetSkillLevel(obj, SKILL_BYKK_FLAMETHROWER));
local currentT = timer.Get();
if(currentT >= timeMax){
if(subState >= 10){
obj.sq_IntVectClear();
obj.sq_IntVectPush(12);
obj.sq_AddSetStatePacket(STATE_BYKK_FLAMETHROWER, STATE_PRIORITY_AUTO, true);
return;
}
else{
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
return;
}
}
}
}
break;
}
}
function onKeyFrameFlag_FlameThrower(obj, flagIndex)
{
if(!obj) return false;
switch(flagIndex){
}
return true;
}
function onTimeEvent_FlameThrower(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
switch(timeEventIndex){
case 1:
local xpos = sq_GetXPos(obj), ypos = sq_GetYPos(obj), baseSpeed = 2;
if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_UP, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(xpos,ypos - baseSpeed)) sq_setCurrentAxisPos(obj, 1, ypos - baseSpeed);
if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_LEFT, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(xpos - baseSpeed,ypos)) sq_setCurrentAxisPos(obj, 0, xpos - baseSpeed);
return;
}
else if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_RIGHT, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(xpos + baseSpeed,ypos)) sq_setCurrentAxisPos(obj, 0, xpos + baseSpeed);
return;
}
}
else if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_DOWN, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(xpos,ypos + baseSpeed)) sq_setCurrentAxisPos(obj, 1, ypos + baseSpeed);
if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_LEFT, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(xpos - baseSpeed,ypos)) sq_setCurrentAxisPos(obj, 0, xpos - baseSpeed);
return;
}
else if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_RIGHT, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(xpos + baseSpeed,ypos)) sq_setCurrentAxisPos(obj, 0, xpos + baseSpeed);
return;
}
}
if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_LEFT, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(xpos - baseSpeed,ypos)) sq_setCurrentAxisPos(obj, 0, xpos - baseSpeed);
return;
}
else if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_RIGHT, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(xpos + baseSpeed,ypos)) sq_setCurrentAxisPos(obj, 0, xpos + baseSpeed);
return;
}
break;
case 2:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
}
}
function onEndState_FlameThrower(obj, new_state)
{
if(!obj) return;
if(new_state != STATE_BYKK_FLAMETHROWER){
local attackObj = obj.getVar("flamethrower_att").get_obj_vector(0);
if(attackObj){
local colObj = sq_GetCNRDObjectToCollisionObject(attackObj);
if(colObj.getState() != 22) colObj.addSetStatePacket(22, null, STATE_PRIORITY_AUTO, false, "");
}
}
}
//加农炮
function checkExecutableSkill_CannonBall(obj)
{
if (!obj) return false;
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_CANNONBALL);
if (isUse){
obj.sq_IsEnterSkillLastKeyUnits(SKILL_BYKK_CANNONBALL);
obj.getVar("cannonball_bool").setBool(0, true);
obj.getVar("cannonball_bool").setBool(1, true);
obj.getVar("cannonball_eff").clear_obj_vector();
obj.sq_IntVectClear();
if( sq_IsKeyDown(OPTION_HOTKEY_MOVE_DOWN, ENUM_SUBKEY_TYPE_ALL)) obj.sq_IntVectPush(10);
else obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_CANNONBALL, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_CannonBall(obj)
{
if (!obj) return false;
return true;
}
function onSetState_CannonBall(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(101);
// obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/2_blaster/cannonball/ball1.ani"), 185, -105);
// obj.sq_AddStateLayerAnimation(2,obj.sq_CreateCNRDAnimation("effect/animation/2_blaster/cannonball/ball2.ani"), 185, -105);
local pooledObj = sq_AddDrawOnlyAniFromParent(obj, "character/gunner/effect/animation/2_blaster/cannonball/ball1.ani", 185, 0, 105);
local pooledObj2 = sq_AddDrawOnlyAniFromParent(obj, "character/gunner/effect/animation/2_blaster/cannonball/ball2.ani", 185, 0, 105);
obj.getVar("cannonball_eff").push_obj_vector(pooledObj);
obj.getVar("cannonball_eff").push_obj_vector(pooledObj2);
break;
case 10:
obj.sq_SetCurrentAnimation(102);
// obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/2_blaster/cannonball/ball1.ani"), 170, -45);
// obj.sq_AddStateLayerAnimation(2,obj.sq_CreateCNRDAnimation("effect/animation/2_blaster/cannonball/ball2.ani"), 170, -45);
local pooledObj = sq_AddDrawOnlyAniFromParent(obj, "character/gunner/effect/animation/2_blaster/cannonball/ball1.ani", 170, 0, 45);
local pooledObj2 = sq_AddDrawOnlyAniFromParent(obj, "character/gunner/effect/animation/2_blaster/cannonball/ball2.ani", 170, 0, 45);
obj.getVar("cannonball_eff").push_obj_vector(pooledObj);
obj.getVar("cannonball_eff").push_obj_vector(pooledObj2);
break;
}
obj.sq_PlaySound("FG_CANNONBALL_GET");
obj.sq_PlaySound("CANNONBALL_READY");
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
}
function onEndCurrentAni_CannonBall(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
case 10:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
}
}
function onProcCon_CannonBall(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
local stateTime = obj.sq_GetStateTimer();
if(stateTime >= sq_GetIntData(obj, SKILL_BYKK_CANNONBALL, 0)){
switch(subState){
case 0:
if(obj.getVar("cannonball_bool").getBool(0)){
obj.getVar("cannonball_bool").setBool(0, false);
// obj.sq_AddStateLayerAnimation(3,obj.sq_CreateCNRDAnimation("effect/animation/2_blaster/cannonball/ball3.ani"), 185, -105);
local pooledObj = sq_AddDrawOnlyAniFromParent(obj, "character/gunner/effect/animation/2_blaster/cannonball/ball3.ani", 185, 0, 105);
obj.getVar("cannonball_eff").push_obj_vector(pooledObj);
}
break;
case 10:
if(obj.getVar("cannonball_bool").getBool(0)){
obj.getVar("cannonball_bool").setBool(0, false);
// obj.sq_AddStateLayerAnimation(3,obj.sq_CreateCNRDAnimation("effect/animation/2_blaster/cannonball/ball3.ani"), 170, -45);
local pooledObj = sq_AddDrawOnlyAniFromParent(obj, "character/gunner/effect/animation/2_blaster/cannonball/ball3.ani", 170, 0, 45);
obj.getVar("cannonball_eff").push_obj_vector(pooledObj);
}
break;
}
if(obj.getVar("cannonball_bool").getBool(1)) obj.getVar("cannonball_bool").setBool(1, false);
}
local bDownKey = obj.isDownSkillLastKey();
if(!bDownKey || stateTime >= sq_GetIntData(obj, SKILL_BYKK_CANNONBALL, 1)){
local currentAni = obj.getCurrentAnimation();
if(sq_GetCurrentFrameIndex(obj) <= 9){
local size = obj.getVar("cannonball_eff").get_obj_vector_size();
for(local i = 0; i < size; i++){
local effect = obj.getVar("cannonball_eff").get_obj_vector(i);
if(effect) effect.setValid(false);
}
obj.sq_PlaySound("FG_CANNONBALL_FIRE");
currentAni.setCurrentFrameWithChildLayer(10);
}
}
}
function onKeyFrameFlag_CannonBall(obj, flagIndex)
{
if(!obj) return false;
switch(flagIndex){
case 1:
local size = obj.getVar("cannonball_eff").get_obj_vector_size();
if(size > 0){
for(local i = 0; i < size; i++){
local effect = obj.getVar("cannonball_eff").get_obj_vector(i);
if(effect) effect.setValid(false);
}
}
local subState = obj.getSkillSubState();
local sub = 0, xpos = 185, zpos = 105, sub2 = 0;
if(subState == 10) {sub = 1; xpos = 170; zpos = 45;}
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_CANNONBALL, -1, 0, 1.0) + 100;
if(obj.getVar("cannonball_bool").getBool(1) == false){
sub2 = 1;
totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_CANNONBALL, -1, 1, 1.0) + 100;
}
createSkillPassive_ATGunner_bykk(obj,obj,PASSIVEOBJ_BYKK_ATGUNNER,xpos,-1,zpos,obj.getDirection(),2,SKILL_BYKK_CANNONBALL,1,totalDamage,sub,sub2,0,0,0,0,0);
obj.sq_PlaySound("CANNONBALL_SHOT");
break;
}
return true;
}
function onTimeEvent_CannonBall(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
}
function onEndState_CannonBall(obj, new_state)
{
if(!obj) return;
if(new_state != STATE_BYKK_CANNONBALL){
local size = obj.getVar("cannonball_eff").get_obj_vector_size();
if(size > 0){
for(local i = 0; i < size; i++){
local effect = obj.getVar("cannonball_eff").get_obj_vector(i);
if(effect) effect.setValid(false);
}
}
}
}
//反坦克炮
function checkExecutableSkill_SteyrHeavyRifle(obj)
{
if (!obj) return false;
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_STEYRHEAVYRIFLE);
if (isUse){
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_STEYRHEAVYRIFLE, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_SteyrHeavyRifle(obj)
{
if (!obj) return false;
return true;
}
function onSetState_SteyrHeavyRifle(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(191);
if(sq_GetSkillLevel(obj, SKILL_BYKK_PANDORA_01) > 0) obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/2_blaster/subweaponalteration/steyrheavyrifle/90lvhcannon/atfrontonce1a.ani"), 0, 0);
else obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/2_blaster/subweaponalteration/steyrheavyrifle/atfrontonce1a.ani"), 0, 0);
if(sq_GetSkillLevel(obj, SKILL_BYKK_HITONSUBWEAPON) > 0) setHitonSubweapon_bykk(obj);
if(sq_GetSkillLevel(obj, SKILL_BYKK_SUBWEAPONMASTERY) > 0) obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.2, 1.2);
else obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
break;
case 1:
obj.sq_SetCurrentAnimation(190);
if(sq_GetSkillLevel(obj, SKILL_BYKK_PANDORA_01) > 0) obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/2_blaster/subweaponalteration/steyrheavyrifle/90lvhcannon/atfrontonce2a.ani"), 0, 0);
else obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/2_blaster/subweaponalteration/steyrheavyrifle/atfrontonce2a.ani"), 0, 0);
if(sq_GetSkillLevel(obj, SKILL_BYKK_PANDORA_01) > 0) obj.sq_PlaySound("R_FG_STEYR_PANDORA");
else obj.sq_PlaySound("FG_STEYR");
obj.sq_PlaySound("STEYR_SHOT");//STEYR_EXP
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_STEYRHEAVYRIFLE, -1, 3, 1.0) + 100;
local totalDamage2 = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_STEYRHEAVYRIFLE, -1, 4, 1.0) + 100;
local expCount = sq_GetIntData(obj, SKILL_BYKK_STEYRHEAVYRIFLE, 6);
local sizeRate = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_STEYRHEAVYRIFLE, -1, 5, 1.0) + 100;
local sub = 0;
if(sq_GetSkillLevel(obj, SKILL_BYKK_PANDORA_01) > 0) sub = 1;
createSkillPassive_ATGunner_bykk(obj,obj,PASSIVEOBJ_BYKK_ATGUNNER,100,0,65,obj.getDirection(),2,SKILL_BYKK_STEYRHEAVYRIFLE,1,totalDamage,totalDamage2,expCount,sizeRate,sub,0,0,0);
if(sq_GetSkillLevel(obj, SKILL_BYKK_ALPHASUPPORT) < 1){
obj.setTimeEvent(3, 500, 1, true);
}
break;
}
}
function onEndCurrentAni_SteyrHeavyRifle(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
obj.sq_IntVectClear();
obj.sq_IntVectPush(1);
obj.sq_AddSetStatePacket(STATE_BYKK_STEYRHEAVYRIFLE, STATE_PRIORITY_IGNORE_FORCE, true);
break;
case 1:
if(sq_GetSkillLevel(obj, SKILL_BYKK_ALPHASUPPORT) < 1) break;
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
}
}
function onProcCon_SteyrHeavyRifle(obj)
{
if(!obj) return;
}
function onKeyFrameFlag_SteyrHeavyRifle(obj, flagIndex)
{
if(!obj) return false;
switch(flagIndex){
}
return true;
}
function onTimeEvent_SteyrHeavyRifle(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
switch(timeEventIndex){
case 1:
if(sq_GetSkillLevel(obj, SKILL_BYKK_ALPHASUPPORT) > 0){
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
}
else{
obj.getVar("move").setInt(10, sq_GetXPos(obj));
obj.setTimeEvent(2, 20, 20, true);
}
break;
case 2:
local v = sq_GetAccel(0, -150, timeEventCount, 20, true);
local dstX = sq_GetDistancePos(obj.getVar("move").getInt(10), obj.getDirection(), v);
if(obj.isMovablePos(dstX, sq_GetYPos(obj))) sq_setCurrentAxisPos(obj, 0, dstX);
if(timeEventCount >= 20){
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
}
break;
case 3:
local aniPath = "character/gunner/atanimation/2_blaster/solasystemshoot_dust_01.ani";
local aniPath2 = "character/gunner/atanimation/2_blaster/solasystemshoot_dust_02.ani";
createOnlyDrawObjectEX_ATGunner_bykk(obj,aniPath,true,obj.getDirection(),sq_GetDistancePos(sq_GetXPos(obj), obj.getDirection(), 50),sq_GetYPos(obj),0,ENUM_DRAWLAYER_NORMAL,-100,100);
createOnlyDrawObjectEX_ATGunner_bykk(obj,aniPath2,true,obj.getDirection(),sq_GetDistancePos(sq_GetXPos(obj), obj.getDirection(), 50),sq_GetYPos(obj) + 1,0,ENUM_DRAWLAYER_NORMAL,-100,100);
local speed = 250.0;
if(obj.getDirection() == ENUM_DIRECTION_LEFT) sq_SetVelocity(obj, 0, speed);
else sq_SetVelocity(obj, 0, -speed);
obj.setTimeEvent(4, 200, 1, false);
break;
case 4:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
}
}
function onEndState_SteyrHeavyRifle(obj, new_state)
{
if(!obj) return;
}
//激光炮
function checkExecutableSkill_LaserRifle(obj)
{
if (!obj) return false;
// return false;
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_LASERRIFLE);
if (isUse){
obj.getVar("laserCharge_bool").setBool(0, false);
obj.getVar("laserCharge_bool").setBool(1, false);
obj.getVar("laserCharge_bool").setBool(2, false);
obj.getVar("laserCharge_custom").setInt(10, 0);
obj.sq_IsEnterSkillLastKeyUnits(SKILL_BYKK_LASERRIFLE);
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_LASERRIFLE, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_LaserRifle(obj)
{
if (!obj) return false;
return true;
}
function onSetState_LaserRifle(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(191);
obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/2_blaster/subweapon/laserrifleeffect/atfrontrapid1a.ani"), 0, 0);
obj.sq_PlaySound("R_FG_LSHOT");
if(sq_GetSkillLevel(obj, SKILL_BYKK_HITONSUBWEAPON) > 0) setHitonSubweapon_bykk(obj);
break;
case 1:
if(obj.getVar("laserCharge_bool").getBool(1)){
obj.sq_SetCurrentAnimation(186);
obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/2_blaster/subweapon/laserrifleeffect/atfrontonce2a.ani"), 0, 0);
}
else{
obj.sq_SetCurrentAnimation(190);
obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/2_blaster/subweapon/laserrifleeffect/atuprapid2b.ani"), 0, 0);
}
if(sq_GetSkillLevel(obj, SKILL_BYKK_ALPHASUPPORT) < 1){
obj.setTimeEvent(3, 500, 1, true);
}
break;
}
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
}
function onEndCurrentAni_LaserRifle(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
obj.getVar("laserCharge_bool").setBool(2, true);
obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/2_blaster/subweapon/laserrifleeffect/atcharge_part.ani"), 0, 0);
obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/2_blaster/subweapon/laserrifleeffect/atchargingeffect.ani"), 0, 0);
if(sq_GetIntData(obj, SKILL_BYKK_LASERRIFLE, 7) > 0) obj.setTimeEvent(10, 2, -1, false);
break;
case 1:
if(sq_GetSkillLevel(obj, SKILL_BYKK_ALPHASUPPORT) < 1) break;
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
}
}
function onProcCon_LaserRifle(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
if(obj.getVar("laserCharge_bool").getBool(2)){
local bDownKey = obj.isDownSkillLastKey();
if(bDownKey){
if(obj.getVar("laserCharge_bool").getBool(0) == false){
local skillLevel = sq_GetSkillLevel(obj, SKILL_BYKK_LASERRIFLECHARGE);
if(skillLevel > 0){
local stateTime = obj.sq_GetStateTimer();
local maxTime = sq_GetLevelData(obj, SKILL_BYKK_LASERRIFLECHARGE, 0, skillLevel);
if(stateTime >= maxTime){
sq_AddDrawOnlyAniFromParent(obj,"character/gunner/effect/animation/2_blaster/subweapon/laserrifleeffect/laserriflefullcharge1.ani", 0, 0, -10);
sq_AddDrawOnlyAniFromParent(obj,"character/gunner/effect/animation/2_blaster/subweapon/laserrifleeffect/laserriflefullcharge2.ani", 0, 1, -9);
obj.getVar("laserCharge_bool").setBool(0, true);
obj.getVar("laserCharge_bool").setBool(1, true);
obj.sq_AddStateLayerAnimation(10010,obj.sq_CreateCNRDAnimation("effect/animation/2_blaster/subweapon/laserrifleeffect/atchargefulleffect.ani"), 0, 0);
obj.sq_AddStateLayerAnimation(10011,obj.sq_CreateCNRDAnimation("effect/animation/2_blaster/subweapon/laserrifleeffect/atfullcharge_change.ani"), 0, 0);
obj.setTimeEvent(1, 300, 1, false);
obj.sq_PlaySound("STEYR_HEAVY_RIFLE");
}
}
else obj.getVar("laserCharge_bool").setBool(0, true);
}
}
else{
obj.stopTimeEvent(10);
local skillLevel = sq_GetSkillLevel(obj, SKILL_BYKK_LASERRIFLECHARGE);
if(skillLevel > 0){
local maxTime = sq_GetLevelData(obj, SKILL_BYKK_LASERRIFLECHARGE, 0, skillLevel);
if(maxTime <= 50){
sq_AddDrawOnlyAniFromParent(obj,"character/gunner/effect/animation/2_blaster/subweapon/laserrifleeffect/laserriflefullcharge1.ani", 0, 0, -10);
sq_AddDrawOnlyAniFromParent(obj,"character/gunner/effect/animation/2_blaster/subweapon/laserrifleeffect/laserriflefullcharge2.ani", 0, 1, -9);
obj.getVar("laserCharge_bool").setBool(1, true);
obj.sq_AddStateLayerAnimation(10010,obj.sq_CreateCNRDAnimation("effect/animation/2_blaster/subweapon/laserrifleeffect/atchargefulleffect.ani"), 0, 0);
obj.sq_AddStateLayerAnimation(10011,obj.sq_CreateCNRDAnimation("effect/animation/2_blaster/subweapon/laserrifleeffect/atfullcharge_change.ani"), 0, 0);
}
}
obj.getVar("laserCharge_bool").setBool(2, false);
obj.setTimeEvent(2, 500, 1, false);
obj.sq_PlaySound("FG_LSHOT_SHOT");
obj.sq_PlaySound("LASER_HIT_02");
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_LASERRIFLE, -1, 1, 1.0) + 100;
local sizeRate = sq_GetIntData(obj, SKILL_BYKK_LASERRIFLE, 2);
local sub = 1;
if(obj.getVar("laserCharge_bool").getBool(1)){
totalDamage = totalDamage * (1000 + sq_GetLevelData(obj, SKILL_BYKK_LASERRIFLECHARGE, 1, sq_GetSkillLevel(obj, SKILL_BYKK_LASERRIFLECHARGE))) / 1000;
sizeRate = sizeRate * (1000 + sq_GetIntData(obj, SKILL_BYKK_LASERRIFLECHARGE, 0)) / 1000;
sub = 2;
}
obj.getVar("laserCharge_custom").setInt(10, sizeRate);
createSkillPassive_ATGunner_bykk(obj,obj,PASSIVEOBJ_BYKK_ATGUNNER,135,0,68,obj.getDirection(),2,SKILL_BYKK_LASERRIFLE,1,totalDamage,sizeRate,0,0,0,0,0,0);
switch(sub){
case 1:
local aniPath = "passiveobject/atgunner_bykk/2_blaster/animation/laserrifle/laserfire.ani";
local aniPath2 = "passiveobject/atgunner_bykk/2_blaster/animation/laserrifle/lasertile.ani";
local offsetX = 285;
local xPos = sq_GetDistancePos(sq_GetXPos(obj), obj.getDirection(), offsetX), yPos = sq_GetYPos(obj), zPos = 75;
createOnlyDrawObjectEX_ATGunner_bykk(obj,aniPath,true,obj.getDirection(),xPos,yPos,zPos,ENUM_DRAWLAYER_NORMAL,100,sizeRate);
createOnlyDrawObjectEX_ATGunner_bykk(obj,aniPath2,true,obj.getDirection(),xPos,yPos,zPos,ENUM_DRAWLAYER_NORMAL,600,sizeRate);
break;
case 2:
local aniPath = ["passiveobject/atgunner_bykk/2_blaster/animation/laserrifle/chargedlaserfire1.ani", "passiveobject/atgunner_bykk/2_blaster/animation/laserrifle/chargedlaserfire2.ani", "passiveobject/atgunner_bykk/2_blaster/animation/laserrifle/chargedlaserfire3.ani"];
local tiaozheng = 0;
local offsetX = 275;
local xPos = sq_GetDistancePos(sq_GetXPos(obj), obj.getDirection(), offsetX), yPos = sq_GetYPos(obj), zPos = 75;
for(local i = 0; i < aniPath.len(); i++){
createOnlyDrawObjectEX_ATGunner_bykk(obj,aniPath[i],true,obj.getDirection(),xPos,yPos,zPos,ENUM_DRAWLAYER_NORMAL,100,sizeRate);
}
offsetX = offsetX - 7;
xPos = sq_GetDistancePos(sq_GetXPos(obj), obj.getDirection(), offsetX);
local aniPath2 = ["passiveobject/atgunner_bykk/2_blaster/animation/laserrifle/chargedlasertile1.ani", "passiveobject/atgunner_bykk/2_blaster/animation/laserrifle/chargedlasertile2.ani", "passiveobject/atgunner_bykk/2_blaster/animation/laserrifle/chargedlasertile3.ani"];
for(local i = 0; i < aniPath.len(); i++){
createOnlyDrawObjectEX_ATGunner_bykk(obj,aniPath2[i],true,obj.getDirection(),xPos,yPos,zPos,ENUM_DRAWLAYER_NORMAL,600,sizeRate);
}
if(sq_GetSkillLevel(obj, SKILL_BYKK_ALPHASUPPORT) > 0){
createOnlyDrawObjectEX_ATGunner_bykk(obj,"passiveobject/atgunner_bykk/2_blaster/animation/laserrifle/laserriflelightning.ani",true,obj.getDirection(),xPos,yPos,zPos,ENUM_DRAWLAYER_NORMAL,100,-sizeRate);
createOnlyDrawObjectEX_ATGunner_bykk(obj,"passiveobject/atgunner_bykk/2_blaster/animation/laserrifle/laserriflelightning.ani",true,obj.getDirection(),xPos,yPos + 1,zPos,ENUM_DRAWLAYER_NORMAL,300,sizeRate);
}
break;
}
}
}
break;
}
}
function onKeyFrameFlag_LaserRifle(obj, flagIndex)
{
if(!obj) return false;
return true;
}
function onTimeEvent_LaserRifle(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
switch(timeEventIndex){
case 1:
obj.sq_AddStateLayerAnimation(10012,obj.sq_CreateCNRDAnimation("effect/animation/2_blaster/subweapon/laserrifleeffect/atfullcharge_charge.ani"), 0, 0);
break;
case 2:
obj.sq_IntVectClear();
obj.sq_IntVectPush(1);
obj.sq_AddSetStatePacket(STATE_BYKK_LASERRIFLE, STATE_PRIORITY_AUTO, true);
break;
case 3:
local aniPath = "character/gunner/atanimation/2_blaster/solasystemshoot_dust_01.ani";
local aniPath2 = "character/gunner/atanimation/2_blaster/solasystemshoot_dust_02.ani";
createOnlyDrawObjectEX_ATGunner_bykk(obj,aniPath,true,obj.getDirection(),sq_GetDistancePos(sq_GetXPos(obj), obj.getDirection(), 50),sq_GetYPos(obj),0,ENUM_DRAWLAYER_NORMAL,-100,100);
createOnlyDrawObjectEX_ATGunner_bykk(obj,aniPath2,true,obj.getDirection(),sq_GetDistancePos(sq_GetXPos(obj), obj.getDirection(), 50),sq_GetYPos(obj) + 1,0,ENUM_DRAWLAYER_NORMAL,-100,100);
local speed = 250.0;
if(obj.getDirection() == ENUM_DIRECTION_LEFT) sq_SetVelocity(obj, 0, speed);
else sq_SetVelocity(obj, 0, -speed);
if(obj.getVar("laserCharge_bool").getBool(1)) obj.setTimeEvent(4, 300, 1, false);
else obj.setTimeEvent(4, 80, 1, false);
break;
case 4:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
case 10:
local xpos = sq_GetXPos(obj), ypos = sq_GetYPos(obj);
if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_UP, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(xpos,ypos - 1)) sq_setCurrentAxisPos(obj, 1, ypos - 1);
if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_LEFT, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(xpos - 1,ypos)) sq_setCurrentAxisPos(obj, 0, xpos - 1);
return;
}
else if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_RIGHT, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(xpos + 1,ypos)) sq_setCurrentAxisPos(obj, 0, xpos + 1);
return;
}
}
else if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_DOWN, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(xpos,ypos + 1)) sq_setCurrentAxisPos(obj, 1, ypos + 1);
if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_LEFT, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(xpos - 1,ypos)) sq_setCurrentAxisPos(obj, 0, xpos - 1);
return;
}
else if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_RIGHT, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(xpos + 1,ypos)) sq_setCurrentAxisPos(obj, 0, xpos + 1);
return;
}
}
if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_LEFT, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(xpos - 1,ypos)) sq_setCurrentAxisPos(obj, 0, xpos - 1);
return;
}
else if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_RIGHT, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(xpos + 1,ypos)) sq_setCurrentAxisPos(obj, 0, xpos + 1);
return;
}
break;
}
}
function onEndState_LaserRifle(obj, new_state)
{
if(!obj) return;
}
function onCreateObject_LaserRifle(obj, createObject)
{
if(!obj) return;
}
//聚焦喷火器
function checkExecutableSkill_FlameThrowerBoost(obj)
{
if (!obj) return false;
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_FLAMETHROWERBOOST);
if (isUse){
obj.sq_IsEnterSkillLastKeyUnits(SKILL_BYKK_FLAMETHROWERBOOST);
local timer = obj.getVar("flamethrowerboost").get_ct_vector(0);
if(!timer){
obj.getVar("flamethrowerboost").clear_ct_vector();
obj.getVar("flamethrowerboost").push_ct_vector();
timer = obj.getVar("flamethrowerboost").get_ct_vector(0);
}
timer.Reset();
timer.Start(10000,0);
obj.sq_IntVectClear();
if(sq_GetSkillLevel(obj, SKILL_BYKK_ALPHASUPPORT) > 0) obj.sq_IntVectPush(10);
else obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_FLAMETHROWERBOOST, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_FlameThrowerBoost(obj)
{
if (!obj) return false;
return true;
}
function onSetState_FlameThrowerBoost(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(185);
obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/2_blaster/subweapon/flamethrowerboost/atfrontrapid1a.ani"), 0, 0);
if(sq_GetSkillLevel(obj, SKILL_BYKK_SUBWEAPONMASTERY) > 0) obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.2, 1.2);
else obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
if(sq_GetSkillLevel(obj, SKILL_BYKK_HITONSUBWEAPON) > 0) setHitonSubweapon_bykk(obj);
obj.sq_PlaySound("FG_FIRE");
break;
case 1:
obj.sq_SetCurrentAnimation(186);
obj.sq_AddStateLayerAnimation(3,obj.sq_CreateCNRDAnimation("effect/animation/2_blaster/subweapon/flamethrowerboost/atfrontrapid2a.ani"), 0, 0);
obj.sq_AddStateLayerAnimation(2,obj.sq_CreateCNRDAnimation("effect/animation/2_blaster/subweapon/flamethrowerboost/atweapon_glow.ani"), 0, 0);
obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/2_blaster/subweapon/flamethrowerboost/body_glow_woman.ani"), 0, 0);
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
break;
case 10:
obj.sq_SetCurrentAnimation(152);
if(sq_GetSkillLevel(obj, SKILL_BYKK_HITONSUBWEAPON) > 0) setHitonSubweapon_bykk(obj);
if(sq_GetSkillLevel(obj, SKILL_BYKK_SUBWEAPONMASTERY) > 0) obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.2, 1.2);
else obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
obj.sq_PlaySound("FG_FIRE");
break;
case 11:
obj.sq_SetCurrentAnimation(151);
obj.sq_AddStateLayerAnimation(3,obj.sq_CreateCNRDAnimation("effect/animation/2_blaster/atajreinforceparts/flamethrowerboost/atweapon_glow_3.ani"), 0, 0);
if(sq_GetSkillLevel(obj, SKILL_BYKK_PANDORA_01) > 0) obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/2_blaster/atpandora01/lv95pandora01_05.ani"), 50, 0);
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
break;
case 12:
obj.sq_SetCurrentAnimation(150);
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
break;
}
}
function onEndCurrentAni_FlameThrowerBoost(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
case 10:
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_FLAMETHROWERBOOST, -1, 4, 1.0) + 100;
print(totalDamage);
if(sq_GetIntData(obj, SKILL_BYKK_FLAMETHROWERBOOST, 5) > 0) totalDamage = totalDamage + obj.sq_GetBonusRateWithPassive(SKILL_BYKK_FLAMETHROWER, -1, 4, 1.0) + 100;
print(totalDamage);
local skillLevel = sq_GetSkillLevel(obj, SKILL_BYKK_FLAMETHROWERBOOST);
local hitTime = sq_GetLevelData(obj, SKILL_BYKK_FLAMETHROWERBOOST, 2, skillLevel);
local moveRate = sq_GetLevelData(obj, SKILL_BYKK_FLAMETHROWERBOOST, 3, skillLevel);
local sizeRate = sq_GetLevelData(obj, SKILL_BYKK_FLAMETHROWERBOOST, 5, skillLevel);
local sub = 0, speed = 150 / moveRate * 1000;
if(sq_GetIntData(obj, SKILL_BYKK_FLAMETHROWERBOOST, 4) > 0){
local timeMax = sq_GetLevelData(obj, SKILL_BYKK_FLAMETHROWERBOOST, 1, skillLevel);
local hitMax = timeMax / hitTime;
totalDamage = totalDamage * hitMax;
createSkillPassive_ATGunner_bykk(obj,obj,PASSIVEOBJ_BYKK_ATGUNNER,140,0,65,obj.getDirection(),2,SKILL_BYKK_FLAMETHROWERBOOST,2,totalDamage,sizeRate,0,0,0,0,0,0);
obj.setTimeEvent(2, 50, 1, false);
obj.sq_PlaySound("FG_FIRE");
return;
}
if(subState == 10){
sub = 1;
if(sq_GetSkillLevel(obj, SKILL_BYKK_PANDORA_01) > 0) speed = speed / sq_GetIntData(obj, SKILL_BYKK_PANDORA_01, 0) * 100;
}
obj.setTimeEvent(1, speed, -1, false);
createSkillPassive_ATGunner_bykk(obj,obj,PASSIVEOBJ_BYKK_ATGUNNER,155,-1,65,obj.getDirection(),2,SKILL_BYKK_FLAMETHROWERBOOST,1,totalDamage,hitTime,sub,sizeRate,0,0,0,0);
obj.sq_IntVectClear();
obj.sq_IntVectPush(subState + 1);
obj.sq_AddSetStatePacket(STATE_BYKK_FLAMETHROWERBOOST, STATE_PRIORITY_AUTO, true);
break;
case 1:
obj.sq_IntVectClear();
obj.sq_IntVectPush(1);
obj.sq_AddSetStatePacket(STATE_BYKK_FLAMETHROWERBOOST, STATE_PRIORITY_AUTO, true);
break;
case 12:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
}
}
function onProcCon_FlameThrowerBoost(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 1:
case 11:
local bDownKey = obj.isDownSkillLastKey();
if(!bDownKey){
if(subState >= 10){
obj.sq_IntVectClear();
obj.sq_IntVectPush(12);
obj.sq_AddSetStatePacket(STATE_BYKK_FLAMETHROWERBOOST, STATE_PRIORITY_AUTO, true);
return;
}
else{
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
return;
}
}
else{
local timer = obj.getVar("flamethrowerboost").get_ct_vector(0);
if(timer){
local timeMax = sq_GetLevelData(obj, SKILL_BYKK_FLAMETHROWERBOOST, 1, sq_GetSkillLevel(obj, SKILL_BYKK_FLAMETHROWERBOOST));
local currentT = timer.Get();
if(currentT >= timeMax){
if(subState >= 10){
obj.sq_IntVectClear();
obj.sq_IntVectPush(12);
obj.sq_AddSetStatePacket(STATE_BYKK_FLAMETHROWERBOOST, STATE_PRIORITY_AUTO, true);
return;
}
else{
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
return;
}
}
}
}
break;
}
}
function onKeyFrameFlag_FlameThrowerBoost(obj, flagIndex)
{
if(!obj) return false;
switch(flagIndex){
}
return true;
}
function onTimeEvent_FlameThrowerBoost(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
switch(timeEventIndex){
case 1:
local xpos = sq_GetXPos(obj), ypos = sq_GetYPos(obj), baseSpeed = 2;
if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_UP, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(xpos,ypos - baseSpeed)) sq_setCurrentAxisPos(obj, 1, ypos - baseSpeed);
if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_LEFT, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(xpos - baseSpeed,ypos)) sq_setCurrentAxisPos(obj, 0, xpos - baseSpeed);
return;
}
else if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_RIGHT, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(xpos + baseSpeed,ypos)) sq_setCurrentAxisPos(obj, 0, xpos + baseSpeed);
return;
}
}
else if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_DOWN, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(xpos,ypos + baseSpeed)) sq_setCurrentAxisPos(obj, 1, ypos + baseSpeed);
if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_LEFT, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(xpos - baseSpeed,ypos)) sq_setCurrentAxisPos(obj, 0, xpos - baseSpeed);
return;
}
else if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_RIGHT, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(xpos + baseSpeed,ypos)) sq_setCurrentAxisPos(obj, 0, xpos + baseSpeed);
return;
}
}
if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_LEFT, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(xpos - baseSpeed,ypos)) sq_setCurrentAxisPos(obj, 0, xpos - baseSpeed);
return;
}
else if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_RIGHT, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(xpos + baseSpeed,ypos)) sq_setCurrentAxisPos(obj, 0, xpos + baseSpeed);
return;
}
break;
case 2:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
}
}
function onEndState_FlameThrowerBoost(obj, new_state)
{
if(!obj) return;
if(new_state != STATE_BYKK_FLAMETHROWERBOOST){
local attackObj = obj.getVar("flamethrowerboost_att").get_obj_vector(0);
if(attackObj){
local colObj = sq_GetCNRDObjectToCollisionObject(attackObj);
if(colObj.getState() != 22) colObj.addSetStatePacket(22, null, STATE_PRIORITY_AUTO, false, "");
}
}
}
//潜能爆发
function checkExecutableSkill_SubWeaponStuckDown(obj)
{
if (!obj) return false;
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_SUBWEAPONSTUCKDOWN);
if (isUse){
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_SUBWEAPONSTUCKDOWN, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_SubWeaponStuckDown(obj)
{
if (!obj) return false;
return true;
}
function onSetState_SubWeaponStuckDown(obj, state, datas, isResetTimer)
{
if(!obj) return;
local subState = obj.sq_GetVectorData(datas, 0);
obj.setSkillSubState(subState);
obj.sq_StopMove();
switch(subState){
case 0:
local Ani = obj.sq_GetThrowChargeAni(1);
obj.setCurrentAnimation(Ani);
obj.sq_PlaySound("FG_MVISION");
local skillLevel = sq_GetSkillLevel(obj, SKILL_BYKK_SUBWEAPONSTUCKDOWN);
local castTime = sq_GetCastTime(obj, SKILL_BYKK_SUBWEAPONSTUCKDOWN, skillLevel);
local animation = sq_GetCurrentAnimation(obj);
local startTime = animation.getDelaySum(false);
local speedRate = startTime.tofloat() / castTime.tofloat();
sq_StartDrawCastGauge(obj, castTime, true);
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_CAST_SPEED, SPEED_TYPE_CAST_SPEED,SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, speedRate, speedRate);
break;
case 1:
local Ani = obj.sq_GetThrowShootAni(1);
obj.setCurrentAnimation(Ani);
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_CAST_SPEED, SPEED_TYPE_CAST_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, "character/atgunner/2_blaster_bykk/ap_subweaponstuckdown.nut")) CNSquirrelAppendage.sq_RemoveAppendage(obj, "character/atgunner/2_blaster_bykk/ap_subweaponstuckdown.nut");
local AddAppendage = CNSquirrelAppendage.sq_AppendAppendage(obj, obj, -1, false, "character/atgunner/2_blaster_bykk/ap_subweaponstuckdown.nut", true);
local skillLevel = sq_GetSkillLevel(obj, SKILL_BYKK_SUBWEAPONSTUCKDOWN);
local buffTime = sq_GetLevelData(obj, SKILL_BYKK_SUBWEAPONSTUCKDOWN, 0, skillLevel);
local hitRate = sq_GetLevelData(obj, SKILL_BYKK_SUBWEAPONSTUCKDOWN, 1, skillLevel);
if(buffTime != 0) AddAppendage.sq_SetValidTime(Time);
AddAppendage.setBuffIconImage(36);//sprite_common_commoneffect
AddAppendage.setAppendCauseSkill(BUFF_CAUSE_SKILL, sq_getJob(obj), SKILL_BYKK_SUBWEAPONSTUCKDOWN, skillLevel);
CNSquirrelAppendage.sq_Append(AddAppendage, obj, obj, true);
local change_appendage = AddAppendage.sq_getChangeStatus("at_subweaponstuckdown");
if(!change_appendage) change_appendage = AddAppendage.sq_AddChangeStatus("at_subweaponstuckdown", obj, obj, 0, CHANGE_STATUS_TYPE_PHYSICAL_ATTACK, true, 1000);
if(change_appendage){
change_appendage.clearParameter();
change_appendage.addParameter(CHANGE_STATUS_TYPE_STUCK, false, (hitRate * -1).tofloat());
}
break;
}
}
function onEndCurrentAni_SubWeaponStuckDown(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
obj.sq_IntVectClear();
obj.sq_IntVectPush(1);
obj.sq_AddSetStatePacket(STATE_BYKK_SUBWEAPONSTUCKDOWN, STATE_PRIORITY_AUTO, true);
break;
case 1:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
}
}
function onProcCon_SubWeaponStuckDown(obj)
{
if(!obj) return;
}
function onKeyFrameFlag_SubWeaponStuckDown(obj, flagIndex)
{
if(!obj) return false;
switch(flagIndex){
}
return true;
}
function onTimeEvent_SubWeaponStuckDown(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
}
function onEndState_SubWeaponStuckDown(obj, new_state)
{
if(!obj) return;
if(new_state != STATE_BYKK_SUBWEAPONSTUCKDOWN){
sq_EndDrawCastGauge(obj);
}
}
function onStartDungeon_Blaster_bykk(obj)
{
setSkillBonusRate_AtBlaster_bykk(obj);
if(sq_GetSkillLevel(obj, SKILL_BYKK_OVERHEAT) > 0){
local addAppendage = CNSquirrelAppendage.sq_GetAppendage(obj, "character/atgunner/2_blaster_bykk/ap_apg_63.nut");
if(addAppendage){
addAppendage.setAppendCauseSkill(BUFF_CAUSE_SKILL, sq_getJob(obj), SKILL_BYKK_OVERHEAT, sq_GetSkillLevel(obj, SKILL_BYKK_OVERHEAT));
CNSquirrelAppendage.sq_Append(addAppendage, obj, obj, true);
}
}
local loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_STINGER);
if(loadSlot) obj.sq_RemoveSkillLoad(SKILL_BYKK_STINGER);
local loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_FSC_7);
if(loadSlot) obj.sq_RemoveSkillLoad(SKILL_BYKK_FSC_7);
local loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_FM31);
if(loadSlot) obj.sq_RemoveSkillLoad(SKILL_BYKK_FM31);
obj.getVar("isReset").setInt(0, 1);
}
function reset_atBlaster_bykk(obj)
{
if(obj.getVar("isReset").getInt(0) == 1) return;
setSkillBonusRate_AtBlaster_bykk(obj);
if(sq_GetSkillLevel(obj, SKILL_BYKK_OVERHEAT) > 0){
local addAppendage = CNSquirrelAppendage.sq_GetAppendage(obj, "character/atgunner/2_blaster_bykk/ap_apg_63.nut");
if(addAppendage){
addAppendage.setAppendCauseSkill(BUFF_CAUSE_SKILL, sq_getJob(obj), SKILL_BYKK_OVERHEAT, sq_GetSkillLevel(obj, SKILL_BYKK_OVERHEAT));
CNSquirrelAppendage.sq_Append(addAppendage, obj, obj, true);
}
}
local loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_STINGER);
if(loadSlot) obj.sq_RemoveSkillLoad(SKILL_BYKK_STINGER);
local loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_FSC_7);
if(loadSlot) obj.sq_RemoveSkillLoad(SKILL_BYKK_FSC_7);
local loadSlot = obj.sq_GetSkillLoad(SKILL_BYKK_FM31);
if(loadSlot) obj.sq_RemoveSkillLoad(SKILL_BYKK_FM31);
}
function onStart_appendage_at_subweaponstuckdown(appendage)
{
if(!appendage) return;
local parentObj = appendage.getParent();
if(!parentObj || parentObj.getState() == STATE_DIE) return;
local obj = sq_GetCNRDObjectToSQRCharacter(parentObj);
setSkillBonusRate_AtBlaster_bykk(obj);
}
function onEnd_appendage_at_subweaponstuckdown(appendage)
{
if(!appendage) return;
// local parentObj = appendage.getParent();
// if(!parentObj || parentObj.getState() == STATE_DIE) return;
// local obj = sq_GetCNRDObjectToSQRCharacter(parentObj);
// setSkillBonusRate_AtBlaster_bykk(obj);
}
function setSkillBonusRate_AtBlaster_bykk(obj)
{
local bonusRate = 1000;
if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, "character/atgunner/2_blaster_bykk/ap_subweaponstuckdown.nut")) bonusRate = bonusRate * (1000 + sq_GetLevelData(obj, SKILL_BYKK_SUBWEAPONSTUCKDOWN, 2, sq_GetSkillLevel(obj, SKILL_BYKK_SUBWEAPONSTUCKDOWN))) / 1000;
print("bonusRate1 = "+bonusRate);
if(sq_GetSkillLevel(obj, SKILL_BYKK_ALPHASUPPORT) > 0) bonusRate = bonusRate * (1000 + sq_GetLevelData(obj, SKILL_BYKK_ALPHASUPPORT, 5, sq_GetSkillLevel(obj, SKILL_BYKK_ALPHASUPPORT))) / 1000;
print("bonusRate2 = "+bonusRate);
if(sq_GetSkillLevel(obj, SKILL_BYKK_OVERHEAT) > 0) bonusRate = bonusRate * (1000 + sq_GetLevelData(obj, SKILL_BYKK_OVERHEAT, 2, sq_GetSkillLevel(obj, SKILL_BYKK_OVERHEAT)) * 10) / 1000;
print("bonusRate3 = "+bonusRate);
if(sq_GetSkillLevel(obj, SKILL_BYKK_PANDORA_01) > 0) bonusRate = bonusRate * (1000 + sq_GetLevelData(obj, SKILL_BYKK_PANDORA_01, 0, sq_GetSkillLevel(obj, SKILL_BYKK_PANDORA_01))) / 1000;
print("bonusRate4 = "+bonusRate);
if(sq_GetSkillLevel(obj, SKILL_BYKK_SUBWEAPONMASTERY) > 0 && obj.getWeaponSubType() == 3) bonusRate = bonusRate * (1000 + sq_GetLevelData(obj, SKILL_BYKK_SUBWEAPONMASTERY, 3, sq_GetSkillLevel(obj, SKILL_BYKK_SUBWEAPONMASTERY))) / 1000;
print("bonusRate5 = "+bonusRate);
obj.getVar("setSkillBonusRate").setInt(0, bonusRate.tointeger());
//sq_SetSkillAttackBonus(obj, bonusRate);
}
//FM-31榴弹发射器
FM31_STONE <- 0
function checkExecutableSkill_FM31(obj)
{
if (!obj) return false;
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_FM31);
if (isUse){
obj.startSkillCoolTime(SKILL_BYKK_FM31, sq_GetSkillLevel(obj, SKILL_BYKK_FM31), -1);
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_FM31, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_FM31(obj)
{
if (!obj) return false;
if(FM31_STONE == 1) return false;
return true;
}
function onSetState_FM31(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(185);
obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/2_blaster/subweapon/fm31/atfrontrapid1a.ani"), 0, 0);
if(sq_GetSkillLevel(obj, SKILL_BYKK_SUBWEAPONMASTERY) > 0) obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.2, 1.2);
else obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
local currentAni = obj.getCurrentAnimation();
local speedRate = 3400 / currentAni.getDelaySum(0, 0);
currentAni.setSpeedRate(speedRate.tofloat() * 1.5);
if(sq_GetSkillLevel(obj, SKILL_BYKK_HITONSUBWEAPON) > 0) setHitonSubweapon_bykk(obj);
obj.sq_PlaySound("FG_SSHOT");
obj.sq_PlaySound("FM31_READY");
break;
case 1:
obj.sq_SetCurrentAnimation(186);
obj.sq_AddStateLayerAnimation(3,obj.sq_CreateCNRDAnimation("effect/animation/2_blaster/subweapon/fm31/atfrontrapid2a.ani"), 0, 0);
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.5, 1.5);
break;
}
}
function onEndCurrentAni_FM31(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
obj.sq_IntVectClear();
obj.sq_IntVectPush(1);
obj.sq_AddSetStatePacket(STATE_BYKK_FM31, STATE_PRIORITY_AUTO, true);
break;
case 1:
local skillLevel = sq_GetSkillLevel(obj, SKILL_BYKK_FM31);
local createMax = sq_GetLevelData(obj, SKILL_BYKK_FM31, 0, skillLevel);
if(FM31_STONE == 1) createMax = 1;
obj.getVar("FM31").setInt(10, createMax);
local delay = sq_GetIntData(obj, SKILL_BYKK_FM31, 2) / 3;
if(FM31_STONE == 1) delay = 175;
obj.setTimeEvent(1, delay, createMax, true);
if(FM31_STONE == 1) break;
if(sq_GetSkillLevel(obj, SKILL_BYKK_ALPHASUPPORT) < 1){
if(obj.getDirection() == ENUM_DIRECTION_LEFT) sq_SetVelocity(obj, 0, 120.0);
else sq_SetVelocity(obj, 0, -120.0);
}
break;
}
}
function onProcCon_FM31(obj)
{
if(!obj) return;
}
function onKeyFrameFlag_FM31(obj, flagIndex)
{
if(!obj) return false;
switch(flagIndex){
}
return true;
}
function onTimeEvent_FM31(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
switch(timeEventIndex){
case 1:
obj.sq_PlaySound("FM31_SHOT");
local bonusRate = 1.0;
if(FM31_STONE == 1) bonusRate = 1.27;
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_FM31, -1, 1, bonusRate);
local sizeRate = sq_GetIntData(obj, SKILL_BYKK_FM31, 0);
if(FM31_STONE == 1) sizeRate = sizeRate * 120 / 100;
createSkillPassive_ATGunner_bykk(obj,obj,PASSIVEOBJ_BYKK_ATGUNNER,125,-1,65,obj.getDirection(),2,SKILL_BYKK_FM31,1,totalDamage,sizeRate,0,0,0,0,0,0);
if(timeEventCount >= obj.getVar("FM31").getInt(10)){
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
}
break;
}
}
function onEndState_FM31(obj, new_state)
{
if(!obj) return;
}
//FM-92 mk2榴弹
function checkExecutableSkill_Stinger(obj)
{
if (!obj) return false;
if(sq_GetSkillLevel(obj, SKILL_BYKK_ALPHASUPPORT) > 0){
if(obj.getState() == STATE_STAND){
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_IGNORE_FORCE, true);
}
else if(obj.getState() == STATE_DASH){
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_DASH, STATE_PRIORITY_IGNORE_FORCE, true);
}
return false;
}
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_STINGER);
if (isUse){
obj.sq_IsEnterSkillLastKeyUnits(SKILL_BYKK_STINGER);
obj.getVar("stinger_att").clear_obj_vector();
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_STINGER, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_Stinger(obj)
{
if (!obj) return false;
return true;
}
function onSetState_Stinger(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(183);
obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/2_blaster/subweapon/stinger/atuponce1a.ani"), 0, 0);
obj.sq_PlaySound("FG_LANCER");
if(sq_GetSkillLevel(obj, SKILL_BYKK_HITONSUBWEAPON) > 0) setHitonSubweapon_bykk(obj);
if(sq_GetSkillLevel(obj, SKILL_BYKK_SUBWEAPONMASTERY) > 0) obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.2, 1.2);
else obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
break;
case 1:
obj.sq_SetCurrentAnimation(184);
obj.sq_AddStateLayerAnimation(3,obj.sq_CreateCNRDAnimation("effect/animation/2_blaster/subweapon/stinger/atuponce2a.ani"), 0, 0);
obj.sq_PlaySound("STINGER_SHOT");
sq_AddDrawOnlyAniFromParent(obj, "character/gunner/effect/animation/2_blaster/subweapon/stinger/shoot1.ani", 0, 0, 0);
obj.setTimeEvent(1, 50, 1, false);
break;
}
}
function onEndCurrentAni_Stinger(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
obj.sq_IntVectClear();
obj.sq_IntVectPush(1);
obj.sq_AddSetStatePacket(STATE_BYKK_STINGER, STATE_PRIORITY_AUTO, true);
break;
case 1:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
}
}
function onProcCon_Stinger(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 1:
local minTime = sq_GetIntData(obj, SKILL_BYKK_STINGER, 2);
local stateTime = obj.sq_GetStateTimer();
local bDownKey = obj.isDownSkillLastKey();
if(bDownKey){
if(stateTime > minTime){
local attackObj = obj.getVar("stinger_att").get_obj_vector(0);
if(attackObj){
local colObj = sq_GetCNRDObjectToCollisionObject(attackObj);
if(!colObj.isExistTimeEvent(1) && colObj.getState() == 20){
local maxTime = colObj.getVar("custom").getInt(13);
local minTime = colObj.getVar("custom").getInt(14);
colObj.setTimeEvent(1, maxTime - minTime, 1, false);
}
}
}
}
else{
local attackObj = obj.getVar("stinger_att").get_obj_vector(0);
if(attackObj){
local colObj = sq_GetCNRDObjectToCollisionObject(attackObj);
if(colObj.getState() != 21) colObj.addSetStatePacket(21, null, STATE_PRIORITY_AUTO, false, "");
if(sq_GetSkillLevel(obj, SKILL_BYKK_ALPHASUPPORT) > 0){
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
}
}
}
break;
}
}
function onKeyFrameFlag_Stinger(obj, flagIndex)
{
if(!obj) return false;
switch(flagIndex){
}
return true;
}
function onTimeEvent_Stinger(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
switch(timeEventIndex){
case 1:
sq_AddDrawOnlyAniFromParent(obj, "character/gunner/effect/animation/2_blaster/subweapon/stinger/shoot2dodge.ani", 0, 0, 0);
sq_AddDrawOnlyAniFromParent(obj, "character/gunner/effect/animation/2_blaster/subweapon/stinger/shoot2normal.ani", 0, 0, 0);
local createMax = sq_GetIntData(obj, SKILL_BYKK_STINGER, 4);
local bonusRate = 1.0;
if(sq_GetSkillLevel(obj, SKILL_BYKK_ALPHASUPPORT) > 0) bonusRate = 0.6;
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_STINGER, -1, 0, bonusRate) + 100;
local sizeRate = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_STINGER, -1, 3, 1.0) + 100;
local minTime = sq_GetIntData(obj, SKILL_BYKK_STINGER, 2);
local maxTime = sq_GetIntData(obj, SKILL_BYKK_STINGER, 3);
createSkillPassive_ATGunner_bykk(obj,obj,PASSIVEOBJ_BYKK_ATGUNNER,95,-1,135,obj.getDirection(),2,SKILL_BYKK_STINGER,1,totalDamage,sizeRate,createMax,maxTime,minTime,0,0,0);
break;
}
}
function onEndState_Stinger(obj, new_state)
{
if(!obj) return;
}
//量子爆弹
function checkExecutableSkill_UraniumBomb(obj)
{
if (!obj) return false;
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_URANIUMBOMB);
if (isUse){
local subState = 0;
if(sq_GetIntData(obj, SKILL_BYKK_URANIUMBOMB, 3) > 0 || false) subState = 10;//护石
else obj.sq_IsEnterSkillLastKeyUnits(SKILL_BYKK_URANIUMBOMB);
obj.sq_IntVectClear();
obj.sq_IntVectPush(subState);
obj.sq_AddSetStatePacket(STATE_BYKK_URANIUMBOMB, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_UraniumBomb(obj)
{
if (!obj) return false;
return true;
}
function onSetState_UraniumBomb(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(193);
obj.sq_PlaySound("R_FG_BIGBOMB");
break;
case 1:
obj.sq_SetCurrentAnimation(194);
obj.sq_RemoveAimPointMark();
obj.removeAllTimeEvent();
break;
case 10:
obj.sq_SetCurrentAnimation(193);
obj.sq_PlaySound("R_FG_BIGBOMB");
break;
case 11:
obj.sq_SetCurrentAnimation(194);
createSkillPassive_ATGunner_bykk(obj,obj,PASSIVEOBJ_BYKK_ATGUNNER,-100,0,0,obj.getDirection(),2,SKILL_BYKK_URANIUMBOMB,3,0,0,0,0,0,0,0,0);
break;
}
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_CAST_SPEED, SPEED_TYPE_CAST_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
}
function onEndCurrentAni_UraniumBomb(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
local posX = obj.getXPos();
local posY = obj.getYPos();
local offsetX = 130;
offsetX = obj.sq_GetDistancePos(posX, obj.sq_GetDirection(), offsetX);
local vX = 800;
local vY = 300;
obj.sq_AddAimPointMark(offsetX, posY, vX, vY);
obj.setTimeEvent(1, 1500, 1, false);
break;
case 1:
case 11:
if(subState == 1 && sq_GetIntData(obj, SKILL_BYKK_URANIUMBOMB, 7) > 0){
if(sq_getRandom(1, 100) <= 70){
obj.setTimeEvent(2, 300, 1, false);
break;
}
}
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
case 10:
obj.sq_IntVectClear();
obj.sq_IntVectPush(11);
obj.sq_AddSetStatePacket(STATE_BYKK_URANIUMBOMB, STATE_PRIORITY_AUTO, true);
break;
}
}
function onProcCon_UraniumBomb(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
local bDownKey = obj.isDownSkillLastKey();
switch(subState){
case 0:
local currentAni = obj.getCurrentAnimation();
local delaySum = currentAni.getDelaySum(false);
if(!bDownKey && obj.sq_GetStateTimer() >= delaySum + 100){
local aimPosX = obj.sq_GetAimPosX(obj.getXPos(), obj.getYPos(), false);
local aimPosY = obj.sq_GetAimPosY(obj.getXPos(), obj.getYPos(), false);
obj.getVar("UraniumBombSave").setInt(0, aimPosX);
obj.getVar("UraniumBombSave").setInt(1, aimPosY);
local offsetX = -350;
if(obj.getDirection() == ENUM_DIRECTION_LEFT) offsetX = 350;
local aniPath = "passiveobject/actionobject/monster/cartelcommand/animation/gunneraimpointmark2.ani";
createOnlyDrawObject_ATGunner_bykk(obj,aniPath,true,obj.getDirection(),aimPosX,aimPosY,0,ENUM_DRAWLAYER_BOTTOM);
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_URANIUMBOMB, -1, 7, 1.0) + 100;
local totalDamage2 = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_URANIUMBOMB, -1, 8, 1.0) + 100;
local sizeRate = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_URANIUMBOMB, -1, 5, 0.5) + 100;
local skillLevel = sq_GetSkillLevel(obj, SKILL_BYKK_URANIUMBOMB);
local prob = sq_GetLevelData(obj, SKILL_BYKK_URANIUMBOMB, 1, skillLevel);
local time = sq_GetLevelData(obj, SKILL_BYKK_URANIUMBOMB, 3, skillLevel);
local damage = sq_GetLevelData(obj, SKILL_BYKK_URANIUMBOMB, 4, skillLevel);
local level = sq_GetSkillLevel(obj, 174) + 10;
sq_BinaryStartWrite();
sq_BinaryWriteDword(2);
sq_BinaryWriteDword(SKILL_BYKK_URANIUMBOMB);
sq_BinaryWriteDword(1);
sq_BinaryWriteDword(totalDamage);
sq_BinaryWriteDword(totalDamage2);
sq_BinaryWriteDword(sizeRate);
sq_BinaryWriteDword(prob);
sq_BinaryWriteDword(time);
sq_BinaryWriteDword(damage);
sq_BinaryWriteDword(level);
sq_SendCreatePassiveObjectPacketPos(obj, PASSIVEOBJ_BYKK_ATGUNNER, 0, aimPosX + offsetX, aimPosY, 500);
obj.sq_IntVectClear();
obj.sq_IntVectPush(1);
obj.sq_AddSetStatePacket(STATE_BYKK_URANIUMBOMB, STATE_PRIORITY_AUTO, true);
}
break;
}
}
function onKeyFrameFlag_UraniumBomb(obj, flagIndex)
{
if(!obj) return false;
switch(flagIndex){
}
return true;
}
function onTimeEvent_UraniumBomb(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
switch(timeEventIndex){
case 1:
local offsetX = -350;
if(obj.getDirection() == ENUM_DIRECTION_LEFT) offsetX = 350;
local aimPosX = obj.sq_GetAimPosX(obj.getXPos(), obj.getYPos(), false);
local aimPosY = obj.sq_GetAimPosY(obj.getXPos(), obj.getYPos(), false);
obj.getVar("UraniumBombSave").setInt(0, aimPosX);
obj.getVar("UraniumBombSave").setInt(1, aimPosY);
local aniPath = "passiveobject/actionobject/monster/cartelcommand/animation/gunneraimpointmark2.ani";
createOnlyDrawObject_ATGunner_bykk(obj,aniPath,true,obj.getDirection(),aimPosX,aimPosY,0,ENUM_DRAWLAYER_BOTTOM);
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_URANIUMBOMB, -1, 7, 1.0) + 100;
local totalDamage2 = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_URANIUMBOMB, -1, 8, 1.0) + 100;
local sizeRate = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_URANIUMBOMB, -1, 5, 0.5) + 100;
local skillLevel = sq_GetSkillLevel(obj, SKILL_BYKK_URANIUMBOMB);
local prob = sq_GetLevelData(obj, SKILL_BYKK_URANIUMBOMB, 1, skillLevel);
local time = sq_GetLevelData(obj, SKILL_BYKK_URANIUMBOMB, 3, skillLevel);
local damage = sq_GetLevelData(obj, SKILL_BYKK_URANIUMBOMB, 4, skillLevel);
local level = sq_GetSkillLevel(obj, 174) + 10;
sq_BinaryStartWrite();
sq_BinaryWriteDword(2);
sq_BinaryWriteDword(SKILL_BYKK_URANIUMBOMB);
sq_BinaryWriteDword(1);
sq_BinaryWriteDword(totalDamage);
sq_BinaryWriteDword(totalDamage2);
sq_BinaryWriteDword(sizeRate);
sq_BinaryWriteDword(prob);
sq_BinaryWriteDword(time);
sq_BinaryWriteDword(damage);
sq_BinaryWriteDword(level);
sq_SendCreatePassiveObjectPacketPos(obj, PASSIVEOBJ_BYKK_ATGUNNER, 0, aimPosX + offsetX, aimPosY, 500);
obj.sq_IntVectClear();
obj.sq_IntVectPush(1);
obj.sq_AddSetStatePacket(STATE_BYKK_URANIUMBOMB, STATE_PRIORITY_AUTO, true);
break;
case 2:
local offsetX = -350;
if(obj.getDirection() == ENUM_DIRECTION_LEFT) offsetX = 350;
local aimPosX = obj.getVar("UraniumBombSave").getInt(0);
local aimPosY = obj.getVar("UraniumBombSave").getInt(1);
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_URANIUMBOMB, -1, 7, 1.0) + 100;
local totalDamage2 = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_URANIUMBOMB, -1, 8, 1.0) + 100;
local sizeRate = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_URANIUMBOMB, -1, 5, 0.5) + 100;
local skillLevel = sq_GetSkillLevel(obj, SKILL_BYKK_URANIUMBOMB);
local prob = sq_GetLevelData(obj, SKILL_BYKK_URANIUMBOMB, 1, skillLevel);
local time = sq_GetLevelData(obj, SKILL_BYKK_URANIUMBOMB, 3, skillLevel);
local damage = sq_GetLevelData(obj, SKILL_BYKK_URANIUMBOMB, 4, skillLevel);
local level = sq_GetSkillLevel(obj, 174) + 10;
sq_BinaryStartWrite();
sq_BinaryWriteDword(2);
sq_BinaryWriteDword(SKILL_BYKK_URANIUMBOMB);
sq_BinaryWriteDword(1);
sq_BinaryWriteDword(totalDamage);
sq_BinaryWriteDword(totalDamage2);
sq_BinaryWriteDword(sizeRate);
sq_BinaryWriteDword(prob);
sq_BinaryWriteDword(time);
sq_BinaryWriteDword(damage);
sq_BinaryWriteDword(level);
sq_SendCreatePassiveObjectPacketPos(obj, PASSIVEOBJ_BYKK_ATGUNNER, 0, aimPosX + offsetX, aimPosY, 500);
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
}
}
function onEndState_UraniumBomb(obj, new_state)
{
if(!obj) return;
if(new_state != STATE_BYKK_URANIUMBOMB){
sq_EndDrawCastGauge(obj);
obj.sq_RemoveAimPointMark();
}
}
//X-2太阳神光炮
function checkExecutableSkill_Solarsystem(obj)
{
if (!obj) return false;
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_SOLARSYSTEM);
if (isUse){
obj.sq_IsEnterSkillLastKeyUnits(SKILL_BYKK_SOLARSYSTEM);
obj.getVar("solarsystem_bool").setBool(0, false);
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_SOLARSYSTEM, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_Solarsystem(obj)
{
if (!obj) return false;
return true;
}
function onSetState_Solarsystem(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(180);
obj.sq_PlaySound("R_FG_SOLASYSTEM_CAST");
obj.sq_PlaySound("SOLASYSTEM_READY");
if(sq_GetSkillLevel(obj, SKILL_BYKK_HITONSUBWEAPON) > 0) setHitonSubweapon_bykk(obj);
break;
case 1:
obj.sq_SetCurrentAnimation(171);
break;
case 2:
obj.sq_SetCurrentAnimation(175);
obj.sq_PlaySound("SOLASYSTEM_SHOT");
sq_flashScreen(obj, 0, 400, 100, 204, sq_RGB(0,0,0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
//[OFFSET]`shoot` 150 0 63
//[OFFSET]`recoil start` 0 0 0
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_SOLARSYSTEM, -1, 1, 1.0);
local damage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_SOLARSYSTEM, -1, 0, 1.0);
createSkillPassive_ATGunner_bykk(obj,obj,PASSIVEOBJ_BYKK_ATGUNNER,150,0,63,obj.getDirection(),2,SKILL_BYKK_SOLARSYSTEM,1,totalDamage,damage,0,0,0,0,0,0);
break;
case 3:
obj.sq_SetCurrentAnimation(172);
obj.sq_PlaySound("SOLASYSTEM_LSHOT_TRANS");
sq_SetMyShake(obj, 1, 80);
break;
}
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
}
function onEndCurrentAni_Solarsystem(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
local sub = 1;
if(obj.getVar("solarsystem_bool").getBool(0)) sub = 3;
obj.sq_IntVectClear();
obj.sq_IntVectPush(sub);
obj.sq_AddSetStatePacket(STATE_BYKK_SOLARSYSTEM, STATE_PRIORITY_AUTO, true);
break;
case 2:
case 3:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
}
}
function onProcCon_Solarsystem(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
if(sq_GetSkillLevel(obj, SKILL_BYKK_SOLARSYSTEM) > 0 && !sq_GetSkill(obj, SKILL_BYKK_LASERRIFLE).isInCoolTime()){
obj.setSkillCommandEnable(SKILL_BYKK_LASERRIFLE,true);
local b_useskill = obj.sq_IsEnterSkill(SKILL_BYKK_LASERRIFLE);
if(b_useskill != -1){
obj.startSkillCoolTime(SKILL_BYKK_LASERRIFLE, sq_GetSkillLevel(obj, SKILL_BYKK_LASERRIFLE), -1);
obj.getVar("solarsystem_bool").setBool(0, true);
return;
}
}
break;
case 1:
if(sq_GetSkillLevel(obj, SKILL_BYKK_SOLARSYSTEM) > 0 && !sq_GetSkill(obj, SKILL_BYKK_LASERRIFLE).isInCoolTime()){
obj.setSkillCommandEnable(SKILL_BYKK_LASERRIFLE,true);
local b_useskill = obj.sq_IsEnterSkill(SKILL_BYKK_LASERRIFLE);
if(b_useskill != -1){
obj.startSkillCoolTime(SKILL_BYKK_LASERRIFLE, sq_GetSkillLevel(obj, SKILL_BYKK_LASERRIFLE), -1);
obj.sq_IntVectClear();
obj.sq_IntVectPush(3);
obj.sq_AddSetStatePacket(STATE_BYKK_SOLARSYSTEM, STATE_PRIORITY_AUTO, true);
return;
}
}
local bDownKey = obj.isDownSkillLastKey();
if(!bDownKey){
obj.sq_IntVectClear();
obj.sq_IntVectPush(2);
obj.sq_AddSetStatePacket(STATE_BYKK_SOLARSYSTEM, STATE_PRIORITY_AUTO, true);
return;
}
break;
}
}
function onKeyFrameFlag_Solarsystem(obj, flagIndex)
{
if(!obj) return false;
switch(flagIndex){
case 301:
obj.sq_PlaySound("R_FG_SOLASYSTEM_FIN");
sq_SetMyShake(obj, 3, 200);
break;
case 402:
obj.sq_PlaySound("R_FG_SOLASYSTEM_LSHOT");
break;
case 406:
obj.sq_PlaySound("SOLASYSTEM_LSHOT_BURST");
sq_flashScreen(obj, 0, 200, 200, 204, sq_RGB(0,0,0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
sq_SetMyShake(obj, 6, 350);
//[OFFSET] `shoot` -20 0 -1
//[OFFSET] `recoil start` 0 0 0
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_SOLARSYSTEM, -1, 1, 0.25);
local totalDamage2 = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_SOLARSYSTEM, -1, 1, 1.0);
// local totalDamage2 = (obj.sq_GetBonusRateWithPassive(SKILL_BYKK_LASERRIFLE, -1, 1, 0.2) + 100) * (100 + sq_GetLevelData(obj, SKILL_BYKK_LASERRIFLECHARGE, 1, sq_GetSkillLevel(obj, SKILL_BYKK_LASERRIFLECHARGE))) / 100;
print("totalDamage2 = "+totalDamage2);
local damage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_SOLARSYSTEM, -1, 0, 1.0);
createSkillPassive_ATGunner_bykk(obj,obj,PASSIVEOBJ_BYKK_ATGUNNER,-20,0,-1,obj.getDirection(),2,SKILL_BYKK_SOLARSYSTEM,3,totalDamage,totalDamage2,damage,0,0,0,0,0);
break;
case 407:
obj.sq_PlaySound("R_FG_SOLASYSTEM_FIN");
break;
}
return true;
}
function onTimeEvent_Solarsystem(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
}
function onEndState_Solarsystem(obj, new_state)
{
if(!obj) return;
}
//远古粒子炮
function checkExecutableSkill_AncientTrigger(obj)
{
if (!obj) return false;
obj.getVar("AncientTrigger_bool").setBool(0, false);
obj.getVar("AncientTrigger_bool").setBool(1, false);
obj.getVar("AncientTrigger_bool").setBool(2, false);
obj.getVar("AncientTrigger_obj").clear_obj_vector();
if(sq_GetSkillLevel(obj, SKILL_BYKK_ANCIENTTRIGGER) >= 9) sq_SendMessage(obj, 0, 1, 0);
}
function checkCommandEnable_AncientTrigger(obj)
{
if (!obj) return false;
return true;
}
function onAfterSetState_AncientTrigger(obj, state, datas, isResetTimer)
{
if(!obj) return;
local speedRate = sq_GetLevelData(obj, SKILL_BYKK_ANCIENTTRIGGER, 7, sq_GetSkillLevel(obj, SKILL_BYKK_ANCIENTTRIGGER)) + 100;
if(speedRate > 100){
local currentAni = obj.getCurrentAnimation();
currentAni.setSpeedRate(speedRate.tofloat());
}
}
function onEndCurrentAni_AncientTrigger(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
}
}
function onProcCon_AncientTrigger(obj)
{
if(!obj) return;
sq_SetKeyxEnable(obj, E_JUMP_COMMAND, true);
if(sq_IsEnterCommand(obj, E_JUMP_COMMAND)){
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_IntVectPush(0);
obj.sq_IntVectPush(100);
obj.sq_AddSetStatePacket(STATE_JUMP, STATE_PRIORITY_AUTO, true);
}
}
function onKeyFrameFlag_AncientTrigger(obj, flagIndex)
{
if(!obj) return false;
switch(flagIndex){
}
return true;
}
function onTimeEvent_AncientTrigger(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
}
function onEndState_AncientTrigger(obj, new_state)
{
if(!obj) return;
if(new_state != 44) sq_SendMessage(obj, 0, 0, 0);
}
function onCreateObject_AncientTrigger(obj, createObject)
{
if(createObject.isObjectType(OBJECTTYPE_PASSIVE)){
local colObj = sq_GetCNRDObjectToCollisionObject(createObject);
local id = colObj.getCollisionObjectIndex();
// print(id);
if(id == 22270){
obj.getVar("AncientTrigger_att").clear_obj_vector();
obj.getVar("AncientTrigger_att").push_obj_vector(colObj);
}
// if(id == 22300){
// obj.getVar("AncientTrigger_att").clear_obj_vector();
// obj.getVar("AncientTrigger_att").push_obj_vector(colObj);
// }
}
}
//等离子发射器
function checkExecutableSkill_Plasmaboost(obj)
{
if (!obj) return false;
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_PLASMABOOST);
if (isUse){
obj.sq_IsEnterSkillLastKeyUnits(SKILL_BYKK_PLASMABOOST);
obj.getVar("plasmaboost_att").clear_obj_vector();
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_PLASMABOOST, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_Plasmaboost(obj)
{
if (!obj) return false;
return true;
}
function onSetState_Plasmaboost(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(165);
if(sq_GetSkillLevel(obj, SKILL_BYKK_HITONSUBWEAPON) > 0) setHitonSubweapon_bykk(obj);
break;
case 1://LOOP
obj.sq_SetCurrentAnimation(164);
if(sq_GetSkillLevel(obj, SKILL_BYKK_PANDORA_01) > 0) obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/2_blaster/atpandora01/lv95pandora01_05.ani"), 50, 0);
break;
case 2://LOOP_TALISMAN
obj.sq_SetCurrentAnimation(162);
if(sq_GetSkillLevel(obj, SKILL_BYKK_PANDORA_01) > 0) obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/2_blaster/atpandora01/lv95pandora01_05.ani"), 50, 0);
obj.setTimeEvent(1, 500, 1, false);
break;
case 3:
obj.sq_SetCurrentAnimation(163);
local attackObj = obj.getVar("plasmaboost_att").get_obj_vector(0);
if(attackObj){
local colObj = sq_GetCNRDObjectToCollisionObject(attackObj);
colObj.addSetStatePacket(21, null, STATE_PRIORITY_AUTO, false, "");
}
break;
}
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
}
function onEndCurrentAni_Plasmaboost(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
local sub = 1;
if(sq_GetIntData(obj, SKILL_BYKK_PLASMABOOST, 2) > 0) sub = 2;//护石
obj.sq_IntVectClear();
obj.sq_IntVectPush(sub);
obj.sq_AddSetStatePacket(STATE_BYKK_PLASMABOOST, STATE_PRIORITY_AUTO, true);
break;
case 3:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
}
}
function onProcCon_Plasmaboost(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 1:
local bDownKey = obj.isDownSkillLastKey();
local stateTime = obj.sq_GetStateTimer();
local maxTime = sq_GetLevelData(obj, SKILL_BYKK_PLASMABOOST, 1, sq_GetSkillLevel(obj, SKILL_BYKK_PLASMABOOST));
if(!bDownKey || stateTime >= maxTime){
obj.sq_IntVectClear();
obj.sq_IntVectPush(3);
obj.sq_AddSetStatePacket(STATE_BYKK_PLASMABOOST, STATE_PRIORITY_AUTO, true);
}
break;
}
}
function onKeyFrameFlag_Plasmaboost(obj, flagIndex)
{
if(!obj) return false;
switch(flagIndex){
case 1:
obj.sq_PlaySound("FG_HIGH_SLIDING");
obj.sq_PlaySound("SUBWEAPON_DRAW");
obj.sq_PlaySound("PLASMA_SHOT");
break;
case 4:
//[OFFSET] `Create Plasma` 92 0 68
//[OFFSET] `create Dust` -100 0 0
//[OFFSET] `create Shoot Effect` 140 0 68
if(sq_GetIntData(obj, SKILL_BYKK_PLASMABOOST, 2) > 0) sq_AddDrawOnlyAniFromParent(obj, "character/gunner/effect/animation/2_blaster/plasmaboost/atgunner/plasmaboost_talisman/plasmabooster_talismansonicboom_force_att_circle_3.ani", 148, 0, 68);//护石
sq_AddDrawOnlyAniFromParent(obj, "character/gunner/effect/animation/2_blaster/plasmaboost/atgunner/plasmaboost_talisman/plasmabooster_talismandust_01.ani", -100, 0, 0);
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_PLASMABOOST, -1, 0, 1.0) + 100;
local hitTime = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_PLASMABOOST, -1, 2, 1.0) + 100;
local holdTime = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_PLASMABOOST, -1, 4, 1.0) + 100;
createSkillPassive_ATGunner_bykk(obj,obj,PASSIVEOBJ_BYKK_ATGUNNER,92,0,68,obj.getDirection(),2,SKILL_BYKK_PLASMABOOST,1,totalDamage,hitTime,holdTime,0,0,0,0,0);
local moveRate = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_PLASMABOOST, -1, 3, 1.0) + 100;
local speed = (8.0 / moveRate.tofloat() * 1000.0).tointeger();
obj.setTimeEvent(2, speed, -1, false);
break;
}
return true;
}
function onTimeEvent_Plasmaboost(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
switch(timeEventIndex){
case 1:
obj.sq_IntVectClear();
obj.sq_IntVectPush(3);
obj.sq_AddSetStatePacket(STATE_BYKK_PLASMABOOST, STATE_PRIORITY_AUTO, true);
break;
case 2:
local xpos = sq_GetXPos(obj), ypos = sq_GetYPos(obj);
if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_UP, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(xpos,ypos - 1)) sq_setCurrentAxisPos(obj, 1, ypos - 1);
if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_LEFT, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(xpos - 1,ypos)) sq_setCurrentAxisPos(obj, 0, xpos - 1);
return;
}
else if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_RIGHT, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(xpos + 1,ypos)) sq_setCurrentAxisPos(obj, 0, xpos + 1);
return;
}
}
else if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_DOWN, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(xpos,ypos + 1)) sq_setCurrentAxisPos(obj, 1, ypos + 1);
if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_LEFT, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(xpos - 1,ypos)) sq_setCurrentAxisPos(obj, 0, xpos - 1);
return;
}
else if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_RIGHT, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(xpos + 1,ypos)) sq_setCurrentAxisPos(obj, 0, xpos + 1);
return;
}
}
if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_LEFT, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(xpos - 1,ypos)) sq_setCurrentAxisPos(obj, 0, xpos - 1);
return;
}
else if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_RIGHT, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(xpos + 1,ypos)) sq_setCurrentAxisPos(obj, 0, xpos + 1);
return;
}
break;
}
}
function onEndState_Plasmaboost(obj, new_state)
{
if(!obj) return;
if(new_state != STATE_BYKK_PLASMABOOST){
local attackObj = obj.getVar("plasmaboost_att").get_obj_vector(0);
if(attackObj){
local colObj = sq_GetCNRDObjectToCollisionObject(attackObj);
if(colObj.getState() != 21) colObj.addSetStatePacket(21, null, STATE_PRIORITY_AUTO, false, "");
}
}
}
//FSC-7
FSC7_STONE <- 1
function checkExecutableSkill_Fsc_7(obj)
{
if (!obj) return false;
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_FSC_7);
if (isUse){
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_FSC_7, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_Fsc_7(obj)
{
if (!obj) return false;
if(FSC7_STONE == 1) return false;
return true;
}
function onSetState_Fsc_7(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(153);
if(sq_GetSkillLevel(obj, SKILL_BYKK_HITONSUBWEAPON) > 0) setHitonSubweapon_bykk(obj);
break;
case 1:
obj.sq_SetCurrentAnimation(154);
if(sq_GetSkillLevel(obj, SKILL_BYKK_HITONSUBWEAPON) > 0) setHitonSubweapon_bykk(obj);
break;
}
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
}
function onEndCurrentAni_Fsc_7(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
case 1:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
}
}
function onProcCon_Fsc_7(obj)
{
if(!obj) return;
}
function onKeyFrameFlag_Fsc_7(obj, flagIndex)
{
if(!obj) return false;
switch(flagIndex){
case 101:
obj.sq_PlaySound("FG_MROSE_02");
obj.sq_PlaySound("MSC_READY");
break;
case 108:
obj.sq_PlaySound("MSC_SHOT");
sq_SetMyShake(obj, 5, 150);
//[OFFSET] `Create Bullet` 139 0 84
local bonusRate = 1.0;
if(FSC7_STONE == 1) bonusRate = 0.64;
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_FSC_7, -1, 0, bonusRate);
local totalDamage2 = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_FSC_7, -1, 1, bonusRate);
local hitMax = sq_GetIntData(obj, SKILL_BYKK_FSC_7, 1);
local sizeRate = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_FSC_7, -1, 2, 1.0) + 100;
createSkillPassive_ATGunner_bykk(obj,obj,PASSIVEOBJ_BYKK_ATGUNNER,139,0,84,obj.getDirection(),2,SKILL_BYKK_FSC_7,1,totalDamage,totalDamage2,hitMax,sizeRate,0,0,0,0);
break;
}
return true;
}
function onTimeEvent_Fsc_7(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
}
function onEndState_Fsc_7(obj, new_state)
{
if(!obj) return;
}
//FM-92 mk2 SW榴弹
function checkExecutableSkill_StingerEx(obj)
{
if (!obj) return false;
if(sq_GetLevelData(obj, SKILL_BYKK_STINGEREX, 11, sq_GetSkillLevel(obj, SKILL_BYKK_STINGEREX)) < 1) return false;//护石
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_STINGEREX);
if (isUse){
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_STINGEREX, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_StingerEx(obj)
{
if (!obj) return false;
return true;
}
function onSetState_StingerEx(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(181);
obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/2_blaster/subweapon/stinger/atuponce1a.ani"), 0, 0);
if(sq_GetSkillLevel(obj, SKILL_BYKK_HITONSUBWEAPON) > 0) setHitonSubweapon_bykk(obj);
break;
case 1:
obj.sq_SetCurrentAnimation(182);
obj.sq_AddStateLayerAnimation(3,obj.sq_CreateCNRDAnimation("effect/animation/2_blaster/subweapon/stinger/atuponce2a.ani"), 0, 0);
obj.sq_PlaySound("STINGER_SHOT");
sq_AddDrawOnlyAniFromParent(obj, "character/gunner/effect/animation/2_blaster/subweapon/stinger/shoot1.ani", 0, 0, 0);
obj.setTimeEvent(1, 50, 1, false);
break;
}
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
}
function onEndCurrentAni_StingerEx(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
obj.sq_IntVectClear();
obj.sq_IntVectPush(1);
obj.sq_AddSetStatePacket(STATE_BYKK_STINGEREX, STATE_PRIORITY_AUTO, true);
break;
case 1:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
}
}
function onProcCon_StingerEx(obj)
{
if(!obj) return;
}
function onKeyFrameFlag_StingerEx(obj, flagIndex)
{
if(!obj) return false;
switch(flagIndex){
}
return true;
}
function onTimeEvent_StingerEx(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
switch(timeEventIndex){
case 1:
sq_AddDrawOnlyAniFromParent(obj, "character/gunner/effect/animation/2_blaster/subweapon/stinger/shoot2dodge.ani", 0, 0, 0);
sq_AddDrawOnlyAniFromParent(obj, "character/gunner/effect/animation/2_blaster/subweapon/stinger/shoot2normal.ani", 0, 0, 0);
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_STINGEREX, -1, 0, 1.0);
local hitMax = sq_GetIntData(obj, SKILL_BYKK_STINGEREX, 4);
local sizeRate = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_STINGEREX, -1, 10, 1.0) + 100;
createSkillPassive_ATGunner_bykk(obj,obj,PASSIVEOBJ_BYKK_ATGUNNER,95,-1,135,obj.getDirection(),2,SKILL_BYKK_STINGEREX,1,totalDamage,hitMax,sizeRate,0,0,0,0,0);
break;
}
}
function onEndState_StingerEx(obj, new_state)
{
if(!obj) return;
}
//PT-15原始型压缩炮
function checkExecutableSkill_Pt_15(obj)
{
if (!obj) return false;
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_PT_15);
if (isUse){
obj.getVar("PT15_SUB").setInt(10, 1);
local sub = 0;
if(sq_GetIntData(obj, SKILL_BYKK_PT_15, 10) > 0) sub = 4; //护石
obj.getVar("PT15_BOOL").setBool(0, true);
obj.sq_IntVectClear();
obj.sq_IntVectPush(sub);
obj.sq_AddSetStatePacket(STATE_BYKK_PT_15, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_Pt_15(obj)
{
if (!obj) return false;
return true;
}
function onSetState_Pt_15(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(170);
break;
case 1://normalshot
obj.sq_SetCurrentAnimation(169);
break;
case 2://jumpshot
obj.sq_SetCurrentAnimation(168);
break;
case 3://backshot
obj.sq_SetCurrentAnimation(166);
break;
case 4://equip_body
obj.sq_SetCurrentAnimation(167);
break;
}
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
}
function onEndCurrentAni_Pt_15(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
local sub = obj.getVar("PT15_SUB").getInt(10);
if(sub == 2){
obj.getVar("PT15_MOVE").setInt(10, sq_GetXPos(obj));
obj.setTimeEvent(1, 5, 40, true);
}
obj.sq_IntVectClear();
obj.sq_IntVectPush(sub);
obj.sq_AddSetStatePacket(STATE_BYKK_PT_15, STATE_PRIORITY_AUTO, true);
break;
case 1:
case 3:
case 4:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
case 2:
obj.sq_IntVectClear();
obj.sq_IntVectPush(1);
obj.sq_IntVectPush(0);
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_JUMP, STATE_PRIORITY_AUTO, true);
break;
}
}
function onProcCon_Pt_15(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
if(sq_GetIntData(obj, SKILL_BYKK_PT_15, 10) > 0) break; //护石
if(obj.getVar("PT15_BOOL").getBool(0)){
if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_DOWN, ENUM_SUBKEY_TYPE_ALL)){
obj.getVar("PT15_BOOL").setBool(0, false);
obj.getVar("PT15_SUB").setInt(10, 2);
}
else if((sq_IsKeyDown(OPTION_HOTKEY_MOVE_UP, ENUM_SUBKEY_TYPE_ALL)) || (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("PT15_BOOL").setBool(0, false);
obj.getVar("PT15_SUB").setInt(10, 3);
}
}
break;
}
}
function onKeyFrameFlag_Pt_15(obj, flagIndex)
{
if(!obj) return false;
switch(flagIndex){
case 1000:
obj.sq_PlaySound("FG_PROTOTYPE");
obj.sq_PlaySound("PROTOTYPE_RELOAD");
break;
case 1114:
obj.sq_PlaySound("PROTOTYPE_AIR_02");
sq_flashScreen(obj,0,40,0,102, sq_RGB(255,255,255), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
sq_SetMyShake(obj, 6, 240);
//[OFFSET] `NormalShotPowered` 135 1 90
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_PT_15, -1, 3, 1.0) + 100;
local sizeRate = sq_GetIntData(obj, SKILL_BYKK_PT_15, 8) + sq_GetIntData(obj, SKILL_BYKK_PT_15, 9);
createSkillPassive_ATGunner_bykk(obj,obj,PASSIVEOBJ_BYKK_ATGUNNER,135,1,90,obj.getDirection(),2,SKILL_BYKK_PT_15,1,totalDamage,sizeRate,0,0,0,0,0,0);
break;
case 1116:
//[OFFSET] `WindExp` 604 0 91
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_PT_15, -1, 5, 1.0) + 100;
local sizeRate = sq_GetIntData(obj, SKILL_BYKK_PT_15, 8) + sq_GetIntData(obj, SKILL_BYKK_PT_15, 9);
createSkillPassive_ATGunner_bykk(obj,obj,PASSIVEOBJ_BYKK_ATGUNNER,604,0,91,obj.getDirection(),2,SKILL_BYKK_PT_15,2,totalDamage,sizeRate,0,0,0,0,0,0);
break;
case 1205:
//[OFFSET] `JumpShot` 86 0 -3
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_PT_15, -1, 5, 1.0) + 100;
local sizeRate = sq_GetIntData(obj, SKILL_BYKK_PT_15, 9);
createSkillPassive_ATGunner_bykk(obj,obj,PASSIVEOBJ_BYKK_ATGUNNER,86,0,-3 - sq_GetZPos(obj),obj.getDirection(),2,SKILL_BYKK_PT_15,3,totalDamage,sizeRate,0,0,0,0,0,0);
break;
case 1307:
obj.sq_PlaySound("PROTOTYPE_AIR_01");
sq_SetMyShake(obj, 6, 240);
break;
case 1308:
//[OFFSET] `NormalShot` 56 0 91
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_PT_15, -1, 1, 1.0) + 100;
local sizeRate = sq_GetIntData(obj, SKILL_BYKK_PT_15, 9);
createSkillPassive_ATGunner_bykk(obj,obj,PASSIVEOBJ_BYKK_ATGUNNER,56,0,91,obj.getDirection(),2,SKILL_BYKK_PT_15,1,totalDamage,sizeRate,0,0,0,0,0,0);
break;
case 1310:
//[OFFSET] `BackShot` 78 0 80
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_PT_15, -1, 1, 1.0) + 100;
local sizeRate = sq_GetIntData(obj, SKILL_BYKK_PT_15, 8) + sq_GetIntData(obj, SKILL_BYKK_PT_15, 9);
createSkillPassive_ATGunner_bykk(obj,obj,PASSIVEOBJ_BYKK_ATGUNNER,-78,0,80,sq_GetOppositeDirection(obj.getDirection()),2,SKILL_BYKK_PT_15,1,totalDamage,sizeRate,0,0,0,0,0,0);
break;
case 1400:
obj.sq_PlaySound("FG_PROTOTYPE");
//[OFFSET] `CreateEquipedObject` 0 0 0
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_PT_15, -1, 3, 1.0) + obj.sq_GetBonusRateWithPassive(SKILL_BYKK_PT_15, -1, 5, 1.0);
local sizeRate = sq_GetIntData(obj, SKILL_BYKK_PT_15, 9);
print("sizeRate = "+sizeRate);
createSkillPassive_ATGunner_bykk(obj,obj,PASSIVEOBJ_BYKK_ATGUNNER,0,0,0,obj.getDirection(),2,SKILL_BYKK_PT_15,4,totalDamage,sizeRate,0,0,0,0,0,0);
break;
}
return true;
}
function onTimeEvent_Pt_15(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
switch(timeEventIndex){
case 1:
local vx = sq_GetAccel(0, 100, timeEventCount, 40, true);
local vz = sq_GetAccel(0, 200, timeEventCount, 40, true);
local dstX = sq_GetDistancePos(obj.getVar("PT15_MOVE").getInt(10), obj.getDirection(), vx);
sq_setCurrentAxisPos(obj, 0, dstX);
sq_setCurrentAxisPos(obj, 2, vz);
break;
}
}
function onEndState_Pt_15(obj, new_state)
{
if(!obj) return;
}
//火力全开
function checkExecutableSkill_Operationraze(obj)
{
if (!obj) return false;
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_OPERATIONRAZE);
if (isUse){
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_OPERATIONRAZE, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_Operationraze(obj)
{
if (!obj) return false;
return true;
}
function onSetState_Operationraze(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(155);
sq_AddDrawOnlyAniFromParent(obj, "character/gunner/effect/animation/2_blaster/atoperationraze/start/startbackoperation_02.ani", 0, 0, 0);
sq_AddDrawOnlyAniFromParent(obj, "character/gunner/effect/animation/2_blaster/atoperationraze/start/startfront1_02.ani", 0, 0, 0);
sq_AddDrawOnlyAniFromParent(obj, "character/gunner/effect/animation/2_blaster/atoperationraze/start/startfront2_01.ani", 0, 0, 0);
sq_CreateParticle("character/gunner/effect/particle/2_blaster/operationrazestart.ptl", obj, 0, 0, 0, true, 30, 0, 2);
local aniPath = "passiveobject/atgunner_bykk/2_blaster/animation/atoperationraze/startbottom_01.ani";
createOnlyDrawObject_ATGunner_bykk(obj,aniPath,true,obj.getDirection(),sq_GetXPos(obj),sq_GetYPos(obj),0,ENUM_DRAWLAYER_BOTTOM);
local currentAni = obj.getCurrentAnimation();
local delay = currentAni.getDelaySum(false);
obj.sq_SetXScrollStart(400, delay);
break;
case 1:
obj.sq_SetCurrentAnimation(156);
break;
case 2:
obj.sq_SetCurrentAnimation(157);
break;
case 3:
obj.sq_SetCurrentAnimation(158);
obj.setTimeEvent(1, 1200, 1, false);
obj.setTimeEvent(2, 80, -1, false);
obj.setTimeEvent(3, 80, -1, false);
obj.setTimeEvent(4, 500, 2, true);
break;
}
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
}
function onEndCurrentAni_Operationraze(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
case 1:
case 2:
obj.sq_IntVectClear();
obj.sq_IntVectPush(subState + 1);
obj.sq_AddSetStatePacket(STATE_BYKK_OPERATIONRAZE, STATE_PRIORITY_AUTO, true);
break;
}
}
function onProcCon_Operationraze(obj)
{
if(!obj) return;
}
function onKeyFrameFlag_Operationraze(obj, flagIndex)
{
if(!obj) return false;
switch(flagIndex){
case 1000:
obj.sq_PlaySound("FG_OPERATION_RAZE_01");
obj.sq_PlaySound("OPERATION_RAZE_CAST");
break;
case 1002: sq_SetMyShake(obj, 10, 500); break;
case 1://激光
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_OPERATIONRAZE, -1, 1, 1.0) + 100;
createSkillPassive_ATGunner_bykk(obj,obj,PASSIVEOBJ_BYKK_ATGUNNER,0,0,0,obj.getDirection(),2,SKILL_BYKK_OPERATIONRAZE,1,totalDamage,0,0,0,0,0,0,0);
break;
case 2001://小激光
// sq_AddDrawOnlyAniFromParent(obj, "character/gunner/effect/animation/2_blaster/atoperationraze/operation/workoperationlightning_04.ani", 0, 0, 0);
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_OPERATIONRAZE, -1, 1, 1.0) + 100;
createSkillPassive_ATGunner_bykk(obj,obj,PASSIVEOBJ_BYKK_ATGUNNER,0,0,0,obj.getDirection(),2,SKILL_BYKK_OPERATIONRAZE,2,totalDamage,0,0,0,0,0,0,0);
break;
}
return true;
}
function onTimeEvent_Operationraze(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
switch(timeEventIndex){
case 1:
sq_CreateParticle("character/gunner/effect/particle/2_blaster/operationrazedestroy.ptl", obj, 0, 0, 0, true, 30, 0, 2);
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_OPERATIONRAZE, -1, 3, 1.0) + 100;
createSkillPassive_ATGunner_bykk(obj,obj,PASSIVEOBJ_BYKK_ATGUNNER,200,0,500,obj.getDirection(),2,SKILL_BYKK_OPERATIONRAZE,6,totalDamage,0,0,0,0,0,0,0);
createSkillPassive_ATGunner_bykk(obj,obj,PASSIVEOBJ_BYKK_ATGUNNER,450,0,500,obj.getDirection(),2,SKILL_BYKK_OPERATIONRAZE,6,totalDamage,0,0,0,0,0,0,0);
break;
case 2:
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_OPERATIONRAZE, -1, 2, 1.0) + 100;
createSkillPassive_ATGunner_bykk(obj,obj,PASSIVEOBJ_BYKK_ATGUNNER,88,0,35,obj.getDirection(),2,SKILL_BYKK_OPERATIONRAZE,3,totalDamage,0,0,0,0,0,0,0);
break;
case 3:
sq_AddDrawOnlyAniFromParent(obj, "passiveobject/atgunner_bykk/2_blaster/animation/atoperationraze/bullet02.ani", 0, 0, -15);
sq_AddDrawOnlyAniFromParent(obj, "passiveobject/atgunner_bykk/2_blaster/animation/atoperationraze/bullet02.ani", 0, 0, 5);
sq_AddDrawOnlyAniFromParent(obj, "passiveobject/atgunner_bykk/2_blaster/animation/atoperationraze/bullet01.ani", 0, 0, 0);
break;
case 4:
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_OPERATIONRAZE, -1, 2, 1.0) + 100;
createSkillPassive_ATGunner_bykk(obj,obj,PASSIVEOBJ_BYKK_ATGUNNER,-40,0,90,obj.getDirection(),2,SKILL_BYKK_OPERATIONRAZE,4,totalDamage,0,0,0,0,0,0,0);
break;
}
}
function onEndState_Operationraze(obj, new_state)
{
if(!obj) return;
if(new_state != STATE_BYKK_OPERATIONRAZE){
obj.sq_SetXScrollStop(0);
}
}
//UHT-03爆炎喷火器
function checkExecutableSkill_Phlegethon(obj)
{
if (!obj) return false;
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_PHLEGETHON);
if (isUse){
obj.sq_IsEnterSkillLastKeyUnits(SKILL_BYKK_PHLEGETHON);
obj.getVar("phlegethon_att").clear_obj_vector();
obj.getVar("phlegethon_bool").setBool(0, true);
obj.getVar("phlegethon_sub").setInt(10, 0);
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_BYKK_PHLEGETHON, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_Phlegethon(obj)
{
if (!obj) return false;
return true;
}
function onSetState_Phlegethon(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(161);
obj.sq_PlaySound("R_FG_PHLEGETHON_01");
obj.sq_PlaySound("PHLEGETHON_CAST");
break;
case 1:
obj.sq_SetCurrentAnimation(160);
if(sq_GetSkillLevel(obj, SKILL_BYKK_PANDORA_01) > 0) obj.sq_AddStateLayerAnimation(1,obj.sq_CreateCNRDAnimation("effect/animation/2_blaster/atpandora01/lv95pandora01_05.ani"), 50, 0);
if(obj.isMyControlObject()) obj.sq_SetXScrollStart(250, 200);
local totalDamage = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_PHLEGETHON, -1, 0, 1.0);
local totalDamage2 = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_FLAMETHROWER, -1, 4, 1.0) + 100;
local totalDamage3 = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_FLAMETHROWERBOOST, -1, 4, 1.0) + 100;
local hitTime = sq_GetIntData(obj, SKILL_BYKK_PHLEGETHON, 1);
local sub = obj.getVar("phlegethon_sub").getInt(10);
createSkillPassive_ATGunner_bykk(obj,obj,PASSIVEOBJ_BYKK_ATGUNNER,0,1,0,obj.getDirection(),2,SKILL_BYKK_PHLEGETHON,1,totalDamage,totalDamage2,totalDamage3,hitTime,sub,0,0,0);
local lifeTime = sq_GetIntData(obj, SKILL_BYKK_PHLEGETHON, 0) + 1000;
obj.setTimeEvent(1, lifeTime, 1, false);
if(obj.getVar("phlegethon_bool").getBool(0) == false){
obj.sq_AddStateLayerAnimation(-10001,obj.sq_CreateCNRDAnimation("effect/animation/2_blaster/atphlegethon/boostloopback_00.ani"), 0, 0);
obj.sq_AddStateLayerAnimation(-10000,obj.sq_CreateCNRDAnimation("effect/animation/2_blaster/atphlegethon/phlegethonloopback_00.ani"), 0, 0);
obj.sq_PlaySound("R_FG_PHLEGETHON_02");
obj.sq_PlaySound("PHLEGETHON_FIRE_EX");
}
local moveRate = obj.sq_GetBonusRateWithPassive(SKILL_BYKK_PHLEGETHON, -1, 1, 1.0) + 100;
local speed = (8.0 / moveRate.tofloat() * 1000.0).tointeger();
obj.setTimeEvent(2, speed, -1, false);
break;
case 2:
obj.removeAllTimeEvent();
obj.sq_SetCurrentAnimation(159);
obj.sq_SetXScrollStop(200);
if(obj.getVar("phlegethon_bool").getBool(0) == false){
obj.sq_AddStateLayerAnimation(-10001,obj.sq_CreateCNRDAnimation("effect/animation/2_blaster/atphlegethon/boostendback_00.ani"), 0, 0);
obj.sq_AddStateLayerAnimation(-10001,obj.sq_CreateCNRDAnimation("effect/animation/2_blaster/atphlegethon/phlegethonendback_01.ani"), 0, 0);
obj.sq_PlaySound("PHLEGETHON_FIRE_EX_END");
}
else obj.sq_PlaySound("PHLEGETHON_FIRE_END");
//[OFFSET] `create bottom` 350 0 0
createSkillPassive_ATGunner_bykk(obj,obj,PASSIVEOBJ_BYKK_ATGUNNER,350,0,0,obj.getDirection(),2,SKILL_BYKK_PHLEGETHON,2,0,0,0,0,0,0,0,0);
local attackObj = obj.getVar("phlegethon_att").get_obj_vector(0);
if(attackObj){
local colObj = sq_GetCNRDObjectToCollisionObject(attackObj);
if(colObj.getState() != 22){
colObj.addSetStatePacket(22, null, STATE_PRIORITY_AUTO, false, "");
}
}
break;
}
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
}
function onEndCurrentAni_Phlegethon(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
obj.sq_IntVectClear();
obj.sq_IntVectPush(1);
obj.sq_AddSetStatePacket(STATE_BYKK_PHLEGETHON, STATE_PRIORITY_IGNORE_FORCE, true);
break;
case 2:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
}
}
function onProcCon_Phlegethon(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
if(obj.getVar("phlegethon_bool").getBool(0)){
if(sq_GetIntData(obj, SKILL_BYKK_PHLEGETHON, 4) > 0){
obj.getVar("phlegethon_bool").setBool(0, false);
obj.getVar("phlegethon_sub").setInt(10, 3);
break;
}
local skill = sq_GetSkill(obj, SKILL_BYKK_FLAMETHROWER);
local skill2 = sq_GetSkill(obj, SKILL_BYKK_FLAMETHROWERBOOST);
if(skill && !skill.isInCoolTime()){
obj.setSkillCommandEnable(SKILL_BYKK_FLAMETHROWER,true);
local b_useskill = obj.sq_IsEnterSkill(SKILL_BYKK_FLAMETHROWER);
if(b_useskill != -1){
obj.getVar("phlegethon_bool").setBool(0, false);
obj.startSkillCoolTime(SKILL_BYKK_FLAMETHROWER, sq_GetSkillLevel(obj, SKILL_BYKK_FLAMETHROWER), -1);
obj.getVar("phlegethon_sub").setInt(10, 1);
}
}
if(skill2 && !skill2.isInCoolTime()){
obj.setSkillCommandEnable(SKILL_BYKK_FLAMETHROWERBOOST,true);
local b_useskill = obj.sq_IsEnterSkill(SKILL_BYKK_FLAMETHROWERBOOST);
if(b_useskill != -1){
obj.getVar("phlegethon_bool").setBool(0, false);
obj.startSkillCoolTime(SKILL_BYKK_FLAMETHROWERBOOST, sq_GetSkillLevel(obj, SKILL_BYKK_FLAMETHROWERBOOST), -1);
obj.getVar("phlegethon_sub").setInt(10, 2);
}
}
}
break;
case 1:
local bDownKey = obj.isDownSkillLastKey();
if(!bDownKey){
obj.sq_IntVectClear();
obj.sq_IntVectPush(2);
obj.sq_AddSetStatePacket(STATE_BYKK_PHLEGETHON, STATE_PRIORITY_IGNORE_FORCE, true);
}
// if(obj.getVar("phlegethon_bool").getBool(0)){
// local skill = sq_GetSkill(obj, SKILL_BYKK_FLAMETHROWER);
// if(skill && !skill.isInCoolTime()){
// obj.setSkillCommandEnable(SKILL_BYKK_FLAMETHROWER,true);
// local b_useskill = obj.sq_IsEnterSkill(SKILL_BYKK_FLAMETHROWER);
// if(b_useskill != -1){
// obj.getVar("phlegethon_bool").setBool(0, false);
// obj.startSkillCoolTime(SKILL_BYKK_FLAMETHROWER, sq_GetSkillLevel(obj, SKILL_BYKK_FLAMETHROWER), -1);
// obj.sq_AddStateLayerAnimation(-10001,obj.sq_CreateCNRDAnimation("effect/animation/2_blaster/atphlegethon/boostloopback_00.ani"), 0, 0);
// obj.sq_AddStateLayerAnimation(-10000,obj.sq_CreateCNRDAnimation("effect/animation/2_blaster/atphlegethon/phlegethonloopback_00.ani"), 0, 0);
// obj.sq_PlaySound("R_FG_PHLEGETHON_02");
// obj.sq_PlaySound("PHLEGETHON_FIRE_EX");
// local attackObj = obj.getVar("phlegethon_att").get_obj_vector(0);
// if(attackObj){
// local colObj = sq_GetCNRDObjectToCollisionObject(attackObj);
// colObj.getVar("custom").setInt(13, 1);
// local state = colObj.getState();
// local totalDamage = colObj.getVar("custom").getInt(10) + colObj.getVar("custom").getInt(11);
// sq_SetCurrentAttackInfo(colObj, sq_GetCustomAttackInfo(colObj, 13));
// sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(colObj), totalDamage);
// colObj.addSetStatePacket(state, null, STATE_PRIORITY_AUTO, false, "");
// local hitTime = colObj.getVar("custom").getInt(14) / 5;
// colObj.stopTimeEvent(1);
// colObj.setTimeEvent(1, hitTime, -1 false);
// print("testt121");
// }
// }
// }
// skill = sq_GetSkill(obj, SKILL_BYKK_FLAMETHROWERBOOST);
// if(skill && !skill.isInCoolTime()){
// obj.setSkillCommandEnable(SKILL_BYKK_FLAMETHROWERBOOST,true);
// local b_useskill = obj.sq_IsEnterSkill(SKILL_BYKK_FLAMETHROWERBOOST);
// if(b_useskill != -1){
// obj.getVar("phlegethon_bool").setBool(0, false);
// obj.startSkillCoolTime(SKILL_BYKK_FLAMETHROWERBOOST, sq_GetSkillLevel(obj, SKILL_BYKK_FLAMETHROWERBOOST), -1);
// obj.sq_AddStateLayerAnimation(-10001,obj.sq_CreateCNRDAnimation("effect/animation/2_blaster/atphlegethon/boostloopback_00.ani"), 0, 0);
// obj.sq_AddStateLayerAnimation(-10000,obj.sq_CreateCNRDAnimation("effect/animation/2_blaster/atphlegethon/phlegethonloopback_00.ani"), 0, 0);
// obj.sq_PlaySound("R_FG_PHLEGETHON_02");
// obj.sq_PlaySound("PHLEGETHON_FIRE_EX");
// local attackObj = obj.getVar("phlegethon_att").get_obj_vector(0);
// if(attackObj){
// local colObj = sq_GetCNRDObjectToCollisionObject(attackObj);
// colObj.getVar("custom").setInt(13, 2);
// local state = colObj.getState();
// local totalDamage = colObj.getVar("custom").getInt(10) + colObj.getVar("custom").getInt(12);
// sq_SetCurrentAttackInfo(colObj, sq_GetCustomAttackInfo(colObj, 13));
// sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(colObj), totalDamage);
// colObj.addSetStatePacket(state, null, STATE_PRIORITY_AUTO, false, "");
// local hitTime = colObj.getVar("custom").getInt(14) / 5;
// colObj.stopTimeEvent(1);
// colObj.setTimeEvent(1, hitTime, -1 false);
// }
// }
// }
// }
break;
}
}
function onKeyFrameFlag_Phlegethon(obj, flagIndex)
{
if(!obj) return false;
switch(flagIndex){
// case 200: sq_SetMyShake(obj, 1, 20);
}
return true;
}
function onTimeEvent_Phlegethon(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
switch(timeEventIndex){
case 1:
obj.sq_IntVectClear();
obj.sq_IntVectPush(2);
obj.sq_AddSetStatePacket(STATE_BYKK_PHLEGETHON, STATE_PRIORITY_AUTO, true);
break;
case 2:
local xpos = sq_GetXPos(obj), ypos = sq_GetYPos(obj);
if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_UP, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(xpos,ypos - 1)) sq_setCurrentAxisPos(obj, 1, ypos - 1);
if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_LEFT, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(xpos - 1,ypos)) sq_setCurrentAxisPos(obj, 0, xpos - 1);
return;
}
else if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_RIGHT, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(xpos + 1,ypos)) sq_setCurrentAxisPos(obj, 0, xpos + 1);
return;
}
}
else if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_DOWN, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(xpos,ypos + 1)) sq_setCurrentAxisPos(obj, 1, ypos + 1);
if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_LEFT, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(xpos - 1,ypos)) sq_setCurrentAxisPos(obj, 0, xpos - 1);
return;
}
else if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_RIGHT, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(xpos + 1,ypos)) sq_setCurrentAxisPos(obj, 0, xpos + 1);
return;
}
}
if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_LEFT, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(xpos - 1,ypos)) sq_setCurrentAxisPos(obj, 0, xpos - 1);
return;
}
else if(sq_IsKeyDown(OPTION_HOTKEY_MOVE_RIGHT, ENUM_SUBKEY_TYPE_ALL)){
if(obj.isMovablePos(xpos + 1,ypos)) sq_setCurrentAxisPos(obj, 0, xpos + 1);
return;
}
break;
}
}
function onEndState_Phlegethon(obj, new_state)
{
if(!obj) return;
if(new_state != STATE_BYKK_PHLEGETHON){
local attackObj = obj.getVar("phlegethon_att").get_obj_vector(0);
if(attackObj){
local colObj = sq_GetCNRDObjectToCollisionObject(attackObj);
if(colObj.getState() != 22){
colObj.addSetStatePacket(22, null, STATE_PRIORITY_AUTO, false, "");
}
}
obj.sq_SetXScrollStop(200);
}
}
function getScrollBasisPos_Phlegethon(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
if (obj.isMyControlObject() && subState == 1){
local destX = sq_GetDistancePos(obj.getXPos(), obj.getDirection(), 250);
obj.sq_SetCameraScrollPosition(destX, obj.getYPos(), 0);
return true;
}
return false;
}
//X-1
function checkExecutableSkill_Extruder(obj)
{
if (!obj) return false;
local isUse = obj.sq_IsUseSkill(71);
if (isUse){
obj.sq_IntVectClear();
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(71, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_Extruder(obj)
{
if (!obj) return false;
return true;
}
function onSetState_Extruder(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(145);
obj.sq_AddStateLayerAnimation(10001,obj.sq_CreateCNRDAnimation("effect/animation/2_blaster/atextruder/bodyready1.ani"), 0, 0);
obj.sq_AddStateLayerAnimation(10002,obj.sq_CreateCNRDAnimation("effect/animation/2_blaster/atextruder/bodyready2.ani"), 0, 0);
if(sq_GetSkillLevel(obj, SKILL_BYKK_HITONSUBWEAPON) > 0) setHitonSubweapon_bykk(obj);
// obj.sq_AddStateLayerAnimation(10003,obj.sq_CreateCNRDAnimation("effect/animation/2_blaster/atextruder/glowready.ani"), 0, 0);
break;
case 1:
obj.sq_SetCurrentAnimation(146);
obj.sq_AddStateLayerAnimation(10001,obj.sq_CreateCNRDAnimation("effect/animation/2_blaster/atextruder/bodyshoot1.ani"), 0, 0);
obj.sq_AddStateLayerAnimation(10002,obj.sq_CreateCNRDAnimation("effect/animation/2_blaster/atextruder/bodyshoot2.ani"), 0, 0);
// obj.sq_AddStateLayerAnimation(10003,obj.sq_CreateCNRDAnimation("effect/animation/2_blaster/atextruder/glowshoot1.ani"), 0, 0);
// obj.sq_AddStateLayerAnimation(10004,obj.sq_CreateCNRDAnimation("effect/animation/2_blaster/atextruder/glowshoot2.ani"), 0, 0);
// obj.sq_AddStateLayerAnimation(10005,obj.sq_CreateCNRDAnimation("effect/animation/2_blaster/atextruder/glowshoot3.ani"), 0, 0);
// obj.sq_AddStateLayerAnimation(10006,obj.sq_CreateCNRDAnimation("effect/animation/2_blaster/atextruder/glowshoot4.ani"), 0, 0);
// obj.sq_AddStateLayerAnimation(10007,obj.sq_CreateCNRDAnimation("effect/animation/2_blaster/atextruder/glowshoot5.ani"), 0, 0);
// obj.sq_AddStateLayerAnimation(10008,obj.sq_CreateCNRDAnimation("effect/animation/2_blaster/atextruder/glowshoot6.ani"), 0, 0);
local power = obj.sq_GetPowerWithPassive(71, -1, 1, -1, 1.0);
local sizeRate = sq_GetIntData(obj, 71, 9);
local range = sq_GetIntData(obj, 71, 10);
local subpower = sq_GetIntData(obj, 71, 11);
createSkillPassive_ATGunner_bykk(obj,obj,PASSIVEOBJ_BYKK_ATGUNNER,120,0,65,obj.getDirection(),2,71,1,power,sizeRate,range,subpower,0,0,0,0);
break;
}
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
}
function onEndCurrentAni_Extruder(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
switch(subState){
case 0:
obj.sq_IntVectClear();
obj.sq_IntVectPush(1);
obj.sq_AddSetStatePacket(71, STATE_PRIORITY_AUTO, true);
break;
case 1:
obj.sq_IntVectClear();
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
break;
}
}
function onProcCon_Extruder(obj)
{
if(!obj) return;
}
function onKeyFrameFlag_Extruder(obj, flagIndex)
{
if(!obj) return false;
switch(flagIndex){
}
return true;
}
function onTimeEvent_Extruder(obj, timeEventIndex, timeEventCount)
{
if(!obj) return false;
}
function onEndState_Extruder(obj, new_state)
{
if(!obj) return;
}