From 2131eb828cb0c5e12dcdbf07240376a36dadae3d Mon Sep 17 00:00:00 2001 From: Zealar <Zealar@users.noreply.github.com> Date: Mon, 20 Oct 2014 23:06:04 +0000 Subject: [PATCH] BETA: Data Pack for [L6665] --- .../ai/group_template/DragonValley.java | 17 +--- .../ai/group_template/LairOfAntharas.java | 12 --- .../ai/group_template/MinionSpawnManager.java | 22 ++--- .../ai/group_template/MonasteryOfSilence.java | 19 ++-- .../ai/group_template/NonLethalableNpcs.java | 6 -- .../ai/group_template/NonTalkingNpcs.java | 10 --- .../ai/group_template/PrimevalIsle.java | 18 ---- .../ai/group_template/PrisonGuards.java | 12 --- .../ai/group_template/RandomSpawn.java | 14 ++- .../group_template/SeeThroughSilentMove.java | 13 --- .../ai/group_template/SelMahumDrill.java | 40 +++------ .../ai/group_template/SelMahumSquad.java | 41 +++------ .../data/scripts/ai/individual/Anais.java | 41 ++++----- .../data/scripts/ai/individual/DrChaos.java | 87 ++++++++++--------- .../scripts/ai/individual/EvasGiftBox.java | 7 -- .../scripts/ai/individual/GraveRobbers.java | 49 +++-------- .../ai/individual/RagnaOrcCommander.java | 60 ++++--------- .../scripts/ai/individual/RagnaOrcHero.java | 53 +++-------- .../scripts/ai/individual/RagnaOrcSeer.java | 52 ++++------- .../scripts/ai/individual/Venom/Venom.java | 35 ++++---- .../scripts/ai/npc/Minigame/Minigame.java | 46 +++++++--- .../scripts/ai/npc/TownPets/TownPets.java | 15 +--- .../AI/NPC/GeneralDilios/GeneralDilios.java | 29 ++++--- .../AI/NPC/ZealotOfShilen/ZealotOfShilen.java | 35 ++++---- .../SeedOfAnnihilation.java | 22 ----- .../admincommandhandlers/AdminAdmin.java | 4 + .../data/scripts/hellbound/AI/Amaskari.java | 5 +- .../data/scripts/hellbound/AI/Chimeras.java | 2 +- .../data/scripts/hellbound/AI/Keltas.java | 11 +-- .../hellbound/AI/NPC/Shadai/Shadai.java | 5 +- .../data/scripts/hellbound/AI/Typhoon.java | 5 +- .../AI/Zones/AnomicFoundry/AnomicFoundry.java | 64 +++++++------- .../AI/Zones/TowerOfNaia/TowerOfNaia.java | 2 +- .../Q00457_LostAndFound.java | 10 ++- 34 files changed, 309 insertions(+), 554 deletions(-) diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/DragonValley.java b/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/DragonValley.java index 919492d4cf..a2c7d84980 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/DragonValley.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/DragonValley.java @@ -22,8 +22,6 @@ import java.util.EnumMap; import ai.npc.AbstractNpcAI; -import com.l2jserver.gameserver.datatables.SpawnTable; -import com.l2jserver.gameserver.model.L2Spawn; import com.l2jserver.gameserver.model.actor.L2Attackable; import com.l2jserver.gameserver.model.actor.L2Npc; import com.l2jserver.gameserver.model.actor.L2Playable; @@ -136,22 +134,9 @@ public final class DragonValley extends AbstractNpcAI addAttackId(SUMMON_NPC); addKillId(NECROMANCER_OF_THE_VALLEY); addKillId(SPOIL_REACT_MONSTER); - addSpawnId(EXPLODING_ORC_GHOST); + addSpawnId(EXPLODING_ORC_GHOST, NECROMANCER_OF_THE_VALLEY); addSpawnId(SPOIL_REACT_MONSTER); addSpellFinishedId(EXPLODING_ORC_GHOST); - - for (int npcId : SPOIL_REACT_MONSTER) - { - for (L2Spawn spawn : SpawnTable.getInstance().getSpawns(npcId)) - { - onSpawn(spawn.getLastSpawn()); - } - } - - for (L2Spawn spawn : SpawnTable.getInstance().getSpawns(NECROMANCER_OF_THE_VALLEY)) - { - onSpawn(spawn.getLastSpawn()); - } } @Override diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/LairOfAntharas.java b/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/LairOfAntharas.java index 0197507a0d..96421d996e 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/LairOfAntharas.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/LairOfAntharas.java @@ -18,12 +18,8 @@ */ package ai.group_template; -import java.util.Arrays; - import ai.npc.AbstractNpcAI; -import com.l2jserver.gameserver.datatables.SpawnTable; -import com.l2jserver.gameserver.model.L2Spawn; import com.l2jserver.gameserver.model.actor.L2Attackable; import com.l2jserver.gameserver.model.actor.L2Npc; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; @@ -57,14 +53,6 @@ public final class LairOfAntharas extends AbstractNpcAI addSpawnId(DRAGON_KNIGHT, DRAGON_KNIGHT2, DRAGON_GUARD, DRAGON_MAGE); addMoveFinishedId(DRAGON_GUARD, DRAGON_MAGE); addAggroRangeEnterId(KNORIKS); - - for (int npcId : Arrays.asList(DRAGON_KNIGHT, DRAGON_KNIGHT2, DRAGON_GUARD, DRAGON_MAGE)) - { - for (L2Spawn spawn : SpawnTable.getInstance().getSpawns(npcId)) - { - onSpawn(spawn.getLastSpawn()); - } - } } @Override diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/MinionSpawnManager.java b/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/MinionSpawnManager.java index 9386db852c..aa04b42d0b 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/MinionSpawnManager.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/MinionSpawnManager.java @@ -23,16 +23,12 @@ import java.util.Set; import ai.npc.AbstractNpcAI; -import com.l2jserver.gameserver.datatables.NpcData; import com.l2jserver.gameserver.model.actor.L2Npc; import com.l2jserver.gameserver.model.actor.instance.L2MonsterInstance; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; -import com.l2jserver.gameserver.model.actor.instance.L2RaidBossInstance; -import com.l2jserver.gameserver.model.actor.templates.L2NpcTemplate; import com.l2jserver.gameserver.model.holders.MinionHolder; import com.l2jserver.gameserver.network.NpcStringId; import com.l2jserver.gameserver.network.clientpackets.Say2; -import com.l2jserver.util.Rnd; /** * Minion Spawn Manager. @@ -424,12 +420,9 @@ public final class MinionSpawnManager extends AbstractNpcAI @Override public String onSpawn(L2Npc npc) { - if ((npc instanceof L2MonsterInstance) || (npc instanceof L2RaidBossInstance)) + if (npc.getTemplate().getParameters().getSet().get("SummonPrivateRate") == null) { - if (!npc.getTemplate().getParameters().getSet().containsKey("SummonPrivateRate")) - { - ((L2MonsterInstance) npc).getMinionList().spawnMinions(npc.getTemplate().getParameters().getMinionList("Privates")); - } + ((L2MonsterInstance) npc).getMinionList().spawnMinions(npc.getTemplate().getParameters().getMinionList("Privates")); } return super.onSpawn(npc); } @@ -442,16 +435,11 @@ public final class MinionSpawnManager extends AbstractNpcAI L2MonsterInstance monster = (L2MonsterInstance) npc; if (!monster.hasMinions()) { - final int summonPrivateRate = npc.getTemplate().getParameters().getInt("SummonPrivateRate", 0); - if (Rnd.get(1, 100) <= summonPrivateRate) + if (getRandom(1, 100) <= npc.getTemplate().getParameters().getInt("SummonPrivateRate", 0)) { - L2NpcTemplate template = NpcData.getInstance().getTemplate(npc.getId()); - if (template.getParameters().getMinionList("Privates") != null) + for (MinionHolder is : npc.getTemplate().getParameters().getMinionList("Privates")) { - for (MinionHolder is : template.getParameters().getMinionList("Privates")) - { - addMinion((L2MonsterInstance) npc, is.getId()); - } + addMinion((L2MonsterInstance) npc, is.getId()); } broadcastNpcSay(npc, Say2.NPC_ALL, ON_ATTACK_MSG[getRandom(ON_ATTACK_MSG.length)]); } diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/MonasteryOfSilence.java b/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/MonasteryOfSilence.java index f0b3d41bac..b46b9aa987 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/MonasteryOfSilence.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/MonasteryOfSilence.java @@ -21,9 +21,7 @@ package ai.group_template; import ai.npc.AbstractNpcAI; import com.l2jserver.gameserver.ai.CtrlIntention; -import com.l2jserver.gameserver.datatables.SpawnTable; import com.l2jserver.gameserver.model.L2Object; -import com.l2jserver.gameserver.model.L2Spawn; import com.l2jserver.gameserver.model.actor.L2Attackable; import com.l2jserver.gameserver.model.actor.L2Character; import com.l2jserver.gameserver.model.actor.L2Npc; @@ -82,13 +80,7 @@ public final class MonasteryOfSilence extends AbstractNpcAI addAttackId(KNIGHT, CAPTAIN, GUIDE, SEEKER, ASCETIC); addNpcHateId(GUIDE, SEEKER, SAVIOR, ASCETIC); addAggroRangeEnterId(GUIDE, SEEKER, SAVIOR, ASCETIC); - - for (L2Spawn spawn : SpawnTable.getInstance().getSpawns(SCARECROW)) - { - spawn.getLastSpawn().setIsInvul(true); - spawn.getLastSpawn().disableCoreAI(true); - startQuestTimer("TRAINING", 30000, spawn.getLastSpawn(), null, true); - } + addSpawnId(SCARECROW); } @Override @@ -289,6 +281,15 @@ public final class MonasteryOfSilence extends AbstractNpcAI return super.onSkillSee(npc, caster, skill, targets, isSummon); } + @Override + public String onSpawn(L2Npc npc) + { + npc.setIsInvul(true); + npc.disableCoreAI(true); + startQuestTimer("TRAINING", 30000, npc, null, true); + return super.onSpawn(npc); + } + public static void main(String[] args) { new MonasteryOfSilence(); diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/NonLethalableNpcs.java b/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/NonLethalableNpcs.java index 12946c0dd0..5e19273c63 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/NonLethalableNpcs.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/NonLethalableNpcs.java @@ -20,8 +20,6 @@ package ai.group_template; import ai.npc.AbstractNpcAI; -import com.l2jserver.gameserver.datatables.SpawnTable; -import com.l2jserver.gameserver.model.L2Spawn; import com.l2jserver.gameserver.model.actor.L2Npc; /** @@ -35,10 +33,6 @@ public class NonLethalableNpcs extends AbstractNpcAI { super(NonLethalableNpcs.class.getSimpleName(), "ai/group_template"); addSpawnId(HEADQUARTERS); - for (L2Spawn spawn : SpawnTable.getInstance().getSpawns(HEADQUARTERS)) - { - onSpawn(spawn.getLastSpawn()); - } } @Override diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/NonTalkingNpcs.java b/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/NonTalkingNpcs.java index ab14561480..e0353efa63 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/NonTalkingNpcs.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/NonTalkingNpcs.java @@ -20,8 +20,6 @@ package ai.group_template; import ai.npc.AbstractNpcAI; -import com.l2jserver.gameserver.datatables.SpawnTable; -import com.l2jserver.gameserver.model.L2Spawn; import com.l2jserver.gameserver.model.actor.L2Npc; /** @@ -60,14 +58,6 @@ public final class NonTalkingNpcs extends AbstractNpcAI { super(NonTalkingNpcs.class.getSimpleName(), "ai/group_template"); addSpawnId(NONTALKINGNPCS); - - for (int npcId : NONTALKINGNPCS) - { - for (L2Spawn spawn : SpawnTable.getInstance().getSpawns(npcId)) - { - onSpawn(spawn.getLastSpawn()); - } - } } @Override diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/PrimevalIsle.java b/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/PrimevalIsle.java index 92c5545d3b..0dedff4583 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/PrimevalIsle.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/PrimevalIsle.java @@ -22,10 +22,8 @@ import ai.npc.AbstractNpcAI; import com.l2jserver.gameserver.GeoData; import com.l2jserver.gameserver.ai.CtrlIntention; -import com.l2jserver.gameserver.datatables.SpawnTable; import com.l2jserver.gameserver.handler.IItemHandler; import com.l2jserver.gameserver.handler.ItemHandler; -import com.l2jserver.gameserver.model.L2Spawn; import com.l2jserver.gameserver.model.Location; import com.l2jserver.gameserver.model.actor.L2Attackable; import com.l2jserver.gameserver.model.actor.L2Character; @@ -120,22 +118,6 @@ public final class PrimevalIsle extends AbstractNpcAI addKillId(EGG, SAILREN, DEINO, ORNIT); addSeeCreatureId(TREX); addSeeCreatureId(MONSTERS); - - for (int npcId : SPRIGNANT) - { - for (L2Spawn spawn : SpawnTable.getInstance().getSpawns(npcId)) - { - onSpawn(spawn.getLastSpawn()); - } - } - - for (int npcId : TREX) - { - for (L2Spawn spawn : SpawnTable.getInstance().getSpawns(npcId)) - { - onSpawn(spawn.getLastSpawn()); - } - } } @Override diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/PrisonGuards.java b/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/PrisonGuards.java index 2fa60129de..7cfeb46ea9 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/PrisonGuards.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/PrisonGuards.java @@ -20,9 +20,7 @@ package ai.group_template; import ai.npc.AbstractNpcAI; -import com.l2jserver.gameserver.datatables.SpawnTable; import com.l2jserver.gameserver.model.L2Object; -import com.l2jserver.gameserver.model.L2Spawn; import com.l2jserver.gameserver.model.actor.L2Attackable; import com.l2jserver.gameserver.model.actor.L2Npc; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; @@ -55,16 +53,6 @@ public final class PrisonGuards extends AbstractNpcAI addNpcHateId(GUARD); addSkillSeeId(GUARD); addSpellFinishedId(GUARD_HEAD, GUARD); - - for (L2Spawn spawn : SpawnTable.getInstance().getSpawns(GUARD_HEAD)) - { - onSpawn(spawn.getLastSpawn()); - } - - for (L2Spawn spawn : SpawnTable.getInstance().getSpawns(GUARD)) - { - onSpawn(spawn.getLastSpawn()); - } } @Override diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/RandomSpawn.java b/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/RandomSpawn.java index 90e98622e7..82ff0ac272 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/RandomSpawn.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/RandomSpawn.java @@ -88,17 +88,13 @@ public final class RandomSpawn extends AbstractNpcAI @Override public final String onSpawn(L2Npc npc) { - if (!npc.isTeleporting()) + final Location[] spawnlist = SPAWN_POINTS.get(npc.getId()); + final Location loc = spawnlist[getRandom(spawnlist.length)]; + if (!npc.isInsideRadius(loc, 200, false, false)) { - final Location[] spawnlist = SPAWN_POINTS.get(npc.getId()); - final Location loc = spawnlist[getRandom(spawnlist.length)]; - if (!npc.isInsideRadius(loc, 200, false, false)) - { - npc.getSpawn().setLocation(loc); - ThreadPoolManager.getInstance().scheduleGeneral(new Teleport(npc, loc), 100); - } + npc.getSpawn().setLocation(loc); + ThreadPoolManager.getInstance().scheduleGeneral(new Teleport(npc, loc), 100); } - return super.onSpawn(npc); } diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/SeeThroughSilentMove.java b/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/SeeThroughSilentMove.java index 53a7396c29..15c984aa22 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/SeeThroughSilentMove.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/SeeThroughSilentMove.java @@ -20,8 +20,6 @@ package ai.group_template; import ai.npc.AbstractNpcAI; -import com.l2jserver.gameserver.datatables.SpawnTable; -import com.l2jserver.gameserver.model.L2Spawn; import com.l2jserver.gameserver.model.actor.L2Attackable; import com.l2jserver.gameserver.model.actor.L2Npc; @@ -45,17 +43,6 @@ public class SeeThroughSilentMove extends AbstractNpcAI private SeeThroughSilentMove() { super(SeeThroughSilentMove.class.getSimpleName(), "ai/group_template"); - for (int npcId : MONSTERS) - { - for (L2Spawn spawn : SpawnTable.getInstance().getSpawns(npcId)) - { - final L2Npc npc = spawn.getLastSpawn(); - if ((npc != null) && npc.isAttackable()) - { - ((L2Attackable) npc).setSeeThroughSilentMove(true); - } - } - } addSpawnId(MONSTERS); } diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/SelMahumDrill.java b/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/SelMahumDrill.java index c3e9c6bbc4..6a29066345 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/SelMahumDrill.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/SelMahumDrill.java @@ -136,23 +136,6 @@ public final class SelMahumDrill extends AbstractNpcAI addEventReceivedId(MAHUM_SOLDIERS); addSpawnId(MAHUM_CHIEFS); addSpawnId(MAHUM_SOLDIERS); - - // Send event to monsters, that was spawned through SpawnTable at server start (it is impossible to track first spawn) - for (int npcId : MAHUM_CHIEFS) - { - for (L2Spawn npcSpawn : SpawnTable.getInstance().getSpawns(npcId)) - { - onSpawn(npcSpawn.getLastSpawn()); - } - } - for (int npcId : MAHUM_SOLDIERS) - { - for (L2Spawn npcSpawn : SpawnTable.getInstance().getSpawns(npcId)) - { - onSpawn(npcSpawn.getLastSpawn()); - } - } - // Start global return home timer startQuestTimer("return_home", 120000, null, null, true); } @@ -288,21 +271,18 @@ public final class SelMahumDrill extends AbstractNpcAI @Override public String onSpawn(L2Npc npc) { - if (!npc.isTeleporting()) + if (Util.contains(MAHUM_CHIEFS, npc.getId())) { - if (Util.contains(MAHUM_CHIEFS, npc.getId())) - { - startQuestTimer("do_social_action", 15000, npc, null); - } - - else if ((getRandom(18) < 1) && Util.contains(MAHUM_SOLDIERS, npc.getId())) - { - npc.getVariables().set("SOCIAL_ACTION_ALT_BEHAVIOR", 1); - } - - // Restore AI handling by core - npc.disableCoreAI(false); + startQuestTimer("do_social_action", 15000, npc, null); } + + else if ((getRandom(18) < 1) && Util.contains(MAHUM_SOLDIERS, npc.getId())) + { + npc.getVariables().set("SOCIAL_ACTION_ALT_BEHAVIOR", 1); + } + + // Restore AI handling by core + npc.disableCoreAI(false); return null; } diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/SelMahumSquad.java b/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/SelMahumSquad.java index 2cba6a3624..9264acc8cd 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/SelMahumSquad.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/SelMahumSquad.java @@ -23,9 +23,7 @@ import ai.npc.AbstractNpcAI; import com.l2jserver.gameserver.GameTimeController; import com.l2jserver.gameserver.ai.CtrlIntention; import com.l2jserver.gameserver.datatables.SkillData; -import com.l2jserver.gameserver.datatables.SpawnTable; import com.l2jserver.gameserver.model.L2Object; -import com.l2jserver.gameserver.model.L2Spawn; import com.l2jserver.gameserver.model.Location; import com.l2jserver.gameserver.model.actor.L2Npc; import com.l2jserver.gameserver.model.actor.instance.L2MonsterInstance; @@ -86,16 +84,6 @@ public final class SelMahumSquad extends AbstractNpcAI addSpawnId(CHEF, FIRE); addSpawnId(SQUAD_LEADERS); addSpellFinishedId(CHEF); - - // Send event to monsters, that was spawned through SpawnTable at server start (it is impossible to track first spawn) - for (L2Spawn npcSpawn : SpawnTable.getInstance().getSpawns(CHEF)) - { - onSpawn(npcSpawn.getLastSpawn()); - } - for (L2Spawn npcSpawn : SpawnTable.getInstance().getSpawns(FIRE)) - { - onSpawn(npcSpawn.getLastSpawn()); - } } @Override @@ -358,23 +346,20 @@ public final class SelMahumSquad extends AbstractNpcAI @Override public String onSpawn(L2Npc npc) { - if (!npc.isTeleporting()) + if (npc.getId() == CHEF) { - if (npc.getId() == CHEF) - { - npc.setIsInvul(false); - } - - else if (npc.getId() == FIRE) - { - startQuestTimer("fire", 1000, npc, null); - } - - else if (Util.contains(SQUAD_LEADERS, npc.getId())) - { - npc.setDisplayEffect(3); - npc.setIsNoRndWalk(false); - } + npc.setIsInvul(false); + } + + else if (npc.getId() == FIRE) + { + startQuestTimer("fire", 1000, npc, null); + } + + else if (Util.contains(SQUAD_LEADERS, npc.getId())) + { + npc.setDisplayEffect(3); + npc.setIsNoRndWalk(false); } return null; } diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Anais.java b/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Anais.java index c144e7cf83..84bcea42bd 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Anais.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Anais.java @@ -18,13 +18,12 @@ */ package ai.individual; +import java.util.ArrayList; import java.util.Map; import ai.npc.AbstractNpcAI; import com.l2jserver.gameserver.ai.CtrlIntention; -import com.l2jserver.gameserver.datatables.SpawnTable; -import com.l2jserver.gameserver.model.L2Spawn; import com.l2jserver.gameserver.model.Location; import com.l2jserver.gameserver.model.actor.L2Attackable; import com.l2jserver.gameserver.model.actor.L2Npc; @@ -45,8 +44,7 @@ public final class Anais extends AbstractNpcAI // Skill private static SkillHolder DIVINE_NOVA = new SkillHolder(6326, 1); // Instances - private final L2Npc[] _divineBurners = new L2Npc[4]; - private L2Npc _anais = null; + ArrayList<L2Npc> _divineBurners = new ArrayList<>(4); private L2PcInstance _nextTarget = null; private L2Npc _current = null; private int _pot = 0; @@ -55,26 +53,27 @@ public final class Anais extends AbstractNpcAI { super(Anais.class.getSimpleName(), "ai/individual"); addAttackId(ANAIS); + addSpawnId(DIVINE_BURNER); addKillId(GRAIL_WARD); } - private void burnerOnAttack(int pot) + private void burnerOnAttack(int pot, L2Npc anais) { - L2Npc npc = _divineBurners[pot]; + L2Npc npc = _divineBurners.get(pot); npc.setDisplayEffect(1); npc.setIsRunning(false); if (pot < 4) { _current = npc; - QuestTimer checkAround = getQuestTimer("CHECK", _anais, null); + QuestTimer checkAround = getQuestTimer("CHECK", anais, null); if (checkAround == null) // || !checkAround.getIsActive() { - startQuestTimer("CHECK", 3000, _anais, null); + startQuestTimer("CHECK", 3000, anais, null); } } else { - cancelQuestTimer("CHECK", _anais, null); + cancelQuestTimer("CHECK", anais, null); } } @@ -90,14 +89,14 @@ public final class Anais extends AbstractNpcAI } if ((_current != null) || (_pot < 4)) { - Map<Integer, L2PcInstance> players = _anais.getKnownList().getKnownPlayers(); + Map<Integer, L2PcInstance> players = npc.getKnownList().getKnownPlayers(); L2PcInstance target = players.get(getRandom(players.size() - 1)); _nextTarget = target; if (_nextTarget == null) { - _nextTarget = (L2PcInstance) _anais.getTarget(); + _nextTarget = (L2PcInstance) npc.getTarget(); } - L2Npc b = _divineBurners[_pot]; + L2Npc b = _divineBurners.get(_pot); _pot = _pot + 1; b.setDisplayEffect(1); b.setIsRunning(false); @@ -145,19 +144,19 @@ public final class Anais extends AbstractNpcAI { if (_pot == 0) { - burnerOnAttack(0); + burnerOnAttack(0, npc); } else if ((npc.getCurrentHp() <= (npc.getMaxRecoverableHp() * 0.75)) && (_pot == 1)) { - burnerOnAttack(1); + burnerOnAttack(1, npc); } else if ((npc.getCurrentHp() <= (npc.getMaxRecoverableHp() * 0.5)) && (_pot == 2)) { - burnerOnAttack(2); + burnerOnAttack(2, npc); } else if ((npc.getCurrentHp() <= (npc.getMaxRecoverableHp() * 0.25)) && (_pot == 3)) { - burnerOnAttack(3); + burnerOnAttack(3, npc); } return super.onAttack(npc, attacker, damage, isSummon); } @@ -169,15 +168,7 @@ public final class Anais extends AbstractNpcAI @Override public String onSpawn(L2Npc npc) { - if (!npc.isTeleporting()) - { - int i = 0; - for (L2Spawn spawn : SpawnTable.getInstance().getSpawns(DIVINE_BURNER)) - { - _divineBurners[i++] = spawn.getLastSpawn(); - } - _anais = SpawnTable.getInstance().getFirstSpawn(ANAIS).getLastSpawn(); - } + _divineBurners.add(npc); return super.onSpawn(npc); } diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/DrChaos.java b/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/DrChaos.java index 098a0bcbbe..e7b6683a6c 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/DrChaos.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/DrChaos.java @@ -53,56 +53,65 @@ public final class DrChaos extends Quest @Override public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) { - if (event.equalsIgnoreCase("1")) + switch (event) { - L2Npc machine = null; - for (L2Spawn spawn : SpawnTable.getInstance().getSpawns(STRANGE_MACHINE)) + case "1": { - if (spawn != null) + L2Npc machine = null; + for (L2Spawn spawn : SpawnTable.getInstance().getSpawns(STRANGE_MACHINE)) { - machine = spawn.getLastSpawn(); + if (spawn != null) + { + machine = spawn.getLastSpawn(); + } } + if (machine != null) + { + npc.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, machine); + machine.broadcastPacket(new SpecialCamera(machine, 1, -200, 15, 10000, 1000, 20000, 0, 0, 0, 0, 0)); + } + else + { + startQuestTimer("2", 2000, npc, player); + } + startQuestTimer("3", 10000, npc, player); + break; } - if (machine != null) + case "2": { - npc.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, machine); - machine.broadcastPacket(new SpecialCamera(machine, 1, -200, 15, 10000, 1000, 20000, 0, 0, 0, 0, 0)); + npc.broadcastSocialAction(3); + break; } - else + case "3": { - startQuestTimer("2", 2000, npc, player); + npc.broadcastPacket(new SpecialCamera(npc, 1, -150, 10, 3000, 1000, 20000, 0, 0, 0, 0, 0)); + startQuestTimer("4", 2500, npc, player); + break; } - startQuestTimer("3", 10000, npc, player); - } - else if (event.equalsIgnoreCase("2")) - { - npc.broadcastSocialAction(3); - } - else if (event.equalsIgnoreCase("3")) - { - npc.broadcastPacket(new SpecialCamera(npc, 1, -150, 10, 3000, 1000, 20000, 0, 0, 0, 0, 0)); - startQuestTimer("4", 2500, npc, player); - } - else if (event.equalsIgnoreCase("4")) - { - npc.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, new Location(96055, -110759, -3312, 0)); - startQuestTimer("5", 2000, npc, player); - } - else if (event.equalsIgnoreCase("5")) - { - player.teleToLocation(PLAYER_TELEPORT); - npc.teleToLocation(NPC_LOCATION); - if (!_IsGolemSpawned) + case "4": { - L2Npc golem = addSpawn(CHAOS_GOLEM, 94640, -112496, -3336, 0, false, 0); - _IsGolemSpawned = true; - startQuestTimer("6", 1000, golem, player); - player.sendPacket(new PlaySound(1, "Rm03_A", 0, 0, 0, 0, 0)); + npc.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, new Location(96055, -110759, -3312, 0)); + startQuestTimer("5", 2000, npc, player); + break; + } + case "5": + { + player.teleToLocation(PLAYER_TELEPORT); + npc.teleToLocation(NPC_LOCATION); + if (!_IsGolemSpawned) + { + L2Npc golem = addSpawn(CHAOS_GOLEM, 94640, -112496, -3336, 0, false, 0); + _IsGolemSpawned = true; + startQuestTimer("6", 1000, golem, player); + player.sendPacket(new PlaySound(1, "Rm03_A", 0, 0, 0, 0, 0)); + } + break; + } + case "6": + { + npc.broadcastPacket(new SpecialCamera(npc, 30, -200, 20, 6000, 700, 8000, 0, 0, 0, 0, 0)); + break; } - } - else if (event.equalsIgnoreCase("6")) - { - npc.broadcastPacket(new SpecialCamera(npc, 30, -200, 20, 6000, 700, 8000, 0, 0, 0, 0, 0)); } return super.onAdvEvent(event, npc, player); } diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/EvasGiftBox.java b/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/EvasGiftBox.java index 28b76b3349..697153fb22 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/EvasGiftBox.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/EvasGiftBox.java @@ -20,8 +20,6 @@ package ai.individual; import ai.npc.AbstractNpcAI; -import com.l2jserver.gameserver.datatables.SpawnTable; -import com.l2jserver.gameserver.model.L2Spawn; import com.l2jserver.gameserver.model.actor.L2Attackable; import com.l2jserver.gameserver.model.actor.L2Npc; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; @@ -46,11 +44,6 @@ public final class EvasGiftBox extends AbstractNpcAI super(EvasGiftBox.class.getSimpleName(), "ai/individual"); addKillId(BOX); addSpawnId(BOX); - - for (L2Spawn spawn : SpawnTable.getInstance().getSpawns(BOX)) - { - onSpawn(spawn.getLastSpawn()); - } } @Override diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/GraveRobbers.java b/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/GraveRobbers.java index 977cb3d364..16f05d2e22 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/GraveRobbers.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/GraveRobbers.java @@ -20,13 +20,9 @@ package ai.individual; import ai.npc.AbstractNpcAI; -import com.l2jserver.gameserver.datatables.SpawnTable; -import com.l2jserver.gameserver.model.L2Spawn; import com.l2jserver.gameserver.model.actor.L2Npc; import com.l2jserver.gameserver.model.actor.instance.L2MonsterInstance; -import com.l2jserver.gameserver.model.actor.templates.L2NpcTemplate; import com.l2jserver.gameserver.model.holders.MinionHolder; -import com.l2jserver.util.Rnd; /** * Grove Robber's AI.<br> @@ -45,47 +41,30 @@ public final class GraveRobbers extends AbstractNpcAI { super(GraveRobbers.class.getSimpleName(), "ai/individual"); addSpawnId(GRAVE_ROBBER_SUMMONER, GRAVE_ROBBER_MEGICIAN); - - for (L2Spawn spawn : SpawnTable.getInstance().getSpawns(GRAVE_ROBBER_MEGICIAN)) - { - onSpawn(spawn.getLastSpawn()); - } } @Override public String onSpawn(L2Npc npc) { - if (npc instanceof L2MonsterInstance) + if (getRandom(2) == 0) { - if (!((L2MonsterInstance) npc).hasMinions()) - { - L2NpcTemplate template = npc.getTemplate(); - - if (Rnd.get(2) == 0) - { - if (template.getParameters().getMinionList("Privates1") != null) - { - for (MinionHolder is : template.getParameters().getMinionList("Privates1")) - { - addMinion((L2MonsterInstance) npc, is.getId()); - } - } - } - else - { - if (template.getParameters().getMinionList("Privates2") != null) - { - for (MinionHolder is : template.getParameters().getMinionList("Privates2")) - { - addMinion((L2MonsterInstance) npc, is.getId()); - } - } - } - } + spawnMinions(npc, "Privates1"); + } + else + { + spawnMinions(npc, "Privates2"); } return super.onSpawn(npc); } + private void spawnMinions(final L2Npc npc, final String spawnName) + { + for (MinionHolder is : npc.getTemplate().getParameters().getMinionList(spawnName)) + { + addMinion((L2MonsterInstance) npc, is.getId()); + } + } + public static void main(String[] args) { new GraveRobbers(); diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/RagnaOrcCommander.java b/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/RagnaOrcCommander.java index 5546e67e44..99291385a7 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/RagnaOrcCommander.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/RagnaOrcCommander.java @@ -20,14 +20,9 @@ package ai.individual; import ai.npc.AbstractNpcAI; -import com.l2jserver.gameserver.datatables.NpcData; -import com.l2jserver.gameserver.datatables.SpawnTable; -import com.l2jserver.gameserver.model.L2Spawn; import com.l2jserver.gameserver.model.actor.L2Npc; import com.l2jserver.gameserver.model.actor.instance.L2MonsterInstance; -import com.l2jserver.gameserver.model.actor.templates.L2NpcTemplate; import com.l2jserver.gameserver.model.holders.MinionHolder; -import com.l2jserver.util.Rnd; /** * Ragna Orc Commander AI. @@ -41,56 +36,31 @@ public final class RagnaOrcCommander extends AbstractNpcAI { super(RagnaOrcCommander.class.getSimpleName(), "ai/individual"); addSpawnId(RAGNA_ORC_COMMANDER); - - for (L2Spawn spawn : SpawnTable.getInstance().getSpawns(RAGNA_ORC_COMMANDER)) - { - onSpawn(spawn.getLastSpawn()); - } } @Override public String onSpawn(L2Npc npc) { - if (npc instanceof L2MonsterInstance) + spawnMinions(npc, "Privates1"); + if (getRandom(100) < 50) { - L2MonsterInstance monster = (L2MonsterInstance) npc; - if (!monster.hasMinions()) - { - L2NpcTemplate template = NpcData.getInstance().getTemplate(RAGNA_ORC_COMMANDER); - - if (template.getParameters().getMinionList("Privates1") != null) - { - for (MinionHolder is : template.getParameters().getMinionList("Privates1")) - { - addMinion((L2MonsterInstance) npc, is.getId()); - } - } - - if (Rnd.get(100) < 50) - { - if (template.getParameters().getMinionList("Privates2") != null) - { - for (MinionHolder is : template.getParameters().getMinionList("Privates1")) - { - addMinion((L2MonsterInstance) npc, is.getId()); - } - } - } - else - { - if (template.getParameters().getMinionList("Privates3") != null) - { - for (MinionHolder is : template.getParameters().getMinionList("Privates1")) - { - addMinion((L2MonsterInstance) npc, is.getId()); - } - } - } - } + spawnMinions(npc, "Privates2"); + } + else + { + spawnMinions(npc, "Privates3"); } return super.onSpawn(npc); } + private void spawnMinions(final L2Npc npc, final String spawnName) + { + for (MinionHolder is : npc.getTemplate().getParameters().getMinionList(spawnName)) + { + addMinion((L2MonsterInstance) npc, is.getId()); + } + } + public static void main(String[] args) { new RagnaOrcCommander(); diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/RagnaOrcHero.java b/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/RagnaOrcHero.java index 1b85422742..0da58ba149 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/RagnaOrcHero.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/RagnaOrcHero.java @@ -20,14 +20,9 @@ package ai.individual; import ai.npc.AbstractNpcAI; -import com.l2jserver.gameserver.datatables.NpcData; -import com.l2jserver.gameserver.datatables.SpawnTable; -import com.l2jserver.gameserver.model.L2Spawn; import com.l2jserver.gameserver.model.actor.L2Npc; import com.l2jserver.gameserver.model.actor.instance.L2MonsterInstance; -import com.l2jserver.gameserver.model.actor.templates.L2NpcTemplate; import com.l2jserver.gameserver.model.holders.MinionHolder; -import com.l2jserver.util.Rnd; /** * Ragna Orc Hero AI. @@ -41,50 +36,30 @@ public final class RagnaOrcHero extends AbstractNpcAI { super(RagnaOrcHero.class.getSimpleName(), "ai/individual"); addSpawnId(RAGNA_ORC_HERO); - - for (L2Spawn spawn : SpawnTable.getInstance().getSpawns(RAGNA_ORC_HERO)) - { - onSpawn(spawn.getLastSpawn()); - } } @Override public String onSpawn(L2Npc npc) { - if (npc instanceof L2MonsterInstance) + if (getRandom(100) < 70) { - L2MonsterInstance monster = (L2MonsterInstance) npc; - - if (!monster.hasMinions()) - { - L2NpcTemplate template = NpcData.getInstance().getTemplate(RAGNA_ORC_HERO); - - if (Rnd.get(100) < 70) - { - if (template.getParameters().getMinionList("Privates1") != null) - { - for (MinionHolder is : template.getParameters().getMinionList("Privates1")) - { - addMinion((L2MonsterInstance) npc, is.getId()); - } - } - } - else - { - if (template.getParameters().getMinionList("Privates2") != null) - { - for (MinionHolder is : template.getParameters().getMinionList("Privates2")) - { - addMinion((L2MonsterInstance) npc, is.getId()); - } - } - } - } + spawnMinions(npc, "Privates1"); + } + else + { + spawnMinions(npc, "Privates2"); } - return super.onSpawn(npc); } + private void spawnMinions(final L2Npc npc, final String spawnName) + { + for (MinionHolder is : npc.getTemplate().getParameters().getMinionList(spawnName)) + { + addMinion((L2MonsterInstance) npc, is.getId()); + } + } + public static void main(String[] args) { new RagnaOrcHero(); diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/RagnaOrcSeer.java b/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/RagnaOrcSeer.java index 4e142958b4..ed1e072967 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/RagnaOrcSeer.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/RagnaOrcSeer.java @@ -20,14 +20,9 @@ package ai.individual; import ai.npc.AbstractNpcAI; -import com.l2jserver.gameserver.datatables.NpcData; -import com.l2jserver.gameserver.datatables.SpawnTable; -import com.l2jserver.gameserver.model.L2Spawn; import com.l2jserver.gameserver.model.actor.L2Npc; import com.l2jserver.gameserver.model.actor.instance.L2MonsterInstance; -import com.l2jserver.gameserver.model.actor.templates.L2NpcTemplate; import com.l2jserver.gameserver.model.holders.MinionHolder; -import com.l2jserver.util.Rnd; /** * Ragna Orc Seer AI. @@ -41,48 +36,31 @@ public final class RagnaOrcSeer extends AbstractNpcAI { super(RagnaOrcSeer.class.getSimpleName(), "ai/individual"); addSpawnId(RAGNA_ORC_SEER); - - for (L2Spawn spawn : SpawnTable.getInstance().getSpawns(RAGNA_ORC_SEER)) - { - onSpawn(spawn.getLastSpawn()); - } } @Override public String onSpawn(L2Npc npc) { - if (npc instanceof L2MonsterInstance) + + if (getRandom(100) < 50) + { + spawnMinions(npc, "Privates1"); + } + else { - L2MonsterInstance monster = (L2MonsterInstance) npc; - if (!monster.hasMinions()) - { - L2NpcTemplate template = NpcData.getInstance().getTemplate(RAGNA_ORC_SEER); - - if (Rnd.get() < 50) - { - if (template.getParameters().getMinionList("Privates1") != null) - { - for (MinionHolder is : template.getParameters().getMinionList("Privates1")) - { - addMinion((L2MonsterInstance) npc, is.getId()); - } - } - } - else - { - if (template.getParameters().getMinionList("Privates2") != null) - { - for (MinionHolder is : template.getParameters().getMinionList("Privates2")) - { - addMinion((L2MonsterInstance) npc, is.getId()); - } - } - } - } + spawnMinions(npc, "Privates2"); } return super.onSpawn(npc); } + private void spawnMinions(final L2Npc npc, final String spawnName) + { + for (MinionHolder is : npc.getTemplate().getParameters().getMinionList(spawnName)) + { + addMinion((L2MonsterInstance) npc, is.getId()); + } + } + public static void main(String[] args) { new RagnaOrcSeer(); diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Venom/Venom.java b/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Venom/Venom.java index ae0af834aa..e2e116e497 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Venom/Venom.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Venom/Venom.java @@ -24,7 +24,6 @@ import java.util.List; import ai.npc.AbstractNpcAI; import com.l2jserver.gameserver.ai.CtrlIntention; -import com.l2jserver.gameserver.datatables.SpawnTable; import com.l2jserver.gameserver.instancemanager.CastleManager; import com.l2jserver.gameserver.instancemanager.GlobalVariablesManager; import com.l2jserver.gameserver.model.Location; @@ -106,7 +105,7 @@ public final class Venom extends AbstractNpcAI addStartNpc(DUNGEON_KEEPER, TELEPORT_CUBE); addFirstTalkId(DUNGEON_KEEPER, TELEPORT_CUBE); addTalkId(DUNGEON_KEEPER, TELEPORT_CUBE); - addSpawnId(VENOM); + addSpawnId(VENOM, DUNGEON_KEEPER); addSpellFinishedId(VENOM); addAttackId(VENOM); addKillId(VENOM); @@ -261,32 +260,38 @@ public final class Venom extends AbstractNpcAI @Override public final String onSpawn(L2Npc npc) { - if (!npc.isTeleporting()) + switch (npc.getId()) { - if ((_massymore == null) || (_venom == null)) + case DUNGEON_KEEPER: + { + _massymore = npc; + break; + } + case VENOM: { - _massymore = SpawnTable.getInstance().getFirstSpawn(DUNGEON_KEEPER).getLastSpawn(); - _venom = SpawnTable.getInstance().getFirstSpawn(VENOM).getLastSpawn(); + _venom = npc; _loc = _venom.getLocation(); _venom.disableSkill(VENOM_TELEPORT.getSkill(), -1); _venom.disableSkill(RANGE_TELEPORT.getSkill(), -1); _venom.doRevive(); + broadcastNpcSay(npc, Say2.NPC_SHOUT, NpcStringId.WHO_DARES_TO_COVET_THE_THRONE_OF_OUR_CASTLE_LEAVE_IMMEDIATELY_OR_YOU_WILL_PAY_THE_PRICE_OF_YOUR_AUDACITY_WITH_YOUR_VERY_OWN_BLOOD); ((L2Attackable) _venom).setCanReturnToSpawnPoint(false); if (checkStatus() == DEAD) { _venom.deleteMe(); } + break; } - if (checkStatus() == DEAD) - { - npc.deleteMe(); - } - else - { - npc.doRevive(); - broadcastNpcSay(npc, Say2.NPC_SHOUT, NpcStringId.WHO_DARES_TO_COVET_THE_THRONE_OF_OUR_CASTLE_LEAVE_IMMEDIATELY_OR_YOU_WILL_PAY_THE_PRICE_OF_YOUR_AUDACITY_WITH_YOUR_VERY_OWN_BLOOD); - } + } + if (checkStatus() == DEAD) + { + npc.deleteMe(); + } + else + { + npc.doRevive(); + } return super.onSpawn(npc); } diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/ai/npc/Minigame/Minigame.java b/L2J_DataPack_BETA/dist/game/data/scripts/ai/npc/Minigame/Minigame.java index 872b04d417..4c73ca91bb 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/ai/npc/Minigame/Minigame.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/ai/npc/Minigame/Minigame.java @@ -18,6 +18,8 @@ */ package ai.npc.Minigame; +import java.util.ArrayList; + import ai.npc.AbstractNpcAI; import com.l2jserver.gameserver.datatables.SpawnTable; @@ -56,7 +58,7 @@ public final class Minigame extends AbstractNpcAI private static final int TIMER_INTERVAL = 3; private static final int MAX_ATTEMPTS = 3; - private final MinigameRoom _rooms[] = new MinigameRoom[2]; + private final ArrayList<MinigameRoom> _rooms = new ArrayList<>(2); private Minigame() { @@ -64,13 +66,7 @@ public final class Minigame extends AbstractNpcAI addStartNpc(SUMIEL); addFirstTalkId(SUMIEL); addTalkId(SUMIEL); - addSpawnId(TREASURE_BOX); - - int i = 0; - for (L2Spawn spawn : SpawnTable.getInstance().getSpawns(SUMIEL)) - { - _rooms[i++] = initRoom(spawn.getLastSpawn()); - } + addSpawnId(SUMIEL, TREASURE_BOX); } @Override @@ -246,8 +242,20 @@ public final class Minigame extends AbstractNpcAI @Override public String onSpawn(L2Npc npc) { - npc.disableCoreAI(true); - startQuestTimer("afterthat", 180000, npc, null); + switch (npc.getId()) + { + case SUMIEL: + { + _rooms.add(initRoom(npc)); + break; + } + case TREASURE_BOX: + { + npc.disableCoreAI(true); + startQuestTimer("afterthat", 180000, npc, null); + break; + } + } return super.onSpawn(npc); } @@ -342,7 +350,14 @@ public final class Minigame extends AbstractNpcAI */ private MinigameRoom getRoomByManager(L2Npc manager) { - return (_rooms[0].getManager() == manager) ? _rooms[0] : _rooms[1]; + for (MinigameRoom room : _rooms) + { + if (room.getManager() == manager) + { + return room; + } + } + return null; } /** @@ -352,7 +367,14 @@ public final class Minigame extends AbstractNpcAI */ private MinigameRoom getRoomByParticipant(L2PcInstance participant) { - return (_rooms[0].getParticipant() == participant) ? _rooms[0] : _rooms[1]; + for (MinigameRoom room : _rooms) + { + if (room.getParticipant() == participant) + { + return room; + } + } + return null; } /** diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/ai/npc/TownPets/TownPets.java b/L2J_DataPack_BETA/dist/game/data/scripts/ai/npc/TownPets/TownPets.java index b916e88675..c4d21ec8e6 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/ai/npc/TownPets/TownPets.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/ai/npc/TownPets/TownPets.java @@ -22,8 +22,6 @@ import ai.npc.AbstractNpcAI; import com.l2jserver.Config; import com.l2jserver.gameserver.ai.CtrlIntention; -import com.l2jserver.gameserver.datatables.SpawnTable; -import com.l2jserver.gameserver.model.L2Spawn; import com.l2jserver.gameserver.model.Location; import com.l2jserver.gameserver.model.actor.L2Npc; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; @@ -54,14 +52,10 @@ public final class TownPets extends AbstractNpcAI private TownPets() { super(TownPets.class.getSimpleName(), "ai/npc"); - addSpawnId(PETS); - for (int npcId : PETS) + if (Config.ALLOW_PET_WALKERS) { - for (L2Spawn spawn : SpawnTable.getInstance().getSpawns(npcId)) - { - onSpawn(spawn.getLastSpawn()); - } + addSpawnId(PETS); } } @@ -82,10 +76,7 @@ public final class TownPets extends AbstractNpcAI @Override public String onSpawn(L2Npc npc) { - if (Config.ALLOW_PET_WALKERS) - { - startQuestTimer("move", 3000, npc, null); - } + startQuestTimer("move", 3000, npc, null); return super.onSpawn(npc); } diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/gracia/AI/NPC/GeneralDilios/GeneralDilios.java b/L2J_DataPack_BETA/dist/game/data/scripts/gracia/AI/NPC/GeneralDilios/GeneralDilios.java index e5a652ace1..b4b09bf073 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/gracia/AI/NPC/GeneralDilios/GeneralDilios.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/gracia/AI/NPC/GeneralDilios/GeneralDilios.java @@ -18,11 +18,11 @@ */ package gracia.AI.NPC.GeneralDilios; +import java.util.Collections; import java.util.Set; import ai.npc.AbstractNpcAI; -import com.l2jserver.gameserver.datatables.SpawnTable; import com.l2jserver.gameserver.model.L2Spawn; import com.l2jserver.gameserver.model.actor.L2Npc; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; @@ -39,8 +39,8 @@ public final class GeneralDilios extends AbstractNpcAI private static final int GENERAL_ID = 32549; private static final int GUARD_ID = 32619; - private L2Npc _general; - private final Set<L2Spawn> _guards; + private L2Npc _general = null; + private final Set<L2Spawn> _guards = Collections.emptySet(); private static final NpcStringId[] diliosText = { @@ -57,14 +57,6 @@ public final class GeneralDilios extends AbstractNpcAI public GeneralDilios() { super(GeneralDilios.class.getSimpleName(), "gracia/AI/NPC"); - _general = SpawnTable.getInstance().getFirstSpawn(GENERAL_ID).getLastSpawn(); - _guards = SpawnTable.getInstance().getSpawns(GUARD_ID); - if ((_general == null) || _guards.isEmpty()) - { - _log.warning(GeneralDilios.class.getSimpleName() + ": Cannot find NPCs!"); - return; - } - startQuestTimer("command_0", 60000, null, null); } @Override @@ -99,4 +91,19 @@ public final class GeneralDilios extends AbstractNpcAI } return super.onAdvEvent(event, npc, player); } + + @Override + public String onSpawn(L2Npc npc) + { + if (npc.getId() == GENERAL_ID) + { + startQuestTimer("command_0", 60000, null, null); + _general = npc; + } + else if (npc.getId() == GUARD_ID) + { + _guards.add(npc.getSpawn()); + } + return super.onSpawn(npc); + } } diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/gracia/AI/NPC/ZealotOfShilen/ZealotOfShilen.java b/L2J_DataPack_BETA/dist/game/data/scripts/gracia/AI/NPC/ZealotOfShilen/ZealotOfShilen.java index 40d08e952a..10f33da820 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/gracia/AI/NPC/ZealotOfShilen/ZealotOfShilen.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/gracia/AI/NPC/ZealotOfShilen/ZealotOfShilen.java @@ -21,8 +21,6 @@ package gracia.AI.NPC.ZealotOfShilen; import ai.npc.AbstractNpcAI; import com.l2jserver.gameserver.ai.CtrlIntention; -import com.l2jserver.gameserver.datatables.SpawnTable; -import com.l2jserver.gameserver.model.L2Spawn; import com.l2jserver.gameserver.model.actor.L2Attackable; import com.l2jserver.gameserver.model.actor.L2Character; import com.l2jserver.gameserver.model.actor.L2Npc; @@ -46,27 +44,19 @@ public final class ZealotOfShilen extends AbstractNpcAI { super(ZealotOfShilen.class.getSimpleName(), "gracia/AI/NPC"); addSpawnId(ZEALOT); + addSpawnId(GUARDS); addFirstTalkId(GUARDS); - - for (int npcId : GUARDS) - { - for (L2Spawn spawn : SpawnTable.getInstance().getSpawns(npcId)) - { - L2Npc guard = spawn.getLastSpawn(); - guard.setIsInvul(true); - ((L2Attackable) guard).setCanReturnToSpawnPoint(false); - startQuestTimer("WATCHING", 10000, guard, null, true); - } - } - for (L2Spawn spawn : SpawnTable.getInstance().getSpawns(ZEALOT)) - { - spawn.getLastSpawn().setIsNoRndWalk(true); - } } @Override public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) { + if (npc == null) + { + return null; + } + + startQuestTimer("WATCHING", 10000, npc, null, true); if (event.equalsIgnoreCase("WATCHING") && !npc.isAttackingNow()) { for (L2Character character : npc.getKnownList().getKnownCharacters()) @@ -91,7 +81,16 @@ public final class ZealotOfShilen extends AbstractNpcAI @Override public String onSpawn(L2Npc npc) { - npc.setIsNoRndWalk(true); + if (npc.getId() == ZEALOT) + { + npc.setIsNoRndWalk(true); + } + else + { + npc.setIsInvul(true); + ((L2Attackable) npc).setCanReturnToSpawnPoint(false); + startQuestTimer("WATCHING", 10000, npc, null, true); + } return super.onSpawn(npc); } } diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/gracia/AI/SeedOfAnnihilation/SeedOfAnnihilation.java b/L2J_DataPack_BETA/dist/game/data/scripts/gracia/AI/SeedOfAnnihilation/SeedOfAnnihilation.java index c8893b9a19..57bac3d947 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/gracia/AI/SeedOfAnnihilation/SeedOfAnnihilation.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/gracia/AI/SeedOfAnnihilation/SeedOfAnnihilation.java @@ -25,9 +25,7 @@ import javolution.util.FastMap; import ai.npc.AbstractNpcAI; import com.l2jserver.gameserver.datatables.SkillData; -import com.l2jserver.gameserver.datatables.SpawnTable; import com.l2jserver.gameserver.instancemanager.ZoneManager; -import com.l2jserver.gameserver.model.L2Spawn; import com.l2jserver.gameserver.model.Location; import com.l2jserver.gameserver.model.actor.L2Character; import com.l2jserver.gameserver.model.actor.L2Npc; @@ -96,7 +94,6 @@ public class SeedOfAnnihilation extends AbstractNpcAI } addStartNpc(32739); addTalkId(32739); - initialMinionsSpawn(); startEffectZonesControl(); } @@ -278,25 +275,6 @@ public class SeedOfAnnihilation extends AbstractNpcAI startQuestTimer("ChangeSeedsStatus", _seedsNextStatusChange - System.currentTimeMillis(), null, null); } - private void initialMinionsSpawn() - { - L2MonsterInstance mob; - for (SeedRegion sr : _regionsData) - { - for (int npcId : sr.elite_mob_ids) - { - for (L2Spawn spawn : SpawnTable.getInstance().getSpawns(npcId)) - { - mob = (L2MonsterInstance) spawn.getLastSpawn(); - if (mob != null) - { - spawnGroupOfMinion(mob, sr.minion_lists[getRandom(sr.minion_lists.length)]); - } - } - } - } - } - private void spawnGroupOfMinion(L2MonsterInstance npc, int[] mobIds) { for (int mobId : mobIds) diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/admincommandhandlers/AdminAdmin.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/admincommandhandlers/AdminAdmin.java index 4aac400c4a..38d4c4a341 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/admincommandhandlers/AdminAdmin.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/admincommandhandlers/AdminAdmin.java @@ -26,6 +26,7 @@ import javolution.text.TextBuilder; import com.l2jserver.Config; import com.l2jserver.gameserver.datatables.AdminTable; import com.l2jserver.gameserver.handler.IAdminCommandHandler; +import com.l2jserver.gameserver.model.actor.instance.L2MonsterInstance; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; import com.l2jserver.gameserver.model.entity.Hero; import com.l2jserver.gameserver.model.olympiad.Olympiad; @@ -70,6 +71,9 @@ public class AdminAdmin implements IAdminCommandHandler @Override public boolean useAdminCommand(String command, L2PcInstance activeChar) { + L2MonsterInstance mon = (L2MonsterInstance) activeChar.getTarget(); + + mon.teleToLocation(activeChar.getLocation()); if (command.startsWith("admin_admin")) { showMainPage(activeChar, command); diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/hellbound/AI/Amaskari.java b/L2J_DataPack_BETA/dist/game/data/scripts/hellbound/AI/Amaskari.java index fa8f199a19..d3473d109d 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/hellbound/AI/Amaskari.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/hellbound/AI/Amaskari.java @@ -175,10 +175,7 @@ public final class Amaskari extends AbstractNpcAI @Override public final String onSpawn(L2Npc npc) { - if (!npc.isTeleporting()) - { - startQuestTimer("onspawn_msg", (getRandom(3) + 1) * 30000, npc, null); - } + startQuestTimer("onspawn_msg", (getRandom(3) + 1) * 30000, npc, null); return super.onSpawn(npc); } } \ No newline at end of file diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/hellbound/AI/Chimeras.java b/L2J_DataPack_BETA/dist/game/data/scripts/hellbound/AI/Chimeras.java index e0712f2efc..87ce358302 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/hellbound/AI/Chimeras.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/hellbound/AI/Chimeras.java @@ -70,7 +70,7 @@ public final class Chimeras extends AbstractNpcAI @Override public final String onSpawn(L2Npc npc) { - if ((HellboundEngine.getInstance().getLevel() == 7) && !npc.isTeleporting()) // Have random spawn points only in 7 lvl + if (HellboundEngine.getInstance().getLevel() == 7) // Have random spawn points only in 7 lvl { final Location loc = LOCATIONS[getRandom(LOCATIONS.length)]; if (!npc.isInsideRadius(loc, 200, false, false)) diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/hellbound/AI/Keltas.java b/L2J_DataPack_BETA/dist/game/data/scripts/hellbound/AI/Keltas.java index f8d2705c1a..99775950d2 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/hellbound/AI/Keltas.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/hellbound/AI/Keltas.java @@ -179,13 +179,10 @@ public final class Keltas extends AbstractNpcAI @Override public final String onSpawn(L2Npc npc) { - if (!npc.isTeleporting()) - { - _spawnedKeltas = (L2MonsterInstance) npc; - broadcastNpcSay(_spawnedKeltas, Say2.NPC_SHOUT, NpcStringId.GUYS_SHOW_THEM_OUR_POWER); - spawnMinions(); - startQuestTimer("despawn", 1800000, null, null); - } + _spawnedKeltas = (L2MonsterInstance) npc; + broadcastNpcSay(_spawnedKeltas, Say2.NPC_SHOUT, NpcStringId.GUYS_SHOW_THEM_OUR_POWER); + spawnMinions(); + startQuestTimer("despawn", 1800000, null, null); return super.onSpawn(npc); } } \ No newline at end of file diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/hellbound/AI/NPC/Shadai/Shadai.java b/L2J_DataPack_BETA/dist/game/data/scripts/hellbound/AI/NPC/Shadai/Shadai.java index 94b8c940bc..245ed350a5 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/hellbound/AI/NPC/Shadai/Shadai.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/hellbound/AI/NPC/Shadai/Shadai.java @@ -72,10 +72,7 @@ public final class Shadai extends AbstractNpcAI @Override public final String onSpawn(L2Npc npc) { - if (!npc.isTeleporting()) - { - startQuestTimer("VALIDATE_POS", 60000, npc, null, true); - } + startQuestTimer("VALIDATE_POS", 60000, npc, null, true); return super.onSpawn(npc); } } \ No newline at end of file diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/hellbound/AI/Typhoon.java b/L2J_DataPack_BETA/dist/game/data/scripts/hellbound/AI/Typhoon.java index 0ea0afb8e5..94b6082f13 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/hellbound/AI/Typhoon.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/hellbound/AI/Typhoon.java @@ -71,10 +71,7 @@ public final class Typhoon extends AbstractNpcAI @Override public final String onSpawn(L2Npc npc) { - if (!npc.isTeleporting()) - { - startQuestTimer("CAST", 5000, npc, null); - } + startQuestTimer("CAST", 5000, npc, null); return super.onSpawn(npc); } } \ No newline at end of file diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/hellbound/AI/Zones/AnomicFoundry/AnomicFoundry.java b/L2J_DataPack_BETA/dist/game/data/scripts/hellbound/AI/Zones/AnomicFoundry/AnomicFoundry.java index 93e2be7eab..9558fc0cf7 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/hellbound/AI/Zones/AnomicFoundry/AnomicFoundry.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/hellbound/AI/Zones/AnomicFoundry/AnomicFoundry.java @@ -80,12 +80,9 @@ public final class AnomicFoundry extends AbstractNpcAI super(AnomicFoundry.class.getSimpleName(), "hellbound/AI/Zones"); addAggroRangeEnterId(LABORER); addAttackId(LABORER); - addKillId(LABORER); - addKillId(LESSER_EVIL); - addKillId(GREATER_EVIL); - addSpawnId(LABORER); - addSpawnId(LESSER_EVIL); - addSpawnId(GREATER_EVIL); + addKillId(LABORER, LESSER_EVIL, GREATER_EVIL); + addSpawnId(LABORER, LESSER_EVIL, GREATER_EVIL); + addTeleportId(LABORER, LESSER_EVIL, GREATER_EVIL); startQuestTimer("make_spawn_1", respawnTime, null, null); } @@ -205,40 +202,39 @@ public final class AnomicFoundry extends AbstractNpcAI @Override public final String onSpawn(L2Npc npc) { - if (!npc.isTeleporting()) + SpawnTable.getInstance().addNewSpawn(npc.getSpawn(), false); + if (getSpawnGroup(npc) >= 0) { - SpawnTable.getInstance().addNewSpawn(npc.getSpawn(), false); - if (getSpawnGroup(npc) >= 0) - { - _spawned[getSpawnGroup(npc)]++; - } - - if (npc.getId() == LABORER) - { - npc.setIsNoRndWalk(true); - } + _spawned[getSpawnGroup(npc)]++; } - else + + if (npc.getId() == LABORER) { - if ((getSpawnGroup(npc) >= 0) && (getSpawnGroup(npc) <= 2)) - { - _spawned[getSpawnGroup(npc)]--; - SpawnTable.getInstance().deleteSpawn(npc.getSpawn(), false); - npc.scheduleDespawn(100); - if (_spawned[3] < SPAWNS[3][5]) - { - addSpawn(SPAWNS[3][0], SPAWNS[3][1], SPAWNS[3][2], SPAWNS[3][3], SPAWNS[3][4], false, 0, false); - } - } - else if (getSpawnGroup(npc) == 3) + npc.setIsNoRndWalk(true); + } + return super.onSpawn(npc); + } + + @Override + protected void onTeleport(L2Npc npc) + { + if ((getSpawnGroup(npc) >= 0) && (getSpawnGroup(npc) <= 2)) + { + _spawned[getSpawnGroup(npc)]--; + SpawnTable.getInstance().deleteSpawn(npc.getSpawn(), false); + npc.scheduleDespawn(100); + if (_spawned[3] < SPAWNS[3][5]) { - startQuestTimer("make_spawn_2", respawnTime * 2, null, null); - _spawned[3]--; - SpawnTable.getInstance().deleteSpawn(npc.getSpawn(), false); - npc.scheduleDespawn(100); + addSpawn(SPAWNS[3][0], SPAWNS[3][1], SPAWNS[3][2], SPAWNS[3][3], SPAWNS[3][4], false, 0, false); } } - return super.onSpawn(npc); + else if (getSpawnGroup(npc) == 3) + { + startQuestTimer("make_spawn_2", respawnTime * 2, null, null); + _spawned[3]--; + SpawnTable.getInstance().deleteSpawn(npc.getSpawn(), false); + npc.scheduleDespawn(100); + } } private static int getSpawnGroup(L2Npc npc) diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/hellbound/AI/Zones/TowerOfNaia/TowerOfNaia.java b/L2J_DataPack_BETA/dist/game/data/scripts/hellbound/AI/Zones/TowerOfNaia/TowerOfNaia.java index 81e681002d..fc18b284b8 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/hellbound/AI/Zones/TowerOfNaia/TowerOfNaia.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/hellbound/AI/Zones/TowerOfNaia/TowerOfNaia.java @@ -760,7 +760,7 @@ public final class TowerOfNaia extends AbstractNpcAI { final int npcId = npc.getId(); - if ((npcId == MUTATED_ELPY) && !npc.isTeleporting()) + if (npcId == MUTATED_ELPY) { DoorTable.getInstance().getDoor(18250025).openMe(); ZoneManager.getInstance().getZoneById(200100).setEnabled(false); diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00457_LostAndFound/Q00457_LostAndFound.java b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00457_LostAndFound/Q00457_LostAndFound.java index acb467e0b2..5b7da60d0a 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00457_LostAndFound/Q00457_LostAndFound.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00457_LostAndFound/Q00457_LostAndFound.java @@ -60,11 +60,10 @@ public final class Q00457_LostAndFound extends Quest { super(457, Q00457_LostAndFound.class.getSimpleName(), "Lost and Found"); addStartNpc(GUMIEL); + addSpawnId(ESCORT_CHECKER); addFirstTalkId(GUMIEL); addTalkId(GUMIEL); addKillId(SOLINA_CLAN); - - _escortCheckers = SpawnTable.getInstance().getSpawns(ESCORT_CHECKER); } @Override @@ -238,6 +237,13 @@ public final class Q00457_LostAndFound extends Quest return htmltext; } + @Override + public String onSpawn(L2Npc npc) + { + _escortCheckers = SpawnTable.getInstance().getSpawns(ESCORT_CHECKER); + return super.onSpawn(npc); + } + public void broadcastNpcSay(L2Npc npc, L2PcInstance player, NpcStringId stringId, boolean whisper) { ((whisper) ? player : npc).sendPacket(new NpcSay(npc.getObjectId(), ((whisper) ? Say2.TELL : Say2.ALL), npc.getId(), stringId)); -- GitLab