1623 lines
69 KiB
C
1623 lines
69 KiB
C
|
|
function onTimeEvent_po_witch_bykk_kak(obj, timeEventIndex, timeEventCount)
|
|
{
|
|
if(!obj) return;
|
|
local sqrChr = sq_GetCNRDObjectToSQRCharacter(obj.getTopCharacter());
|
|
local skillIndex = obj.getVar("skillIndex").get_vector(0);
|
|
local subtype = obj.getVar("subtype").get_vector(0);
|
|
local state = obj.getVar("state").get_vector(0);
|
|
|
|
switch(skillIndex){
|
|
case SKILL_BYKK_ACIDCLOUD://魔道酸雨雲
|
|
switch(subtype){
|
|
case 1:
|
|
switch(timeEventIndex){
|
|
case 0:
|
|
obj.sq_PlaySound("ACIDCLOUD_DISAPPEARANCE");
|
|
sq_SendDestroyPacketPassiveObject(obj);
|
|
break;
|
|
case 1:
|
|
obj.resetHitObjectList();
|
|
break;
|
|
case 2://leidian
|
|
sq_AddDrawOnlyAniFromParent(obj,"passiveobject/witch_bykk/animation/acidcloud/cloudspark"+(timeEventCount % 3 + 1).tostring()+".ani",sq_getRandom(-75,75),0,0);
|
|
local targetObj = obj.sq_FindFirstTarget(-120, 120, 60, 400);
|
|
if(targetObj){
|
|
local totalDamage = obj.getVar("custom").get_vector(4);
|
|
local sizeRate = obj.getVar("custom").get_vector(3);
|
|
cearteSkillPassive_Witch_bykk(sqrChr,targetObj,PASSIVEOBJECT_BYKK_WITCH,0,0,0,obj.getDirection(),SKILL_BYKK_ACIDCLOUD,3,totalDamage,sizeRate,0,0,0,0,0,0,1);
|
|
}
|
|
break;
|
|
case 3:
|
|
local lifeTime = obj.getVar("custom").get_vector(1) - 480;
|
|
local successType = obj.getVar("custom").get_vector(0);
|
|
if(successType == 0) sq_CreateParticle("passiveobject/witch_bykk/particle/acidraindrop.ptl", obj, 0, 0, 0 - obj.getZPos(), true, 40, 0, lifeTime / 40);
|
|
else sq_CreateParticle("passiveobject/witch_bykk/particle/acidraindrop.ptl", obj, 0, 0, 0 - obj.getZPos(), true, 10, 0, lifeTime / 10);
|
|
break;
|
|
}
|
|
break;
|
|
case 2:
|
|
switch(timeEventIndex){
|
|
case 0:
|
|
obj.removeAllTimeEvent();
|
|
obj.addSetStatePacket(27, null, STATE_PRIORITY_AUTO, false, "");
|
|
break;
|
|
case 1:
|
|
obj.resetHitObjectList();
|
|
break;
|
|
case 2:
|
|
local targetObj;
|
|
obj.getVar("targetObj").clear_obj_vector();
|
|
local targetObj_num = -1;
|
|
local objectManager = obj.getObjectManager();//得到對象管理器
|
|
local objectNumber = objectManager.getCollisionObjectNumber();//總數
|
|
for(local i = 0; i < objectNumber; i++){
|
|
local object = objectManager.getCollisionObject(i);//得到控制類對象
|
|
if(object && object.isObjectType(OBJECTTYPE_ACTIVE) && sqrChr.isEnemy(object) && sq_Abs(sq_GetXPos(object) - sq_GetXPos(obj)) <= 800 && sq_Abs(sq_GetYPos(object) - sq_GetYPos(obj)) <= 400){
|
|
local activeObj = sq_GetCNRDObjectToActiveObject(object);
|
|
if(sq_IsBoss(activeObj) || sq_IsNamed(activeObj)) obj.getVar("targetObj").push_obj_vector(object);
|
|
}
|
|
}
|
|
if(obj.getVar("targetObj").get_obj_vector_size() > 0) targetObj = obj.getVar("targetObj").get_obj_vector(0);
|
|
else targetObj = obj.sq_FindFirstTarget(-9999, 19998, 9999, 9999);
|
|
if(targetObj && targetObj.getState() != STATE_DIE){
|
|
local activeObj = sq_GetCNRDObjectToActiveObject(targetObj);
|
|
obj.getVar("targetObj").clear_obj_vector();
|
|
obj.getVar("targetObj").push_obj_vector(activeObj);
|
|
obj.stopTimeEvent(2);
|
|
if(sq_GetXPos(obj) > sq_GetXPos(activeObj)) obj.addSetStatePacket(23, null, STATE_PRIORITY_AUTO, false, "");
|
|
else obj.addSetStatePacket(22, null, STATE_PRIORITY_AUTO, false, "");
|
|
return;
|
|
}
|
|
break;
|
|
case 3:
|
|
local targetObj = obj.getVar("targetObj").get_obj_vector(0);
|
|
if(targetObj){
|
|
local activeObj = sq_GetCNRDObjectToActiveObject(targetObj);
|
|
local disX = sq_Abs(sq_GetXPos(obj) - sq_GetXPos(activeObj));
|
|
local disY = sq_Abs(sq_GetYPos(obj) - sq_GetYPos(activeObj));
|
|
if(disX > 50){
|
|
local baseM = 20;
|
|
if(obj.getVar("custom").get_vector(7) > 0) baseM = 14;
|
|
local moveX = disX / baseM + 1;
|
|
if(sq_GetXPos(obj) > sq_GetXPos(activeObj)) sq_setCurrentAxisPos(obj, 0, sq_GetXPos(obj) - moveX);
|
|
else sq_setCurrentAxisPos(obj, 0, sq_GetXPos(obj) + moveX);
|
|
}
|
|
if(disY > 30){
|
|
local baseM = 20;
|
|
if(obj.getVar("custom").get_vector(7) > 0) baseM = 14;
|
|
local moveY = disY / baseM + 1;
|
|
if(sq_GetYPos(obj) > sq_GetYPos(activeObj)) sq_setCurrentAxisPos(obj, 1, sq_GetYPos(obj) - moveY);
|
|
else sq_setCurrentAxisPos(obj, 1, sq_GetYPos(obj) + moveY);
|
|
}
|
|
if(disX <= 50 && disY <= 30){
|
|
obj.stopTimeEvent(3);
|
|
obj.setTimeEvent(4,100,-1,false);
|
|
if(obj.getState() != 24) obj.addSetStatePacket(24, null, STATE_PRIORITY_AUTO, false, "");
|
|
}
|
|
}
|
|
else{
|
|
obj.stopTimeEvent(3);
|
|
obj.setTimeEvent(4,100,-1,false);
|
|
if(obj.getState() != 21) obj.addSetStatePacket(21, null, STATE_PRIORITY_AUTO, false, "");
|
|
}
|
|
break;
|
|
case 4:
|
|
local targetObj = obj.getVar("targetObj").get_obj_vector(0);
|
|
if(!targetObj || targetObj.getState() == STATE_DIE){
|
|
obj.stopTimeEvent(4);
|
|
obj.setTimeEvent(3,35,-1,false);
|
|
if(obj.getState() != 26) obj.addSetStatePacket(26, null, STATE_PRIORITY_AUTO, false, "");
|
|
}
|
|
else{
|
|
local activeObj = sq_GetCNRDObjectToActiveObject(targetObj);
|
|
local disX = sq_Abs(sq_GetXPos(obj) - sq_GetXPos(activeObj));
|
|
local disY = sq_Abs(sq_GetYPos(obj) - sq_GetYPos(activeObj));
|
|
if(disX > 50 && disY > 30){
|
|
obj.stopTimeEvent(4);
|
|
obj.setTimeEvent(3,35,-1,false);
|
|
//if(obj.getState() != 26) obj.addSetStatePacket(26, null, STATE_PRIORITY_AUTO, false, "");
|
|
}
|
|
}
|
|
break;
|
|
case 5:
|
|
cearteSkillPassive_Witch_bykk(obj,obj,PASSIVEOBJECT_BYKK_WITCH,sq_getRandom(-100,100),sq_getRandom(-10,0)-1,-40,obj.getDirection(),SKILL_BYKK_ACIDCLOUD,sq_getRandom(4,6),0,0,0,0,0,0,0,0,0);
|
|
break;
|
|
case 6:
|
|
obj.removeAllTimeEvent();
|
|
obj.addSetStatePacket(27, null, STATE_PRIORITY_AUTO, false, "");
|
|
break;
|
|
case 7:
|
|
if(sq_getRandom(1,100) < 75) break;
|
|
local totalDamage = obj.getVar("custom").get_vector(2);
|
|
cearteSkillPassive_Witch_bykk(obj,obj,PASSIVEOBJECT_BYKK_WITCH,sq_getRandom(-100,100),sq_getRandom(-10,0)-1,-80,obj.getDirection(),SKILL_BYKK_ACIDCLOUD,7,totalDamage,0,0,0,0,0,0,0,0);
|
|
break;
|
|
}
|
|
break;
|
|
case 4:
|
|
case 5:
|
|
case 6:
|
|
case 7:
|
|
switch(timeEventIndex){
|
|
case 1:
|
|
// local pAni = obj.getCurrentAnimation();//得到ani
|
|
// local currentT = sq_GetCurrentTime(pAni);//當前時間
|
|
//local fireT = 350;//總時間
|
|
local hight = obj.getVar("custom").get_vector(0);
|
|
local v = sq_GetUniformVelocity(hight, 0, timeEventCount, 35);
|
|
sq_setCurrentAxisPos(obj, 2, v);
|
|
if(timeEventCount >= 35) obj.addSetStatePacket(21, null, STATE_PRIORITY_AUTO, false, "");
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case SKILL_BYKK_ANTIGRAVITYSTARTER://反重力裝置
|
|
switch(timeEventIndex){
|
|
case 0:
|
|
local size = obj.getVar("targetObj").get_obj_vector_size();
|
|
for(local i = 0; i < size; i++){
|
|
local damager = sq_GetCNRDObjectToActiveObject(obj.getVar("targetObj").get_obj_vector(i));
|
|
if(damager || damager.getState() != STATE_DIE){
|
|
if(damager.getZPos() <= 5 && damager.getVar("anti").getBool(0) == false){
|
|
damager.getVar("anti").setBool(0,true);
|
|
local totalDamage = obj.getVar("custom").get_vector(2);
|
|
cearteSkillPassive_Witch_bykk(sqrChr,damager,PASSIVEOBJECT_BYKK_WITCH,0,0,0,obj.getDirection(),SKILL_BYKK_ANTIGRAVITYSTARTER,3,totalDamage,0,0,0,0,0,0,0,1);
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
case 1:
|
|
local successType = obj.getVar("custom").get_vector(1);
|
|
cearteSkillPassive_Witch_bykk(sqrChr,obj,PASSIVEOBJECT_BYKK_WITCH,155,8,0,obj.getDirection(),SKILL_BYKK_ANTIGRAVITYSTARTER,4,successType,0,0,0,0,0,0,0,0);
|
|
cearteSkillPassive_Witch_bykk(sqrChr,obj,PASSIVEOBJECT_BYKK_WITCH,30,50,0,obj.getDirection(),SKILL_BYKK_ANTIGRAVITYSTARTER,4,successType,0,0,0,0,0,0,0,0);
|
|
cearteSkillPassive_Witch_bykk(sqrChr,obj,PASSIVEOBJECT_BYKK_WITCH,-40,-40,0,obj.getDirection(),SKILL_BYKK_ANTIGRAVITYSTARTER,4,successType,0,0,0,0,0,0,0,0);
|
|
cearteSkillPassive_Witch_bykk(sqrChr,obj,PASSIVEOBJECT_BYKK_WITCH,-155,5,0,obj.getDirection(),SKILL_BYKK_ANTIGRAVITYSTARTER,4,successType,0,0,0,0,0,0,0,0);
|
|
break;
|
|
case 2:
|
|
obj.sq_PlaySound("ANTIGRAVITY_STEAM");
|
|
sq_AddDrawOnlyAniFromParent(obj,"passiveobject/witch_bykk/animation/antigravity/smoke1.ani",-25,0,120);
|
|
sq_AddDrawOnlyAniFromParent(obj,"passiveobject/witch_bykk/animation/antigravity/smoke2.ani",15,0,50);
|
|
sq_AddDrawOnlyAniFromParent(obj,"passiveobject/witch_bykk/animation/antigravity/smoke3.ani",-15,0,50);
|
|
sq_AddDrawOnlyAniFromParent(obj,"passiveobject/witch_bykk/animation/antigravity/smoke4.ani",0,0,30);
|
|
break;
|
|
}
|
|
break;
|
|
case SKILL_BYKK_BLACKMANTLE://暗影鬥篷
|
|
switch(timeEventIndex){
|
|
case 0:
|
|
obj.addSetStatePacket(22, null, STATE_PRIORITY_AUTO, false, "");
|
|
break;
|
|
case 1:
|
|
local targetObj_num = 0;
|
|
obj.getVar("targetObj").clear_obj_vector();
|
|
local objectManager = obj.getObjectManager();//得到對象管理器
|
|
local objectNumber = objectManager.getCollisionObjectNumber();//總數
|
|
for(local i = 0; i < objectNumber; i++){
|
|
local object = objectManager.getCollisionObject(i);//得到控制類對象
|
|
if(object && object.isObjectType(OBJECTTYPE_ACTIVE) && sqrChr.isEnemy(object)){
|
|
local activeObj = sq_GetCNRDObjectToActiveObject(object);
|
|
if(sq_Abs(sq_GetXPos(obj) - sq_GetXPos(activeObj)) <= 200 && sq_Abs(sq_GetYPos(obj) - sq_GetYPos(activeObj)) <= 100 && sq_GetZPos(activeObj) <= 50 && sq_Abs(sq_GetXPos(obj) - sq_GetXPos(activeObj)) > 0 && sq_Abs(sq_GetYPos(obj) - sq_GetYPos(activeObj)) > 0){
|
|
targetObj_num = targetObj_num + 1;
|
|
obj.getVar("targetObj").push_obj_vector(activeObj);
|
|
}
|
|
}
|
|
}
|
|
if(targetObj_num > 0){
|
|
sq_AddDrawOnlyAniFromParent(obj,"character/mage/effect/animation/witch_bykk/blackmantle/redcandy/blackmantleneohandfront_handfront_01_01.ani",0,1,1);
|
|
sq_AddDrawOnlyAniFromParent(obj,"character/mage/effect/animation/witch_bykk/blackmantle/redcandy/blackmantleneohandback_handback.ani",0,-1,-1);
|
|
sq_AddDrawOnlyAniFromParent(obj,"character/mage/effect/animation/witch_bykk/blackmantle/redcandy/blackmantleneohandfront_wind01.ani",0,0,0);
|
|
sq_AddDrawOnlyAniFromParent(obj,"character/mage/effect/animation/witch_bykk/blackmantle/redcandy/blackmantleneohandfloor_focus03.ani",0,0,0);
|
|
obj.getVar().setBool(0,true);
|
|
obj.addSetStatePacket(23, null, STATE_PRIORITY_AUTO, false, "");
|
|
obj.setTimeEvent(2,300,1,false);
|
|
}
|
|
break;
|
|
case 2:
|
|
obj.addSetStatePacket(21, null, STATE_PRIORITY_AUTO, false, "");
|
|
local size = obj.getVar("targetObj").get_obj_vector_size();
|
|
for(local i = 0; i < size; i++){
|
|
local activeObj = sq_GetCNRDObjectToActiveObject(obj.getVar("targetObj").get_obj_vector(i));
|
|
if(activeObj){
|
|
local AddAppendage = CNSquirrelAppendage.sq_GetAppendage(activeObj,"character/mage/witch_skill_bykk/ap/ap_blackmantle.nut");
|
|
if(AddAppendage) continue;
|
|
AddAppendage = CNSquirrelAppendage.sq_AppendAppendage(activeObj, obj, SKILL_BYKK_BLACKMANTLE, false, "character/mage/witch_skill_bykk/ap/ap_blackmantle.nut", true);
|
|
if(AddAppendage){
|
|
sq_MoveToAppendageForce(activeObj, obj, obj, 0, 0, activeObj.getZPos() - obj.getZPos(), 100, true, AddAppendage);
|
|
sq_HoldAndDelayDie(activeObj, obj, true, true, true, 10, 200, ENUM_DIRECTION_NEUTRAL , AddAppendage);
|
|
AddAppendage.sq_SetValidTime(500);
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
case 3:
|
|
obj.addSetStatePacket(23, null, STATE_PRIORITY_AUTO, false, "");
|
|
break;
|
|
}
|
|
break;
|
|
case SKILL_BYKK_BROOMSPIN://旋轉掃把
|
|
switch(timeEventIndex){
|
|
case 0:
|
|
local parentObj = obj.getParent();
|
|
CNSquirrelAppendage.sq_RemoveAppendage(parentObj, "Appendage/Character/ap_common_suck.nut");
|
|
sq_SendDestroyPacketPassiveObject(obj);
|
|
break;
|
|
case 1:
|
|
sq_setCurrentAxisPos(obj, 0, sq_GetDistancePos(sqrChr.getXPos(), sqrChr.getDirection(), 50));
|
|
sq_setCurrentAxisPos(obj, 1, sqrChr.getYPos());
|
|
break;
|
|
}
|
|
break;
|
|
case SKILL_BYKK_ELECTRICRABBIT://光電兔
|
|
switch(timeEventIndex){
|
|
case 0:
|
|
obj.resetHitObjectList();
|
|
break;
|
|
}
|
|
break;
|
|
case SKILL_BYKK_ENHANCEDMAGICMISSILE://改良魔法星彈
|
|
switch(timeEventIndex){
|
|
case 0:
|
|
obj.resetHitObjectList();
|
|
local sub = obj.getVar("custom").get_vector(6);
|
|
if(obj.getVar("custom").get_vector(0) >= 2 && timeEventCount >= 2 + sub) obj.setTimeEvent(2,100,1,false);
|
|
break;
|
|
case 1:
|
|
local size = obj.getVar("targetObj").get_obj_vector_size();
|
|
if(size <= 0) break;
|
|
for(local i = 0; i < size; i++){
|
|
local targetObj = obj.getVar("targetObj").get_obj_vector(i);
|
|
if(targetObj){
|
|
local activeObj = sq_GetCNRDObjectToActiveObject(targetObj);
|
|
local drawObj = createOnlyDrawObject_witch_bykk(obj,"passiveobject/witch_bykk/animation/enhancedmagicmissile/linkelectric.ani",true,obj.getDirection(),sq_GetXPos(obj),sq_GetYPos(obj) - 1,sq_GetZPos(obj),ENUM_DRAWLAYER_NORMAL);
|
|
setLightning_witch_bykk(obj, drawObj, targetObj);
|
|
sq_SendHitObjectPacket(obj,activeObj,0,0,sq_GetObjectHeight(targetObj) / 2);
|
|
}
|
|
}
|
|
break;
|
|
case 2:
|
|
if(obj.getVar("targetObj").get_obj_vector_size() > 0){
|
|
obj.getVar("move").clear_vector();
|
|
obj.getVar("move").push_vector(sq_GetXPos(obj));
|
|
obj.getVar("move").push_vector(sq_GetZPos(obj));
|
|
obj.getVar("move").push_vector(100);
|
|
obj.getVar("move").push_vector(300);
|
|
obj.addSetStatePacket(state + 1, null, STATE_PRIORITY_AUTO, false, "");
|
|
}
|
|
else obj.addSetStatePacket(24, null, STATE_PRIORITY_AUTO, false, "");
|
|
break;
|
|
}
|
|
break;
|
|
case SKILL_BYKK_FLUORECOLLIDER://電鳗碰撞機
|
|
switch(timeEventIndex){
|
|
case 0:
|
|
obj.addSetStatePacket(22, null, STATE_PRIORITY_AUTO, false, "");
|
|
break;
|
|
case 1:
|
|
obj.resetHitObjectList();
|
|
break;
|
|
case 2:
|
|
local size = obj.getVar("targetObj").get_obj_vector_size();
|
|
for(local i = 0; i < size; i++){
|
|
local targetObj = obj.getVar("targetObj").get_obj_vector(i);
|
|
if(targetObj){
|
|
local activeObj = sq_GetCNRDObjectToActiveObject(targetObj);
|
|
local aniPath = "passiveobject/witch_bykk/animation/fluorecollider/thunder7.ani";
|
|
local aniPath2 = "passiveobject/witch_bykk/animation/fluorecollider/thunder"+sq_getRandom(1,6).tostring()+".ani";
|
|
local drawObj = createOnlyDrawObject_witch_bykk(obj,aniPath,true,obj.getDirection(),sq_GetDistancePos(sq_GetXPos(obj),obj.getDirection(),10),sq_GetYPos(obj),195,ENUM_DRAWLAYER_NORMAL);
|
|
local drawObj2 = createOnlyDrawObject_witch_bykk(obj,aniPath2,true,obj.getDirection(),sq_GetDistancePos(sq_GetXPos(obj),obj.getDirection(),10),sq_GetYPos(obj),195,ENUM_DRAWLAYER_NORMAL);
|
|
setLightning_witch_bykk(obj, drawObj, activeObj);
|
|
setLightning_witch_bykk(obj, drawObj2, activeObj);
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case SKILL_BYKK_FUSIONCRAFT://技藝融合
|
|
break;
|
|
case SKILL_BYKK_HEATINGFURNACE://爆炎加熱爐
|
|
switch(subtype){
|
|
case 1:
|
|
switch(timeEventIndex){
|
|
case 0:
|
|
if(true) obj.addSetStatePacket(23, null, STATE_PRIORITY_AUTO, false, "");//超大成功時
|
|
else obj.addSetStatePacket(22, null, STATE_PRIORITY_AUTO, false, "");
|
|
break;
|
|
}
|
|
break;
|
|
case 2:
|
|
switch(timeEventIndex){
|
|
case 0:
|
|
local hitMax = 15 + obj.getVar("custom").getInt(10);
|
|
local time = 750;
|
|
obj.setTimeEvent(1, time / (hitMax + 1), hitMax, false);
|
|
break;
|
|
case 1:
|
|
obj.resetHitObjectList();
|
|
break;
|
|
}
|
|
break;
|
|
case 3:
|
|
switch(timeEventIndex){
|
|
case 0:
|
|
// local successType = obj.getVar("custom").get_vector(0);
|
|
// if(successType >= 1){
|
|
// local anglea = obj.getVar("custom").get_vector(1);
|
|
// local speed_X = obj.getVar("custom").get_vector(2);
|
|
// local speed_Z = obj.getVar("custom").get_vector(3);
|
|
// local Xpos = obj.getVar("custom").get_vector(4);
|
|
// local Ypos = obj.getVar("custom").get_vector(5);
|
|
// local Zpos = obj.getVar("custom").get_vector(6);
|
|
// sq_BinaryStartWrite();
|
|
// sq_BinaryWriteDword(SKILL_BYKK_HEATINGFURNACE);
|
|
// sq_BinaryWriteDword(5);
|
|
// sq_BinaryWriteDword(anglea);
|
|
// sq_BinaryWriteDword(speed_X);
|
|
// sq_BinaryWriteDword(speed_Z);
|
|
// sq_BinaryWriteDword(timeEventCount);
|
|
// sq_SendCreatePassiveObjectPacketPos(obj, PASSIVEOBJECT_BYKK_WITCH, 0, Xpos, Ypos - timeEventCount, Zpos - timeEventCount);
|
|
// }
|
|
break;
|
|
}
|
|
break;
|
|
case 4:
|
|
local sizeRate = obj.getVar("custom").get_vector(0);
|
|
sizeRate = sizeRate.tofloat() / 100.0;
|
|
switch(timeEventIndex){
|
|
case 1:
|
|
local pooledObj = sq_AddDrawOnlyAniFromParent(obj,"passiveobject/common/animation/fireexplosionparticle1.ani", sq_getRandom(-10,10), sq_getRandom(-10,10), sq_getRandom(-10,10));
|
|
local currentAni = pooledObj.getCurrentAnimation();
|
|
currentAni.setImageRateFromOriginal(sizeRate, sizeRate);
|
|
break;
|
|
case 2:
|
|
local pooledObj = sq_AddDrawOnlyAniFromParent(obj,"passiveobject/common/animation/fireexplosionparticle2.ani", 0, 2, 0);
|
|
local currentAni = pooledObj.getCurrentAnimation();
|
|
currentAni.setImageRateFromOriginal(sizeRate, sizeRate);
|
|
break;
|
|
case 3:
|
|
local pooledObj = sq_AddDrawOnlyAniFromParent(obj,"passiveobject/common/animation/fireexplosionparticle3.ani", 0, 1, 1);
|
|
local currentAni = pooledObj.getCurrentAnimation();
|
|
local angle = sq_ToRadian(360.0 * timeEventCount / 16);
|
|
sq_SetfRotateAngle(currentAni, angle);
|
|
currentAni.setImageRateFromOriginal(sizeRate * 2.0, sizeRate * 2.0);
|
|
break;
|
|
case 4:
|
|
local pooledObj = sq_AddDrawOnlyAniFromParent(obj,"passiveobject/common/animation/fireexplosionparticle4.ani", sq_getRandom(-30,30), sq_getRandom(-30,30), sq_getRandom(-30,30));
|
|
local currentAni = pooledObj.getCurrentAnimation();
|
|
currentAni.setImageRateFromOriginal(sizeRate, sizeRate);
|
|
break;
|
|
}
|
|
break;
|
|
case 6:
|
|
switch(timeEventIndex){
|
|
case 0:
|
|
obj.setTimeEvent(1,80,8,false);
|
|
break;
|
|
case 1:
|
|
obj.resetHitObjectList();
|
|
break;
|
|
}
|
|
break;
|
|
case 7:
|
|
switch(timeEventIndex){
|
|
case 0:
|
|
local number_max = obj.getVar("custom").getInt(10);
|
|
local pAni = obj.getCurrentAnimation();
|
|
local delaysum = pAni.getDelaySum(3, 17);
|
|
obj.setTimeEvent(1,delaysum / (number_max + 1),number_max, true);
|
|
break;
|
|
case 1:
|
|
obj.resetHitObjectList();
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case SKILL_BYKK_HOMUNCULUS://魔道學助手
|
|
switch(timeEventIndex){
|
|
case 0:
|
|
local targetObj = sq_GetCNRDObjectToActiveObject(obj.getVar().get_obj_vector(0));
|
|
if(targetObj){
|
|
local aniPath = "monster/character/mage/witch_bykk/fluore/animation/a/fluore_athunder7.ani";
|
|
local aniPath2 = "monster/character/mage/witch_bykk/fluore/animation/a/fluore_athunder"+sq_getRandom(1,6).tostring()+".ani";
|
|
local drawObj = createOnlyDrawObject_witch_bykk(obj,aniPath,true,obj.getDirection(),sq_GetXPos(obj),sq_GetYPos(obj) + 1,sq_GetZPos(obj),ENUM_DRAWLAYER_NORMAL);
|
|
local drawObj2 = createOnlyDrawObject_witch_bykk(obj,aniPath,true,obj.getDirection(),sq_GetXPos(obj),sq_GetYPos(obj) + 1,sq_GetZPos(obj),ENUM_DRAWLAYER_NORMAL);
|
|
setLightning_witch_bykk(obj, drawObj, targetObj);
|
|
setLightning_witch_bykk(obj, drawObj2, targetObj);
|
|
sq_SendHitObjectPacket(obj,targetObj,0,0,sq_GetObjectHeight(obj) / 2);
|
|
}
|
|
else sq_SendDestroyPacketPassiveObject(obj);
|
|
break;
|
|
case 1:
|
|
local totalDamage = obj.getVar("custom").get_vector(0);
|
|
local prob = obj.getVar("custom").get_vector(1);
|
|
local level = obj.getVar("custom").get_vector(2);
|
|
local time = obj.getVar("custom").get_vector(3);
|
|
local damage = obj.getVar("custom").get_vector(4);
|
|
cearteSkillPassive_Witch_bykk(sqrChr,obj,PASSIVEOBJECT_BYKK_WITCH,sq_getRandom(-100,100),sq_getRandom(-50,50),0,obj.getDirection(),SKILL_BYKK_HOMUNCULUS,13,totalDamage,prob,level,time,damage,0,0,0,0);
|
|
break;
|
|
case 2:
|
|
obj.resetHitObjectList();
|
|
break;
|
|
case 3:
|
|
sq_SendDestroyPacketPassiveObject(obj);
|
|
break;
|
|
case 4:
|
|
local hitMax = obj.getVar("custom").get_vector(0);
|
|
sq_CreateParticle("passiveobject/witch_bykk/particle/acidraindrop.ptl", obj, 0, 0, 0 - obj.getZPos(), true, 10, 0, (150*hitMax+100) / 10);
|
|
break;
|
|
}
|
|
break;
|
|
case SKILL_BYKK_JACKFROSTICEWATER://雪人刨冰
|
|
switch(timeEventIndex){
|
|
case 0:
|
|
obj.addSetStatePacket(22, null, STATE_PRIORITY_AUTO, false, "");
|
|
break;
|
|
case 1:
|
|
obj.addSetStatePacket(21, null, STATE_PRIORITY_AUTO, false, "");
|
|
break;
|
|
case 2:
|
|
local totalDamage = obj.getVar("custom").get_vector(0);
|
|
local sub = obj.getVar("custom").get_vector(2);
|
|
cearteSkillPassive_Witch_bykk(sqrChr,obj,PASSIVEOBJECT_BYKK_WITCH,0,0,0,obj.getDirection(),SKILL_BYKK_JACKFROSTICEWATER,2,totalDamage,sub,0,0,0,0,0,0,0);
|
|
break;
|
|
case 3:
|
|
if(obj.getVar().getBool(0)){obj.resetHitObjectList();break;};
|
|
local inputConut = sqrChr.getRapidInputFrequency();
|
|
inputConut = inputConut.tointeger();
|
|
local inputMax = 10;
|
|
if(inputConut > inputMax){
|
|
obj.setTimeEvent(3,75,-1,false);
|
|
obj.getVar().setBool(0,true);
|
|
local currentAni = obj.getCurrentAnimation();
|
|
currentAni.setSpeedRate(150.0);
|
|
}
|
|
else obj.setTimeEvent(3,150,1,false);
|
|
|
|
obj.resetHitObjectList();
|
|
break;
|
|
case 4:
|
|
obj.stopSound(2333);
|
|
obj.sq_PlaySound("JACKFROST_ICEWATER_ROLL_LOOP",2333);
|
|
break;
|
|
}
|
|
break;
|
|
case SKILL_BYKK_JACKOHALLOWEEN://搗蛋傑克
|
|
switch(timeEventIndex){
|
|
case 0:
|
|
obj.addSetStatePacket(25, null, STATE_PRIORITY_AUTO, false, "");
|
|
break;
|
|
case 1:
|
|
obj.setTimeEvent(2,600,-1,true);
|
|
break;
|
|
case 2:
|
|
local offset_x = sq_GetDistancePos(sq_GetXPos(obj),obj.getDirection(),450);
|
|
local offset_y = sq_GetYPos(obj);
|
|
local offset_z = sq_GetZPos(obj);
|
|
local path1 = "character/mage/effect/animation/witch_bykk/jackohalloween/jackohalloweenlavafloorbottom_lavafloor.ani";
|
|
local path2 = "character/mage/effect/animation/witch_bykk/jackohalloween/jackohalloweenlavafloortop_circle.ani";
|
|
createOnlyDrawObject_witch_bykk(obj,path1,true,obj.getDirection(),offset_x,offset_y,offset_z,ENUM_DRAWLAYER_BOTTOM);
|
|
createOnlyDrawObject_witch_bykk(obj,path2,true,obj.getDirection(),offset_x,offset_y,offset_z,ENUM_DRAWLAYER_NORMAL);
|
|
break;
|
|
case 3:
|
|
if(sqrChr){
|
|
local sqrChr_offset_X = sq_GetDistancePos(sq_GetXPos(sqrChr),obj.getDirection(),-50);
|
|
local disX = sq_Abs(sq_GetXPos(obj) - sqrChr_offset_X);
|
|
local disY = sq_Abs(sq_GetYPos(obj) - sq_GetYPos(sqrChr));
|
|
if(disX > 30){
|
|
local moveX = disX / 20 + 1;
|
|
if(sq_GetXPos(obj) > sqrChr_offset_X) sq_setCurrentAxisPos(obj, 0, sq_GetXPos(obj) - moveX);
|
|
else sq_setCurrentAxisPos(obj, 0, sq_GetXPos(obj) + moveX);
|
|
}
|
|
if(disY > 10){
|
|
local moveY = disY / 20 + 1;
|
|
if(sq_GetYPos(obj) > sq_GetYPos(sqrChr)) sq_setCurrentAxisPos(obj, 1, sq_GetYPos(obj) - moveY);
|
|
else sq_setCurrentAxisPos(obj, 1, sq_GetYPos(obj) + moveY);
|
|
}
|
|
if(disX > 30 || disY > 10) obj.setTimeEvent(3,30,1,false);
|
|
else obj.setTimeEvent(3,1000,1,false);
|
|
}
|
|
break;
|
|
case 4:
|
|
obj.resetHitObjectList();
|
|
break;
|
|
case 5:
|
|
obj.stopSound(1103);
|
|
if(timeEventCount % 2 == 1) obj.sq_PlaySound("JACKOHALLOWEEN_FIRE_LOOP",1103);
|
|
else obj.sq_PlaySound("JACKOHALLOWEEN_FIRE_LOOP_02",1103);
|
|
break;
|
|
}
|
|
break;
|
|
case SKILL_BYKK_LAVAPOTION://熔岩藥瓶
|
|
switch(timeEventIndex){
|
|
case 0:
|
|
sq_SendDestroyPacketPassiveObject(obj);
|
|
break;
|
|
case 1:
|
|
local ani = sq_CreateAnimation("","passiveobject/witch_bykk/animation/lavapotion/lavapotionfail_22.ani");
|
|
obj.setCurrentAnimation(ani);
|
|
local currentAni = obj.getCurrentAnimation();
|
|
currentAni.addLayerAnimation(-1,sq_CreateAnimation("","passiveobject/witch_bykk/animation/lavapotion/lavapotionfailbottom_01.ani"),true);
|
|
break;
|
|
case 2:
|
|
obj.addSetStatePacket(23, null, STATE_PRIORITY_AUTO, false, "");
|
|
break;
|
|
case 3:
|
|
obj.resetHitObjectList();
|
|
break;
|
|
case 4:
|
|
if(timeEventCount % 2 == 0){
|
|
obj.stopSound(7701);
|
|
obj.sq_PlaySound("FIRE_EXPLOSION_CREATE",7701);
|
|
local sizeRate = obj.getVar("custom").get_vector(0);
|
|
local totalDamage = obj.getVar("custom").get_vector(4);
|
|
local successType = obj.getVar("custom").get_vector(1);
|
|
cearteSkillPassive_Witch_bykk(sqrChr,obj,PASSIVEOBJECT_BYKK_WITCH,0,0,0,obj.getDirection(),SKILL_BYKK_LAVAPOTION,1,totalDamage,sizeRate,0,0,successType,0,0,0,1);
|
|
}
|
|
local sizeRate = obj.getVar("custom").get_vector(0).tofloat() / 100.0 * 1.35;
|
|
local offset_x = (30.0 * sizeRate).tointeger();
|
|
local offset_y = (5.0 * sizeRate).tointeger();
|
|
local setx = sq_getRandom(-offset_x,offset_x);
|
|
local sety = sq_getRandom(-offset_y,offset_y);
|
|
sq_AddDrawOnlyAniFromParent(obj,"passiveobject/witch_bykk/animation/lavapotion/lavapotionfire.ani",setx,sety,0);
|
|
cearteSkillPassive_Witch_bykk(sqrChr,obj,PASSIVEOBJECT_BYKK_WITCH,setx,sety + 1,0,obj.getDirection(),SKILL_BYKK_LAVAPOTION,4,0,0,0,0,0,0,0,0,0);
|
|
break;
|
|
}
|
|
break;
|
|
case SKILL_BYKK_MEGADRILL://冰霜鑽孔車
|
|
switch(subtype){
|
|
case 1:
|
|
switch(timeEventIndex){
|
|
case 0:
|
|
obj.addSetStatePacket(22, null, STATE_PRIORITY_AUTO, false, "");
|
|
break;
|
|
case 1:
|
|
createOnlyDrawObject_witch_bykk(obj,"passiveobject/witch_bykk/animation/megadrill/fail/megadrillfailstartbottom.ani",true,obj.getDirection(),sq_GetXPos(obj),sq_GetYPos(obj),sq_GetZPos(obj),ENUM_DRAWLAYER_BOTTOM)
|
|
break;
|
|
case 2:
|
|
obj.resetHitObjectList();
|
|
break;
|
|
case 3:
|
|
if(obj.getVar("custom").get_vector(2) > 0){
|
|
local currentAni = obj.getCurrentAnimation();
|
|
currentAni.addLayerAnimation(0,sq_CreateAnimation("","character/mage/effect/animation/witch_bykk/megadrill/newmegadrilltwist_01.ani"),true);
|
|
local parentObj = obj.getParent();
|
|
if(!parentObj) break;
|
|
local appendage = CNSquirrelAppendage.sq_AppendAppendage(parentObj, obj, -1, false, "appendage/character/ap_common_suck.nut", false);
|
|
if(appendage){
|
|
CNSquirrelAppendage.sq_Append(appendage, parentObj, obj);
|
|
local auraAppendage = appendage.sq_getAuraMaster("auraMaster");
|
|
if(!auraAppendage) auraAppendage = appendage.sq_AddAuraMaster("auraMaster", parentObj, obj, 1200, 18, 5, 0);
|
|
if(auraAppendage) auraAppendage.setAttractionInfo(800, 800, 300, 100);
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case 2:
|
|
case 12:
|
|
switch(timeEventIndex){
|
|
case 0:
|
|
sq_AddDrawOnlyAniFromParent(obj,"character/mage/effect/animation/witch_bykk/megadrill/fluore2_dust"+sq_getRandom(1,3).tostring()+".ani",0,-1,-1);
|
|
break;
|
|
case 1:
|
|
// obj.setTimeEvent(2,50,-1,false);
|
|
break;
|
|
case 2:
|
|
// local parentObj = obj.getParent();
|
|
// if(parentObj){
|
|
// if(timeEventCount % 2 == 1){
|
|
// sq_setCurrentAxisPos(obj, 0, sq_GetXPos(parentObj));
|
|
// sq_setCurrentAxisPos(obj, 2, sq_GetZPos(parentObj));
|
|
// }
|
|
// else{
|
|
// sq_setCurrentAxisPos(obj, 0, sq_GetXPos(parentObj) + 5);
|
|
// sq_setCurrentAxisPos(obj, 2, sq_GetZPos(parentObj) + 5);
|
|
// }
|
|
// }
|
|
if(timeEventCount % 2 == 1) sq_setCurrentAxisPos(obj, 2, sq_GetZPos(obj) + 1);
|
|
else sq_setCurrentAxisPos(obj, 2, sq_GetZPos(obj));
|
|
break;
|
|
case 3:
|
|
obj.resetHitObjectList();
|
|
break;
|
|
case 4:
|
|
case 5:
|
|
case 6:
|
|
case 7:
|
|
local sizeRate = 1.5;
|
|
local pooledObj1 = sq_AddDrawOnlyAniFromParent(obj,"passiveobject/character/mage/animation/icefireexplosionparticle"+(timeEventIndex-3).tostring()+".ani",50,0,50);
|
|
local pooledObj2 = sq_AddDrawOnlyAniFromParent(obj,"passiveobject/character/mage/animation/icefireexplosionparticle"+(timeEventIndex-3).tostring()+".ani",-46,0,40);
|
|
local pooledObj3 = sq_AddDrawOnlyAniFromParent(obj,"passiveobject/character/mage/animation/icefireexplosionparticle"+(timeEventIndex-3).tostring()+".ani",-36,0,100);
|
|
local aniA = [pooledObj1,pooledObj2,pooledObj3];
|
|
for(local i = 0; i < 3; i++){
|
|
local pAni = aniA[i].getCurrentAnimation();
|
|
pAni.setImageRateFromOriginal(sizeRate, sizeRate);
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case 4:
|
|
if(timeEventIndex == 0){
|
|
sqrChr.sq_IntVectClear();
|
|
sqrChr.sq_IntVectPush(2);
|
|
sqrChr.sq_AddSetStatePacket(SKILL_BYKK_MEGADRILL , STATE_PRIORITY_USER, true);
|
|
sq_SendDestroyPacketPassiveObject(obj);
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case SKILL_BYKK_UROBOROS://二覺
|
|
switch(timeEventIndex){
|
|
case 0:
|
|
local ani = sq_CreateAnimation("","passiveobject/witch_bykk/animation/uroboros/explosion_dodge.ani");
|
|
obj.setCurrentAnimation(ani);
|
|
local totalDamage = obj.getVar("custom").get_vector(0);
|
|
sq_SetCurrentAttackInfo(obj, sq_GetCustomAttackInfo(obj, 39));
|
|
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), totalDamage);
|
|
sq_CreateParticle("character/mage/effect/animation/witch_bykk/uroboros/particle/uroborossub.ptl", obj, 0, 0, 100, true, 1, 0, 1);
|
|
obj.sq_PlaySound("UROBOROS_EXP");
|
|
break;
|
|
case 1:
|
|
local aniPath = "passiveobject/witch_bykk/animation/uroboros/attackset03_dark.ani";
|
|
local aniPath2 = "passiveobject/witch_bykk/animation/uroboros/attackset01_dark.ani";
|
|
if(timeEventCount % 4 == 2){aniPath = "passiveobject/witch_bykk/animation/uroboros/attackset03_fire.ani";aniPath2 = "passiveobject/witch_bykk/animation/uroboros/attackset01_fire.ani";}
|
|
if(timeEventCount % 4 == 3){aniPath = "passiveobject/witch_bykk/animation/uroboros/attackset03_ice.ani";aniPath2 = "passiveobject/witch_bykk/animation/uroboros/attackset01_ice.ani";}
|
|
if(timeEventCount % 4 == 0){aniPath = "passiveobject/witch_bykk/animation/uroboros/attackset03_light.ani";aniPath2 = "passiveobject/witch_bykk/animation/uroboros/attackset01_light.ani";}
|
|
local totalDamage = obj.getVar("custom").get_vector(0);
|
|
local targetObj = obj.sq_FindFirstTarget(-300, 600, 100, 600);
|
|
if(targetObj){
|
|
sq_AddDrawOnlyAniFromParent(obj,aniPath2,0,1,1);
|
|
local activeObj = sq_GetCNRDObjectToActiveObject(targetObj);
|
|
local drawObj = createOnlyDrawObject_witch_bykk(obj,aniPath,true,obj.getDirection(),sq_GetXPos(obj),sq_GetYPos(obj),sq_GetZPos(obj) + 20,ENUM_DRAWLAYER_NORMAL);
|
|
obj.sq_PlaySound("R_UROBOROS_SPARK");
|
|
setUroLightning_witch_bykk(obj, drawObj, activeObj);
|
|
cearteSkillPassive_Witch_bykk(sqrChr,activeObj,PASSIVEOBJECT_BYKK_WITCH,0,0,0,obj.getDirection(),SKILL_BYKK_UROBOROS,3,timeEventCount % 4,totalDamage,0,0,0,0,0,0,1);
|
|
local targetObj2 = obj.sq_FindNextTarget(targetObj, 200, 100);
|
|
if(targetObj2){
|
|
local activeObj2 = sq_GetCNRDObjectToActiveObject(targetObj2);
|
|
local drawObj2 = createOnlyDrawObject_witch_bykk(obj,aniPath,true,obj.getDirection(),sq_GetXPos(obj),sq_GetYPos(obj),sq_GetZPos(obj) + 20,ENUM_DRAWLAYER_NORMAL);
|
|
obj.sq_PlaySound("R_UROBOROS_SPARK");
|
|
setUroLightning_witch_bykk(obj, drawObj2, activeObj2);
|
|
cearteSkillPassive_Witch_bykk(sqrChr,activeObj2,PASSIVEOBJECT_BYKK_WITCH,0,0,0,obj.getDirection(),SKILL_BYKK_UROBOROS,3,timeEventCount % 4,totalDamage,0,0,0,0,0,0,1);
|
|
}
|
|
}
|
|
break;
|
|
case 2:
|
|
sqrChr.sq_IntVectClear();
|
|
sqrChr.sq_IntVectPush(2);
|
|
sqrChr.sq_AddSetStatePacket(SKILL_BYKK_UROBOROS , STATE_PRIORITY_USER, true);
|
|
sq_SendDestroyPacketPassiveObject(obj);
|
|
break;
|
|
}
|
|
break;
|
|
case SKILL_BYKK_LOLLIPOPCRUSH://超級棒棒糖
|
|
switch(timeEventIndex){
|
|
case 0:
|
|
obj.addSetStatePacket(22, null, STATE_PRIORITY_AUTO, false, "");
|
|
break;
|
|
case 1:
|
|
if(!sqrChr) return;
|
|
local targetObj;
|
|
if(sqrChr.getVar("Lollipopcrush_Boss").get_obj_vector_size() > 0){
|
|
targetObj = sqrChr.getVar("Lollipopcrush_Boss").get_obj_vector(0);
|
|
}
|
|
else if(sqrChr.getVar("Lollipopcrush_Named").get_obj_vector_size() > 0){
|
|
targetObj = sqrChr.getVar("Lollipopcrush_Named").get_obj_vector(0);
|
|
}
|
|
else{
|
|
targetObj = obj.sq_FindFirstTarget(-9999, 19998, 9999, 9999);
|
|
}
|
|
if(!targetObj){
|
|
if(sq_GetIntData(sqrChr, SKILL_BYKK_LOLLIPOPCRUSH, 16) > 0){
|
|
targetObj = sqrChr;
|
|
local sub = obj.getVar("custom").get_vector(0);
|
|
local whitecandy_num = sqrChr.getVar("whitecandy_num").get_vector(0);
|
|
local blackcandy_num = sqrChr.getVar("blackcandy_num").get_vector(0);
|
|
local bosscandy_num = sqrChr.getVar("bosscandy_num").get_vector(0);
|
|
switch(sub){
|
|
case 0:
|
|
sqrChr.getVar("whitecandy_num").set_vector(0,whitecandy_num+1);
|
|
break;
|
|
case 1:
|
|
sqrChr.getVar("blackcandy_num").set_vector(0,blackcandy_num+1);
|
|
break;
|
|
case 2:
|
|
sqrChr.getVar("bosscandy_num").set_vector(0,bosscandy_num+1);
|
|
break;
|
|
}
|
|
}
|
|
else return;
|
|
}
|
|
obj.getVar("targetObj").clear_obj_vector();
|
|
obj.getVar("targetObj").push_obj_vector(targetObj);
|
|
obj.getVar().setBool(0,true);
|
|
break;
|
|
}
|
|
break;
|
|
case SKILL_BYKK_TRANSFORMFLAPPER://變異蒼蠅拍
|
|
switch(timeEventIndex){
|
|
case 0:
|
|
sq_SendDestroyPacketPassiveObject(obj);
|
|
break;
|
|
case 1:
|
|
obj.resetHitObjectList();
|
|
break;
|
|
}
|
|
break;
|
|
case SKILL_BYKK_TRANSFORMFLAPPEREX://超級蒼蠅拍
|
|
switch(timeEventIndex){
|
|
case 0:
|
|
local offset_x = [125,125,-125,-125,210,210,-210,-210,275,275,-275,-275,310,310,-310,-310,315,315,-310,-310];
|
|
local offset_y = [-35,35,35,-35,-60,60,60,-60,-80,80,80,-80,-95,95,95,-95,-105,105,105,-105];
|
|
local sizeRate = [100,75,50,35,20];
|
|
local basea = (timeEventCount-1)*4;
|
|
local totalDamage = obj.getVar("custom").get_vector(0) / timeEventCount;
|
|
for(local i = 0; i < 4; i++){
|
|
cearteSkillPassive_Witch_bykk(sqrChr,obj,PASSIVEOBJECT_BYKK_WITCH,offset_x[basea + i],offset_y[basea + i],0,obj.getDirection(),SKILL_BYKK_TRANSFORMFLAPPEREX,6,totalDamage*sizeRate[timeEventCount - 1]/100,sizeRate[timeEventCount - 1],0,0,0,0,0,0,1);
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
function onAttack_po_witch_bykk_kak(obj, damager, boundingBox, isStuck)
|
|
{
|
|
if(!obj) return;
|
|
//enableClearDeadEnemies(obj, damager);
|
|
local sqrChr = sq_GetCNRDObjectToSQRCharacter(obj.getTopCharacter());
|
|
local skillIndex = obj.getVar("skillIndex").get_vector(0);
|
|
local subtype = obj.getVar("subtype").get_vector(0);
|
|
local state = obj.getVar("state").get_vector(0);
|
|
|
|
switch(skillIndex){
|
|
case SKILL_BYKK_ACIDCLOUD://魔道酸雨雲
|
|
break;
|
|
case SKILL_BYKK_ANTIGRAVITYSTARTER://反重力裝置
|
|
switch(subtype){
|
|
case 1:
|
|
if(obj.getVar("targetObj").get_obj_vector_size() <= 0) obj.getVar("targetObj").clear_obj_vector();
|
|
if(damager.isObjectType(OBJECTTYPE_ACTIVE)) obj.getVar("targetObj").push_obj_vector(damager);
|
|
else return;
|
|
local successType = obj.getVar("custom").get_vector(1);
|
|
local holdandup = 0;
|
|
if(successType >= 1) holdandup = 300;//
|
|
if(CNSquirrelAppendage.sq_IsAppendAppendage(damager, "appendage/character/hearthings.nut")){
|
|
CNSquirrelAppendage.sq_RemoveAppendage(damager, "appendage/character/hearthings.nut");
|
|
}
|
|
if(CNSquirrelAppendage.sq_IsAppendAppendage(damager, "character/mage/witch_skill_bykk/passiveobj/ap_antigravity.nut")){
|
|
CNSquirrelAppendage.sq_RemoveAppendage(damager, "character/mage/witch_skill_bykk/passiveobj/ap_antigravity.nut");
|
|
}
|
|
CNSquirrelAppendage.sq_AppendAppendage(damager, obj, -1, false, "appendage/character/hearthings.nut", true);
|
|
local AddAppendage = CNSquirrelAppendage.sq_AppendAppendage(damager, obj, SKILL_BYKK_ANTIGRAVITYSTARTER, false, "appendage/character/hearthings.nut", true);
|
|
if(AddAppendage){
|
|
AddAppendage.getAppendageInfo().setValidTime(100);
|
|
sq_HoldAndDelayDie(damager, obj, true, true, true, 0, holdandup, ENUM_DIRECTION_NEUTRAL , AddAppendage);
|
|
if(successType >= 2) obj.setTimeEvent(0,80,-1,false);
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case SKILL_BYKK_BLACKMANTLE://暗影鬥篷
|
|
switch(subtype){
|
|
case 2:
|
|
if(damager.isObjectType(OBJECTTYPE_ACTIVE) && obj.isExistTimeEvent(1)){
|
|
local AddAppendage = CNSquirrelAppendage.sq_GetAppendage(damager,"character/mage/witch_skill_bykk/ap/ap_blackmantle.nut");
|
|
if(AddAppendage) CNSquirrelAppendage.sq_RemoveAppendage(damager, "character/mage/witch_skill_bykk/ap/ap_blackmantle.nut");
|
|
AddAppendage = CNSquirrelAppendage.sq_AppendAppendage(damager, obj, SKILL_BYKK_BLACKMANTLE, false, "character/mage/witch_skill_bykk/ap/ap_blackmantle.nut", true);
|
|
if(AddAppendage){
|
|
sq_MoveToAppendageForce(damager, obj, obj, 0, 0, damager.getZPos() - obj.getZPos(), 100, true, AddAppendage);
|
|
sq_HoldAndDelayDie(damager, obj, true, true, true, 10, 200, ENUM_DIRECTION_NEUTRAL , AddAppendage);
|
|
AddAppendage.sq_SetValidTime(3000);
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case SKILL_BYKK_BROOMSPIN://旋轉掃把
|
|
break;
|
|
case SKILL_BYKK_ELECTRICRABBIT://光電兔
|
|
break;
|
|
case SKILL_BYKK_ENHANCEDMAGICMISSILE://改良魔法星彈
|
|
switch(subtype){
|
|
case 1:
|
|
if(obj.getVar("custom").get_vector(0) >= 2){
|
|
if(damager.isObjectType(OBJECTTYPE_ACTIVE)){
|
|
sq_AddDrawOnlyAniFromParent(damager,"passiveobject/witch_bykk/animation/enhancedmagicmissile/endelectric.ani",0,0, sq_GetCenterZPos(boundingBox));
|
|
obj.getVar("targetObj").push_obj_vector(damager);
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case SKILL_BYKK_FLUORECOLLIDER://電鳗碰撞機
|
|
switch(subtype){
|
|
case 1:
|
|
switch(state){
|
|
case 21:
|
|
if(damager.isObjectType(OBJECTTYPE_ACTIVE) && damager.getState() != STATE_DIE){
|
|
obj.getVar("targetObj").push_obj_vector(damager);
|
|
local activeObj = sq_GetCNRDObjectToActiveObject(damager);
|
|
if(obj.getVar("custom").get_vector(0) >= 2){
|
|
if(!CNSquirrelAppendage.sq_IsAppendAppendage(activeObj, "character/mage/witch_skill_bykk/passiveobj/ap_fluorecollider.nut")){
|
|
local AddAppendage = CNSquirrelAppendage.sq_AppendAppendage(activeObj, obj, -1, false,"character/mage/witch_skill_bykk/passiveobj/ap_fluorecollider.nut", true);
|
|
AddAppendage.sq_SetValidTime(1000);
|
|
sq_HoldAndDelayDie(activeObj, obj, true, false, false, 200, 200, ENUM_DIRECTION_NEUTRAL , AddAppendage);
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case SKILL_BYKK_FUSIONCRAFT://技藝融合
|
|
break;
|
|
case SKILL_BYKK_HEATINGFURNACE://爆炎加熱爐
|
|
break;
|
|
case SKILL_BYKK_HOMUNCULUS://魔道學助手
|
|
if(subtype == 41) sq_SendDestroyPacketPassiveObject(obj);
|
|
break;
|
|
case SKILL_BYKK_JACKFROSTICEWATER://雪人刨冰
|
|
break;
|
|
case SKILL_BYKK_JACKOHALLOWEEN://搗蛋傑克
|
|
break;
|
|
case SKILL_BYKK_LAVAPOTION://熔岩藥瓶
|
|
switch(subtype){
|
|
case 3:
|
|
if(damager.getVar("lavapotion").getBool(0) == false && damager.isObjectType(OBJECTTYPE_ACTIVE)){
|
|
damager.getVar("lavapotion").setBool(0,true);
|
|
obj.getVar("targetObj").push_obj_vector(damager);
|
|
local speedRate = obj.getVar("custom").get_vector(2);
|
|
local jumpRate = obj.getVar("custom").get_vector(3);
|
|
local ap = sq_CreateChangeStatus(CHANGE_STATUS_TYPE_MOVE_SPEED, true, -speedRate.tofloat(), 5000);
|
|
if(ap){
|
|
ap.getAppendageInfo().setValidTime(10000);//設置有效時間
|
|
ap.sq_Append(damager, obj);//設置屬性的父對象
|
|
}
|
|
local ap2 = sq_CreateChangeStatus(CHANGE_STATUS_TYPE_JUMP_POWER, true, -jumpRate.tofloat(), 5000);
|
|
if(ap2){
|
|
ap2.getAppendageInfo().setValidTime(10000);//設置有效時間
|
|
ap2.sq_Append(damager, obj);//設置屬性的父對象
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case SKILL_BYKK_MEGADRILL://冰霜鑽孔車
|
|
break;
|
|
case SKILL_BYKK_UROBOROS://二覺
|
|
if(damager.isObjectType(OBJECTTYPE_ACTIVE)){
|
|
if(!sqrChr.getVar("uroborosTar").is_obj_vector(damager)){
|
|
sqrChr.getVar("uroborosTar").push_obj_vector(damager);
|
|
local AddAppendage = CNSquirrelAppendage.sq_AppendAppendage(damager, sqrChr, -1, false, "appendage/character/ap_common_hold.nut", true);
|
|
sq_HoldAndDelayDie(damager, sqrChr, true, true, true, 200, 200, ENUM_DIRECTION_NEUTRAL , AddAppendage);
|
|
}
|
|
}
|
|
break;
|
|
case SKILL_BYKK_LOLLIPOPCRUSH://超級棒棒糖
|
|
switch(subtype){
|
|
case 0:
|
|
case 1:
|
|
case 9:
|
|
case 10:
|
|
case 11:
|
|
local candy_num = sqrChr.getVar("candynumber").get_vector(0);
|
|
local candy_max = sqrChr.getVar("candynumber").get_vector(1);
|
|
local bosscandy_num = sqrChr.getVar("candynumber").get_vector(2);
|
|
local bosscandy_max = sqrChr.getVar("candynumber").get_vector(3);
|
|
local totalDamage = obj.getVar("custom").get_vector(1);
|
|
local totalDamage2 = obj.getVar("custom").get_vector(2);
|
|
if(candy_num < candy_max){
|
|
if(damager.isObjectType(OBJECTTYPE_ACTIVE)){
|
|
if(bosscandy_num < bosscandy_max && sq_getRandom(1,100) > 70){
|
|
sqrChr.getVar("candynumber").set_vector(2,bosscandy_num + 1);
|
|
local level = obj.getVar("custom").get_vector(3);
|
|
local prob = obj.getVar("custom").get_vector(4);
|
|
local time = obj.getVar("custom").get_vector(5);
|
|
local damage = obj.getVar("custom").get_vector(6);
|
|
cearteSkillPassive_Witch_bykk(sqrChr,obj,PASSIVEOBJECT_BYKK_WITCH,sq_getRandom(0,350),sq_getRandom(-150,150),10,obj.getDirection(),SKILL_BYKK_LOLLIPOPCRUSH,20,2,totalDamage2,level,prob,time,damage,0,0,2);
|
|
}
|
|
else{
|
|
sqrChr.getVar("candynumber").set_vector(0,candy_num + 1);
|
|
local sub = sq_getRandom(0,1);
|
|
switch(sub){
|
|
case 0:
|
|
local level = obj.getVar("custom").get_vector(4);
|
|
local prob = obj.getVar("custom").get_vector(7);
|
|
local time = obj.getVar("custom").get_vector(8);
|
|
local damage = obj.getVar("custom").get_vector(9);
|
|
cearteSkillPassive_Witch_bykk(sqrChr,damager,PASSIVEOBJECT_BYKK_WITCH,sq_getRandom(-150,350),sq_getRandom(-150,150),10,obj.getDirection(),SKILL_BYKK_LOLLIPOPCRUSH,20,sub,totalDamage,level,prob,time,damage,0,0,2);
|
|
break;
|
|
case 1:
|
|
local level = obj.getVar("custom").get_vector(3);
|
|
local prob = obj.getVar("custom").get_vector(4);
|
|
local time = obj.getVar("custom").get_vector(5);
|
|
local damage = obj.getVar("custom").get_vector(6);
|
|
cearteSkillPassive_Witch_bykk(sqrChr,obj,PASSIVEOBJECT_BYKK_WITCH,sq_getRandom(0,350),sq_getRandom(-150,150),10,obj.getDirection(),SKILL_BYKK_LOLLIPOPCRUSH,20,sub,totalDamage,level,prob,time,damage,0,0,2);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
case 20:
|
|
local sub = obj.getVar("custom").get_vector(0);
|
|
if(sub >= 1 && damager.isObjectType(OBJECTTYPE_ACTIVE)){
|
|
local blind_stuckrate = obj.getVar("custom").get_vector(5);
|
|
local blind_time = obj.getVar("custom").get_vector(4);
|
|
local ap = sq_CreateChangeStatus(CHANGE_STATUS_TYPE_STUCK , true, -blind_stuckrate.tofloat(), 0);
|
|
if (ap){
|
|
ap.getAppendageInfo().setValidTime(blind_time);
|
|
ap.sq_Append(damager, obj);
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case SKILL_BYKK_TRANSFORMFLAPPER://變異蒼蠅拍
|
|
switch(subtype){
|
|
case 3:
|
|
case 4:
|
|
if(!sqrChr || sqrChr.getState() == STATE_DIE) break;
|
|
local prob = obj.getVar("custom").get_vector(0);
|
|
local level = obj.getVar("custom").get_vector(1);
|
|
local time = obj.getVar("custom").get_vector(2);
|
|
if(damager.isObjectType(OBJECTTYPE_ACTIVE)){
|
|
sq_sendSetActiveStatusPacket(damager, obj, ACTIVESTATUS_BLIND, prob.tofloat(), level, false, time);
|
|
if(sq_GetLevelData(sqrChr, SKILL_BYKK_TRANSFORMFLAPPER, 11, sq_GetSkillLevel(sqrChr, SKILL_BYKK_TRANSFORMFLAPPER)) > 0) break;
|
|
local activeObj = sq_GetCNRDObjectToActiveObject(damager);
|
|
local sub_number1 = obj.getVar("custom").get_vector(8);
|
|
local isSeal = obj.getVar("custom").get_vector(7);
|
|
local mon_number = obj.getVar("custom").get_vector(10);
|
|
if(sub_number1 > 0 && !isStuck && isSeal == 1){
|
|
obj.getVar("custom").set_vector(10, mon_number + 1);
|
|
local monsterId = [GOBLIN_BYKK_ID,TAU_BYKK_ID];
|
|
local homunculus_skill = sq_GetSkill(sqrChr, SKILL_BYKK_HOMUNCULUS)
|
|
if(sq_GetSkillLevel(sqrChr, SKILL_BYKK_HOMUNCULUS) > 0 && !homunculus_skill.isSealFunction()) monsterId = [LANTERN_BYKK_ID,FLUORE_BYKK_ID,FLUTO_BYKK_ID,JACKFROST_BYKK_ID];
|
|
local monstertime = obj.getVar("custom").get_vector(5);
|
|
local monsterlevel = obj.getVar("custom").get_vector(6);
|
|
for(local i = 0; i < sub_number1; i++){
|
|
if(sqrChr.getVar("countofhomunculus").getInt(11) < sq_GetIntData(sqrChr, SKILL_BYKK_HOMUNCULUS, 45)){
|
|
summonmonster_witch_bykk(sqrChr,activeObj,0,0,-sq_GetZPos(sqrChr),0,monsterId[sq_getRandom(0,(monsterId.len()-1))],monstertime,monsterlevel,0);
|
|
sqrChr.getVar("countofhomunculus").setInt(11, sqrChr.getVar("countofhomunculus").getInt(11) + 1);
|
|
print("number = "+sqrChr.getVar("countofhomunculus").getInt(11));
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
case 14:
|
|
case 15:
|
|
sq_SendDestroyPacketPassiveObject(obj);
|
|
break;
|
|
}
|
|
break;
|
|
case SKILL_BYKK_TRANSFORMFLAPPEREX://超級蒼蠅拍
|
|
switch(subtype){
|
|
case 3:
|
|
case 4:
|
|
if(!sqrChr || sqrChr.getState() == STATE_DIE) break;
|
|
if(sq_GetLevelData(sqrChr, SKILL_BYKK_TRANSFORMFLAPPER, 11, sq_GetSkillLevel(sqrChr, SKILL_BYKK_TRANSFORMFLAPPER)) > 0) break;
|
|
local sub_number1 = obj.getVar("custom").get_vector(8);
|
|
local isSeal = obj.getVar("custom").get_vector(7);
|
|
local mon_number = obj.getVar("custom").get_vector(10);
|
|
if(sub_number1 > 0 && !isStuck && isSeal == 1 && damager.isObjectType(OBJECTTYPE_ACTIVE)){
|
|
local activeObj = sq_GetCNRDObjectToActiveObject(damager);
|
|
obj.getVar("custom").set_vector(10, mon_number + 1);
|
|
local monsterId = [GOBLIN_BYKK_ID,TAU_BYKK_ID];
|
|
local homunculus_skill = sq_GetSkill(sqrChr, SKILL_BYKK_HOMUNCULUS)
|
|
if(sq_GetSkillLevel(sqrChr, SKILL_BYKK_HOMUNCULUS) > 0 && !homunculus_skill.isSealFunction()) monsterId = [LANTERN_BYKK_ID,FLUORE_BYKK_ID,FLUTO_BYKK_ID,JACKFROST_BYKK_ID];
|
|
local monstertime = obj.getVar("custom").get_vector(5);
|
|
local monsterlevel = obj.getVar("custom").get_vector(6);
|
|
for(local i = 0; i < sub_number1; i++){
|
|
if(sqrChr.getVar("countofhomunculus").getInt(11) < sq_GetIntData(sqrChr, SKILL_BYKK_HOMUNCULUS, 45)){
|
|
summonmonster_witch_bykk(sqrChr,activeObj,0,0,-sq_GetZPos(sqrChr),0,monsterId[sq_getRandom(0,(monsterId.len()-1))],monstertime,monsterlevel,0);
|
|
sqrChr.getVar("countofhomunculus").setInt(11, sqrChr.getVar("countofhomunculus").getInt(11) + 1);
|
|
print("number = "+sqrChr.getVar("countofhomunculus").getInt(11));
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
function onKeyFrameFlag_po_witch_bykk_kak(obj, flagIndex)
|
|
{
|
|
if(!obj) return;
|
|
local sqrChr = sq_GetCNRDObjectToSQRCharacter(obj.getTopCharacter());
|
|
local skillIndex = obj.getVar("skillIndex").get_vector(0);
|
|
local subtype = obj.getVar("subtype").get_vector(0);
|
|
local state = obj.getVar("state").get_vector(0);
|
|
|
|
switch(skillIndex){
|
|
case SKILL_BYKK_ACIDCLOUD://魔道酸雨雲
|
|
break;
|
|
case SKILL_BYKK_ANTIGRAVITYSTARTER://反重力裝置
|
|
break;
|
|
case SKILL_BYKK_BLACKMANTLE://暗影鬥篷
|
|
break;
|
|
case SKILL_BYKK_BROOMSPIN://旋轉掃把
|
|
break;
|
|
case SKILL_BYKK_ELECTRICRABBIT://光電兔
|
|
break;
|
|
case SKILL_BYKK_ENHANCEDMAGICMISSILE://改良魔法星彈
|
|
break;
|
|
case SKILL_BYKK_FLUORECOLLIDER://電鳗碰撞機
|
|
break;
|
|
case SKILL_BYKK_FUSIONCRAFT://技藝融合
|
|
break;
|
|
case SKILL_BYKK_HEATINGFURNACE://爆炎加熱爐
|
|
break;
|
|
case SKILL_BYKK_HOMUNCULUS://魔道學助手
|
|
break;
|
|
case SKILL_BYKK_JACKFROSTICEWATER://雪人刨冰
|
|
local effect_aniPath = "character/mage/effect/animation/witch_bykk/jackfrosticewater/";
|
|
switch(subtype){
|
|
case 1:
|
|
switch(flagIndex){
|
|
case 1:
|
|
local currentAni = obj.getCurrentAnimation();
|
|
currentAni.addLayerAnimation(1001,sq_CreateAnimation("",effect_aniPath + "start/jackfrosticewaterstartfront_14.ani"),true);
|
|
obj.setTimeEvent(1,400,1,false);
|
|
obj.setTimeEvent(2,200,1,false);
|
|
local parentObj = obj.getParent();
|
|
if(!parentObj) break;
|
|
local appendage = CNSquirrelAppendage.sq_AppendAppendage(parentObj, obj, -1, false, "appendage/character/ap_common_suck.nut", false);
|
|
if(appendage){
|
|
CNSquirrelAppendage.sq_Append(appendage, parentObj, obj);
|
|
local auraAppendage = appendage.sq_getAuraMaster("auraMaster");
|
|
if(!auraAppendage) auraAppendage = appendage.sq_AddAuraMaster("auraMaster", parentObj, obj, 1200, 18, 5, 0);
|
|
if(auraAppendage) auraAppendage.setAttractionInfo(200, 200, 300, 100);//300,300,150,100
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case SKILL_BYKK_JACKOHALLOWEEN://搗蛋傑克
|
|
switch(subtype){
|
|
case 1:
|
|
switch(flagIndex){
|
|
case 1:
|
|
sq_setCurrentAxisPos(obj, 0, sq_GetDistancePos(sq_GetXPos(obj),obj.getDirection(),-50));
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case SKILL_BYKK_LAVAPOTION://熔岩藥瓶
|
|
break;
|
|
case SKILL_BYKK_MEGADRILL://冰霜鑽孔車
|
|
switch(subtype){
|
|
case 2:
|
|
case 12:
|
|
switch(flagIndex){
|
|
case 1:
|
|
//生成OBJ
|
|
local totalDamage = 10000;
|
|
cearteSkillPassive_Witch_bykk(sqrChr,obj,PASSIVEOBJECT_BYKK_WITCH,0,0,0,obj.getDirection(),SKILL_BYKK_MEGADRILL,3,totalDamage,1,0,0,0,0,0,0,1);
|
|
break;
|
|
case 2:
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case SKILL_BYKK_UROBOROS://二覺
|
|
break;
|
|
case SKILL_BYKK_LOLLIPOPCRUSH://超級棒棒糖
|
|
break;
|
|
case SKILL_BYKK_TRANSFORMFLAPPER://變異蒼蠅拍
|
|
switch(subtype){
|
|
case 1:
|
|
switch(flagIndex){
|
|
case 1:
|
|
sq_setCurrentAxisPos(obj, 0, sq_GetDistancePos(sq_GetXPos(sqrChr),sqrChr.getDirection(),75));
|
|
sq_setCurrentAxisPos(obj, 2, sq_GetZPos(sqrChr) + 85);
|
|
break;
|
|
case 2:
|
|
sq_setCurrentAxisPos(obj, 0, sq_GetDistancePos(sq_GetXPos(sqrChr),sqrChr.getDirection(),-45));
|
|
sq_setCurrentAxisPos(obj, 2, sq_GetZPos(sqrChr) + 50);
|
|
break;
|
|
case 3:
|
|
sq_setCurrentAxisPos(obj, 0, sq_GetDistancePos(sq_GetXPos(sqrChr),sqrChr.getDirection(),-55));
|
|
sq_setCurrentAxisPos(obj, 2, sq_GetZPos(sqrChr) + 40);
|
|
break;
|
|
case 4:
|
|
sq_setCurrentAxisPos(obj, 0, sq_GetDistancePos(sq_GetXPos(sqrChr),sqrChr.getDirection(),-60));
|
|
sq_setCurrentAxisPos(obj, 2, sq_GetZPos(sqrChr) + 25);
|
|
break;
|
|
case 5:
|
|
sq_setCurrentAxisPos(obj, 0, sq_GetDistancePos(sq_GetXPos(sqrChr),sqrChr.getDirection(),75));
|
|
sq_setCurrentAxisPos(obj, 2, sq_GetZPos(sqrChr) + 20);
|
|
break;
|
|
case 6:
|
|
sq_setCurrentAxisPos(obj, 0, sq_GetDistancePos(sq_GetXPos(sqrChr),sqrChr.getDirection(),80));
|
|
sq_setCurrentAxisPos(obj, 2, sq_GetZPos(sqrChr) + 15);
|
|
break;
|
|
case 7:
|
|
sq_setCurrentAxisPos(obj, 0, sq_GetDistancePos(sq_GetXPos(sqrChr),sqrChr.getDirection(),85));
|
|
sq_setCurrentAxisPos(obj, 2, sq_GetZPos(sqrChr) + 10);
|
|
break;
|
|
}
|
|
break;
|
|
case 2:
|
|
switch(flagIndex){
|
|
case 1:
|
|
sq_setCurrentAxisPos(obj, 0, sq_GetDistancePos(sq_GetXPos(sqrChr),sqrChr.getDirection(),-60));
|
|
sq_setCurrentAxisPos(obj, 2, sq_GetZPos(sqrChr) + 40);
|
|
break;
|
|
case 2:
|
|
sq_setCurrentAxisPos(obj, 0, sq_GetDistancePos(sq_GetXPos(sqrChr),sqrChr.getDirection(),-53));
|
|
sq_setCurrentAxisPos(obj, 2, sq_GetZPos(sqrChr) + 14);
|
|
break;
|
|
case 3:
|
|
sq_setCurrentAxisPos(obj, 0, sq_GetDistancePos(sq_GetXPos(sqrChr),sqrChr.getDirection(),75));
|
|
sq_setCurrentAxisPos(obj, 2, sq_GetZPos(sqrChr) + 25);
|
|
break;
|
|
case 4:
|
|
sq_setCurrentAxisPos(obj, 0, sq_GetDistancePos(sq_GetXPos(sqrChr),sqrChr.getDirection(),55));
|
|
sq_setCurrentAxisPos(obj, 2, sq_GetZPos(sqrChr));
|
|
break;
|
|
}
|
|
break;
|
|
case 11:
|
|
if(flagIndex == 1) obj.resetHitObjectList();
|
|
break;
|
|
}
|
|
break;
|
|
case SKILL_BYKK_TRANSFORMFLAPPEREX://超級蒼蠅拍
|
|
switch(subtype){
|
|
case 1:
|
|
switch(flagIndex){
|
|
case 1:
|
|
sq_setCurrentAxisPos(obj, 0, sq_GetDistancePos(sq_GetXPos(sqrChr),sqrChr.getDirection(),55));
|
|
sq_setCurrentAxisPos(obj, 2, 110);
|
|
break;
|
|
case 2:
|
|
sq_setCurrentAxisPos(obj, 0, sq_GetDistancePos(sq_GetXPos(sqrChr),sqrChr.getDirection(),-72));
|
|
sq_setCurrentAxisPos(obj, 2, 30);
|
|
break;
|
|
case 3:
|
|
sq_setCurrentAxisPos(obj, 0, sq_GetDistancePos(sq_GetXPos(sqrChr),sqrChr.getDirection(),-90));
|
|
sq_setCurrentAxisPos(obj, 2, 22);
|
|
break;dd
|
|
case 4:
|
|
sq_setCurrentAxisPos(obj, 0, sq_GetDistancePos(sq_GetXPos(sqrChr),sqrChr.getDirection(),-70));
|
|
sq_setCurrentAxisPos(obj, 2, sq_GetZPos(sqrChr)*0 - 22);
|
|
break;
|
|
case 5:
|
|
sq_setCurrentAxisPos(obj, 0, sq_GetDistancePos(sq_GetXPos(sqrChr),sqrChr.getDirection(),130));
|
|
sq_setCurrentAxisPos(obj, 2, 0);
|
|
break;
|
|
case 6:
|
|
sq_setCurrentAxisPos(obj, 0, sq_GetDistancePos(sq_GetXPos(sqrChr),sqrChr.getDirection(),122));
|
|
sq_setCurrentAxisPos(obj, 2, -25);
|
|
break;
|
|
case 7:
|
|
sq_setCurrentAxisPos(obj, 0, sq_GetDistancePos(sq_GetXPos(sqrChr),sqrChr.getDirection(),125));
|
|
sq_setCurrentAxisPos(obj, 2, -10);
|
|
break;
|
|
case 8:
|
|
sq_setCurrentAxisPos(obj, 0, sq_GetDistancePos(sq_GetXPos(sqrChr),sqrChr.getDirection(),125));
|
|
sq_setCurrentAxisPos(obj, 2,-10);
|
|
break;
|
|
}
|
|
break;
|
|
case 2:
|
|
switch(flagIndex){
|
|
case 1:
|
|
sq_setCurrentAxisPos(obj, 0, sq_GetDistancePos(sq_GetXPos(sqrChr),sqrChr.getDirection(),-39));
|
|
sq_setCurrentAxisPos(obj, 2, sq_GetZPos(sqrChr) + 25);
|
|
break;
|
|
case 2:
|
|
sq_setCurrentAxisPos(obj, 0, sq_GetDistancePos(sq_GetXPos(sqrChr),sqrChr.getDirection(),-40));
|
|
sq_setCurrentAxisPos(obj, 2, sq_GetZPos(sqrChr) + 15);
|
|
break;
|
|
case 3:
|
|
sq_setCurrentAxisPos(obj, 0, sq_GetDistancePos(sq_GetXPos(sqrChr),sqrChr.getDirection(),-33));
|
|
sq_setCurrentAxisPos(obj, 2, sq_GetZPos(sqrChr) + 23);
|
|
break;
|
|
case 4:
|
|
sq_setCurrentAxisPos(obj, 0, sq_GetDistancePos(sq_GetXPos(sqrChr),sqrChr.getDirection(),-42));
|
|
sq_setCurrentAxisPos(obj, 2, sq_GetZPos(sqrChr) + 30);
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
function procAppend_po_witch_bykk_kak(obj)
|
|
{
|
|
if(!obj) return;
|
|
local sqrChr = sq_GetCNRDObjectToSQRCharacter(obj.getTopCharacter());
|
|
local skillIndex = obj.getVar("skillIndex").get_vector(0);
|
|
local subtype = obj.getVar("subtype").get_vector(0);
|
|
local state = obj.getVar("state").get_vector(0);
|
|
|
|
switch(skillIndex){
|
|
case SKILL_BYKK_ACIDCLOUD://魔道酸雨雲
|
|
switch(subtype){
|
|
case 2:
|
|
switch(state){
|
|
case 25:
|
|
if(obj.getVar("custom").get_vector(7) > 0) return;
|
|
local timer = obj.getVar().get_ct_vector(0);
|
|
if(timer){
|
|
local settime = obj.getVar("custom").get_vector(1);
|
|
local currentT = timer.Get();
|
|
local fireT = obj.getVar("custom").get_vector(0);
|
|
if(currentT + settime >= fireT){
|
|
obj.removeAllTimeEvent();
|
|
obj.getVar().setBool(0,true);
|
|
obj.addSetStatePacket(26, null, STATE_PRIORITY_AUTO, false, "");
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case 4:
|
|
case 5:
|
|
case 6:
|
|
case 7:
|
|
// switch(state){
|
|
// case 20:
|
|
// local pAni = obj.getCurrentAnimation();//得到ani
|
|
// local currentT = sq_GetCurrentTime(pAni);//當前時間
|
|
// local fireT = 350;//總時間
|
|
// local hight = obj.getVar("custom").get_vector(0);
|
|
// local v = sq_GetUniformVelocity(hight, 0, currentT, fireT);
|
|
// sq_setCurrentAxisPos(obj, 2, v);
|
|
// if(obj.getZPos() <= 0) obj.addSetStatePacket(21, null, STATE_PRIORITY_AUTO, false, "");
|
|
// break;
|
|
// }
|
|
break;
|
|
}
|
|
break;
|
|
case SKILL_BYKK_ANTIGRAVITYSTARTER://反重力裝置
|
|
break;
|
|
case SKILL_BYKK_BLACKMANTLE://暗影鬥篷
|
|
break;
|
|
case SKILL_BYKK_BROOMSPIN://旋轉掃把
|
|
break;
|
|
case SKILL_BYKK_ELECTRICRABBIT://光電兔
|
|
break;
|
|
case SKILL_BYKK_ENHANCEDMAGICMISSILE://改良魔法星彈
|
|
switch(subtype){
|
|
case 1:
|
|
switch(state){
|
|
case 22:
|
|
local pAni = obj.getCurrentAnimation();//得到ani
|
|
local currentT = sq_GetCurrentTime(pAni);//當前時間
|
|
local fireT = 150;//總時間
|
|
local srcX = obj.getVar("move").get_vector(0);//初始x坐標
|
|
local srcZ = obj.getVar("move").get_vector(1);//初始z坐標
|
|
local MoveX = obj.getVar("move").get_vector(2);//移動多少x距離
|
|
local MoveZ = obj.getVar("move").get_vector(3);//移動多少z距離
|
|
local vx = sq_GetUniformVelocity(0, MoveX, currentT, fireT);
|
|
local vz = sq_GetUniformVelocity(0, MoveZ, currentT, fireT);
|
|
local dstX = sq_GetDistancePos(srcX, obj.getDirection(), vx);//根據方向運算當前數值
|
|
sq_setCurrentAxisPos(obj, 0, dstX);//設置當前x坐標
|
|
sq_setCurrentAxisPos(obj, 2, srcZ + vz);//設置當前z坐標
|
|
if(currentT >= fireT) obj.addSetStatePacket(23, null, STATE_PRIORITY_AUTO, false, "");
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case SKILL_BYKK_FLUORECOLLIDER://電鳗碰撞機
|
|
break;
|
|
case SKILL_BYKK_FUSIONCRAFT://技藝融合
|
|
break;
|
|
case SKILL_BYKK_HEATINGFURNACE://爆炎加熱爐
|
|
switch(subtype){
|
|
case 3:
|
|
if(sq_GetZPos(obj) <= 15 && obj.getVar().getBool(0) == false){
|
|
obj.getVar().setBool(0,true);
|
|
local totalDamage = obj.getVar("custom").get_vector(1);
|
|
local successType = obj.getVar("custom").get_vector(0);
|
|
local sizeRate = obj.getVar("custom").get_vector(2);
|
|
local angle = obj.getVar("custom").get_vector(3);
|
|
local angleMax = obj.getVar("custom").get_vector(4);
|
|
local sub = obj.getVar("custom").get_vector(5);
|
|
if(successType >= 1) cearteSkillPassive_Witch_bykk(sqrChr,obj,PASSIVEOBJECT_BYKK_WITCH,0,1,50,obj.getDirection(),SKILL_BYKK_HEATINGFURNACE,4,totalDamage,successType,sizeRate,angle,angleMax,sub,0,0,1);
|
|
switch(successType){
|
|
case 0:
|
|
sq_AddDrawOnlyAniFromParent(obj,"passiveobject/witch_bykk/animation/heatingfurnace/stone_piece_failed_break.ani",0,0,-20);
|
|
break;
|
|
case 1:
|
|
sq_AddDrawOnlyAniFromParent(obj,"passiveobject/witch_bykk/animation/heatingfurnace/stone_piece_failed_break.ani",0,0,-20);
|
|
sq_AddDrawOnlyAniFromParent(obj,"passiveobject/witch_bykk/animation/heatingfurnace/stone_piece_normal_break.ani",0,1,-19);
|
|
break;
|
|
case 2:
|
|
case 3:
|
|
sq_AddDrawOnlyAniFromParent(obj,"passiveobject/witch_bykk/animation/heatingfurnace/stone_piece_great_break.ani",0,0,-20);
|
|
break;
|
|
}
|
|
sq_SendDestroyPacketPassiveObject(obj);
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case SKILL_BYKK_HOMUNCULUS://魔道學助手
|
|
break;
|
|
case SKILL_BYKK_JACKFROSTICEWATER://雪人刨冰
|
|
break;
|
|
case SKILL_BYKK_JACKOHALLOWEEN://搗蛋傑克
|
|
switch(subtype){
|
|
case 1:
|
|
switch(state){
|
|
case 22:
|
|
if(obj.getVar().getBool(0)){
|
|
local pAni = obj.getCurrentAnimation();
|
|
local currentT = sq_GetCurrentTime(pAni);
|
|
local fireT = pAni.getDelaySum(false);
|
|
local srcX = obj.getVar("move").get_vector(0);
|
|
local MoveX = obj.getVar("move").get_vector(1);
|
|
local v = sq_GetUniformVelocity(0, -MoveX, currentT, fireT);
|
|
local dstX = sq_GetDistancePos(srcX, obj.getDirection(), v);
|
|
sq_setCurrentAxisPos(obj, 0, dstX);
|
|
if(currentT >= fireT) obj.getVar().setBool(0,false);
|
|
}
|
|
break;
|
|
}
|
|
|
|
local time = sq_GetObjectTime(obj);
|
|
if(time >= obj.getVar("custom").getInt(11) * 15 / 10 && state < 25){
|
|
obj.addSetStatePacket(25, null, STATE_PRIORITY_AUTO, false, "");
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case SKILL_BYKK_LAVAPOTION://熔岩藥瓶
|
|
switch(subtype){
|
|
case 4:
|
|
switch(state){
|
|
case 20:
|
|
local pAni = obj.getCurrentAnimation();
|
|
local currentT = sq_GetCurrentTime(pAni);
|
|
local fireT = 300;//總時間
|
|
local srcX = obj.getVar("move").get_vector(0);
|
|
local srcY = obj.getVar("move").get_vector(1);
|
|
local srcZ = obj.getVar("move").get_vector(2);
|
|
local MoveX = obj.getVar("move").get_vector(3) / 2;
|
|
local MoveY = obj.getVar("move").get_vector(4) / 2;
|
|
local MoveZ = obj.getVar("move").get_vector(5);
|
|
local direction = obj.getVar("move").get_vector(6);
|
|
local obj_direction = obj.getDirection();
|
|
if(direction != obj_direction){
|
|
MoveX = -MoveX;
|
|
MoveY = -MoveY;
|
|
}
|
|
local vx = sq_GetUniformVelocity(0, MoveX, currentT, fireT);
|
|
local vy = sq_GetUniformVelocity(0, MoveY, currentT, fireT);
|
|
local vz = sq_GetAccel(0, MoveZ, currentT, fireT,true);
|
|
local dstX = sq_GetDistancePos(srcX, obj.getDirection(), vx);
|
|
sq_setCurrentAxisPos(obj, 0, dstX);
|
|
sq_setCurrentAxisPos(obj, 1, srcY + vy);
|
|
sq_setCurrentAxisPos(obj, 2, srcZ + vz);
|
|
if(currentT >= fireT){
|
|
obj.getVar("move").set_vector(0,sq_GetXPos(obj));
|
|
obj.getVar("move").set_vector(1,sq_GetYPos(obj));
|
|
obj.getVar("move").set_vector(2,sq_GetZPos(obj));
|
|
obj.addSetStatePacket(21, null, STATE_PRIORITY_AUTO, false, "");
|
|
}
|
|
break;
|
|
case 21:
|
|
local pAni = obj.getCurrentAnimation();
|
|
local currentT = sq_GetCurrentTime(pAni);
|
|
local fireT = 300;//總時間
|
|
local srcX = obj.getVar("move").get_vector(0);
|
|
local srcY = obj.getVar("move").get_vector(1);
|
|
local srcZ = obj.getVar("move").get_vector(2);
|
|
local MoveX = obj.getVar("move").get_vector(3) / 2;
|
|
local MoveY = obj.getVar("move").get_vector(4) / 2;
|
|
local direction = obj.getVar("move").get_vector(6);
|
|
local obj_direction = obj.getDirection();
|
|
if(direction != obj_direction){
|
|
MoveX = -MoveX;
|
|
MoveY = -MoveY;
|
|
}
|
|
local vx = sq_GetUniformVelocity(0, MoveX, currentT, fireT);
|
|
local vy = sq_GetUniformVelocity(0, MoveY, currentT, fireT);
|
|
local vz = sq_GetAccel(srcZ, 0, currentT, fireT,false);
|
|
local dstX = sq_GetDistancePos(srcX, obj.getDirection(), vx);
|
|
sq_setCurrentAxisPos(obj, 0, dstX);
|
|
sq_setCurrentAxisPos(obj, 1, srcY + vy);
|
|
sq_setCurrentAxisPos(obj, 2, vz);
|
|
if(sq_GetZPos(obj) <= 0) obj.addSetStatePacket(22, null, STATE_PRIORITY_AUTO, false, "");
|
|
break;
|
|
}
|
|
break;
|
|
case 3:
|
|
switch(state){
|
|
case 20:
|
|
if(obj.getVar("move").size_vector() > 0){
|
|
local pAni = obj.getCurrentAnimation();
|
|
local currentT = sq_GetCurrentTime(pAni);
|
|
local fireT = 240;//總時間
|
|
local srcX = obj.getVar("move").get_vector(0);
|
|
local srcZ = obj.getVar("move").get_vector(1);
|
|
local MoveX = obj.getVar("move").get_vector(2);
|
|
local vx = sq_GetUniformVelocity(0, MoveX, currentT, fireT);
|
|
local vz = sq_GetUniformVelocity(srcZ, 0, currentT, fireT);
|
|
local dstX = sq_GetDistancePos(srcX, obj.getDirection(), vx);
|
|
sq_setCurrentAxisPos(obj, 0, dstX);
|
|
sq_setCurrentAxisPos(obj, 2, vz);
|
|
if(sq_GetZPos(obj) <= 0) obj.addSetStatePacket(21, null, STATE_PRIORITY_AUTO, false, "");
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case SKILL_BYKK_MEGADRILL://冰霜鑽孔車
|
|
switch(subtype){
|
|
case 2:
|
|
case 12:
|
|
switch(state){
|
|
case 21:
|
|
local pAni = obj.getCurrentAnimation();
|
|
local currentT = sq_GetCurrentTime(pAni);
|
|
local fireT = pAni.getDelaySum(0, 4);
|
|
if(currentT >= fireT) return;
|
|
local srcX = obj.getVar("custom").get_vector(1);
|
|
local srcZ = obj.getVar("custom").get_vector(2);
|
|
local MoveX = obj.getVar("custom").get_vector(3);
|
|
local vx = sq_GetUniformVelocity(0, MoveX, currentT, fireT);
|
|
local vz = sq_GetUniformVelocity(srcZ, 0, currentT, fireT);
|
|
local dstX = sq_GetDistancePos(srcX, obj.getDirection(), vx);
|
|
sq_setCurrentAxisPos(obj, 0, dstX);
|
|
sq_setCurrentAxisPos(obj, 2, vz);
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case SKILL_BYKK_UROBOROS://二覺
|
|
break;
|
|
case SKILL_BYKK_LOLLIPOPCRUSH://超級棒棒糖
|
|
switch(subtype){
|
|
case 20:
|
|
switch(state){
|
|
case 21:
|
|
if(obj.getVar().getBool(0)){
|
|
local targetObj = sq_GetCNRDObjectToActiveObject(obj.getVar("targetObj").get_obj_vector(0));
|
|
if(targetObj){
|
|
local pAni = obj.getCurrentAnimation();
|
|
local currentT = sq_GetCurrentTime(pAni) - 500;
|
|
local fireT = 500;
|
|
if(sq_GetDistanceObject(obj, targetObj, false) < 20){
|
|
obj.addSetStatePacket(22, null, STATE_PRIORITY_AUTO, false, "");
|
|
}
|
|
local X1 = sq_GetAccel(obj.getXPos(), targetObj.getXPos(), currentT, fireT, true);
|
|
local Y1 = sq_GetAccel(obj.getYPos(), targetObj.getYPos(), currentT, fireT, true);
|
|
local Z1 = sq_GetAccel(obj.getZPos(), targetObj.getZPos() + sq_GetObjectHeight(targetObj) / 2, currentT, fireT, true);
|
|
sq_setCurrentAxisPos(obj, 0, X1);
|
|
sq_setCurrentAxisPos(obj, 1, Y1);
|
|
sq_setCurrentAxisPos(obj, 2, Z1);
|
|
if(sq_GetXPos(targetObj) > sq_GetXPos(obj)) sq_SetCurrentDirection(obj, 0);
|
|
else sq_SetCurrentDirection(obj, 1);
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
|
|
if(obj.getZPos() >= 6000){
|
|
local parentObj = obj.getParent();
|
|
local pChr = obj.getTopCharacter();
|
|
local id = parentObj.getCollisionObjectIndex();
|
|
if(!id || !pChr) return;
|
|
if(pChr.isMyControlObject()) {
|
|
sq_BinaryStartWrite();
|
|
sq_BinaryWriteDword(id);
|
|
sq_BinaryWriteDword(sq_GetGroup(parentObj));
|
|
sq_BinaryWriteDword(sq_GetUniqueId(parentObj));
|
|
sq_SendChangeSkillEffectPacket(pChr, SKILL_BYKK_TRANSFORMFLAPPER);
|
|
sq_SendDestroyPacketPassiveObject(obj);
|
|
}
|
|
sq_SendDestroyPacketPassiveObject(obj);
|
|
}
|
|
}
|
|
|
|
function onAfterAttack_po_witch_bykk(obj, damager, boundingBox, isStuck)
|
|
{
|
|
if (!obj) return 0;
|
|
local sqrChr = sq_GetCNRDObjectToSQRCharacter(obj.getTopCharacter());
|
|
local skillIndex = obj.getVar("skillIndex").get_vector(0);
|
|
local subtype = obj.getVar("subtype").get_vector(0);
|
|
local state = obj.getVar("state").get_vector(0);
|
|
switch(skillIndex){
|
|
case SKILL_BYKK_TRANSFORMFLAPPER://變異蒼蠅拍
|
|
case SKILL_BYKK_TRANSFORMFLAPPEREX://超級蒼蠅拍
|
|
switch(subtype){
|
|
case 3:
|
|
case 4:
|
|
if(!sqrChr || sqrChr.getState() == STATE_DIE) break;
|
|
if(sq_GetLevelData(sqrChr, SKILL_BYKK_TRANSFORMFLAPPER, 11, sq_GetSkillLevel(sqrChr, SKILL_BYKK_TRANSFORMFLAPPER)) > 0) break;
|
|
local isSeal = obj.getVar("custom").get_vector(7);
|
|
if(isSeal == 1){
|
|
if(damager.isObjectType(OBJECTTYPE_ACTIVE)){
|
|
local activeObj = sq_GetCNRDObjectToActiveObject(damager);
|
|
local successType = obj.getVar("custom").get_vector(3);
|
|
if(successType >= 1){
|
|
local monsterId = [GOBLIN_BYKK_ID,TAU_BYKK_ID];
|
|
local homunculus_skill = sq_GetSkill(sqrChr, SKILL_BYKK_HOMUNCULUS)
|
|
if(sq_GetSkillLevel(sqrChr, SKILL_BYKK_HOMUNCULUS) > 0 && !homunculus_skill.isSealFunction()) monsterId = [LANTERN_BYKK_ID,FLUORE_BYKK_ID,FLUTO_BYKK_ID,JACKFROST_BYKK_ID];
|
|
if(activeObj.getHp() <= 0){
|
|
local monsterprob = obj.getVar("custom").get_vector(4);
|
|
if(sq_getRandom(1,1000) > (1000 - monsterprob)){
|
|
local monstertime = obj.getVar("custom").get_vector(5);
|
|
local monsterlevel = obj.getVar("custom").get_vector(6);
|
|
if(sqrChr.getVar("countofhomunculus").getInt(11) < sq_GetIntData(sqrChr, SKILL_BYKK_HOMUNCULUS, 45)){
|
|
summonmonster_witch_bykk(sqrChr,activeObj,0,0,-sq_GetZPos(sqrChr),0,monsterId[sq_getRandom(0,(monsterId.len()-1))],monstertime,monsterlevel,0);//
|
|
sqrChr.getVar("countofhomunculus").setInt(11, sqrChr.getVar("countofhomunculus").getInt(11) + 1);
|
|
print("number = "+sqrChr.getVar("countofhomunculus").getInt(11));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case SKILL_BYKK_LOLLIPOPCRUSH:
|
|
switch(subtype){
|
|
case 0:
|
|
case 1:
|
|
case 9:
|
|
case 10:
|
|
case 11:
|
|
local extra_num = obj.getVar("custom").get_vector(0);
|
|
local totalDamage = obj.getVar("custom").get_vector(1);
|
|
if(extra_num > 0){
|
|
if(damager.isObjectType(OBJECTTYPE_ACTIVE)){
|
|
local activeObj = sq_GetCNRDObjectToActiveObject(damager);
|
|
if(activeObj.getHp() <= 0){
|
|
local sub = sq_getRandom(0,1);
|
|
if(sq_getRandom(1,100) > 70) sub = 2,totalDamage = obj.getVar("custom").get_vector(2);
|
|
switch(sub){
|
|
case 0:
|
|
local level = obj.getVar("custom").get_vector(4);
|
|
local prob = obj.getVar("custom").get_vector(7);
|
|
local time = obj.getVar("custom").get_vector(8);
|
|
local damage = obj.getVar("custom").get_vector(9);
|
|
for(local i = 0; i < extra_num; i++){
|
|
cearteSkillPassive_Witch_bykk(sqrChr,obj,PASSIVEOBJECT_BYKK_WITCH,sq_getRandom(0,350),sq_getRandom(-150,150),10,obj.getDirection(),SKILL_BYKK_LOLLIPOPCRUSH,20,sub,totalDamage,level,prob,time,damage,0,0,2);
|
|
}
|
|
break;
|
|
case 1:
|
|
case 2:
|
|
local level = obj.getVar("custom").get_vector(3);
|
|
local prob = obj.getVar("custom").get_vector(4);
|
|
local time = obj.getVar("custom").get_vector(5);
|
|
local damage = obj.getVar("custom").get_vector(6);
|
|
for(local i = 0; i < extra_num; i++){
|
|
cearteSkillPassive_Witch_bykk(sqrChr,obj,PASSIVEOBJECT_BYKK_WITCH,sq_getRandom(0,350),sq_getRandom(-150,150),10,obj.getDirection(),SKILL_BYKK_LOLLIPOPCRUSH,20,sub,totalDamage,0,0,0,0,0,0,2);
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|