From 8eee3bd40296d545129555d915550bfde6bdac09 Mon Sep 17 00:00:00 2001
From: MobiusDev <8391001+MobiusDevelopment@users.noreply.github.com>
Date: Fri, 19 Aug 2016 18:50:24 +0000
Subject: [PATCH] Automatic monster with minion spawn registrations.
---
.../dist/game/data/MinionData.xml | 2629 -----------------
.../scripts/ai/others/MinionSpawnManager.java | 530 ----
.../ai/others/TimakOrcTroopLeader.java | 73 +
.../ai/spawns/MonstersWithMinionSpawns.java | 50 +
.../dist/game/data/xsd/MinionData.xsd | 27 -
.../gameserver/data/xml/impl/NpcData.java | 80 +-
6 files changed, 138 insertions(+), 3251 deletions(-)
delete mode 100644 L2J_Mobius_Underground/dist/game/data/MinionData.xml
delete mode 100644 L2J_Mobius_Underground/dist/game/data/scripts/ai/others/MinionSpawnManager.java
create mode 100644 L2J_Mobius_Underground/dist/game/data/scripts/ai/others/TimakOrcTroopLeader.java
create mode 100644 L2J_Mobius_Underground/dist/game/data/scripts/ai/spawns/MonstersWithMinionSpawns.java
delete mode 100644 L2J_Mobius_Underground/dist/game/data/xsd/MinionData.xsd
diff --git a/L2J_Mobius_Underground/dist/game/data/MinionData.xml b/L2J_Mobius_Underground/dist/game/data/MinionData.xml
deleted file mode 100644
index 3624077f9f..0000000000
--- a/L2J_Mobius_Underground/dist/game/data/MinionData.xml
+++ /dev/null
@@ -1,2629 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/L2J_Mobius_Underground/dist/game/data/scripts/ai/others/MinionSpawnManager.java b/L2J_Mobius_Underground/dist/game/data/scripts/ai/others/MinionSpawnManager.java
deleted file mode 100644
index f5f4897329..0000000000
--- a/L2J_Mobius_Underground/dist/game/data/scripts/ai/others/MinionSpawnManager.java
+++ /dev/null
@@ -1,530 +0,0 @@
-/*
- * This file is part of the L2J Mobius project.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-package ai.others;
-
-import java.util.HashSet;
-import java.util.Set;
-
-import com.l2jmobius.gameserver.enums.ChatType;
-import com.l2jmobius.gameserver.model.actor.L2Npc;
-import com.l2jmobius.gameserver.model.actor.instance.L2MonsterInstance;
-import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
-import com.l2jmobius.gameserver.model.holders.MinionHolder;
-import com.l2jmobius.gameserver.network.NpcStringId;
-
-import ai.AbstractNpcAI;
-
-/**
- * Minion Spawn Manager.
- * @author Zealar
- */
-public final class MinionSpawnManager extends AbstractNpcAI
-{
- private static final Set NPC = new HashSet<>(432);
-
- static
- {
- NPC.add(3473); // Omega Golem
- NPC.add(18344); // Ancient Egg
- NPC.add(18352); // Kamael Guard
- NPC.add(18353); // Guardian of Records
- NPC.add(18354); // Guardian of Observation
- NPC.add(18355); // Spicula's Guard
- NPC.add(18356); // Harkilgamed's Gatekeeper
- NPC.add(18357); // Rodenpicula's Gatekeeper
- NPC.add(18359); // Arviterre's Guardian
- NPC.add(18360); // Katenar's Gatekeeper
- NPC.add(18361); // Guardian of Prediction
- NPC.add(18484); // Naia Failan
- NPC.add(18491); // Lock
- NPC.add(18547); // Ancient Experiment
- NPC.add(18551); // Cruma Phantom
- NPC.add(35375); // Bloody Lord Nurka
- NPC.add(20376); // Varikan Brigand Leader
- NPC.add(20398); // Vrykolakas
- NPC.add(20520); // Pirate Captain Uthanka
- NPC.add(20522); // White Fang
- NPC.add(20738); // Kobold Looter Bepook
- NPC.add(20745); // Gigantiops
- NPC.add(20747); // Roxide
- NPC.add(20749); // Death Fire
- NPC.add(20751); // Snipe
- NPC.add(20753); // Dark Lord
- NPC.add(20755); // Talakin
- NPC.add(20758); // Dragon Bearer Chief
- NPC.add(20761); // Pytan
- NPC.add(20767); // Timak Orc Troop Leader
- NPC.add(20773); // Conjurer Bat Lord
- NPC.add(20939); // Tanor Silenos Warrior
- NPC.add(20941); // Tanor Silenos Chieftain
- NPC.add(20944); // Nightmare Lord
- NPC.add(20956); // Past Knight
- NPC.add(20959); // Dark Guard
- NPC.add(20963); // Bloody Lord
- NPC.add(20974); // Spiteful Soul Leader
- NPC.add(20977); // Elmoradan's Lady
- NPC.add(20980); // Hallate's Follower Mul
- NPC.add(20983); // Binder
- NPC.add(20986); // Sairon
- NPC.add(20991); // Swamp Tribe
- NPC.add(20994); // Garden Guard Leader
- NPC.add(21075); // Slaughter Bathin
- NPC.add(21078); // Magus Valac
- NPC.add(21081); // Power Angel Amon
- NPC.add(21090); // Bloody Guardian
- NPC.add(21312); // Eye of Ruler
- NPC.add(21343); // Ketra Commander
- NPC.add(21345); // Ketra's Head Shaman
- NPC.add(21347); // Ketra Prophet
- NPC.add(21369); // Varka's Commander
- NPC.add(21371); // Varka's Head Magus
- NPC.add(21373); // Varka's Prophet
- NPC.add(21432); // Chakram Beetle
- NPC.add(21434); // Seer of Blood
- NPC.add(21512); // Splinter Stakato Drone
- NPC.add(21517); // Needle Stakato Drone
- NPC.add(21541); // Pilgrim of Splendor
- NPC.add(21544); // Judge of Splendor
- NPC.add(21596); // Requiem Lord
- NPC.add(21599); // Requiem Priest
- NPC.add(21652); // Scarlet Stakato Noble
- NPC.add(21653); // Assassin Beetle
- NPC.add(21654); // Necromancer of Destruction
- NPC.add(21655); // Arimanes of Destruction
- NPC.add(21656); // Ashuras of Destruction
- NPC.add(21657); // Magma Drake
- NPC.add(22028); // Vagabond of the Ruins
- NPC.add(22080); // Massive Lost Bandersnatch
- NPC.add(22084); // Panthera
- NPC.add(22092); // Frost Iron Golem
- NPC.add(22096); // Ursus
- NPC.add(22100); // Freya's Gardener
- NPC.add(22102); // Freya's Servant
- NPC.add(22104); // Freya's Dog
- NPC.add(22155); // Triol's High Priest
- NPC.add(22159); // Triol's High Priest
- NPC.add(22163); // Triol's High Priest
- NPC.add(22167); // Triol's High Priest
- NPC.add(22171); // Triol's High Priest
- NPC.add(22188); // Andreas' Captain of the Royal Guard
- NPC.add(22196); // Velociraptor
- NPC.add(22198); // Velociraptor
- NPC.add(22202); // Ornithomimus
- NPC.add(22205); // Deinonychus
- NPC.add(22210); // Pachycephalosaurus
- NPC.add(22213); // Wild Strider
- NPC.add(22223); // Velociraptor
- NPC.add(22224); // Ornithomimus
- NPC.add(22225); // Deinonychus
- NPC.add(22275); // Gatekeeper Lohan
- NPC.add(22277); // Gatekeeper Provo
- NPC.add(22305); // Kechi's Captain
- NPC.add(22306); // Kechi's Captain
- NPC.add(22307); // Kechi's Captain
- NPC.add(22320); // Junior Watchman
- NPC.add(22321); // Junior Summoner
- NPC.add(22346); // Quarry Foreman
- NPC.add(22363); // Body Destroyer
- NPC.add(22370); // Passageway Captain
- NPC.add(22377); // Master Zelos
- NPC.add(22390); // Foundry Foreman
- NPC.add(22416); // Kechi's Captain
- NPC.add(22423); // Original Sin Warden
- NPC.add(22431); // Original Sin Warden
- NPC.add(22448); // Leodas
- NPC.add(22449); // Amaskari
- NPC.add(22621); // Male Spiked Stakato
- NPC.add(22625); // Cannibalistic Stakato Leader
- NPC.add(22630); // Spiked Stakato Nurse
- NPC.add(22666); // Barif
- NPC.add(22670); // Cursed Lord
- NPC.add(22742); // Ornithomimus
- NPC.add(22743); // Deinonychus
- NPC.add(25001); // Greyclaw Kutus
- NPC.add(25004); // Turek Mercenary Captain
- NPC.add(25007); // Retreat Spider Cletu
- NPC.add(25010); // Furious Thieles
- NPC.add(25013); // Ghost of Peasant Leader
- NPC.add(25016); // The 3rd Underwater Guardian
- NPC.add(25020); // Breka Warlock Pastu
- NPC.add(25023); // Stakato Queen Zyrnna
- NPC.add(25026); // Ketra Commander Atis
- NPC.add(25029); // Atraiban
- NPC.add(25032); // Eva's Guardian Millenu
- NPC.add(25035); // Shilen's Messenger Cabrio
- NPC.add(25038); // Tirak
- NPC.add(25041); // Remmel
- NPC.add(25044); // Barion
- NPC.add(25047); // Karte
- NPC.add(25051); // Rahha
- NPC.add(25054); // Kernon
- NPC.add(25057); // Beacon of Blue Sky
- NPC.add(25060); // Unrequited Kael
- NPC.add(25064); // Wizard of Storm Teruk
- NPC.add(25067); // Captain of Red Flag Shaka
- NPC.add(25070); // Enchanted Forest Watcher Ruell
- NPC.add(25073); // Bloody Priest Rudelto
- NPC.add(25076); // Princess Molrang
- NPC.add(25079); // Cat's Eye Bandit
- NPC.add(25082); // Leader of Cat Gang
- NPC.add(25085); // Timak Orc Chief Ranger
- NPC.add(25089); // Soulless Wild Boar
- NPC.add(25092); // Korim
- NPC.add(25095); // Elf Renoa
- NPC.add(25099); // Rotting Tree Repiro
- NPC.add(25103); // Sorcerer Isirr
- NPC.add(25106); // Ghost of the Well Lidia
- NPC.add(25109); // Antharas Priest Cloe
- NPC.add(25112); // Beleth's Agent, Meana
- NPC.add(25115); // Icarus Sample 1
- NPC.add(25119); // Messenger of Fairy Queen Berun
- NPC.add(25122); // Refugee Applicant Leo
- NPC.add(25128); // Vuku Grand Seer Gharmash
- NPC.add(25131); // Carnage Lord Gato
- NPC.add(25134); // Leto Chief Talkin
- NPC.add(25137); // Beleth's Seer, Sephia
- NPC.add(25140); // Hekaton Prime
- NPC.add(25143); // Fire of Wrath Shuriel
- NPC.add(25146); // Serpent Demon Bifrons
- NPC.add(25149); // Zombie Lord Crowl
- NPC.add(25152); // Flame Lord Shadar
- NPC.add(25155); // Shaman King Selu
- NPC.add(25159); // Paniel the Unicorn
- NPC.add(25166); // Ikuntai
- NPC.add(25170); // Lizardmen Leader Hellion
- NPC.add(25173); // Tiger King Karuta
- NPC.add(25176); // Black Lily
- NPC.add(25179); // Guardian of the Statue of Giant Karum
- NPC.add(25182); // Demon Kuri
- NPC.add(25185); // Tasaba Patriarch Hellena
- NPC.add(25189); // Cronos's Servitor Mumu
- NPC.add(25192); // Earth Protector Panathen
- NPC.add(25199); // Water Dragon Seer Sheshark
- NPC.add(25202); // Krokian Padisha Sobekk
- NPC.add(25205); // Ocean Flame Ashakiel
- NPC.add(25208); // Water Couatle Ateka
- NPC.add(25211); // Sebek
- NPC.add(25214); // Fafurion's Page Sika
- NPC.add(25217); // Cursed Clara
- NPC.add(25220); // Death Lord Hallate
- NPC.add(25223); // Soul Collector Acheron
- NPC.add(25226); // Roaring Lord Kastor
- NPC.add(25230); // Timak Seer Ragoth
- NPC.add(25235); // Vanor Chief Kandra
- NPC.add(25238); // Abyss Brukunt
- NPC.add(25241); // Harit Hero Tamash
- NPC.add(25245); // Last Lesser Giant Glaki
- NPC.add(25249); // Menacing Palatanos
- NPC.add(25252); // Palibati Queen Themis
- NPC.add(25256); // Taik High Prefect Arak
- NPC.add(25260); // Iron Giant Totem
- NPC.add(25263); // Kernon's Faithful Servant Kelone
- NPC.add(25266); // Bloody Empress Decarbia
- NPC.add(25269); // Beast Lord Behemoth
- NPC.add(25273); // Carnamakos
- NPC.add(25277); // Lilith's Witch Marilion
- NPC.add(25283); // Lilith
- NPC.add(25286); // Anakim
- NPC.add(25290); // Daimon the White-Eyed
- NPC.add(25293); // Hesti Guardian Deity of the Hot Springs
- NPC.add(25296); // Icicle Emperor Bumbalump
- NPC.add(25299); // Ketra's Hero Hekaton
- NPC.add(25302); // Ketra's Commander Tayr
- NPC.add(25306); // Soul of Fire Nastron
- NPC.add(25309); // Varka's Hero Shadith
- NPC.add(25312); // Varka's Commander Mos
- NPC.add(25316); // Soul of Water Ashutar
- NPC.add(25319); // Ember
- NPC.add(25322); // Demon's Agent Falston
- NPC.add(25325); // Flame of Splendor Barakiel
- NPC.add(25328); // Eilhalder von Hellmann
- NPC.add(25339); // Halisha's Shadow
- NPC.add(25342); // Halisha's Shadow
- NPC.add(25346); // Halisha's Shadow
- NPC.add(25349); // Halisha's Shadow
- NPC.add(25352); // Giant Wasteland Basilisk
- NPC.add(25354); // Gargoyle Lord Sirocco
- NPC.add(25357); // Sukar Wererat Chief
- NPC.add(25360); // Tiger Hornet
- NPC.add(25362); // Tracker Leader Sharuk
- NPC.add(25366); // Kuroboros' Priest
- NPC.add(25369); // Soul Scavenger
- NPC.add(25373); // Malex Herald of Dagoniel
- NPC.add(25375); // Zombie Lord Ferkel
- NPC.add(25378); // Madness Beast
- NPC.add(25380); // Kaysha Herald of Icarus
- NPC.add(25383); // Revenant of Sir Calibus
- NPC.add(25385); // Evil Spirit Tempest
- NPC.add(25388); // Red Eye Captain Trakia
- NPC.add(25392); // Captain of Queen's Royal Guards
- NPC.add(25395); // Archon Suscepter
- NPC.add(25398); // Beleth's Eye
- NPC.add(25401); // Skyla
- NPC.add(25404); // Corsair Captain Kylon
- NPC.add(25407); // Lord Ishka
- NPC.add(25410); // Road Scavenger Leader
- NPC.add(25412); // Necrosentinel Royal Guard
- NPC.add(25415); // Nakondas
- NPC.add(25418); // Dread Avenger Kraven
- NPC.add(25420); // Orfen's Handmaiden
- NPC.add(25423); // Fairy Queen Timiniel
- NPC.add(25426); // Betrayer of Urutu Freki
- NPC.add(25429); // Mammon Collector Talos
- NPC.add(25431); // Flamestone Golem
- NPC.add(25434); // Bandit Leader Barda
- NPC.add(25438); // Thief Kelbar
- NPC.add(25441); // Evil Spirit Cyrion
- NPC.add(25444); // Enmity Ghost Ramdal
- NPC.add(25447); // Immortal Savior Mardil
- NPC.add(25450); // Cherub Galaxia
- NPC.add(25453); // Meanas Anor
- NPC.add(25456); // Mirror of Oblivion
- NPC.add(25460); // Deadman Ereve
- NPC.add(25463); // Harit Guardian Garangky
- NPC.add(25467); // Gorgolos
- NPC.add(25470); // Last Titan Utenus
- NPC.add(25473); // Grave Robber Kim
- NPC.add(25475); // Ghost Knight Kabed
- NPC.add(25478); // Shilen's Priest Hisilrome
- NPC.add(25481); // Magus Kenishee
- NPC.add(25484); // Zaken's Chief Mate Tillion
- NPC.add(25487); // Water Spirit Lian
- NPC.add(25490); // Gwindorr
- NPC.add(25493); // Eva's Spirit Niniel
- NPC.add(25496); // Fafurion's Envoy Pingolpin
- NPC.add(25498); // Fafurion's Henchman Istary
- NPC.add(25501); // Boss Akata
- NPC.add(25504); // Nellis' Vengeful Spirit
- NPC.add(25506); // Rayito the Looter
- NPC.add(25509); // Dark Shaman Varangka
- NPC.add(25514); // Queen Shyeed
- NPC.add(25524); // Flamestone Giant
- NPC.add(25528); // Tiberias
- NPC.add(25536); // Hannibal
- NPC.add(25546); // Rhianna the Traitor
- NPC.add(25549); // Tesla the Deceiver
- NPC.add(25554); // Brutus the Obstinate
- NPC.add(25557); // Ranger Karankawa
- NPC.add(25560); // Sargon the Mad
- NPC.add(25563); // Beautiful Atrielle
- NPC.add(25566); // Nagen the Tomboy
- NPC.add(25569); // Jax the Destroyer
- NPC.add(25572); // Hager the Outlaw
- NPC.add(25575); // All-Seeing Rango
- NPC.add(25579); // Helsing
- NPC.add(25582); // Gillien
- NPC.add(25585); // Medici
- NPC.add(25589); // Brand the Exile
- NPC.add(25593); // Gerg the Hunter
- NPC.add(25600); // Temenir
- NPC.add(25601); // Draksius
- NPC.add(25602); // Kiretcenah
- NPC.add(25671); // Queen Shyeed
- NPC.add(25674); // Gwindorr
- NPC.add(25677); // Water Spirit Lian
- NPC.add(25681); // Gorgolos
- NPC.add(25684); // Last Titan Utenus
- NPC.add(25687); // Hekaton Prime
- NPC.add(25703); // Gigantic Golem
- NPC.add(25710); // Lost Captain
- NPC.add(25735); // Greyclaw Kutus
- NPC.add(25738); // Lead Tracker Sharuk
- NPC.add(25741); // Sukar Wererat Chief
- NPC.add(25744); // Ikuntai
- NPC.add(25747); // Zombie Lord Crowl
- NPC.add(25750); // Zombie Lord Ferkel
- NPC.add(25754); // Fire Lord Shadar
- NPC.add(25757); // Soul Collector Acheron
- NPC.add(25760); // Lord Ishka
- NPC.add(25763); // Demon Kuri
- NPC.add(25767); // Carnage Lord Gato
- NPC.add(25770); // Ketra Commander Atis
- NPC.add(25773); // Beacon of Blue Sky
- NPC.add(25776); // Earth Protector Panathen
- NPC.add(25779); // Betrayer of Urutu Freki
- NPC.add(25782); // Nellis' Vengeful Spirit
- NPC.add(25784); // Rayito the Looter
- NPC.add(25787); // Ketra's Hero Hekaton
- NPC.add(25790); // Varka's Hero Shadith
- NPC.add(25794); // Kernon
- NPC.add(25797); // Meanas Anor
- NPC.add(25800); // Mammon Collector Talos
- NPC.add(25922); // Nerva Chief Turakan
- NPC.add(25927); // Krogel
- NPC.add(25945); // Megaloprepis
- NPC.add(25946); // Antharas' Herald Komabor
- NPC.add(25947); // Skellrus' Herald Iskios
- NPC.add(25948); // Valakas' Herald Potigia
- NPC.add(25949); // Lindvior's Herald Numa
- NPC.add(25950); // Fafurion's Herald Aquarion
- NPC.add(25956); // Vengeful Eligos
- NPC.add(25957); // Vengeful Agarez
- NPC.add(25958); // Vengeful Lerazia
- NPC.add(25959); // Vengeful Oretross
- NPC.add(25960); // Vengeful Edaire
- NPC.add(25961); // Vengeful Agonia
- NPC.add(25967); // Zetahl
- NPC.add(25968); // Tabris
- NPC.add(25969); // Stelos
- NPC.add(25970); // Ravolas
- NPC.add(25971); // Stelo Soma
- NPC.add(25972); // Dephracor
- NPC.add(25978); // Garamor's Herald Gariott
- NPC.add(25979); // Varvacion
- NPC.add(25980); // Varmoni
- NPC.add(25981); // Varvinos
- NPC.add(25982); // Varmonia
- NPC.add(25983); // Varkaron
- NPC.add(25989); // Harp's Clone
- NPC.add(25990); // Isadora's Avatar
- NPC.add(25991); // Maliss' Avatar
- NPC.add(25992); // Embryo Garron
- NPC.add(25993); // Embryo Nigel
- NPC.add(25994); // Embryo Dabos
- NPC.add(26000); // Amden Orc Turahot
- NPC.add(26001); // Amden Orc Turation
- NPC.add(26002); // Amden Orc Turamathia
- NPC.add(26003); // Amden Orc Turabait
- NPC.add(26004); // Nerva Orc Nermion
- NPC.add(26005); // Nerva Orc Nergatt
- NPC.add(26011); // Bloody Earth Dragon Gagia
- NPC.add(26012); // Demon Fardune
- NPC.add(26013); // Demon Harsia
- NPC.add(26014); // Demon Bedukel
- NPC.add(26015); // Bloody Witch Rumilla
- NPC.add(26016); // Shilen's Priest Sasia
- NPC.add(26022); // Dark Messenger Afjak
- NPC.add(26023); // Dusk Knight Feilnor
- NPC.add(26024); // Chaos Wizard Amormio
- NPC.add(26025); // Insolence Knight Lahav
- NPC.add(26026); // Death Priest Borhunt
- NPC.add(26027); // Destruction Knight Zeruel
- NPC.add(26044); // Evil Magikus
- NPC.add(26045); // Kerfaus
- NPC.add(26046); // Milinaus
- NPC.add(26047); // Sarkaus
- NPC.add(26048); // Shimeus
- NPC.add(26049); // Evil Kinigos
- NPC.add(26066); // Enhanced Mahum Radium
- NPC.add(26067); // Typheron
- NPC.add(26068); // Timarga
- NPC.add(26069); // Tycepton
- NPC.add(26070); // Tiverga
- NPC.add(26071); // Enhanced Mahum Supercium
- NPC.add(26077); // Monster Laum
- NPC.add(26078); // Monster Minotaur
- NPC.add(26079); // Monster Sarga
- NPC.add(26080); // Monster Hogliff
- NPC.add(26081); // Monster Artarot
- NPC.add(26082); // Monster Centaur
- NPC.add(27036); // Calpico
- NPC.add(27041); // Varangka's Messenger
- NPC.add(27062); // Tanukia
- NPC.add(27065); // Roko
- NPC.add(27068); // Murtika
- NPC.add(27093); // Delu Chief Kalkis
- NPC.add(27108); // Stenoa Gorgon Queen
- NPC.add(27110); // Shyslassys
- NPC.add(27112); // Gorr
- NPC.add(27113); // Baraham
- NPC.add(27114); // Succubus Queen
- NPC.add(27185); // Fairy Tree of Wind
- NPC.add(27186); // Fairy Tree of Star
- NPC.add(27187); // Fairy Tree of Twilight
- NPC.add(27188); // Fairy Tree of Abyss
- NPC.add(27259); // Archangel Iconoclasis
- NPC.add(27260); // Archangel Iconoclasis
- NPC.add(27266); // Fallen Angel Haures
- NPC.add(27267); // Fallen Angel Haures
- NPC.add(27290); // White Wing Commander
- NPC.add(29001); // Queen Ant
- NPC.add(29030); // Fenril Hound Kerinne
- NPC.add(29033); // Fenril Hound Freki
- NPC.add(29037); // Fenril Hound Kinaz
- NPC.add(29040); // Wings of Flame, Ixion
- NPC.add(29056); // Ice Fairy Sirra
- NPC.add(29062); // Andreas Van Halter
- NPC.add(29096); // Anais
- NPC.add(29129); // Lost Captain
- NPC.add(29132); // Lost Captain
- NPC.add(29135); // Lost Captain
- NPC.add(29138); // Lost Captain
- NPC.add(29141); // Lost Captain
- NPC.add(29144); // Lost Captain
- NPC.add(29147); // Lost Captain
- NPC.add(22958); // Moon Garden Manager
- NPC.add(23160); // Garden Chief Priest
- NPC.add(27470); // Shilen|s Messanger Cabrio
- NPC.add(23349); // Nocturn
- }
-
- private static final NpcStringId[] ON_ATTACK_MSG =
- {
- NpcStringId.COME_OUT_YOU_CHILDREN_OF_DARKNESS,
- NpcStringId.SHOW_YOURSELVES,
- NpcStringId.DESTROY_THE_ENEMY_MY_BROTHERS,
- NpcStringId.FORCES_OF_DARKNESS_FOLLOW_ME
- };
-
- private static final int[] ON_ATTACK_NPC =
- {
- 20767, // Timak Orc Troop Leader
- };
-
- private MinionSpawnManager()
- {
-
- addSpawnId(NPC);
- addAttackId(ON_ATTACK_NPC);
- }
-
- @Override
- public String onSpawn(L2Npc npc)
- {
- if (npc.getParameters().getSet().get("SummonPrivateRate") == null)
- {
- ((L2MonsterInstance) npc).getMinionList().spawnMinions(npc.getParameters().getMinionList("Privates"));
- }
- return super.onSpawn(npc);
- }
-
- @Override
- public String onAttack(L2Npc npc, L2PcInstance attacker, int damage, boolean isSummon)
- {
- if (npc.isMonster())
- {
- final L2MonsterInstance monster = (L2MonsterInstance) npc;
- if (!monster.isTeleporting())
- {
- if (getRandom(1, 100) <= npc.getParameters().getInt("SummonPrivateRate", 0))
- {
- for (MinionHolder is : npc.getParameters().getMinionList("Privates"))
- {
- addMinion((L2MonsterInstance) npc, is.getId());
- }
- npc.broadcastSay(ChatType.NPC_GENERAL, ON_ATTACK_MSG[getRandom(ON_ATTACK_MSG.length)]);
- }
- }
- }
- return super.onAttack(npc, attacker, damage, isSummon);
- }
-
- public static void main(String[] args)
- {
- new MinionSpawnManager();
- }
-}
\ No newline at end of file
diff --git a/L2J_Mobius_Underground/dist/game/data/scripts/ai/others/TimakOrcTroopLeader.java b/L2J_Mobius_Underground/dist/game/data/scripts/ai/others/TimakOrcTroopLeader.java
new file mode 100644
index 0000000000..5f449a827a
--- /dev/null
+++ b/L2J_Mobius_Underground/dist/game/data/scripts/ai/others/TimakOrcTroopLeader.java
@@ -0,0 +1,73 @@
+/*
+ * This file is part of the L2J Mobius project.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+package ai.others;
+
+import com.l2jmobius.gameserver.enums.ChatType;
+import com.l2jmobius.gameserver.model.actor.L2Npc;
+import com.l2jmobius.gameserver.model.actor.instance.L2MonsterInstance;
+import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jmobius.gameserver.model.holders.MinionHolder;
+import com.l2jmobius.gameserver.network.NpcStringId;
+
+import ai.AbstractNpcAI;
+
+/**
+ * Timak Orc Troop Leader AI.
+ * @author Mobius
+ */
+public final class TimakOrcTroopLeader extends AbstractNpcAI
+{
+ private static final int TIMAK_ORC_TROOP_LEADER = 20767;
+ private static final NpcStringId[] ON_ATTACK_MSG =
+ {
+ NpcStringId.COME_OUT_YOU_CHILDREN_OF_DARKNESS,
+ NpcStringId.SHOW_YOURSELVES,
+ NpcStringId.DESTROY_THE_ENEMY_MY_BROTHERS,
+ NpcStringId.FORCES_OF_DARKNESS_FOLLOW_ME
+ };
+
+ private TimakOrcTroopLeader()
+ {
+ addAttackId(TIMAK_ORC_TROOP_LEADER);
+ }
+
+ @Override
+ public String onAttack(L2Npc npc, L2PcInstance attacker, int damage, boolean isSummon)
+ {
+ if (npc.isMonster())
+ {
+ final L2MonsterInstance monster = (L2MonsterInstance) npc;
+ if (!monster.isTeleporting())
+ {
+ if (getRandom(1, 100) <= npc.getParameters().getInt("SummonPrivateRate", 0))
+ {
+ for (MinionHolder is : npc.getParameters().getMinionList("Privates"))
+ {
+ addMinion((L2MonsterInstance) npc, is.getId());
+ }
+ npc.broadcastSay(ChatType.NPC_GENERAL, ON_ATTACK_MSG[getRandom(ON_ATTACK_MSG.length)]);
+ }
+ }
+ }
+ return super.onAttack(npc, attacker, damage, isSummon);
+ }
+
+ public static void main(String[] args)
+ {
+ new TimakOrcTroopLeader();
+ }
+}
\ No newline at end of file
diff --git a/L2J_Mobius_Underground/dist/game/data/scripts/ai/spawns/MonstersWithMinionSpawns.java b/L2J_Mobius_Underground/dist/game/data/scripts/ai/spawns/MonstersWithMinionSpawns.java
new file mode 100644
index 0000000000..8432ee7c4b
--- /dev/null
+++ b/L2J_Mobius_Underground/dist/game/data/scripts/ai/spawns/MonstersWithMinionSpawns.java
@@ -0,0 +1,50 @@
+/*
+ * This file is part of the L2J Mobius project.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+package ai.spawns;
+
+import com.l2jmobius.gameserver.data.xml.impl.NpcData;
+import com.l2jmobius.gameserver.model.actor.L2Npc;
+import com.l2jmobius.gameserver.model.actor.instance.L2MonsterInstance;
+
+import ai.AbstractNpcAI;
+
+/**
+ * Spawn AI for monsters that spawn minions.
+ * @author Mobius
+ */
+public final class MonstersWithMinionSpawns extends AbstractNpcAI
+{
+ private MonstersWithMinionSpawns()
+ {
+ addSpawnId(NpcData.getMasterMonsterIDs());
+ }
+
+ @Override
+ public String onSpawn(L2Npc npc)
+ {
+ if (npc.isMonster())
+ {
+ ((L2MonsterInstance) npc).getMinionList().spawnMinions(npc.getParameters().getMinionList("Privates"));
+ }
+ return super.onSpawn(npc);
+ }
+
+ public static void main(String[] args)
+ {
+ new MonstersWithMinionSpawns();
+ }
+}
\ No newline at end of file
diff --git a/L2J_Mobius_Underground/dist/game/data/xsd/MinionData.xsd b/L2J_Mobius_Underground/dist/game/data/xsd/MinionData.xsd
deleted file mode 100644
index e58dcc1494..0000000000
--- a/L2J_Mobius_Underground/dist/game/data/xsd/MinionData.xsd
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/data/xml/impl/NpcData.java b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/data/xml/impl/NpcData.java
index ae0518e04a..b140244ddb 100644
--- a/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/data/xml/impl/NpcData.java
+++ b/L2J_Mobius_Underground/java/com/l2jmobius/gameserver/data/xml/impl/NpcData.java
@@ -26,7 +26,6 @@ import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Predicate;
import java.util.logging.Logger;
import java.util.stream.Collectors;
@@ -49,7 +48,6 @@ import com.l2jmobius.gameserver.model.drops.GeneralDropItem;
import com.l2jmobius.gameserver.model.drops.GroupedGeneralDropItem;
import com.l2jmobius.gameserver.model.drops.IDropItem;
import com.l2jmobius.gameserver.model.effects.L2EffectType;
-import com.l2jmobius.gameserver.model.holders.MinionHolder;
import com.l2jmobius.gameserver.model.skills.Skill;
/**
@@ -60,9 +58,9 @@ public class NpcData implements IGameXmlReader
{
protected static final Logger LOGGER = Logger.getLogger(NpcData.class.getName());
- private final Map _npcs = new ConcurrentHashMap<>();
- private final Map _clans = new ConcurrentHashMap<>();
- private MinionData _minionData;
+ private final Map _npcs = new HashMap<>();
+ private final Map _clans = new HashMap<>();
+ private final static List _masterMonsterIDs = new ArrayList<>();
protected NpcData()
{
@@ -72,7 +70,7 @@ public class NpcData implements IGameXmlReader
@Override
public synchronized void load()
{
- _minionData = new MinionData();
+ _masterMonsterIDs.clear();
parseDatapackDirectory("data/stats/npcs", false);
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _npcs.size() + " NPCs.");
@@ -84,7 +82,6 @@ public class NpcData implements IGameXmlReader
LOGGER.info(getClass().getSimpleName() + ": Loaded " + (_npcs.size() - npcCount) + " Custom NPCs.");
}
- _minionData = null;
loadNpcsSkillLearn();
}
@@ -483,15 +480,6 @@ public class NpcData implements IGameXmlReader
template.set(set);
}
- if (_minionData._tempMinions.containsKey(npcId))
- {
- if (parameters == null)
- {
- parameters = new HashMap<>();
- }
- parameters.putIfAbsent("Privates", _minionData._tempMinions.get(npcId));
- }
-
if (parameters != null)
{
// Using unmodifiable map parameters of template are not meant to be changed at runtime.
@@ -610,6 +598,14 @@ public class NpcData implements IGameXmlReader
template.setIgnoreClanNpcIds(ignoreClanNpcIds);
template.setDropLists(dropLists);
+
+ if (!template.getParameters().getMinionList("Privates").isEmpty())
+ {
+ if (template.getParameters().getSet().get("SummonPrivateRate") == null)
+ {
+ _masterMonsterIDs.add(template.getId());
+ }
+ }
}
}
}
@@ -816,57 +812,11 @@ public class NpcData implements IGameXmlReader
}
/**
- * This class handles minions from Spawn System
- * Once Spawn System gets reworked delete this class
- * @author Zealar
+ * @return the IDs of monsters that have minions.
*/
- private static final class MinionData implements IGameXmlReader
+ public static List getMasterMonsterIDs()
{
- private static final Logger MINION_LOGGER = Logger.getLogger(MinionData.class.getName());
-
- public final Map> _tempMinions = new HashMap<>();
-
- protected MinionData()
- {
- load();
- }
-
- @Override
- public void load()
- {
- _tempMinions.clear();
- parseDatapackFile("data/MinionData.xml");
- MINION_LOGGER.info(getClass().getSimpleName() + ": Loaded " + _tempMinions.size() + " minions data.");
- }
-
- @Override
- public void parseDocument(Document doc, File f)
- {
- for (Node node = doc.getFirstChild(); node != null; node = node.getNextSibling())
- {
- if ("list".equals(node.getNodeName()))
- {
- for (Node list_node = node.getFirstChild(); list_node != null; list_node = list_node.getNextSibling())
- {
- if ("npc".equals(list_node.getNodeName()))
- {
- final List minions = new ArrayList<>(1);
- NamedNodeMap attrs = list_node.getAttributes();
- final int id = parseInteger(attrs, "id");
- for (Node npc_node = list_node.getFirstChild(); npc_node != null; npc_node = npc_node.getNextSibling())
- {
- if ("minion".equals(npc_node.getNodeName()))
- {
- attrs = npc_node.getAttributes();
- minions.add(new MinionHolder(parseInteger(attrs, "id"), parseInteger(attrs, "count"), parseInteger(attrs, "respawnTime"), 0));
- }
- }
- _tempMinions.put(id, minions);
- }
- }
- }
- }
- }
+ return _masterMonsterIDs;
}
/**