Fixed and reworked Zaken script.

This commit is contained in:
MobiusDevelopment
2020-05-19 10:04:09 +00:00
parent 196c30fc7f
commit a18389999f

View File

@@ -109,7 +109,7 @@ public class Zaken extends Quest
private static final byte ALIVE = 0; // Zaken is spawned. private static final byte ALIVE = 0; // Zaken is spawned.
private static final byte DEAD = 1; // Zaken has been killed. private static final byte DEAD = 1; // Zaken has been killed.
// Misc // Misc
private static BossZone _Zone; private static BossZone _zone;
private int _1001 = 0; // used for first cancel of QuestTimer "1001" private int _1001 = 0; // used for first cancel of QuestTimer "1001"
private int _ai0 = 0; // used for zaken coords updater private int _ai0 = 0; // used for zaken coords updater
private int _ai1 = 0; // used for X coord tracking for non-random teleporting in zaken's self teleport skill private int _ai1 = 0; // used for X coord tracking for non-random teleporting in zaken's self teleport skill
@@ -161,7 +161,7 @@ public class Zaken extends Quest
addEventId(ZAKEN, EventType.ON_KILL); addEventId(ZAKEN, EventType.ON_KILL);
addEventId(ZAKEN, EventType.ON_ATTACK); addEventId(ZAKEN, EventType.ON_ATTACK);
_Zone = GrandBossManager.getInstance().getZone(55312, 219168, -3223); _zone = GrandBossManager.getInstance().getZone(55312, 219168, -3223);
final StatSet info = GrandBossManager.getInstance().getStatSet(ZAKEN); final StatSet info = GrandBossManager.getInstance().getStatSet(ZAKEN);
final Integer status = GrandBossManager.getInstance().getBossStatus(ZAKEN); final Integer status = GrandBossManager.getInstance().getBossStatus(ZAKEN);
@@ -197,47 +197,12 @@ public class Zaken extends Quest
} }
} }
public void spawnBoss(GrandBossInstance npc)
{
if (npc == null)
{
LOGGER.warning("Zaken AI failed to load, missing Zaken in grandboss_data.sql");
return;
}
GrandBossManager.getInstance().addBoss(npc);
npc.broadcastPacket(new PlaySound(1, "BS01_A", npc));
_ai0 = 0;
_ai1 = npc.getX();
_ai2 = npc.getY();
_ai3 = npc.getZ();
_quest0 = 0;
_quest1 = 0;
_quest2 = 3;
if (_Zone == null)
{
LOGGER.warning("Zaken AI failed to load, missing zone for Zaken");
return;
}
if (_Zone.isInsideZone(npc))
{
_ai4 = 1;
startQuestTimer("1003", 1700, null, null);
}
_1001 = 1;
startQuestTimer("1001", 1000, npc, null); // buffs,random teleports
}
@Override @Override
public String onAdvEvent(String event, NpcInstance npc, PlayerInstance player) public String onAdvEvent(String event, NpcInstance npc, PlayerInstance player)
{ {
final Integer status = GrandBossManager.getInstance().getBossStatus(ZAKEN); switch (event)
if (((status == DEAD) && (event == null)) || !event.equals("zaken_unlock"))
{ {
return super.onAdvEvent(event, npc, player); case "1001":
}
if (event.equals("1001"))
{ {
if (_1001 == 1) if (_1001 == 1)
{ {
@@ -464,34 +429,41 @@ public class Zaken extends Quest
npc.doCast(SkillTable.getInstance().getInfo(4222, 1)); npc.doCast(SkillTable.getInstance().getInfo(4222, 1));
} }
startQuestTimer("1001", 30000, npc, null); startQuestTimer("1001", 30000, npc, null);
break;
} }
if (event.equals("1002")) case "1002":
{ {
_quest0 = 0; _quest0 = 0;
npc.doCast(SkillTable.getInstance().getInfo(4222, 1)); npc.doCast(SkillTable.getInstance().getInfo(4222, 1));
_ai0 = 0; _ai0 = 0;
break;
} }
if (event.equals("1003")) case "1003":
{ {
if (_ai4 == 1) switch (_ai4)
{
case 1:
{ {
final int rr = Rnd.get(15); final int rr = Rnd.get(15);
addSpawn(PIRATES_ZOMBIE_CAPTAIN_B, X_COORDS[rr] + Rnd.get(650), Y_COORDS[rr] + Rnd.get(650), Z_COORDS[rr], Rnd.get(65536), false, 0)/* .setIsRaidMinion(true) */; addSpawn(PIRATES_ZOMBIE_CAPTAIN_B, X_COORDS[rr] + Rnd.get(650), Y_COORDS[rr] + Rnd.get(650), Z_COORDS[rr], Rnd.get(65536), false, 0)/* .setIsRaidMinion(true) */;
_ai4 = 2; _ai4 = 2;
break;
} }
else if (_ai4 == 2) case 2:
{ {
final int rr = Rnd.get(15); final int rr = Rnd.get(15);
addSpawn(DOLL_BLADER_B, X_COORDS[rr] + Rnd.get(650), Y_COORDS[rr] + Rnd.get(650), Z_COORDS[rr], Rnd.get(65536), false, 0)/* .setIsRaidMinion(true) */; addSpawn(DOLL_BLADER_B, X_COORDS[rr] + Rnd.get(650), Y_COORDS[rr] + Rnd.get(650), Z_COORDS[rr], Rnd.get(65536), false, 0)/* .setIsRaidMinion(true) */;
_ai4 = 3; _ai4 = 3;
break;
} }
else if (_ai4 == 3) case 3:
{ {
addSpawn(VALE_MASTER_B, X_COORDS[Rnd.get(15)] + Rnd.get(650), Y_COORDS[Rnd.get(15)] + Rnd.get(650), Z_COORDS[Rnd.get(15)], Rnd.get(65536), false, 0)/* .setIsRaidMinion(true) */; addSpawn(VALE_MASTER_B, X_COORDS[Rnd.get(15)] + Rnd.get(650), Y_COORDS[Rnd.get(15)] + Rnd.get(650), Z_COORDS[Rnd.get(15)], Rnd.get(65536), false, 0)/* .setIsRaidMinion(true) */;
addSpawn(VALE_MASTER_B, X_COORDS[Rnd.get(15)] + Rnd.get(650), Y_COORDS[Rnd.get(15)] + Rnd.get(650), Z_COORDS[Rnd.get(15)], Rnd.get(65536), false, 0)/* .setIsRaidMinion(true) */; addSpawn(VALE_MASTER_B, X_COORDS[Rnd.get(15)] + Rnd.get(650), Y_COORDS[Rnd.get(15)] + Rnd.get(650), Z_COORDS[Rnd.get(15)], Rnd.get(65536), false, 0)/* .setIsRaidMinion(true) */;
_ai4 = 4; _ai4 = 4;
break;
} }
else if (_ai4 == 4) case 4:
{ {
addSpawn(PIRATES_ZOMBIE_B, X_COORDS[Rnd.get(15)] + Rnd.get(650), Y_COORDS[Rnd.get(15)] + Rnd.get(650), Z_COORDS[Rnd.get(15)], Rnd.get(65536), false, 0)/* .setIsRaidMinion(true) */; addSpawn(PIRATES_ZOMBIE_B, X_COORDS[Rnd.get(15)] + Rnd.get(650), Y_COORDS[Rnd.get(15)] + Rnd.get(650), Z_COORDS[Rnd.get(15)], Rnd.get(65536), false, 0)/* .setIsRaidMinion(true) */;
addSpawn(PIRATES_ZOMBIE_B, X_COORDS[Rnd.get(15)] + Rnd.get(650), Y_COORDS[Rnd.get(15)] + Rnd.get(650), Z_COORDS[Rnd.get(15)], Rnd.get(65536), false, 0)/* .setIsRaidMinion(true) */; addSpawn(PIRATES_ZOMBIE_B, X_COORDS[Rnd.get(15)] + Rnd.get(650), Y_COORDS[Rnd.get(15)] + Rnd.get(650), Z_COORDS[Rnd.get(15)], Rnd.get(65536), false, 0)/* .setIsRaidMinion(true) */;
@@ -499,8 +471,9 @@ public class Zaken extends Quest
addSpawn(PIRATES_ZOMBIE_B, X_COORDS[Rnd.get(15)] + Rnd.get(650), Y_COORDS[Rnd.get(15)] + Rnd.get(650), Z_COORDS[Rnd.get(15)], Rnd.get(65536), false, 0)/* .setIsRaidMinion(true) */; addSpawn(PIRATES_ZOMBIE_B, X_COORDS[Rnd.get(15)] + Rnd.get(650), Y_COORDS[Rnd.get(15)] + Rnd.get(650), Z_COORDS[Rnd.get(15)], Rnd.get(65536), false, 0)/* .setIsRaidMinion(true) */;
addSpawn(PIRATES_ZOMBIE_B, X_COORDS[Rnd.get(15)] + Rnd.get(650), Y_COORDS[Rnd.get(15)] + Rnd.get(650), Z_COORDS[Rnd.get(15)], Rnd.get(65536), false, 0)/* .setIsRaidMinion(true) */; addSpawn(PIRATES_ZOMBIE_B, X_COORDS[Rnd.get(15)] + Rnd.get(650), Y_COORDS[Rnd.get(15)] + Rnd.get(650), Z_COORDS[Rnd.get(15)], Rnd.get(65536), false, 0)/* .setIsRaidMinion(true) */;
_ai4 = 5; _ai4 = 5;
break;
} }
else if (_ai4 == 5) case 5:
{ {
addSpawn(DOLL_BLADER_B, 52675, 219371, -3290, Rnd.get(65536), false, 0)/* .setIsRaidMinion(true) */; addSpawn(DOLL_BLADER_B, 52675, 219371, -3290, Rnd.get(65536), false, 0)/* .setIsRaidMinion(true) */;
addSpawn(DOLL_BLADER_B, 52687, 219596, -3368, Rnd.get(65536), false, 0)/* .setIsRaidMinion(true) */; addSpawn(DOLL_BLADER_B, 52687, 219596, -3368, Rnd.get(65536), false, 0)/* .setIsRaidMinion(true) */;
@@ -531,8 +504,9 @@ public class Zaken extends Quest
addSpawn(PIRATES_ZOMBIE_B, 54139, 219253, -3488, Rnd.get(65536), false, 0)/* .setIsRaidMinion(true) */; addSpawn(PIRATES_ZOMBIE_B, 54139, 219253, -3488, Rnd.get(65536), false, 0)/* .setIsRaidMinion(true) */;
addSpawn(DOLL_BLADER_B, 54262, 219480, -3488, Rnd.get(65536), false, 0)/* .setIsRaidMinion(true) */; addSpawn(DOLL_BLADER_B, 54262, 219480, -3488, Rnd.get(65536), false, 0)/* .setIsRaidMinion(true) */;
_ai4 = 6; _ai4 = 6;
break;
} }
else if (_ai4 == 6) case 6:
{ {
addSpawn(PIRATES_ZOMBIE_B, 53412, 218077, -3488, Rnd.get(65536), false, 0)/* .setIsRaidMinion(true) */; addSpawn(PIRATES_ZOMBIE_B, 53412, 218077, -3488, Rnd.get(65536), false, 0)/* .setIsRaidMinion(true) */;
addSpawn(VALE_MASTER_B, 54413, 217132, -3488, Rnd.get(65536), false, 0)/* .setIsRaidMinion(true) */; addSpawn(VALE_MASTER_B, 54413, 217132, -3488, Rnd.get(65536), false, 0)/* .setIsRaidMinion(true) */;
@@ -563,8 +537,9 @@ public class Zaken extends Quest
addSpawn(PIRATES_ZOMBIE_B, 55225, 218236, -3216, Rnd.get(65536), false, 0)/* .setIsRaidMinion(true) */; addSpawn(PIRATES_ZOMBIE_B, 55225, 218236, -3216, Rnd.get(65536), false, 0)/* .setIsRaidMinion(true) */;
addSpawn(PIRATES_ZOMBIE_B, 54973, 218075, -3216, Rnd.get(65536), false, 0)/* .setIsRaidMinion(true) */; addSpawn(PIRATES_ZOMBIE_B, 54973, 218075, -3216, Rnd.get(65536), false, 0)/* .setIsRaidMinion(true) */;
_ai4 = 7; _ai4 = 7;
break;
} }
else if (_ai4 == 7) case 7:
{ {
addSpawn(PIRATES_ZOMBIE_B, 54228, 217504, -3216, Rnd.get(65536), false, 0)/* .setIsRaidMinion(true) */; addSpawn(PIRATES_ZOMBIE_B, 54228, 217504, -3216, Rnd.get(65536), false, 0)/* .setIsRaidMinion(true) */;
addSpawn(VALE_MASTER_B, 54181, 217168, -3216, Rnd.get(65536), false, 0)/* .setIsRaidMinion(true) */; addSpawn(VALE_MASTER_B, 54181, 217168, -3216, Rnd.get(65536), false, 0)/* .setIsRaidMinion(true) */;
@@ -597,17 +572,26 @@ public class Zaken extends Quest
addSpawn(PIRATES_ZOMBIE_B, 54973, 218075, -2944, Rnd.get(65536), false, 0)/* .setIsRaidMinion(true) */; addSpawn(PIRATES_ZOMBIE_B, 54973, 218075, -2944, Rnd.get(65536), false, 0)/* .setIsRaidMinion(true) */;
_ai4 = 8; _ai4 = 8;
cancelQuestTimer("1003", null, null); cancelQuestTimer("1003", null, null);
break;
} }
} }
else if (event.equals("zaken_unlock")) break;
}
case "zaken_unlock":
{
if (GrandBossManager.getInstance().getBossStatus(ZAKEN) != DEAD)
{ {
final GrandBossInstance zaken = (GrandBossInstance) addSpawn(ZAKEN, 55312, 219168, -3223, 0, false, 0); final GrandBossInstance zaken = (GrandBossInstance) addSpawn(ZAKEN, 55312, 219168, -3223, 0, false, 0);
GrandBossManager.getInstance().setBossStatus(ZAKEN, ALIVE); GrandBossManager.getInstance().setBossStatus(ZAKEN, ALIVE);
spawnBoss(zaken); spawnBoss(zaken);
} }
else if (event.equals("CreateOnePrivateEx")) break;
}
case "CreateOnePrivateEx":
{ {
addSpawn(npc.getNpcId(), npc.getX(), npc.getY(), npc.getZ(), 0, false, 0)/* .setIsRaidMinion(true) */; addSpawn(npc.getNpcId(), npc.getX(), npc.getY(), npc.getZ(), 0, false, 0)/* .setIsRaidMinion(true) */;
break;
}
} }
return super.onAdvEvent(event, npc, player); return super.onAdvEvent(event, npc, player);
} }
@@ -873,21 +857,13 @@ public class Zaken extends Quest
return super.onKill(npc, killer, isPet); return super.onKill(npc, killer, isPet);
} }
/*
* public String onSkillSee(NpcInstance npc, PlayerInstance caster, Skill skill, WorldObject[] targets, boolean isPet) { int npcId = npc.getNpcId(); if (npcId == ZAKEN) { if (skill.getAggroPoints() > 0) { ((Attackable) npc).addDamageHate(caster, 0, (((skill.getAggroPoints() / npc.getMaxHp()) *
* 10) * 150)); } if (Rnd.get(12) < 1) { int i0 = Rnd.get((15 * 15)); if (i0 < 1) { npc.setTarget(caster); npc.doCast(SkillTable.getInstance().getInfo(4216, 1)); } else if (i0 < 2) { npc.setTarget(caster); npc.doCast(SkillTable.getInstance().getInfo(4217, 1)); } else if (i0 < 4) {
* npc.setTarget(caster); npc.doCast(SkillTable.getInstance().getInfo(4219, 1)); } else if (i0 < 8) { npc.setTarget(caster); npc.doCast(SkillTable.getInstance().getInfo(4218, 1)); } else if (i0 < 15) { for (Creature creature : npc.getKnownList().getKnownCharactersInRadius(100)) { if (character
* != caster) continue; if (caster != ((Attackable) npc).getMostHated()) { npc.setTarget(caster); npc.doCast(SkillTable.getInstance().getInfo(4221, 1)); } } } if (Rnd.get(2)ss < 1) { if (caster == ((Attackable) npc).getMostHated()) { npc.setTarget(caster);
* npc.doCast(SkillTable.getInstance().getInfo(4220, 1)); } } } } return super.onSkillSee(npc, caster, skill, targets, isPet); }
*/
@Override @Override
public String onAggroRangeEnter(NpcInstance npc, PlayerInstance player, boolean isPet) public String onAggroRangeEnter(NpcInstance npc, PlayerInstance player, boolean isPet)
{ {
final int npcId = npc.getNpcId(); final int npcId = npc.getNpcId();
if (npcId == ZAKEN) if (npcId == ZAKEN)
{ {
if (_Zone.isInsideZone(npc)) if (_zone.isInsideZone(npc))
{ {
final Creature target = isPet ? player.getPet() : player; final Creature target = isPet ? player.getPet() : player;
((Attackable) npc).addDamageHate(target, 1, 200); ((Attackable) npc).addDamageHate(target, 1, 200);
@@ -967,6 +943,37 @@ public class Zaken extends Quest
return super.onAggroRangeEnter(npc, player, isPet); return super.onAggroRangeEnter(npc, player, isPet);
} }
public void spawnBoss(GrandBossInstance npc)
{
if (npc == null)
{
LOGGER.warning("Zaken AI failed to load, missing Zaken in grandboss_data.sql");
return;
}
GrandBossManager.getInstance().addBoss(npc);
npc.broadcastPacket(new PlaySound(1, "BS01_A", npc));
_ai0 = 0;
_ai1 = npc.getX();
_ai2 = npc.getY();
_ai3 = npc.getZ();
_quest0 = 0;
_quest1 = 0;
_quest2 = 3;
if (_zone == null)
{
LOGGER.warning("Zaken AI failed to load, missing zone for Zaken");
return;
}
if (_zone.isInsideZone(npc))
{
_ai4 = 1;
startQuestTimer("1003", 1700, null, null);
}
_1001 = 1;
startQuestTimer("1001", 1000, npc, null); // buffs,random teleports
}
public int getTimeHour() public int getTimeHour()
{ {
return (GameTimeController.getInstance().getGameTime() / 60) % 24; return (GameTimeController.getInstance().getGameTime() / 60) % 24;