1882 lines
68 KiB
C
1882 lines
68 KiB
C
|
|
|
|
function createPassiveObjectEx_k_k(obj,monsterobj,targetObj,skillIndex,subtype,x,y,z,direction,pvector1,pvector2,pvector3,pvector4,pvector5)
|
|
{
|
|
if(!obj || !monsterobj) return;
|
|
if(pvector1 == null) pvector1 = 0;
|
|
if(pvector2 == null) pvector2 = 0;
|
|
if(pvector3 == null) pvector3 = 0;
|
|
if(pvector4 == null) pvector4 = 0;
|
|
if(pvector5 == null) pvector5 = 0;
|
|
// local bonusRate = obj.getVar("summoners_bonusRate").get_vector(0).tofloat() / 1000.0;
|
|
//print("bonusRate = "+bonusRate);
|
|
// pvector1 = (pvector1.tofloat() * bonusRate).tointeger();
|
|
if((skillIndex == SKILL_BYKK_SUMMONRAMOS && subtype == 41) || (skillIndex == 25 && subtype == 7) || (skillIndex == 46 && subtype == 6)) pvector2 = (pvector2.tofloat() * summoners_kuk_setbonusRate(obj).tofloat() / 1000.0).tointeger();
|
|
local destX_01 = 0;
|
|
local destY_01 = 0;
|
|
if(!isSameObject(obj, monsterobj)){
|
|
destX_01 = targetObj.getXPos() - obj.getXPos();
|
|
destY_01 = targetObj.getYPos() - obj.getYPos();
|
|
if(direction == ENUM_DIRECTION_LEFT) destX_01 = obj.getXPos() - targetObj.getXPos();
|
|
}
|
|
sq_BinaryStartWrite();
|
|
sq_BinaryWriteDword(skillIndex);
|
|
sq_BinaryWriteDword(subtype);
|
|
sq_BinaryWriteDword(pvector1);
|
|
sq_BinaryWriteDword(pvector2);
|
|
sq_BinaryWriteDword(pvector3);
|
|
sq_BinaryWriteDword(pvector4);
|
|
sq_BinaryWriteDword(pvector5);
|
|
sq_SendCreatePassiveObjectPacket(obj, 24381, 0, destX_01 + x, destY_01 + y, z - obj.getZPos(), direction);
|
|
}
|
|
|
|
|
|
function checkExecutableSkill_Blacklunatic(obj)
|
|
{
|
|
if(!obj) return false;
|
|
|
|
local LuisObj = obj.getVar("LuisObj").get_obj_vector_size();
|
|
if(LuisObj > 0){
|
|
local b_useskill = obj.sq_IsUseSkill(SKILL_BYKK_BLACKLUNATIC);
|
|
if(b_useskill){
|
|
obj.sq_IntVectClear();
|
|
obj.sq_IntVectPush(0);
|
|
obj.sq_AddSetStatePacket(SKILL_BYKK_BLACKLUNATIC, STATE_PRIORITY_USER, true);
|
|
return true;
|
|
}
|
|
}
|
|
else if(obj.isMessage()){
|
|
sq_AddMessage(71099);
|
|
}
|
|
return false;
|
|
}
|
|
|
|
function checkCommandEnable_Blacklunatic(obj)
|
|
{
|
|
if(!obj) return false;
|
|
return true;
|
|
}
|
|
|
|
function onSetState_Blacklunatic(obj, state, datas, isResetTimer)
|
|
{
|
|
if(!obj) return;
|
|
local substate = obj.sq_GetVectorData(datas, 0);
|
|
obj.setSkillSubState(substate);
|
|
switch(substate){
|
|
case 0:
|
|
obj.sq_StopMove();
|
|
local Ani = obj.sq_GetThrowChargeAni(3);
|
|
obj.setCurrentAnimation(Ani);
|
|
local castTime = 200;
|
|
obj.getVar("caseTimE").clear_vector();
|
|
obj.getVar("caseTimE").push_vector(castTime);
|
|
sq_StartDrawCastGauge(obj, castTime, true);
|
|
//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_StopMove();
|
|
local Ani = obj.sq_GetThrowShootAni(3);
|
|
obj.setCurrentAnimation(Ani);
|
|
obj.sq_PlaySound("R_WZ_BLACK_LUNATIC");
|
|
obj.sq_PlaySound("BLACK_LUNATIC_START");
|
|
local monsternum = obj.getVar("LuisObj").get_obj_vector_size();
|
|
if(sq_GetIntData(obj, SKILL_BYKK_BLACKLUNATIC, 51) > 0 && monsternum > 2){
|
|
for(local i = 2; i < monsternum; i++){
|
|
local LuisObj = obj.getVar("LuisObj").get_obj_vector(i);
|
|
if(LuisObj) LuisObj.setValid(false);
|
|
}
|
|
}
|
|
if(monsternum > 0 && sq_GetIntData(obj, SKILL_BYKK_BLACKLUNATIC, 51) < 1) monsternum = 1;
|
|
if(monsternum > 0){
|
|
local totalDamage = sq_GetBonusRateWithPassive(obj, SKILL_BYKK_BLACKLUNATIC, -1, 0, 1.0) + 100;
|
|
createPassiveObject_k_k(obj,obj,SKILL_BYKK_BLACKLUNATIC,5,100,0,0,totalDamage,0,0,0,0);
|
|
}
|
|
for(local i = 0; i < monsternum; i++){
|
|
local monsterObj = sq_GetCNRDObjectToActiveObject(obj.getVar("LuisObj").get_obj_vector(i));
|
|
if(monsterObj){
|
|
//monsterObj.getVar("skill").setBool(0,true);
|
|
local yPos = obj.getYPos();
|
|
local xPos = sq_GetDistancePos(obj.getXPos(), obj.getDirection(), 100);
|
|
sq_MoveToNearMovablePos(monsterObj, xPos, yPos, sq_GetZPos(monsterObj), xPos, yPos, sq_GetZPos(monsterObj), 100, -1, 5);
|
|
sq_SetCurrentDirection(monsterObj, obj.getDirection());
|
|
monsterattack_ksk(monsterObj,11);
|
|
|
|
local AddAppendage = CNSquirrelAppendage.sq_AppendAppendage(monsterObj, obj, 220, false, BLACKLUNATIC_APDPATH, true);
|
|
print("load");//"
|
|
local monsterAppendage = CNSquirrelAppendage.sq_GetAppendage(monsterObj, "character/mage/k_k_made/appendage/aptomonster/ap_luis.nut");
|
|
if(monsterAppendage){
|
|
local coolTime_01 = sq_GetIntData(obj, SKILL_BYKK_BLACKLUNATIC, 22);
|
|
local coolTime_02 = sq_GetIntData(obj, SKILL_BYKK_BLACKLUNATIC, 24);
|
|
local coolTime_03 = sq_GetIntData(obj, SKILL_BYKK_BLACKLUNATIC, 23);
|
|
|
|
if(obj.getVar("eclipsehive_select").getBool(0) == false){
|
|
if(sq_GetIntData(obj, SKILL_BYKK_BLACKLUNATIC, 51) > 0){
|
|
coolTime_01 = coolTime_01 * 50 / 100;
|
|
coolTime_02 = coolTime_02 * 50 / 100;
|
|
coolTime_03 = coolTime_03 * 50 / 100;
|
|
}
|
|
}
|
|
print("coolTime_01 = "+coolTime_01+" ,coolTime_02 = "+coolTime_02+" ,coolTime_03 = "+coolTime_03);
|
|
|
|
monsterAppendage.getVar("skill_10").clear_timer_vector();
|
|
monsterAppendage.getVar("skill_10").push_timer_vector();
|
|
local t_02 = monsterAppendage.getVar("skill_10").get_timer_vector(0);
|
|
t_02.setParameter(coolTime_01, -1);
|
|
t_02.resetInstant(0);
|
|
monsterAppendage.getVar("skill_11").clear_timer_vector();
|
|
monsterAppendage.getVar("skill_11").push_timer_vector();
|
|
local t_03 = monsterAppendage.getVar("skill_11").get_timer_vector(0);
|
|
t_03.setParameter(coolTime_02, -1);
|
|
t_03.resetInstant(0);
|
|
monsterAppendage.getVar("skill_12").clear_timer_vector();
|
|
monsterAppendage.getVar("skill_12").push_timer_vector();
|
|
local t_04 = monsterAppendage.getVar("skill_12").get_timer_vector(0);
|
|
t_04.setParameter(coolTime_03, -1);
|
|
t_04.resetInstant(0);
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
function onEndCurrentAni_Blacklunatic(obj)
|
|
{
|
|
if(!obj) return;
|
|
local substate = obj.getSkillSubState();
|
|
obj.setSkillSubState(substate);
|
|
switch(substate){
|
|
case 1:
|
|
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_USER, false);
|
|
break;
|
|
}
|
|
}
|
|
|
|
function onEndState_Blacklunatic(obj, new_state)
|
|
{
|
|
if(!obj) return;
|
|
if(new_state != 139) sq_EndDrawCastGauge(obj);
|
|
}
|
|
|
|
function onProcCon_Blacklunatic(obj)
|
|
{
|
|
if(!obj) return;
|
|
local substate = obj.getSkillSubState();
|
|
local casttime = obj.getVar("caseTimE").get_vector(0);
|
|
if(substate == 0){
|
|
if(obj.sq_GetStateTimer() >= casttime){
|
|
sq_EndDrawCastGauge(obj);
|
|
obj.sq_IntVectClear();
|
|
obj.sq_IntVectPush(1);
|
|
obj.sq_AddSetStatePacket(SKILL_BYKK_BLACKLUNATIC, STATE_PRIORITY_USER, true);
|
|
}
|
|
}
|
|
}
|
|
|
|
function procAppend_Summoner_bykk(obj)
|
|
{
|
|
// if(!sq_GetSkill(obj, SKILL_BYKK_BLACKLUNATIC).isInCoolTime() && obj.getVar("LuisObj").get_obj_vector_size() > 0 && obj.isMyControlObject()){
|
|
// local monsternum = obj.getVar("LuisObj").get_obj_vector_size();
|
|
// if(sq_GetIntData(obj, SKILL_BYKK_BLACKLUNATIC, 51) > 0 && monsternum > 2){
|
|
// for(local i = 2; i < monsternum; i++){
|
|
// local LuisObj = obj.getVar("LuisObj").get_obj_vector(i);
|
|
// if(LuisObj) LuisObj.setValid(false);
|
|
// }
|
|
// }
|
|
// if(monsternum > 0 && false) monsternum = 1;
|
|
// if(monsternum > 0){
|
|
// local totalDamage = sq_GetBonusRateWithPassive(obj, SKILL_BYKK_BLACKLUNATIC, -1, 0, 1.0) + 100;
|
|
// local LuisObj = obj.getVar("LuisObj").get_obj_vector(0);
|
|
// createPassiveObject_k_k(obj,LuisObj,SKILL_BYKK_BLACKLUNATIC,5,0,0,0,totalDamage,0,0,0,0);
|
|
// }
|
|
// for(local i = 0; i < monsternum; i++){
|
|
// local monsterObj = sq_GetCNRDObjectToActiveObject(obj.getVar("LuisObj").get_obj_vector(i));
|
|
// if(monsterObj){
|
|
// //monsterObj.getVar("skill").setBool(0,true);
|
|
// // local yPos = obj.getYPos();
|
|
// // local xPos = sq_GetDistancePos(obj.getXPos(), obj.getDirection(), 100);
|
|
// // sq_MoveToNearMovablePos(monsterObj, xPos, yPos, sq_GetZPos(monsterObj), xPos, yPos, sq_GetZPos(monsterObj), 100, -1, 5);
|
|
// // sq_SetCurrentDirection(monsterObj, obj.getDirection());
|
|
// monsterattack_ksk(monsterObj,11);
|
|
|
|
// local AddAppendage = CNSquirrelAppendage.sq_AppendAppendage(monsterObj, obj, 220, false, BLACKLUNATIC_APDPATH, true);
|
|
// print("load");//"
|
|
// local monsterAppendage = CNSquirrelAppendage.sq_GetAppendage(monsterObj, "character/mage/k_k_made/appendage/aptomonster/ap_luis.nut");
|
|
// if(monsterAppendage){
|
|
// local coolTime_01 = sq_GetIntData(obj, SKILL_BYKK_BLACKLUNATIC, 22);
|
|
// local coolTime_02 = sq_GetIntData(obj, SKILL_BYKK_BLACKLUNATIC, 24);
|
|
// local coolTime_03 = sq_GetIntData(obj, SKILL_BYKK_BLACKLUNATIC, 23);
|
|
|
|
// if(obj.getVar("eclipsehive_select").getBool(0) == false){
|
|
// if(sq_GetIntData(obj, SKILL_BYKK_BLACKLUNATIC, 51) > 0){
|
|
// coolTime_01 = coolTime_01 * 70 / 100;
|
|
// coolTime_02 = coolTime_02 * 70 / 100;
|
|
// coolTime_03 = coolTime_03 * 70 / 100;
|
|
// }
|
|
// }
|
|
// print("coolTime_01 = "+coolTime_01+" ,coolTime_02 = "+coolTime_02+" ,coolTime_03 = "+coolTime_03);
|
|
|
|
// monsterAppendage.getVar("skill_10").clear_timer_vector();
|
|
// monsterAppendage.getVar("skill_10").push_timer_vector();
|
|
// local t_02 = monsterAppendage.getVar("skill_10").get_timer_vector(0);
|
|
// t_02.setParameter(coolTime_01, -1);
|
|
// t_02.resetInstant(0);
|
|
// monsterAppendage.getVar("skill_11").clear_timer_vector();
|
|
// monsterAppendage.getVar("skill_11").push_timer_vector();
|
|
// local t_03 = monsterAppendage.getVar("skill_11").get_timer_vector(0);
|
|
// t_03.setParameter(coolTime_02, -1);
|
|
// t_03.resetInstant(0);
|
|
// monsterAppendage.getVar("skill_12").clear_timer_vector();
|
|
// monsterAppendage.getVar("skill_12").push_timer_vector();
|
|
// local t_04 = monsterAppendage.getVar("skill_12").get_timer_vector(0);
|
|
// t_04.setParameter(coolTime_03, -1);
|
|
// t_04.resetInstant(0);
|
|
// t_04.setEventOnStart(true);
|
|
// }
|
|
// }
|
|
// }
|
|
// obj.startSkillCoolTime(SKILL_BYKK_BLACKLUNATIC, sq_GetSkillLevel(obj, SKILL_BYKK_BLACKLUNATIC), -1);
|
|
// }
|
|
}
|
|
|
|
|
|
function onStart_appendage_luis_blacklunatic(appendage)
|
|
{
|
|
if (!appendage) return;
|
|
local parentObj = appendage.getParent();
|
|
local sqrChr = appendage.getSource();
|
|
sqrChr = sq_GetCNRDObjectToSQRCharacter(sqrChr);
|
|
if (!parentObj || parentObj.getState() == STATE_DIE) {
|
|
appendage.setValid(false);
|
|
return;
|
|
}
|
|
|
|
local group = sq_GetGroup(parentObj);//组
|
|
local uniqueId = sq_GetUniqueId(parentObj);//唯一ID
|
|
local skillLevel = sq_GetSkillLevel(sqrChr, 220);
|
|
local lifeTime = sq_GetIntData(sqrChr, 220, 2);
|
|
if(sq_GetIntData(sqrChr, 220, 51) > 0 && sq_GetIntData(sqrChr, 220, 52) > 0) lifeTime = lifeTime + 5000;
|
|
appendage.sq_SetValidTime(lifeTime + 1100);
|
|
|
|
if(sq_GetIntData(sqrChr, SKILL_BYKK_BLACKLUNATIC, 53) > 0){
|
|
local ap = sq_CreateChangeStatus(CHANGE_STATUS_TYPE_ATTACK_SPEED, true, sq_GetIntData(sqrChr, SKILL_BYKK_BLACKLUNATIC, 53).tofloat() , 0);
|
|
if (ap){
|
|
ap.getAppendageInfo().setValidTime(lifeTime);
|
|
ap.sq_Append(parentObj, sqrChr);
|
|
}
|
|
}
|
|
|
|
sqrChr.sq_SetSuperArmorUntilTime(parentObj, lifeTime + 1100);
|
|
local subliftTime_01 = lifeTime - lifeTime / 5 * (4);
|
|
local subliftTime_02 = lifeTime - lifeTime / 5 * (3);
|
|
local subliftTime_03 = lifeTime - lifeTime / 5 * (0);
|
|
local subliftTime_04 = lifeTime - lifeTime / 5 * (1);
|
|
local subliftTime_05 = lifeTime - lifeTime / 5 * (2);
|
|
local subliftTime = [0,subliftTime_01,subliftTime_02,subliftTime_03,subliftTime_04,subliftTime_05];
|
|
for(local i = 1; i < 6; i++){
|
|
createPassiveObject_k_k(sqrChr,parentObj,SKILL_BYKK_SUMMONLUIS,10,0,-1,20,i,subliftTime[i],group,uniqueId,0);
|
|
}
|
|
}
|
|
|
|
function onEnd_appendage_luis_blacklunatic(appendage)
|
|
{
|
|
if (!appendage) return;
|
|
}
|
|
|
|
function onDamageParent_appendage_luis_blacklunatic(appendage ,attacker, boundingBox, isStuck)
|
|
{
|
|
if (!appendage) return;
|
|
}
|
|
|
|
function drawAppend_appendage_luis_blacklunatic(appendage, isOver, x, y, isFlip)
|
|
{
|
|
if (!appendage) return;
|
|
local parentObj = appendage.getParent();
|
|
if (!parentObj || parentObj.getState() == STATE_DIE) {
|
|
appendage.setValid(false);
|
|
return;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
//至高精灵王
|
|
function checkExecutableSkill_HighestEcheverra(obj)
|
|
{
|
|
if (!obj) return false;
|
|
local monsternum = obj.getVar("EcheverraObj").get_obj_vector_size();
|
|
if(monsternum <= 0){
|
|
if(obj.isMessage()) sq_AddMessage(71099);
|
|
return false;
|
|
}
|
|
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_HIGHESTECHEVERRA);
|
|
if (isUse){
|
|
obj.sq_IntVectClear();
|
|
obj.sq_IntVectPush(0);
|
|
obj.sq_AddSetStatePacket(SKILL_BYKK_HIGHESTECHEVERRA, STATE_PRIORITY_IGNORE_FORCE, true);
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
function checkCommandEnable_HighestEcheverra(obj)
|
|
{
|
|
if (!obj) return false;
|
|
return true;
|
|
}
|
|
|
|
function onSetState_HighestEcheverra(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(299); break;
|
|
case 1: obj.sq_SetCurrentAnimation(300); break;
|
|
}
|
|
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
|
|
local currentAni = obj.getCurrentAnimation();
|
|
local speedRate = 5000 / currentAni.getDelaySum(0, 0);
|
|
if(subState == 1) speedRate = 4000 / currentAni.getDelaySum(0, 0);
|
|
print("speedRate = "+speedRate);
|
|
if(speedRate >= 150) currentAni.setSpeedRate(150.0);
|
|
}
|
|
|
|
function onEndCurrentAni_HighestEcheverra(obj)
|
|
{
|
|
if(!obj) return;
|
|
local subState = obj.getSkillSubState();
|
|
switch(subState){
|
|
case 0:
|
|
obj.sq_IntVectClear();
|
|
obj.sq_IntVectPush(1);
|
|
obj.sq_AddSetStatePacket(SKILL_BYKK_HIGHESTECHEVERRA, STATE_PRIORITY_AUTO, true);
|
|
break;
|
|
case 1:
|
|
obj.sq_IntVectClear();
|
|
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
|
|
break;
|
|
}
|
|
}
|
|
|
|
function onProcCon_HighestEcheverra(obj)
|
|
{
|
|
if(!obj) return;
|
|
}
|
|
|
|
function onKeyFrameFlag_HighestEcheverra(obj, flagIndex)
|
|
{
|
|
if(!obj) return false;
|
|
switch(flagIndex){
|
|
case 1010:
|
|
sq_SetMyShake(obj, 5, 150);
|
|
//`camera move`
|
|
local currentAni = obj.getCurrentAnimation();
|
|
local delay = currentAni.getDelaySum(10, 14);
|
|
obj.sq_SetXScrollStart(300, delay);
|
|
break;
|
|
case 1011:
|
|
local EcheverraObj = obj.getVar("EcheverraObj").get_obj_vector(0);
|
|
if(EcheverraObj && EcheverraObj.getState() != STATE_DIE){
|
|
local monsterObj = sq_GetCNRDObjectToActiveObject(EcheverraObj);
|
|
monsterObj.getVar("teleport").setInt(10, obj.getDirection());
|
|
monsterObj.getVar("teleport").setInt(11, sq_GetDistancePos(sq_GetXPos(obj), obj.getDirection(), 50));
|
|
monsterObj.getVar("teleport").setInt(12, sq_GetYPos(obj));
|
|
monsterObj.getVar("isHighestEcheverra").setBool(0, true);
|
|
monsterattack_ksk(monsterObj,5);
|
|
}
|
|
//`hide`
|
|
local currentAni = obj.getCurrentAnimation();
|
|
local speedRate = 5000 / currentAni.getDelaySum(0, 0);
|
|
print("speedRate2 = "+speedRate);
|
|
createPassiveObject_k_k(obj,obj,SKILL_BYKK_HIGHESTECHEVERRA,3,0,20,20,speedRate,0,0,0,0);
|
|
break;
|
|
case 2002://`laser`
|
|
local currentAni = obj.getCurrentAnimation();
|
|
local speedRate = 4000 / currentAni.getDelaySum(0, 0);
|
|
local offset = [[-100,-5,180,60,100],[-31,5,271,45,100],[-33,1,358,80,100],[20,0,250,45,100],[54,-3,308,50,100],[110,-2,300,55,100],[100,1,425,70,100]];
|
|
local angle = [2303,4581,2794,3666,4582,3714,4212];
|
|
local aniPath = "character/mage/animation/summoner_bykk/effect/highestecheverra/laser/laser_body_1.ani";
|
|
local direction = sq_GetDirection(obj), xPos = sq_GetXPos(obj), yPos = sq_GetYPos(obj);
|
|
local alsName = [10002, 10004, 10006, 10007, 10010];
|
|
for(local i = 0; i < 7; i++){
|
|
local offsetX = sq_GetDistancePos(xPos, direction, offset[i][0] + 100);
|
|
local pooledObj = createOnlyDrawObjectEX_HighestEcheverra_bykk(obj,aniPath,true,direction, offsetX, yPos + offset[i][1], offset[i][2],ENUM_DRAWLAYER_NORMAL,100,100);
|
|
sq_SetCustomRotate(pooledObj, sq_ToRadian(-angle[i].tofloat() / 100.0));
|
|
local pAni = pooledObj.getCurrentAnimation();
|
|
pAni.setSpeedRate(speedRate.tofloat());
|
|
for(local ui = 0; ui < 10; ui++){
|
|
local aniPath = "character/mage/animation/summoner_bykk/effect/highestecheverra/laser/laser_0"+(ui+1).tostring()+".ani";
|
|
if(ui == 9) aniPath = "character/mage/animation/summoner_bykk/effect/highestecheverra/laser/laser_"+(ui+1).tostring()+".ani";
|
|
local pooledObj = createOnlyDrawObjectEX_HighestEcheverra_bykk(obj,aniPath,true,direction, offsetX, yPos + offset[i][1] + ui + 1, offset[i][2] + ui + 1,ENUM_DRAWLAYER_NORMAL,offset[i][3],offset[i][4]);
|
|
sq_SetCustomRotate(pooledObj, sq_ToRadian(-angle[i].tofloat() / 100.0));
|
|
local pAni = pooledObj.getCurrentAnimation();
|
|
pAni.setSpeedRate(speedRate.tofloat());
|
|
}
|
|
}
|
|
local aniPath = "character/mage/animation/summoner_bykk/effect/highestecheverra/lasersik/bottom/highestecheverra_floorsik.ani";
|
|
local baseX = 50;
|
|
local offset = [[350,-5],[300,20],[400,0],[250,18],[325,20],[500,20],[550,15]];
|
|
for(local i = 0; i < offset.len(); i++){
|
|
local pooledObj = sq_AddDrawOnlyAniFromParent(obj, aniPath, offset[i][0] + baseX, offset[i][1], 0);
|
|
local pAni = pooledObj.getCurrentAnimation();
|
|
pAni.setSpeedRate(speedRate.tofloat());
|
|
}
|
|
break;
|
|
case 2005://`laserAttackStart`
|
|
local currentAni = obj.getCurrentAnimation();
|
|
local speedRate = 4000 / currentAni.getDelaySum(0, 0);
|
|
local totalDamage = sq_GetBonusRateWithPassive(obj, SKILL_BYKK_HIGHESTECHEVERRA, -1, 0, 1.0);
|
|
local hitMax = sq_GetIntData(obj, SKILL_BYKK_HIGHESTECHEVERRA, 1);
|
|
createPassiveObject_k_k(obj,obj,SKILL_BYKK_HIGHESTECHEVERRA,1,150,0,0,totalDamage,hitMax,speedRate,0,0);
|
|
break;
|
|
case 2015://
|
|
sq_SetMyShake(obj, 20, 450);
|
|
//`explosion`
|
|
obj.sq_PlaySound("HIGHEST_ECHEVERRA_EXP");
|
|
obj.sq_PlaySound("WZ_HIGHEST_ECHEVERRA_01_3");
|
|
local totalDamage = sq_GetBonusRateWithPassive(obj, SKILL_BYKK_HIGHESTECHEVERRA, -1, 1, 1.0);
|
|
createPassiveObject_k_k(obj,obj,SKILL_BYKK_HIGHESTECHEVERRA,2,450,0,0,totalDamage,0,0,0,0);
|
|
break;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
function onTimeEvent_HighestEcheverra(obj, timeEventIndex, timeEventCount)
|
|
{
|
|
if(!obj) return false;
|
|
}
|
|
|
|
function onEndState_HighestEcheverra(obj, new_state)
|
|
{
|
|
if(!obj) return;
|
|
if(new_state != SKILL_BYKK_HIGHESTECHEVERRA){
|
|
obj.sq_SetXScrollStop(500);
|
|
}
|
|
}
|
|
|
|
function createOnlyDrawObjectEX_HighestEcheverra_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 checkExecutableSkill_ThrowStickyTrap(obj)
|
|
{
|
|
if (!obj) return false;
|
|
local isUse = obj.sq_IsUseSkill(150);
|
|
if (isUse){
|
|
obj.sq_IntVectClear();
|
|
obj.sq_IntVectPush(0);
|
|
obj.sq_AddSetStatePacket(150, STATE_PRIORITY_IGNORE_FORCE, true);
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
function checkCommandEnable_ThrowStickyTrap(obj)
|
|
{
|
|
if (!obj) return false;
|
|
return true;
|
|
}
|
|
|
|
function onSetState_ThrowStickyTrap(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(301);
|
|
break;
|
|
case 1:
|
|
obj.sq_SetCurrentAnimation(302);
|
|
// obj.sq_PlaySound("R_WZ_THROWST");
|
|
break;
|
|
}
|
|
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
|
|
}
|
|
|
|
function onEndCurrentAni_ThrowStickyTrap(obj)
|
|
{
|
|
if(!obj) return;
|
|
local subState = obj.getSkillSubState();
|
|
switch(subState){
|
|
case 0:
|
|
obj.sq_IntVectClear();
|
|
obj.sq_IntVectPush(1);
|
|
obj.sq_AddSetStatePacket(150, STATE_PRIORITY_AUTO, true);
|
|
break;
|
|
case 1:
|
|
obj.sq_IntVectClear();
|
|
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_AUTO, true);
|
|
break;
|
|
}
|
|
}
|
|
|
|
function onProcCon_ThrowStickyTrap(obj)
|
|
{
|
|
if(!obj) return;
|
|
}
|
|
|
|
function onKeyFrameFlag_ThrowStickyTrap(obj, flagIndex)
|
|
{
|
|
if(!obj) return false;
|
|
switch(flagIndex){
|
|
case 1:
|
|
obj.sq_PlaySound("WZ_STICKY");
|
|
obj.sq_PlaySound("STICKY_READY");
|
|
break;
|
|
case 2:
|
|
local totalDamage = sq_GetBonusRateWithPassive(obj, 150, -1, 0, 1.0);
|
|
local holdTime = sq_GetBonusRateWithPassive(obj, 150, -1, 1, 1.0) + 100;
|
|
createPassiveObject_k_k(obj,obj,150,1,100,0,70,totalDamage,holdTime,0,0,0);
|
|
break;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
function onTimeEvent_ThrowStickyTrap(obj, timeEventIndex, timeEventCount)
|
|
{
|
|
if(!obj) return false;
|
|
}
|
|
|
|
function onEndState_ThrowStickyTrap(obj, new_state)
|
|
{
|
|
if(!obj) return;
|
|
}
|
|
|
|
function drawAppend_appendage_throwstickytrap_hold(appendage, isOver, x, y, isFlip)
|
|
{
|
|
local var = appendage.getVar();
|
|
local parentObj = appendage.getParent();
|
|
if(!parentObj || parentObj.getState() == STATE_DIE){
|
|
appendage.setValid(false);
|
|
return;
|
|
}
|
|
//自定义ani
|
|
local Ani = var.GetAnimationMap("throwstickytrap_hold", "character/mage/animation/summoner_bykk/effect/throwstickytrap/throwglue_glueloop01.ani");
|
|
sq_AnimationProc(Ani);
|
|
sq_drawCurrentFrame(Ani, x, y - 60, isFlip);
|
|
}
|
|
|
|
|
|
////////////////////////////////////
|
|
function checkExecutableSkill_SummonHodor(obj)
|
|
{
|
|
if(!obj) return false;
|
|
if(!obj.isMyControlObject()) return false;
|
|
if(sq_getGrowType(obj) == 2){
|
|
local isTrue = summoner_kak_monsterSkill(obj,SKILL_BYKK_SUMMONHODOR,"HodorObj",10);
|
|
if(isTrue == 1) return false;
|
|
local b_useskill = obj.sq_IsUseSkill(SKILL_BYKK_SUMMONHODOR);
|
|
if(b_useskill){
|
|
summonmonster_by_kwk(obj,SKILL_BYKK_SUMMONHODOR);
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
function checkExecutableSkill_SummonSandor(obj)
|
|
{
|
|
if(!obj) return false;
|
|
if(!obj.isMyControlObject()) return false;
|
|
local isTrue = summoner_kak_monsterSkill(obj,SKILL_BYKK_SUMMONSANDOR,"SandorObj",6);
|
|
if(isTrue == 1) return false;
|
|
local b_useskill = obj.sq_IsUseSkill(SKILL_BYKK_SUMMONSANDOR);
|
|
if(b_useskill){
|
|
summonmonster_by_kwk(obj,SKILL_BYKK_SUMMONSANDOR);
|
|
}
|
|
return false;
|
|
}
|
|
|
|
function checkExecutableSkill_SummonAuxo(obj)
|
|
{
|
|
if(!obj) return false;
|
|
if(!obj.isMyControlObject()) return false;
|
|
local isTrue = summoner_kak_monsterSkill(obj,SKILL_BYKK_SUMMONAUXO,"AuxoObj",5);
|
|
if(isTrue == 1) return false;
|
|
local b_useskill = obj.sq_IsUseSkill(SKILL_BYKK_SUMMONAUXO);
|
|
if(b_useskill){
|
|
summonmonster_by_kwk(obj,SKILL_BYKK_SUMMONAUXO);
|
|
}
|
|
return false;
|
|
}
|
|
|
|
function checkExecutableSkill_SummonLuis(obj)
|
|
{
|
|
if(!obj) return false;
|
|
if(!obj.isMyControlObject()) return false;
|
|
local isTrue = summoner_kak_monsterSkill(obj,SKILL_BYKK_SUMMONLUIS,"LuisObj",6);
|
|
if(isTrue == 1) return false;
|
|
local b_useskill = obj.sq_IsUseSkill(SKILL_BYKK_SUMMONLUIS);
|
|
if(b_useskill){
|
|
summonmonster_by_kwk(obj,SKILL_BYKK_SUMMONLUIS);
|
|
}
|
|
return false;
|
|
}
|
|
|
|
function checkExecutableSkill_SummonEcheverra(obj)
|
|
{
|
|
if(!obj) return false;
|
|
if(!obj.isMyControlObject()) return false;
|
|
local isTrue = summoner_kak_monsterSkill(obj,SKILL_BYKK_SUMMONECHEVERRA,"EcheverraObj",5);
|
|
if(isTrue == 1) return false;
|
|
local b_useskill = obj.sq_IsUseSkill(SKILL_BYKK_SUMMONECHEVERRA);
|
|
if(b_useskill){
|
|
summonmonster_by_kwk(obj,SKILL_BYKK_SUMMONECHEVERRA);
|
|
}
|
|
return false;
|
|
}
|
|
|
|
function checkExecutableSkill_SummonSpiritDarkHigher(obj)
|
|
{
|
|
if(!obj) return false;
|
|
if(!obj.isMyControlObject()) return false;
|
|
local isTrue = summoner_kak_monsterSkill(obj,SKILL_BYKK_SUMMONSPIRITDARKHIGHER,"DarkhigherspiritObj",4);
|
|
if(isTrue == 1) return false;
|
|
local b_useskill = obj.sq_IsUseSkill(SKILL_BYKK_SUMMONSPIRITDARKHIGHER);
|
|
if(b_useskill){
|
|
summonmonster_by_kwk(obj,SKILL_BYKK_SUMMONSPIRITDARKHIGHER);
|
|
}
|
|
return false;
|
|
}
|
|
|
|
function checkExecutableSkill_SummonSpiritLightHigher(obj)
|
|
{
|
|
if(!obj) return false;
|
|
if(!obj.isMyControlObject()) return false;
|
|
local isTrue = summoner_kak_monsterSkill(obj,SKILL_BYKK_SUMMONSPIRITLIGHTHIGHER,"LighthigherspiritObj",4);
|
|
if(isTrue == 1) return false;
|
|
local b_useskill = obj.sq_IsUseSkill(SKILL_BYKK_SUMMONSPIRITLIGHTHIGHER);
|
|
if(b_useskill){
|
|
summonmonster_by_kwk(obj,SKILL_BYKK_SUMMONSPIRITLIGHTHIGHER);
|
|
}
|
|
return false;
|
|
}
|
|
|
|
function checkExecutableSkill_SummonSpiritWaterHigher(obj)
|
|
{
|
|
if(!obj) return false;
|
|
if(!obj.isMyControlObject()) return false;
|
|
local isTrue = summoner_kak_monsterSkill(obj,SKILL_BYKK_SUMMONSPIRITWATERHIGHER,"WaterhigherspiritObj",4);
|
|
if(isTrue == 1) return false;
|
|
local b_useskill = obj.sq_IsUseSkill(SKILL_BYKK_SUMMONSPIRITWATERHIGHER);
|
|
if(b_useskill){
|
|
summonmonster_by_kwk(obj,SKILL_BYKK_SUMMONSPIRITWATERHIGHER);
|
|
}
|
|
return false;
|
|
}
|
|
|
|
function checkExecutableSkill_SummonSpiritFireHigher(obj)
|
|
{
|
|
if(!obj) return false;
|
|
if(!obj.isMyControlObject()) return false;
|
|
local isTrue = summoner_kak_monsterSkill(obj,SKILL_BYKK_SUMMONSPIRITFIREHIGHER,"FirehigherspiritObj",4);
|
|
if(isTrue == 1) return false;
|
|
local b_useskill = obj.sq_IsUseSkill(SKILL_BYKK_SUMMONSPIRITFIREHIGHER);
|
|
if(b_useskill){
|
|
summonmonster_by_kwk(obj,SKILL_BYKK_SUMMONSPIRITFIREHIGHER);
|
|
}
|
|
return false;
|
|
}
|
|
|
|
function checkExecutableSkill_SummonBabyDragon(obj)
|
|
{
|
|
if(!obj) return false;
|
|
if(!obj.isMyControlObject()) return false;
|
|
local isTrue = summoner_kak_monsterSkill(obj,SKILL_BYKK_SUMMONBABYDRAGON,"BabydragonObj",7);
|
|
if(isTrue == 1) return false;
|
|
local b_useskill = obj.sq_IsUseSkill(SKILL_BYKK_SUMMONBABYDRAGON);
|
|
if(b_useskill){
|
|
summonmonster_by_kwk(obj,SKILL_BYKK_SUMMONBABYDRAGON);
|
|
}
|
|
return false;
|
|
}
|
|
|
|
function checkExecutableSkill_SummonCasillas(obj)
|
|
{
|
|
if(!obj) return false;
|
|
if(!obj.isMyControlObject()) return false;
|
|
local isTrue = summoner_kak_monsterSkill(obj,SKILL_BYKK_SUMMONCASILLAS,"CassillasObj",4);
|
|
if(isTrue == 1) return false;
|
|
local b_useskill = obj.sq_IsUseSkill(SKILL_BYKK_SUMMONCASILLAS);
|
|
if(b_useskill){
|
|
summonmonster_by_kwk(obj,SKILL_BYKK_SUMMONCASILLAS);
|
|
}
|
|
return false;
|
|
}
|
|
|
|
function checkExecutableSkill_SummonSandorEx(obj)
|
|
{
|
|
if(!obj) return false;
|
|
local b_useskill = obj.sq_IsUseSkill(SKILL_BYKK_SUMMONSANDOREX);
|
|
if(b_useskill){
|
|
// summoner_monsterskill_bykk(obj,"SandorexObj",4,SKILL_BYKK_SUMMONSANDOREX,1);
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
function checkExecutableSkill_SummonHeilrom(obj)
|
|
{
|
|
if(!obj) return false;
|
|
if(!obj.isMyControlObject()) return false;
|
|
local isTrue = summoner_kak_monsterSkill(obj,SKILL_BYKK_SUMMONHEILROM,"HeilromObj",0);
|
|
if(isTrue == 1) return false;
|
|
local b_useskill = obj.sq_IsUseSkill(SKILL_BYKK_SUMMONHEILROM);
|
|
if(b_useskill){
|
|
summonmonster_by_kwk(obj,SKILL_BYKK_SUMMONHEILROM);
|
|
}
|
|
return false;
|
|
}
|
|
|
|
function checkExecutableSkill_SummonSpiritFireEx(obj)
|
|
{
|
|
if(!obj) return false;
|
|
if(!obj.isMyControlObject()) return false;
|
|
local b_useskill = obj.sq_IsUseSkill(SKILL_BYKK_SUMMONSPIRITFIREEX);
|
|
if(b_useskill){
|
|
summonmonster_by_kwk(obj,SKILL_BYKK_SUMMONSPIRITFIREEX);
|
|
}
|
|
return false;
|
|
}
|
|
|
|
function checkExecutableSkill_SummonKruta(obj)
|
|
{
|
|
if(!obj) return false;
|
|
if(!obj.isMyControlObject()) return false;
|
|
local isTrue = summoner_kak_monsterSkill(obj,SKILL_BYKK_SUMMONKRUTA,"KrutaObj", 13);
|
|
if(isTrue == 1) return false;
|
|
local b_useskill = obj.sq_IsUseSkill(SKILL_BYKK_SUMMONKRUTA);
|
|
if(b_useskill){
|
|
summonmonster_by_kwk(obj,SKILL_BYKK_SUMMONKRUTA);
|
|
}
|
|
return false;
|
|
}
|
|
|
|
function checkExecutableSkill_SummonRamos(obj)
|
|
{
|
|
if(!obj) return false;
|
|
if(!obj.isMyControlObject()) return false;
|
|
local isTrue = summoner_kak_monsterSkill(obj,SKILL_BYKK_SUMMONRAMOS,"RamosObj",17);
|
|
if(isTrue == 1) return false;
|
|
local b_useskill = obj.sq_IsUseSkill(SKILL_BYKK_SUMMONRAMOS);
|
|
if(b_useskill){
|
|
summonmonster_by_kwk(obj,SKILL_BYKK_SUMMONRAMOS);
|
|
}
|
|
return false;
|
|
}
|
|
|
|
function checkExecutableSkill_SummonSpiritFire(obj)
|
|
{
|
|
if(!obj) return false;
|
|
if(!obj.isMyControlObject()) return false;
|
|
local monsternum = obj.getVar("SpiritFireObj").get_obj_vector_size();
|
|
if(monsternum > 0){
|
|
local state = obj.getState();
|
|
if(state == 14 || state == 0){
|
|
obj.sq_IntVectClear();
|
|
obj.sq_AddSetStatePacket(state, STATE_PRIORITY_IGNORE_FORCE, true);
|
|
}
|
|
obj.startCantUseSkillWarning();
|
|
if (obj.isMessage()) sq_AddMessage(2);
|
|
return true;
|
|
}
|
|
local b_useskill = obj.sq_IsUseSkill(SKILL_BYKK_SUMMONSPIRITFIRE);
|
|
if(b_useskill){
|
|
obj.sq_IntVectClear();
|
|
obj.sq_IntVectPush(22);
|
|
obj.sq_IntVectPush(SKILL_BYKK_SUMMONSPIRITFIRE);
|
|
obj.sq_AddSetStatePacket(SKILL_BYKK_RINGOFDOMINATION , STATE_PRIORITY_IGNORE_FORCE, true);
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
function checkExecutableSkill_SummonSpiritWater(obj)
|
|
{
|
|
if(!obj) return false;
|
|
if(!obj.isMyControlObject()) return false;
|
|
local monsternum = obj.getVar("SpiritWaterObj").get_obj_vector_size();
|
|
if(monsternum > 0){
|
|
local state = obj.getState();
|
|
if(state == 14 || state == 0){
|
|
obj.sq_IntVectClear();
|
|
obj.sq_AddSetStatePacket(state, STATE_PRIORITY_IGNORE_FORCE, true);
|
|
}
|
|
obj.startCantUseSkillWarning();
|
|
if (obj.isMessage()) sq_AddMessage(2);
|
|
return true;
|
|
}
|
|
local b_useskill = obj.sq_IsUseSkill(SKILL_BYKK_SUMMONSPIRITWATER);
|
|
if(b_useskill){
|
|
obj.sq_IntVectClear();
|
|
obj.sq_IntVectPush(22);
|
|
obj.sq_IntVectPush(SKILL_BYKK_SUMMONSPIRITWATER);
|
|
obj.sq_AddSetStatePacket(SKILL_BYKK_RINGOFDOMINATION , STATE_PRIORITY_IGNORE_FORCE, true);
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
function checkExecutableSkill_SummonSpiritDark(obj)
|
|
{
|
|
if(!obj) return false;
|
|
if(!obj.isMyControlObject()) return false;
|
|
local monsternum = obj.getVar("SpiritDarkObj").get_obj_vector_size();
|
|
if(monsternum > 0){
|
|
local state = obj.getState();
|
|
if(state == 14 || state == 0){
|
|
obj.sq_IntVectClear();
|
|
obj.sq_AddSetStatePacket(state, STATE_PRIORITY_IGNORE_FORCE, true);
|
|
}
|
|
obj.startCantUseSkillWarning();
|
|
if (obj.isMessage()) sq_AddMessage(2);
|
|
return true;
|
|
}
|
|
local b_useskill = obj.sq_IsUseSkill(SKILL_BYKK_SUMMONSPIRITDARK);
|
|
if(b_useskill){
|
|
obj.sq_IntVectClear();
|
|
obj.sq_IntVectPush(22);
|
|
obj.sq_IntVectPush(SKILL_BYKK_SUMMONSPIRITDARK);
|
|
obj.sq_AddSetStatePacket(SKILL_BYKK_RINGOFDOMINATION , STATE_PRIORITY_IGNORE_FORCE, true);
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
function checkExecutableSkill_SummonSpiritLight(obj)
|
|
{
|
|
if(!obj) return false;
|
|
if(!obj.isMyControlObject()) return false;
|
|
local monsternum = obj.getVar("SpiritLightObj").get_obj_vector_size();
|
|
if(monsternum > 0){
|
|
local state = obj.getState();
|
|
if(state == 14 || state == 0){
|
|
obj.sq_IntVectClear();
|
|
obj.sq_AddSetStatePacket(state, STATE_PRIORITY_IGNORE_FORCE, true);
|
|
}
|
|
obj.startCantUseSkillWarning();
|
|
if (obj.isMessage()) sq_AddMessage(2);
|
|
return true;
|
|
}
|
|
local b_useskill = obj.sq_IsUseSkill(SKILL_BYKK_SUMMONSPIRITLIGHT);
|
|
if(b_useskill){
|
|
obj.sq_IntVectClear();
|
|
obj.sq_IntVectPush(22);
|
|
obj.sq_IntVectPush(SKILL_BYKK_SUMMONSPIRITLIGHT);
|
|
obj.sq_AddSetStatePacket(SKILL_BYKK_RINGOFDOMINATION , STATE_PRIORITY_IGNORE_FORCE, true);
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
function checkExecutableSkill_RingOfDomination(obj)
|
|
{
|
|
if (!obj) return false;
|
|
if(!obj.isMyControlObject()) return false;
|
|
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_RINGOFDOMINATION);
|
|
if (isUse){
|
|
obj.sq_IntVectClear();
|
|
obj.sq_IntVectPush(0);
|
|
obj.sq_AddSetStatePacket(SKILL_BYKK_RINGOFDOMINATION , STATE_PRIORITY_USER, true);
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
function checkCommandEnable_RingOfDomination(obj)
|
|
{
|
|
if (!obj) return false;
|
|
local state = obj.sq_GetState();
|
|
if (state == STATE_STAND) return true;
|
|
if(state == STATE_ATTACK){
|
|
return obj.sq_IsCommandEnable(SKILL_BYKK_RINGOFDOMINATION);
|
|
}
|
|
return true;
|
|
}
|
|
|
|
function onSetState_RingOfDomination(obj, state, datas, isResetTimer)
|
|
{
|
|
if(!obj) return;
|
|
obj.sq_StopMove();
|
|
local substate = obj.sq_GetVectorData(datas, 0);
|
|
obj.setSkillSubState(substate);
|
|
switch(substate){
|
|
case 0:
|
|
local direction = obj.getDirection();//嚙踝蕭嚙踝蕭菾嚙踝蕭
|
|
local xpos = sq_GetDistancePos(obj.getXPos(), direction, 185);//嚙踝蕭嚙踝蕭菾嚙踝蕭嚙踝蕭pos
|
|
local ypos = obj.getYPos();
|
|
onAddPooledObj_RingOfDomination(obj, "passiveobject/madeby_k_k/animation/ringofdomination/start/rodstarta_p01.ani", xpos, ypos, ENUM_DRAWLAYER_NORMAL);
|
|
onAddPooledObj_RingOfDomination(obj, "passiveobject/madeby_k_k/animation/ringofdomination/start/rodstartringa_01.ani", xpos, ypos, ENUM_DRAWLAYER_NORMAL);
|
|
onAddPooledObj_RingOfDomination(obj, "passiveobject/madeby_k_k/animation/ringofdomination/start/rodstartringb_01.ani", xpos, ypos, ENUM_DRAWLAYER_NORMAL);
|
|
sq_SetCustomDamageType(obj, true, 1);
|
|
local Ani = obj.sq_GetThrowChargeAni(2);
|
|
obj.setCurrentAnimation(Ani);
|
|
obj.getVar("monster_enum").clear_vector();
|
|
obj.getVar("monster_enum").push_vector(0);
|
|
obj.setTimeEvent(1001,900,1,false);
|
|
obj.sq_PlaySound("R_RING_DOMINATION_01");
|
|
obj.getVar("map").setBool(0, false);
|
|
setEclipsehive_summoner_bykk(obj);
|
|
break;
|
|
case 1:
|
|
obj.sq_SetCurrentAnimation(68);
|
|
obj.setTimeEvent(1002,900,1,false);
|
|
break;
|
|
case 2:
|
|
RemoveAllAni_RingOfDomination(obj);
|
|
local direction = obj.getDirection();//嚙踝蕭嚙踝蕭菾嚙踝蕭
|
|
local xpos = sq_GetDistancePos(obj.getXPos(), direction, 185);//嚙踝蕭嚙踝蕭菾嚙踝蕭嚙踝蕭pos
|
|
local ypos = obj.getYPos();
|
|
onAddPooledObj_RingOfDomination(obj, "passiveobject/madeby_k_k/animation/ringofdomination/end/rodendringa_01.ani", xpos, ypos, ENUM_DRAWLAYER_NORMAL);
|
|
onAddPooledObj_RingOfDomination(obj, "passiveobject/madeby_k_k/animation/ringofdomination/end/rodendringb_01.ani", xpos, ypos, ENUM_DRAWLAYER_NORMAL);
|
|
local Ani = obj.sq_GetThrowShootAni(1);
|
|
obj.setCurrentAnimation(Ani);
|
|
obj.sq_PlaySound("WZ_RING_DOMINATION_02");
|
|
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED,SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
|
|
break;
|
|
case 20://嚙踝蕭?嚙?1
|
|
local skillIndex = sq_GetVectorData(datas, 1);
|
|
obj.getVar("sm_skindex").clear_vector();
|
|
obj.getVar("sm_skindex").push_vector(skillIndex);
|
|
local Ani = obj.sq_GetThrowChargeAni(2);
|
|
obj.setCurrentAnimation(Ani);
|
|
switch(skillIndex){
|
|
case SKILL_BYKK_SUMMONAUXO:
|
|
obj.sq_PlaySound("WZ_INVOKE_AUXO");
|
|
break;
|
|
case SKILL_BYKK_SUMMONHODOR:
|
|
obj.sq_PlaySound("WZ_INVOKE");
|
|
break;
|
|
case SKILL_BYKK_SUMMONSANDOR:
|
|
obj.sq_PlaySound("WZ_INVOKE_SANDOR");
|
|
break;
|
|
case SKILL_BYKK_SUMMONLUIS:
|
|
obj.sq_PlaySound("WZ_INVOKE_LUIS");
|
|
break;
|
|
case SKILL_BYKK_SUMMONBABYDRAGON:
|
|
obj.sq_PlaySound("WZ_INVOKE_FREET");
|
|
break;
|
|
case SKILL_BYKK_SUMMONKRUTA:
|
|
obj.sq_PlaySound("WZ_SUMMON_KRUTA");
|
|
break;
|
|
case SKILL_BYKK_SUMMONCASILLAS:
|
|
obj.sq_PlaySound("WZ_CASILLAS");
|
|
break;
|
|
case SKILL_BYKK_SUMMONRAMOS:
|
|
obj.sq_PlaySound("WZ_RAMOS");
|
|
break;
|
|
}
|
|
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_CAST_SPEED, SPEED_TYPE_CAST_SPEED, SPEED_VALUE_DEFAULT,SPEED_VALUE_DEFAULT, 1.0, 1.0);
|
|
break;
|
|
case 21://嚙踝蕭?嚙?2
|
|
local Ani = obj.sq_GetThrowShootAni(2);
|
|
obj.setCurrentAnimation(Ani);
|
|
local monster_level = sq_GetSkillLevel(obj, 174);
|
|
local monster_time = 3600000;
|
|
local skillIndex = obj.getVar("sm_skindex").get_vector(0);
|
|
switch(skillIndex){
|
|
case SKILL_BYKK_SUMMONAUXO:
|
|
local skill = sq_GetSkill(obj, SKILL_BYKK_SUMMONAUXO);
|
|
local montser_id = MONSTER_ID_AUXO;
|
|
local subtype = 15;
|
|
if(skill.isSealFunction()){montser_id = MONSTER_ID_AUXOOLD; subtype = 5;}
|
|
local seedNumber = sq_GetLevelData(obj, SKILL_BYKK_SUMMONAUXO, 8, sq_GetSkillLevel(obj, SKILL_BYKK_SUMMONAUXO));
|
|
summonmonster_mage_plus_Kwk(obj,obj,100,0,0,0,montser_id,monster_time,monster_level,0);
|
|
if(seedNumber > 0) createPassiveObject_k_k(obj,obj,45,subtype,100,0,70,0,0,0,0,0);
|
|
if(sq_GetLevelData(obj, SKILL_BYKK_SUMMONAUXO, 2, sq_GetSkillLevel(obj, SKILL_BYKK_SUMMONAUXO)) > 1){
|
|
local num_max = sq_GetLevelData(obj, SKILL_BYKK_SUMMONAUXO, 2, sq_GetSkillLevel(obj, SKILL_BYKK_SUMMONAUXO)) - 1
|
|
for(local i = 0; i < num_max; i++){
|
|
local angle = 360 / num_max * (i + 1);
|
|
local x = (sq_Cos(sq_ToRadian(angle.tofloat())) * 100.0).tointeger();
|
|
local y = (sq_Sin(sq_ToRadian(angle.tofloat())) * 50.0).tointeger();
|
|
summonmonster_mage_plus_Kwk(obj,obj,x,y,0,0,montser_id,monster_time,monster_level,0);
|
|
if(seedNumber > 0) createPassiveObject_k_k(obj,obj,45,subtype,x,y,70,0,0,0,0,0);
|
|
}
|
|
}
|
|
// local skill02 = sq_GetSkill(obj, 45);
|
|
// local prob = obj.sq_GetIntData(45, 10);
|
|
// if(sq_getRandom(0,99) >= 100 - prob){
|
|
// local subtype = 5;
|
|
// if(!skill02.isSealFunction()) subtype = 15;
|
|
// for(local i = 0; i < 6; i++){
|
|
// createPassiveObject_k_k(obj,obj,45,subtype,100,0,70,0,0,0,0,0);
|
|
// }
|
|
// }
|
|
break;
|
|
case SKILL_BYKK_SUMMONHODOR:
|
|
summonmonster_mage_plus_Kwk(obj,obj,100,0,0,0,MONSTER_ID_HODOR,monster_time,monster_level,0);
|
|
if(sq_GetLevelData(obj, SKILL_BYKK_SUMMONHODOR, 2, sq_GetSkillLevel(obj, SKILL_BYKK_SUMMONHODOR)) > 1){
|
|
local num_max = sq_GetLevelData(obj, SKILL_BYKK_SUMMONHODOR, 2, sq_GetSkillLevel(obj, SKILL_BYKK_SUMMONHODOR)) - 1
|
|
for(local i = 0; i < num_max; i++){
|
|
local angle = 360 / num_max * (i + 1);
|
|
local x = (sq_Cos(sq_ToRadian(angle.tofloat())) * 100.0).tointeger();
|
|
local y = (sq_Sin(sq_ToRadian(angle.tofloat())) * 50.0).tointeger();
|
|
summonmonster_mage_plus_Kwk(obj,obj,x,y,0,0,MONSTER_ID_HODOR,monster_time,monster_level,0);
|
|
}
|
|
}
|
|
break;
|
|
case SKILL_BYKK_SUMMONSANDOR:
|
|
summonmonster_mage_plus_Kwk(obj,obj,100,0,0,0,MONSTER_ID_SANDOR,monster_time,monster_level,0);
|
|
if(sq_GetLevelData(obj, SKILL_BYKK_SUMMONSANDOR, 2, sq_GetSkillLevel(obj, SKILL_BYKK_SUMMONSANDOR)) > 1){
|
|
local num_max = sq_GetLevelData(obj, SKILL_BYKK_SUMMONSANDOR, 2, sq_GetSkillLevel(obj, SKILL_BYKK_SUMMONSANDOR)) - 1
|
|
for(local i = 0; i < num_max; i++){
|
|
local angle = 360 / num_max * (i + 1);
|
|
local x = (sq_Cos(sq_ToRadian(angle.tofloat())) * 100.0).tointeger();
|
|
local y = (sq_Sin(sq_ToRadian(angle.tofloat())) * 50.0).tointeger();
|
|
summonmonster_mage_plus_Kwk(obj,obj,x,y,0,0,MONSTER_ID_SANDOR,monster_time,monster_level,0);
|
|
}
|
|
}
|
|
break;
|
|
case SKILL_BYKK_SUMMONLUIS:
|
|
summonmonster_mage_plus_Kwk(obj,obj,100,0,0,0,MONSTER_ID_LUIS,monster_time,monster_level,0);
|
|
if(sq_GetIntData(obj, SKILL_BYKK_BLACKLUNATIC, 50) > 0){
|
|
summonmonster_mage_plus_Kwk(obj,obj,145,0,0,0,MONSTER_ID_LUIS,monster_time,monster_level,0);
|
|
break;
|
|
}
|
|
if(sq_GetLevelData(obj, SKILL_BYKK_SUMMONLUIS, 2, sq_GetSkillLevel(obj, SKILL_BYKK_SUMMONLUIS)) > 1){
|
|
local num_max = sq_GetLevelData(obj, SKILL_BYKK_SUMMONLUIS, 2, sq_GetSkillLevel(obj, SKILL_BYKK_SUMMONLUIS)) - 1
|
|
for(local i = 0; i < num_max; i++){
|
|
local angle = 360 / num_max * (i + 1);
|
|
local x = (sq_Cos(sq_ToRadian(angle.tofloat())) * 100.0).tointeger();
|
|
local y = (sq_Sin(sq_ToRadian(angle.tofloat())) * 50.0).tointeger();
|
|
summonmonster_mage_plus_Kwk(obj,obj,145 + i * 45,y,0,0,MONSTER_ID_LUIS,monster_time,monster_level,0);
|
|
}
|
|
}
|
|
break;
|
|
case SKILL_BYKK_SUMMONBABYDRAGON:
|
|
summonmonster_mage_plus_Kwk(obj,obj,100,0,0,0,MONSTER_ID_BABYDRAGON,monster_time,monster_level,0);
|
|
if(sq_GetLevelData(obj, SKILL_BYKK_SUMMONBABYDRAGON, 2, sq_GetSkillLevel(obj, SKILL_BYKK_SUMMONBABYDRAGON)) > 1){
|
|
local num_max = sq_GetLevelData(obj, SKILL_BYKK_SUMMONBABYDRAGON, 2, sq_GetSkillLevel(obj, SKILL_BYKK_SUMMONBABYDRAGON)) - 1
|
|
for(local i = 0; i < num_max; i++){
|
|
local angle = 360 / num_max * (i + 1);
|
|
local x = (sq_Cos(sq_ToRadian(angle.tofloat())) * 100.0).tointeger();
|
|
local y = (sq_Sin(sq_ToRadian(angle.tofloat())) * 50.0).tointeger();
|
|
summonmonster_mage_plus_Kwk(obj,obj,x,y,0,0,MONSTER_ID_BABYDRAGON,monster_time,monster_level,0);
|
|
}
|
|
}
|
|
break;
|
|
case SKILL_BYKK_SUMMONKRUTA:
|
|
summonmonster_mage_plus_Kwk(obj,obj,100,0,0,0,MONSTER_ID_KRUTA,monster_time,monster_level,0);
|
|
//print(sq_GetLevelData(obj, SKILL_BYKK_SUMMONKRUTA, 2, sq_GetSkillLevel(obj, SKILL_BYKK_SUMMONKRUTA)));
|
|
if(sq_GetLevelData(obj, SKILL_BYKK_SUMMONKRUTA, 2, sq_GetSkillLevel(obj, SKILL_BYKK_SUMMONKRUTA)) > 1){
|
|
local num_max = sq_GetLevelData(obj, SKILL_BYKK_SUMMONKRUTA, 2, sq_GetSkillLevel(obj, SKILL_BYKK_SUMMONKRUTA)) - 1
|
|
for(local i = 0; i < num_max; i++){
|
|
local angle = 360 / num_max * (i + 1);
|
|
local x = (sq_Cos(sq_ToRadian(angle.tofloat())) * 100.0).tointeger();
|
|
local y = (sq_Sin(sq_ToRadian(angle.tofloat())) * 50.0).tointeger();
|
|
summonmonster_mage_plus_Kwk(obj,obj,x,y,0,0,MONSTER_ID_KRUTA,monster_time,monster_level,0);
|
|
}
|
|
}
|
|
break;
|
|
case SKILL_BYKK_SUMMONCASILLAS:
|
|
summonmonster_mage_plus_Kwk(obj,obj,100,0,0,6,MONSTER_ID_CASILLAS,monster_time,monster_level,0);
|
|
if(sq_GetLevelData(obj, SKILL_BYKK_SUMMONCASILLAS, 2, sq_GetSkillLevel(obj, SKILL_BYKK_SUMMONCASILLAS)) > 1){
|
|
for(local i = 0; i < sq_GetLevelData(obj, SKILL_BYKK_SUMMONCASILLAS, 2, sq_GetSkillLevel(obj, SKILL_BYKK_SUMMONCASILLAS)) - 1; i++){
|
|
summonmonster_mage_plus_Kwk(obj,obj,145 + i * 45,0,0,0,MONSTER_ID_CASILLAS,monster_time,monster_level,0);
|
|
}
|
|
}
|
|
break;
|
|
case SKILL_BYKK_SUMMONRAMOS:
|
|
createPassiveObject_k_k(obj,obj,SKILL_BYKK_SUMMONRAMOS,200,100,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, 2.0, 2.0);
|
|
break;
|
|
case 22://嚙踝蕭?嚙?1
|
|
local skillIndex = sq_GetVectorData(datas, 1);
|
|
obj.getVar("sm_skindex").clear_vector();
|
|
obj.getVar("sm_skindex").push_vector(skillIndex);
|
|
local Ani = obj.sq_GetThrowChargeAni(3);
|
|
obj.setCurrentAnimation(Ani);
|
|
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_CAST_SPEED, SPEED_TYPE_CAST_SPEED, SPEED_VALUE_DEFAULT,SPEED_VALUE_DEFAULT, 2.0, 2.0);
|
|
break;
|
|
case 23://嚙踝蕭?嚙?2
|
|
local Ani = obj.sq_GetThrowShootAni(3);
|
|
obj.setCurrentAnimation(Ani);
|
|
local skillIndex = obj.getVar("sm_skindex").get_vector(0);
|
|
local monster_level = sq_GetSkillLevel(obj, 174);
|
|
local monster_time = 3600000;
|
|
local montser_id = MONSTER_ID_ECHEVERRA;
|
|
local summonsub = 0;
|
|
switch(skillIndex){
|
|
case SKILL_BYKK_SUMMONECHEVERRA:
|
|
obj.sq_PlaySound("WZ_INVOKE_ECHEVERRA");
|
|
break;
|
|
case SKILL_BYKK_SUMMONSPIRITDARKHIGHER:
|
|
obj.sq_PlaySound("WZ_SUMMON_DMURKER");
|
|
montser_id = MONSTER_ID_DARKHIGHERSPIRIT;
|
|
break;
|
|
case SKILL_BYKK_SUMMONSPIRITFIREHIGHER:
|
|
obj.sq_PlaySound("WZ_SUMMON_FHULK");
|
|
montser_id = MONSTER_ID_FIREHIGHERSPIRIT;
|
|
break;
|
|
case SKILL_BYKK_SUMMONSPIRITLIGHTHIGHER:
|
|
obj.sq_PlaySound("WZ_SUMMON_GLARINE");
|
|
montser_id = MONSTER_ID_LIGHTHIGHERSPIRIT;
|
|
break;
|
|
case SKILL_BYKK_SUMMONSPIRITWATERHIGHER:
|
|
obj.sq_PlaySound("WZ_SUMMON_AQUARESS");
|
|
montser_id = MONSTER_ID_WATERHIGHERSPIRIT;
|
|
break;
|
|
case SKILL_BYKK_SUMMONHEILROM:
|
|
obj.sq_PlaySound("WZ_SUMMON_HEILROM");
|
|
montser_id = MONSTER_ID_HEILROM;
|
|
break;
|
|
case SKILL_BYKK_SUMMONSPIRITFIRE:
|
|
obj.sq_PlaySound("WZ_SUMMON_ADOR");
|
|
montser_id = MONSTER_ID_SPIRITFIRE;
|
|
summonsub = 1;
|
|
break;
|
|
case SKILL_BYKK_SUMMONSPIRITWATER:
|
|
obj.sq_PlaySound("WZ_SUMMON_NIAS");
|
|
montser_id = MONSTER_ID_SPIRITWATER;
|
|
summonsub = 2;
|
|
break;
|
|
case SKILL_BYKK_SUMMONSPIRITDARK:
|
|
obj.sq_PlaySound("WZ_SUMMON_STALKER");
|
|
montser_id = MONSTER_ID_SPIRITDARK;
|
|
summonsub = 3;
|
|
break;
|
|
case SKILL_BYKK_SUMMONSPIRITLIGHT:
|
|
obj.sq_PlaySound("WZ_SUMMON_WISP");
|
|
montser_id = MONSTER_ID_SPIRITLIGHT;
|
|
summonsub = 4;
|
|
break;
|
|
}
|
|
local sizeRate = obj.sq_GetIntData(skillIndex, 5).tofloat() / 490.0;
|
|
for(local i = 1; i < 5; i++){
|
|
local pooledObj = sq_AddDrawOnlyAniFromParent(obj,"character/mage/effect/animation/summonspirit"+i.tostring()+".ani", 0, -1, -1);
|
|
local currentAni = pooledObj.getCurrentAnimation();
|
|
currentAni.setImageRateFromOriginal(sizeRate, sizeRate);
|
|
}
|
|
summonmonster_mage_plus_Kwk(obj,obj,100,0,0,summonsub,montser_id,monster_time,monster_level,0);
|
|
|
|
switch(skillIndex){
|
|
case SKILL_BYKK_SUMMONECHEVERRA:
|
|
case SKILL_BYKK_SUMMONSPIRITDARKHIGHER:
|
|
case SKILL_BYKK_SUMMONSPIRITFIREHIGHER:
|
|
case SKILL_BYKK_SUMMONSPIRITLIGHTHIGHER:
|
|
case SKILL_BYKK_SUMMONSPIRITWATERHIGHER:
|
|
local skill_level = sq_GetSkillLevel(obj, skillIndex);
|
|
if(sq_GetLevelData(obj, skillIndex, 2, skill_level) > 1){
|
|
local num_max = sq_GetLevelData(obj, skillIndex, 2, skill_level) - 1
|
|
for(local i = 0; i < num_max; i++){
|
|
local angle = 360 / num_max * (i + 1);
|
|
local x = (sq_Cos(sq_ToRadian(angle.tofloat())) * 100.0).tointeger();
|
|
local y = (sq_Sin(sq_ToRadian(angle.tofloat())) * 50.0).tointeger();
|
|
summonmonster_mage_plus_Kwk(obj,obj,x,y,0,0,montser_id,monster_time,monster_level,0);
|
|
}
|
|
}
|
|
break;
|
|
case SKILL_BYKK_SUMMONSPIRITFIRE:
|
|
local skill_level1 = sq_GetSkillLevel(obj, 51);
|
|
local skill_level2 = sq_GetSkillLevel(obj, SKILL_BYKK_SUMMONSPIRITFIRE);
|
|
local number = sq_GetLevelData(obj, 51, 9, skill_level1);
|
|
local min_level = sq_GetLevelData(obj, 51, 10, skill_level1);
|
|
if(skill_level2 >= min_level){
|
|
if(sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 36) < 1){
|
|
for(local i = 0; i < number; i++){
|
|
summonmonster_mage_plus_Kwk(obj,obj,100 + (i + 1) * 40,0,0,summonsub,montser_id,monster_time,monster_level,0);
|
|
}
|
|
}
|
|
}
|
|
local skill_level = sq_GetSkillLevel(obj, skillIndex);
|
|
local add_number = sq_GetLevelData(obj, skillIndex, 2, skill_level);
|
|
if(add_number > 1){
|
|
for(local i = 0; i < add_number - 1; i++){
|
|
local angle = 360 / add_number * (i + 1);
|
|
local x = (sq_Cos(sq_ToRadian(angle.tofloat())) * 100.0).tointeger();
|
|
local y = (sq_Sin(sq_ToRadian(angle.tofloat())) * 50.0).tointeger();
|
|
summonmonster_mage_plus_Kwk(obj,obj,x,y,0,summonsub,montser_id,monster_time,monster_level,0);
|
|
}
|
|
}
|
|
break;
|
|
case SKILL_BYKK_SUMMONSPIRITWATER:
|
|
local skill_level1 = sq_GetSkillLevel(obj, 52);
|
|
local skill_level2 = sq_GetSkillLevel(obj, SKILL_BYKK_SUMMONSPIRITWATER);
|
|
local number = sq_GetLevelData(obj, 52, 5, skill_level1);
|
|
local min_level = sq_GetLevelData(obj, 52, 6, skill_level1);
|
|
if(skill_level2 >= min_level){
|
|
if(sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 36) < 1){
|
|
for(local i = 0; i < number; i++){
|
|
summonmonster_mage_plus_Kwk(obj,obj,100 + (i + 1) * 40,0,0,summonsub,montser_id,monster_time,monster_level,0);
|
|
}
|
|
}
|
|
}
|
|
local skill_level = sq_GetSkillLevel(obj, skillIndex);
|
|
local add_number = sq_GetLevelData(obj, skillIndex, 2, skill_level);
|
|
if(add_number > 1){
|
|
for(local i = 0; i < add_number - 1; i++){
|
|
local angle = 360 / add_number * (i + 1);
|
|
local x = (sq_Cos(sq_ToRadian(angle.tofloat())) * 100.0).tointeger();
|
|
local y = (sq_Sin(sq_ToRadian(angle.tofloat())) * 50.0).tointeger();
|
|
summonmonster_mage_plus_Kwk(obj,obj,x,y,0,summonsub,montser_id,monster_time,monster_level,0);
|
|
}
|
|
}
|
|
break;
|
|
case SKILL_BYKK_SUMMONSPIRITDARK:
|
|
local skill_level1 = sq_GetSkillLevel(obj, 53);
|
|
local skill_level2 = sq_GetSkillLevel(obj, SKILL_BYKK_SUMMONSPIRITDARK);
|
|
local number = sq_GetLevelData(obj, 53, 6, skill_level1);
|
|
local min_level = sq_GetLevelData(obj, 53, 7, skill_level1);
|
|
if(skill_level2 >= min_level){
|
|
if(sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 36) < 1){
|
|
for(local i = 0; i < number; i++){
|
|
summonmonster_mage_plus_Kwk(obj,obj,100 + (i + 1) * 40,0,0,summonsub,montser_id,monster_time,monster_level,0);
|
|
}
|
|
}
|
|
}
|
|
local skill_level = sq_GetSkillLevel(obj, skillIndex);
|
|
local add_number = sq_GetLevelData(obj, skillIndex, 2, skill_level);
|
|
if(add_number > 1){
|
|
for(local i = 0; i < add_number - 1; i++){
|
|
local angle = 360 / add_number * (i + 1);
|
|
local x = (sq_Cos(sq_ToRadian(angle.tofloat())) * 100.0).tointeger();
|
|
local y = (sq_Sin(sq_ToRadian(angle.tofloat())) * 50.0).tointeger();
|
|
summonmonster_mage_plus_Kwk(obj,obj,x,y,0,summonsub,montser_id,monster_time,monster_level,0);
|
|
}
|
|
}
|
|
break;
|
|
case SKILL_BYKK_SUMMONSPIRITLIGHT:
|
|
local skill_level1 = sq_GetSkillLevel(obj, 54);
|
|
local skill_level2 = sq_GetSkillLevel(obj, SKILL_BYKK_SUMMONSPIRITLIGHT);
|
|
local number = sq_GetLevelData(obj, 54, 6, skill_level1);
|
|
local min_level = sq_GetLevelData(obj, 54, 7, skill_level1);
|
|
if(skill_level2 >= min_level){
|
|
if(sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 36) < 1){
|
|
for(local i = 0; i < number; i++){
|
|
summonmonster_mage_plus_Kwk(obj,obj,100 + (i + 1) * 40,0,0,summonsub,montser_id,monster_time,monster_level,0);
|
|
}
|
|
}
|
|
}
|
|
local skill_level = sq_GetSkillLevel(obj, skillIndex);
|
|
local add_number = sq_GetLevelData(obj, skillIndex, 2, skill_level);
|
|
if(add_number > 1){
|
|
for(local i = 0; i < add_number - 1; i++){
|
|
local angle = 360 / add_number * (i + 1);
|
|
local x = (sq_Cos(sq_ToRadian(angle.tofloat())) * 100.0).tointeger();
|
|
local y = (sq_Sin(sq_ToRadian(angle.tofloat())) * 50.0).tointeger();
|
|
summonmonster_mage_plus_Kwk(obj,obj,x,y,0,summonsub,montser_id,monster_time,monster_level,0);
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case 31:
|
|
local Ani = obj.sq_GetThrowChargeAni(3);
|
|
obj.setCurrentAnimation(Ani);
|
|
break;
|
|
case 32:
|
|
local Ani = obj.sq_GetThrowShootAni(3);
|
|
obj.setCurrentAnimation(Ani);
|
|
break;
|
|
}
|
|
}
|
|
|
|
function onProcCon_RingOfDomination(obj)
|
|
{
|
|
if(!obj) return;
|
|
|
|
local substate = obj.getSkillSubState();
|
|
if(substate <= 1){
|
|
if(sq_IsKeyDown(OPTION_HOTKEY_JUMP, ENUM_SUBKEY_TYPE_ALL)){
|
|
obj.sq_IntVectClear();
|
|
obj.sq_IntVectPush(2);
|
|
obj.sq_AddSetStatePacket(SKILL_BYKK_RINGOFDOMINATION, STATE_PRIORITY_IGNORE_FORCE, true);
|
|
}
|
|
}
|
|
}
|
|
|
|
function onEndCurrentAni_RingOfDomination(obj)
|
|
{
|
|
if(!obj) return;
|
|
if(!obj.sq_IsMyControlObject()) return;
|
|
local substate = obj.getSkillSubState();
|
|
switch(substate){
|
|
case 0:
|
|
obj.sq_IntVectClear();
|
|
obj.sq_IntVectPush(1);
|
|
obj.sq_AddSetStatePacket(SKILL_BYKK_RINGOFDOMINATION, STATE_PRIORITY_USER, true);
|
|
break;
|
|
case 1:
|
|
obj.sq_IntVectClear();
|
|
obj.sq_IntVectPush(2);
|
|
obj.sq_AddSetStatePacket(SKILL_BYKK_RINGOFDOMINATION, STATE_PRIORITY_USER, true);
|
|
break;
|
|
case 2:
|
|
sq_SetCustomDamageType(obj, true, 0);
|
|
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_USER, false);
|
|
break;
|
|
case 20:
|
|
obj.sq_IntVectClear();
|
|
obj.sq_IntVectPush(21);
|
|
obj.sq_AddSetStatePacket(SKILL_BYKK_RINGOFDOMINATION, STATE_PRIORITY_USER, true);
|
|
break;
|
|
case 21:
|
|
case 23:
|
|
case 32:
|
|
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_USER, false);
|
|
break;
|
|
case 22:
|
|
obj.sq_IntVectClear();
|
|
obj.sq_IntVectPush(23);
|
|
obj.sq_AddSetStatePacket(SKILL_BYKK_RINGOFDOMINATION, STATE_PRIORITY_USER, true);
|
|
break;
|
|
case 31:
|
|
obj.sq_IntVectClear();
|
|
obj.sq_IntVectPush(32);
|
|
obj.sq_AddSetStatePacket(SKILL_BYKK_RINGOFDOMINATION, STATE_PRIORITY_USER, true);
|
|
break;
|
|
}
|
|
}
|
|
|
|
function onEndState_RingOfDomination(obj, new_state)
|
|
{
|
|
if(!obj) return;
|
|
if(new_state != SKILL_BYKK_RINGOFDOMINATION){
|
|
RemoveAllAni_RingOfDomination(obj);
|
|
sq_SetCustomDamageType(obj, true, 0);
|
|
}
|
|
}
|
|
|
|
function onTimeEvent_RingOfDomination(obj, timeEventIndex, timeEventCount)
|
|
{
|
|
if(!obj) return false;
|
|
|
|
if(!obj.isMyControlObject()) return false;
|
|
|
|
if(timeEventIndex == 1001){
|
|
local direction = obj.getDirection();//嚙踝蕭嚙踝蕭菾嚙踝蕭
|
|
local xpos = sq_GetDistancePos(obj.getXPos(), direction, 185);//嚙踝蕭嚙踝蕭菾嚙踝蕭嚙踝蕭pos
|
|
local ypos = obj.getYPos();
|
|
local pooledobj_01 = onAddPooledObj_RingOfDomination(obj, "passiveobject/madeby_k_k/animation/ringofdomination/loop/rodloopringa_01.ani", xpos, ypos, ENUM_DRAWLAYER_COVER);
|
|
local pooledobj_02 = onAddPooledObj_RingOfDomination(obj, "passiveobject/madeby_k_k/animation/ringofdomination/loop/rodloopringb_01.ani", xpos, ypos, ENUM_DRAWLAYER_NORMAL);
|
|
local pooledobj_03 = onAddPooledObj_RingOfDomination(obj, "passiveobject/madeby_k_k/animation/ringofdomination/loop/rodsummoneffa_01.ani", xpos, ypos, ENUM_DRAWLAYER_NORMAL);
|
|
local pooledobj_04 = onAddPooledObj_RingOfDomination(obj, "passiveobject/madeby_k_k/animation/ringofdomination/loop/rodsummoneffb_01.ani", xpos, ypos, ENUM_DRAWLAYER_NORMAL);
|
|
local pooledobj_05 = onAddPooledObj_RingOfDomination(obj, "passiveobject/madeby_k_k/animation/ringofdomination/loop/rodsummonefffloor_01.ani", xpos, ypos, ENUM_DRAWLAYER_NORMAL);
|
|
obj.getVar("aniobj").clear_obj_vector();
|
|
obj.getVar("aniobj").push_obj_vector(pooledobj_01);
|
|
obj.getVar("aniobj").push_obj_vector(pooledobj_02);
|
|
obj.getVar("aniobj").push_obj_vector(pooledobj_03);
|
|
obj.getVar("aniobj").push_obj_vector(pooledobj_04);
|
|
obj.getVar("aniobj").push_obj_vector(pooledobj_05);
|
|
|
|
local skill_Id = [44,45,46,47,76,77,78,79,80,121,119,82,25,122,23,21,24,22];
|
|
local monster_Id = [MONSTER_ID_SANDOR,MONSTER_ID_AUXO,MONSTER_ID_LUIS,MONSTER_ID_ECHEVERRA,MONSTER_ID_DARKHIGHERSPIRIT,MONSTER_ID_LIGHTHIGHERSPIRIT,MONSTER_ID_WATERHIGHERSPIRIT,MONSTER_ID_FIREHIGHERSPIRIT,MONSTER_ID_BABYDRAGON,MONSTER_ID_KRUTA,MONSTER_ID_HEILROM,MONSTER_ID_CASILLAS,MONSTER_ID_HODOR,MONSTER_ID_RAMOS,MONSTER_ID_SPIRITDARK,MONSTER_ID_SPIRITFIRE,MONSTER_ID_SPIRITLIGHT,MONSTER_ID_SPIRITWATER];
|
|
local monster_Name = ["SandorObj","AuxoObj","LuisObj","EcheverraObj","DarkhigherspiritObj","LighthigherspiritObj","WaterhigherspiritObj","FirehigherspiritObj","BabydragonObj","KrutaObj","HeilromObj","CassillasObj","HodorObj","RamosObj","SpiritDarkObj","SpiritFireObj","SpiritLightObj","SpiritWaterObj"];
|
|
if(sq_GetLevelData(obj, 45, 8, sq_GetSkillLevel(obj, 45)) > 0){
|
|
local monster_Name = ["AuxoObj","LuisObj","HeilromObj","CassillasObj","RamosObj"];
|
|
}
|
|
|
|
for(local i = 0;i < monster_Id.len(); i++){
|
|
local skill_level = sq_GetSkillLevel(obj, skill_Id[i]);
|
|
//print(monster_Name[i]+",level = "+skill_level);
|
|
local limit_level = sq_GetLevelData(obj, SKILL_BYKK_RINGOFDOMINATION, 2, sq_GetSkillLevel(obj, SKILL_BYKK_RINGOFDOMINATION));
|
|
if(skill_Id[i] == 122) limit_level = 0;
|
|
if(skill_level > limit_level){
|
|
local subtype = 15;
|
|
if(skill_Id[i] == 45 && sq_GetSkill(obj, 45).isSealFunction()){monster_Id[i] = MONSTER_ID_AUXOOLD; subtype = 5;}
|
|
local obj_Monster = obj.getVar(monster_Name[i]).get_obj_vector(0);
|
|
if(!obj_Monster){
|
|
local monster_level = sq_GetSkillLevel(obj, 174);
|
|
local monster_time = 3600000;
|
|
local monster_Num = obj.sq_GetLevelData(skill_Id[i], 2, skill_level);
|
|
if(skill_Id[i] == 122) monster_Num = 1;
|
|
else if(skill_Id[i] == 47 && sq_GetLevelData(obj,SKILL_BYKK_SUMMONECHEVERRA, 0, skill_level) > 0 && monster_Num == 1) monster_Num = 2;
|
|
else if(skill_Id[i] == 46 && sq_GetIntData(obj, SKILL_BYKK_BLACKLUNATIC, 50) > 0) monster_Num = 2;
|
|
else if(skill_Id[i] == 23 && sq_GetSkillLevel(obj, 53) > 0 && sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 36) < 1) monster_Num = 3;
|
|
else if(skill_Id[i] == 21 && sq_GetSkillLevel(obj, 51) > 0 && sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 36) < 1) monster_Num = 3;
|
|
else if(skill_Id[i] == 24 && sq_GetSkillLevel(obj, 54) > 0 && sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 36) < 1) monster_Num = 3;
|
|
else if(skill_Id[i] == 22 && sq_GetSkillLevel(obj, 52) > 0 && sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 36) < 1) monster_Num = 3;
|
|
|
|
// if((skill_Id[i] == 21 || skill_Id[i] == 22 || skill_Id[i] == 23 || skill_Id[i] == 24) && sq_GetLevelData(obj, skill_Id[i], 2, sq_GetSkillLevel(obj, skill_Id[i])) > 1){
|
|
// monster_Num = monster_Num + sq_GetLevelData(obj, skill_Id[i], 2, sq_GetSkillLevel(obj, skill_Id[i])) - 1;
|
|
// print(monster_Num);
|
|
// }
|
|
local seedNumber = sq_GetLevelData(obj, SKILL_BYKK_SUMMONAUXO, 8, sq_GetSkillLevel(obj, SKILL_BYKK_SUMMONAUXO));
|
|
summonmonster_mage_plus_Kwk(obj,obj,190,0,0,0,monster_Id[i],monster_time,monster_level,0);
|
|
if(monster_Num >= 2){
|
|
for(local ac = 0;ac < monster_Num - 1; ac++){
|
|
summonmonster_mage_plus_Kwk(obj,obj,190 + (ac + 1) * 40,0,0,0,monster_Id[i],monster_time,monster_level,0);
|
|
if(skill_Id[i] == 45){
|
|
if(seedNumber > 0) createPassiveObject_k_k(obj,obj,45,subtype,190 + (ac + 1) * 40,0,70,0,0,0,0,0);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if(sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 26) > 0){
|
|
summonmonster_mage_plus_Kwk(obj,obj,190,0,0,0,MONSTER_ID_DARKHIGHERSPIRIT + sq_getRandom(0, 3),3600000,sq_GetSkillLevel(obj, 174),0);
|
|
}
|
|
}
|
|
|
|
if(timeEventIndex == 1002){
|
|
obj.sq_IntVectClear();
|
|
obj.sq_IntVectPush(2);
|
|
obj.sq_AddSetStatePacket(SKILL_BYKK_RINGOFDOMINATION, STATE_PRIORITY_USER, true);
|
|
}
|
|
return true;
|
|
}
|
|
|
|
function onAddPooledObj_RingOfDomination(obj, aniPath, x, y, abc)
|
|
{
|
|
local ani = sq_CreateAnimation("",aniPath);
|
|
local pooledObj = sq_CreatePooledObject(ani,true);
|
|
sq_SetCurrentDirection(pooledObj, obj.getDirection());
|
|
pooledObj.setCurrentPos(x,y,0);
|
|
pooledObj = sq_SetEnumDrawLayer(pooledObj, abc);
|
|
sq_AddObject(obj, pooledObj, OBJECTTYPE_DRAWONLY, false);
|
|
|
|
return pooledObj;
|
|
}
|
|
|
|
function RemoveAllAni_RingOfDomination(obj)
|
|
{
|
|
local objVar = obj.getVar("aniobj");
|
|
local size = objVar.get_obj_vector_size();
|
|
for(local i=0;i<size;i++){
|
|
local object = objVar.get_obj_vector(i);
|
|
if(object) object.setValid(false);
|
|
}
|
|
obj.getVar("aniobj").clear_obj_vector();
|
|
}
|
|
|
|
function checkExecutableSkill_SummonMonsterWait(obj)
|
|
{
|
|
if (!obj) return false;
|
|
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_SUMMONMONSTERWAIT);
|
|
if (isUse){
|
|
obj.sq_AddSetStatePacket(SKILL_BYKK_SUMMONMONSTERWAIT , STATE_PRIORITY_USER, false);
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
function checkCommandEnable_SummonMonsterWait(obj)
|
|
{
|
|
if (!obj) return false;
|
|
local state = obj.sq_GetState();
|
|
if (state == STATE_STAND)
|
|
return true;
|
|
if(state == STATE_ATTACK){
|
|
return obj.sq_IsCommandEnable(SKILL_BYKK_SUMMONMONSTERWAIT);
|
|
}
|
|
return true;
|
|
}
|
|
|
|
function onSetState_SummonMonsterWait(obj, state, datas, isResetTimer)
|
|
{
|
|
if(!obj) return;
|
|
obj.sq_StopMove();
|
|
obj.sq_SetCurrentAnimation(68);
|
|
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED,SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
|
|
|
|
local skill = sq_GetSkill(obj, SKILL_BYKK_SUMMONMONSTERWAIT);
|
|
if(skill.isSealActiveFunction()){//嚙踝蕭弮?OFF嚙踝蕭
|
|
skill.setSealActiveFunction(false);//嚙踝蕭嚙踝蕭?ON
|
|
obj.getVar("summonmonsterwait").setBool(0,true);
|
|
obj.sq_AddSkillLoad(SKILL_BYKK_SUMMONMONSTERWAIT, 112, -1, 0);
|
|
}
|
|
else{
|
|
skill.setSealActiveFunction(true);
|
|
obj.getVar("summonmonsterwait").setBool(0,false);
|
|
obj.sq_RemoveSkillLoad(SKILL_BYKK_SUMMONMONSTERWAIT);
|
|
}
|
|
}
|
|
|
|
function onEndCurrentAni_SummonMonsterWait(obj)
|
|
{
|
|
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_USER, false);
|
|
}
|
|
|
|
function checkExecutableSkill_RepeatedSmashOfRage(obj)
|
|
{
|
|
if(!obj) return false;
|
|
|
|
local monsternum = obj.getVar("KrutaObj").get_obj_vector_size();
|
|
if(monsternum <= 0){
|
|
if(obj.isMessage()) sq_AddMessage(71099);
|
|
return false;
|
|
}
|
|
local b_useskill = obj.sq_IsUseSkill(SKILL_BYKK_REPEATEDSMASHOFRAGE);
|
|
if(b_useskill) {
|
|
obj.sq_IntVectClear();
|
|
obj.sq_IntVectPush(0);
|
|
obj.sq_AddSetStatePacket(SKILL_BYKK_REPEATEDSMASHOFRAGE, STATE_PRIORITY_USER, true);
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
function checkCommandEnable_RepeatedSmashOfRage(obj)
|
|
{
|
|
if(!obj) return false;
|
|
local state = obj.sq_GetState();
|
|
if(state == STATE_STAND) return true;
|
|
if(state == STATE_ATTACK) {
|
|
return obj.sq_IsCommandEnable(SKILL_BYKK_REPEATEDSMASHOFRAGE);
|
|
}
|
|
return true;
|
|
}
|
|
|
|
function onSetState_RepeatedSmashOfRage(obj, state, datas, isResetTimer)
|
|
{
|
|
if(!obj) return;
|
|
local substate = obj.sq_GetVectorData(datas, 0);
|
|
obj.setSkillSubState(substate);
|
|
switch(substate){
|
|
case 0:
|
|
obj.sq_StopMove();
|
|
local Ani = obj.sq_GetThrowChargeAni(0);
|
|
obj.setCurrentAnimation(Ani);
|
|
local ani_01 = obj.getCurrentAnimation();
|
|
local casttime = ani_01.getDelaySum(false);
|
|
sq_StartDrawCastGauge(obj, casttime, true);
|
|
break;
|
|
case 1:
|
|
obj.sq_StopMove();
|
|
local Ani = obj.sq_GetThrowShootAni(0);
|
|
obj.setCurrentAnimation(Ani);
|
|
obj.sq_PlaySound("WZ_SUMMON_KRUTA_02");
|
|
obj.setTimeEvent(0,160,1,false);
|
|
break;
|
|
}
|
|
}
|
|
|
|
function onEndCurrentAni_RepeatedSmashOfRage(obj)
|
|
{
|
|
if(!obj) return;
|
|
if(!obj.sq_IsMyControlObject()) return;
|
|
local substate = obj.getSkillSubState();
|
|
switch(substate){
|
|
case 0:
|
|
obj.sq_IntVectClear();
|
|
obj.sq_IntVectPush(1);
|
|
obj.sq_AddSetStatePacket(SKILL_BYKK_REPEATEDSMASHOFRAGE, STATE_PRIORITY_USER, true);
|
|
break;
|
|
case 1:
|
|
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_USER, false);
|
|
break;
|
|
}
|
|
}
|
|
|
|
function onTimeEvent_RepeatedSmashOfRage(obj, timeEventIndex, timeEventCount)
|
|
{
|
|
if (!obj) return;
|
|
|
|
switch(timeEventIndex){
|
|
case 0:
|
|
local size = obj.getVar("KrutaObj").get_obj_vector_size();
|
|
for(local i = 0; i < size; i++){
|
|
local obj_kruta = sq_GetCNRDObjectToActiveObject(obj.getVar("KrutaObj").get_obj_vector(i));
|
|
if(obj_kruta && !obj_kruta.isDead()){
|
|
if(sq_GetIntData(obj, SKILL_BYKK_REPEATEDSMASHOFRAGE, 0) > 0) obj_kruta.getVar("skillIndex").set_vector(0,11);
|
|
else obj_kruta.getVar("skillIndex").set_vector(0, 7);
|
|
monsterattack_ksk(obj_kruta,13);
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
function checkExecutableSkill_MoonShadow(obj)
|
|
{
|
|
if(!obj) return false;
|
|
if(sq_GetIntData(obj, SKILL_BYKK_ECLIPSEHIVE, 16) > 0) return true;
|
|
local b_useskill = obj.sq_IsUseSkill(SKILL_BYKK_MOONSHADOW);
|
|
if(b_useskill){
|
|
obj.sq_IntVectClear();
|
|
obj.sq_IntVectPush(0);
|
|
obj.sq_AddSetStatePacket(SKILL_BYKK_MOONSHADOW, STATE_PRIORITY_USER, true);
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
function checkCommandEnable_MoonShadow(obj)
|
|
{
|
|
if(!obj) return false;
|
|
local state = obj.sq_GetState();
|
|
if(state == STATE_STAND) return true;
|
|
if(state == STATE_ATTACK){
|
|
return obj.sq_IsCommandEnable(SKILL_BYKK_MOONSHADOW);
|
|
}
|
|
return true;
|
|
}
|
|
|
|
function onSetState_MoonShadow(obj, state, datas, isResetTimer)
|
|
{
|
|
if(!obj) return;
|
|
obj.sq_StopMove();
|
|
local substate = obj.sq_GetVectorData(datas, 0);
|
|
obj.setSkillSubState(substate);
|
|
switch(substate){
|
|
case 0:
|
|
local Ani = obj.sq_GetThrowChargeAni(2);
|
|
obj.setCurrentAnimation(Ani);
|
|
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_CAST_SPEED, SPEED_TYPE_CAST_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
|
|
local skill_level = sq_GetSkillLevel(obj, SKILL_BYKK_MOONSHADOW);
|
|
local castTime = sq_GetCastTime(obj, SKILL_BYKK_MOONSHADOW, skill_level);
|
|
sq_StartDrawCastGauge(obj, castTime, true);
|
|
break;
|
|
case 1:
|
|
local Ani = obj.sq_GetThrowShootAni(2);
|
|
obj.setCurrentAnimation(Ani);
|
|
obj.sq_PlaySound("WZ_MOONSHADOW");
|
|
local skill_level = sq_GetSkillLevel(obj,SKILL_BYKK_MOONSHADOW);
|
|
local attacknumber = sq_GetIntData(obj, SKILL_BYKK_MOONSHADOW, 7);
|
|
local time = sq_GetLevelData(obj,SKILL_BYKK_MOONSHADOW, 1, skill_level);
|
|
// obj.getVar("moonshadow").clear_vector();
|
|
// obj.getVar("moonshadow").push_vector(attacknumber);
|
|
local monsternumber = 0;
|
|
obj.sq_AddSkillLoad(SKILL_BYKK_MOONSHADOW, 139, attacknumber, time);
|
|
local monster_Name = ["SandorObj","AuxoObj","LuisObj","EcheverraObj","DarkhigherspiritObj","LighthigherspiritObj","WaterhigherspiritObj","FirehigherspiritObj","BabydragonObj","KrutaObj","HeilromObj","CassillasObj","HodorObj","RamosObj","SpiritDarkObj","SpiritFireObj","SpiritLightObj","SpiritWaterObj"];
|
|
for(local ui = 0; ui < monster_Name.len(); ui++){
|
|
local number = obj.getVar(monster_Name[ui]).get_obj_vector_size();
|
|
// print(monster_Name[ui]+" = "+number);
|
|
if(number > 0){
|
|
for(local pi = 0; pi < number; pi++){
|
|
local monsterObj = sq_GetCNRDObjectToActiveObject(obj.getVar(monster_Name[ui]).get_obj_vector(pi));
|
|
if(monsterObj){
|
|
local group = sq_GetGroup(monsterObj);
|
|
local uniqueId = sq_GetUniqueId(monsterObj);
|
|
createPassiveObject_k_k(obj,monsterObj,SKILL_BYKK_MOONSHADOW,1,0,0,0,0,time,group,uniqueId,0);
|
|
}
|
|
}
|
|
monsternumber = monsternumber + number;
|
|
}
|
|
}
|
|
// print("monsternumber = "+monsternumber);
|
|
if(monsternumber > 0) obj.sq_PlaySound("MOONSHADOW");
|
|
if(monsternumber <= 0) obj.sq_RemoveSkillLoad(SKILL_BYKK_MOONSHADOW);
|
|
obj.getVar("time").clear_ct_vector();
|
|
obj.getVar("time").push_ct_vector();
|
|
local timer = obj.getVar("time").get_ct_vector(0);
|
|
timer.Reset();
|
|
timer.Start(10000,0);
|
|
break;
|
|
}
|
|
}
|
|
|
|
function onEndCurrentAni_MoonShadow(obj)
|
|
{
|
|
if(!obj) return;
|
|
if(!obj.sq_IsMyControlObject()) return;
|
|
local substate = obj.getSkillSubState();
|
|
switch(substate){
|
|
case 0:
|
|
obj.sq_IntVectClear();
|
|
obj.sq_IntVectPush(1);
|
|
obj.sq_AddSetStatePacket(SKILL_BYKK_MOONSHADOW, STATE_PRIORITY_USER, true);
|
|
break;
|
|
case 1:
|
|
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_USER, false);
|
|
break;
|
|
}
|
|
}
|
|
|
|
function onEndState_MoonShadow(obj, new_state)
|
|
{
|
|
if(!obj) return;
|
|
if(new_state != SKILL_BYKK_MOONSHADOW){
|
|
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_USER, false);
|
|
}
|
|
}
|
|
|
|
function checkExecutableSkill_MassTeleport(obj)
|
|
{
|
|
if (!obj) return false;
|
|
local isUse = obj.sq_IsUseSkill(SKILL_BYKK_MASSTELEPORT);
|
|
if (isUse){
|
|
obj.sq_AddSetStatePacket(SKILL_BYKK_MASSTELEPORT , STATE_PRIORITY_USER, false);
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
|
|
function checkCommandEnable_MassTeleport(obj)
|
|
{
|
|
if (!obj) return false;
|
|
local state = obj.sq_GetState();
|
|
if (state == STATE_STAND)
|
|
return true;
|
|
if(state == STATE_ATTACK){
|
|
return obj.sq_IsCommandEnable(SKILL_BYKK_MASSTELEPORT);
|
|
}
|
|
return true;
|
|
}
|
|
|
|
|
|
function onSetState_MassTeleport(obj, state, datas, isResetTimer)
|
|
{
|
|
if(!obj) return;
|
|
obj.sq_StopMove();
|
|
obj.sq_SetCurrentAnimation(68);//68
|
|
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED,SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
|
|
local monster_Name = ["SandorObj","AuxoObj","LuisObj","EcheverraObj","DarkhigherspiritObj","LighthigherspiritObj","WaterhigherspiritObj","FirehigherspiritObj","BabydragonObj","KrutaObj","HeilromObj","CassillasObj","HodorObj","RamosObj","SpiritDarkObj","SpiritFireObj","SpiritLightObj","SpiritWaterObj"];
|
|
|
|
for(local i = 0;i < monster_Name.len(); i++){
|
|
local number = obj.getVar(monster_Name[i]).get_obj_vector_size();
|
|
if(number > 0){
|
|
for(local ui = 0; ui < number; ui++){
|
|
local monsterObj = sq_GetCNRDObjectToActiveObject(obj.getVar(monster_Name[i]).get_obj_vector(ui));
|
|
if(monsterObj){
|
|
local yPos = obj.getYPos();
|
|
local xPos = sq_GetDistancePos(obj.getXPos(), obj.getDirection(), 100);
|
|
sq_MoveToNearMovablePos(monsterObj, xPos, yPos, 0, xPos, yPos, 0, 100, -1, 5);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
function onEndCurrentAni_MassTeleport(obj)
|
|
{
|
|
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_USER, false);
|
|
}
|
|
|
|
function checkExecutableSkill_BugFall(obj)
|
|
{
|
|
if(!obj) return false;
|
|
|
|
local RamosObj = obj.getVar("RamosObj").get_obj_vector_size();
|
|
if(RamosObj > 0){
|
|
local b_useskill = obj.sq_IsUseSkill(SKILL_BYKK_BUGFALL);
|
|
if(b_useskill){
|
|
obj.sq_IntVectClear();
|
|
obj.sq_IntVectPush(0);
|
|
obj.sq_AddSetStatePacket(SKILL_BYKK_BUGFALL, STATE_PRIORITY_USER, true);
|
|
return true;
|
|
}
|
|
}
|
|
else if(obj.isMessage()){
|
|
sq_AddMessage(71099);
|
|
}
|
|
return false;
|
|
}
|
|
|
|
function checkCommandEnable_BugFall(obj)
|
|
{
|
|
if(!obj) return false;
|
|
local state = obj.sq_GetState();
|
|
if(state == STATE_STAND) return true;
|
|
if(state == STATE_ATTACK){
|
|
return obj.sq_IsCommandEnable(SKILL_BYKK_BUGFALL);
|
|
}
|
|
return true;
|
|
}
|
|
|
|
function onSetState_BugFall(obj, state, datas, isResetTimer)
|
|
{
|
|
if(!obj) return;
|
|
local substate = obj.sq_GetVectorData(datas, 0);
|
|
obj.setSkillSubState(substate);
|
|
switch(substate){
|
|
case 0:
|
|
obj.sq_StopMove();
|
|
local Ani = obj.sq_GetThrowChargeAni(3);
|
|
obj.setCurrentAnimation(Ani);
|
|
local skill_level = sq_GetSkillLevel(obj, SKILL_BYKK_BUGFALL);
|
|
local castTime = sq_GetCastTime(obj, SKILL_BYKK_BUGFALL, skill_level);
|
|
obj.getVar("caseTimE").clear_vector();
|
|
obj.getVar("caseTimE").push_vector(castTime);
|
|
sq_StartDrawCastGauge(obj, castTime, true);
|
|
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_StopMove();
|
|
local Ani = obj.sq_GetThrowShootAni(3);
|
|
obj.setCurrentAnimation(Ani);
|
|
local monsternum = obj.getVar("RamosObj").get_obj_vector_size();
|
|
for(local i = 0; i < monsternum; i++){
|
|
local monsterObj = sq_GetCNRDObjectToActiveObject(obj.getVar("RamosObj").get_obj_vector(i));
|
|
if(monsterObj){
|
|
monsterObj.getVar("skill").setBool(0,true);
|
|
monsterattack_ksk(monsterObj,17);
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
function onEndCurrentAni_BugFall(obj)
|
|
{
|
|
if(!obj) return;
|
|
local substate = obj.getSkillSubState();
|
|
obj.setSkillSubState(substate);
|
|
switch(substate){
|
|
case 1:
|
|
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_USER, false);
|
|
break;
|
|
}
|
|
}
|
|
|
|
function onEndState_BugFall(obj, new_state)
|
|
{
|
|
if(!obj) return;
|
|
if(new_state != 139)
|
|
sq_EndDrawCastGauge(obj);
|
|
}
|
|
|
|
function onProcCon_BugFall(obj)
|
|
{
|
|
if(!obj) return;
|
|
local substate = obj.getSkillSubState();
|
|
local casttime = obj.getVar("caseTimE").get_vector(0);
|
|
if(substate == 0){
|
|
if(obj.sq_GetStateTimer() >= casttime){
|
|
sq_EndDrawCastGauge(obj);
|
|
obj.sq_IntVectClear();
|
|
obj.sq_IntVectPush(1);
|
|
obj.sq_AddSetStatePacket(SKILL_BYKK_BUGFALL, STATE_PRIORITY_USER, true);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
//種花人
|
|
function procSkill_zhonghuaren(obj)
|
|
{
|
|
if(sq_GetLevelData(obj, 45, 8, sq_GetSkillLevel(obj, 45)) < 1) return;
|
|
obj.setSkillCommandEnable(137, false);
|
|
obj.setSkillCommandEnable(80, false);
|
|
obj.setSkillCommandEnable(47, false);
|
|
obj.setSkillCommandEnable(25, false);
|
|
obj.setSkillCommandEnable(121, false);
|
|
obj.setSkillCommandEnable(44, false);
|
|
obj.setSkillCommandEnable(118, false);
|
|
obj.setSkillCommandEnable(21, false);
|
|
obj.setSkillCommandEnable(22, false);
|
|
obj.setSkillCommandEnable(23, false);
|
|
obj.setSkillCommandEnable(24, false);
|
|
obj.setSkillCommandEnable(76, false);
|
|
obj.setSkillCommandEnable(77, false);
|
|
obj.setSkillCommandEnable(78, false);
|
|
obj.setSkillCommandEnable(79, false);
|
|
}
|
|
|
|
/////////////////////////summoner_end
|
|
|
|
|