Rindro-Sqr/user/114.66.51.249/6_mage_9.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