diff --git a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/ai/others/Spawns/MonstersWithMinionSpawns.java b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/ai/others/Spawns/MonstersWithMinionSpawns.java deleted file mode 100644 index 3edd247afb..0000000000 --- a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/ai/others/Spawns/MonstersWithMinionSpawns.java +++ /dev/null @@ -1,50 +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.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_1.0_Ertheia/java/com/l2jmobius/gameserver/model/L2Spawn.java b/L2J_Mobius_1.0_Ertheia/java/com/l2jmobius/gameserver/model/L2Spawn.java index 782534dfe3..b16bbb5990 100644 --- a/L2J_Mobius_1.0_Ertheia/java/com/l2jmobius/gameserver/model/L2Spawn.java +++ b/L2J_Mobius_1.0_Ertheia/java/com/l2jmobius/gameserver/model/L2Spawn.java @@ -29,6 +29,7 @@ import com.l2jmobius.commons.util.Rnd; import com.l2jmobius.gameserver.data.xml.impl.NpcData; import com.l2jmobius.gameserver.geoengine.GeoEngine; import com.l2jmobius.gameserver.model.actor.L2Npc; +import com.l2jmobius.gameserver.model.actor.instance.L2MonsterInstance; import com.l2jmobius.gameserver.model.actor.instance.L2NpcInstance; import com.l2jmobius.gameserver.model.actor.templates.L2NpcTemplate; import com.l2jmobius.gameserver.model.interfaces.IIdentifiable; @@ -589,6 +590,13 @@ public class L2Spawn implements IPositionable, IIdentifiable, INamable _spawnedNpcs.add(npc); _currentCount++; + + // Minions + if (npc.isMonster() && NpcData.getMasterMonsterIDs().contains(npc.getId())) + { + ((L2MonsterInstance) npc).getMinionList().spawnMinions(npc.getParameters().getMinionList("Privates")); + } + return npc; } diff --git a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/ai/others/Spawns/MonstersWithMinionSpawns.java b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/ai/others/Spawns/MonstersWithMinionSpawns.java deleted file mode 100644 index 3edd247afb..0000000000 --- a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/ai/others/Spawns/MonstersWithMinionSpawns.java +++ /dev/null @@ -1,50 +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.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_2.5_Underground/java/com/l2jmobius/gameserver/model/L2Spawn.java b/L2J_Mobius_2.5_Underground/java/com/l2jmobius/gameserver/model/L2Spawn.java index 782534dfe3..b16bbb5990 100644 --- a/L2J_Mobius_2.5_Underground/java/com/l2jmobius/gameserver/model/L2Spawn.java +++ b/L2J_Mobius_2.5_Underground/java/com/l2jmobius/gameserver/model/L2Spawn.java @@ -29,6 +29,7 @@ import com.l2jmobius.commons.util.Rnd; import com.l2jmobius.gameserver.data.xml.impl.NpcData; import com.l2jmobius.gameserver.geoengine.GeoEngine; import com.l2jmobius.gameserver.model.actor.L2Npc; +import com.l2jmobius.gameserver.model.actor.instance.L2MonsterInstance; import com.l2jmobius.gameserver.model.actor.instance.L2NpcInstance; import com.l2jmobius.gameserver.model.actor.templates.L2NpcTemplate; import com.l2jmobius.gameserver.model.interfaces.IIdentifiable; @@ -589,6 +590,13 @@ public class L2Spawn implements IPositionable, IIdentifiable, INamable _spawnedNpcs.add(npc); _currentCount++; + + // Minions + if (npc.isMonster() && NpcData.getMasterMonsterIDs().contains(npc.getId())) + { + ((L2MonsterInstance) npc).getMinionList().spawnMinions(npc.getParameters().getMinionList("Privates")); + } + return npc; } diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/ai/others/Spawns/MonstersWithMinionSpawns.java b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/ai/others/Spawns/MonstersWithMinionSpawns.java deleted file mode 100644 index 3edd247afb..0000000000 --- a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/ai/others/Spawns/MonstersWithMinionSpawns.java +++ /dev/null @@ -1,50 +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.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_3.0_Helios/java/com/l2jmobius/gameserver/model/L2Spawn.java b/L2J_Mobius_3.0_Helios/java/com/l2jmobius/gameserver/model/L2Spawn.java index 782534dfe3..b16bbb5990 100644 --- a/L2J_Mobius_3.0_Helios/java/com/l2jmobius/gameserver/model/L2Spawn.java +++ b/L2J_Mobius_3.0_Helios/java/com/l2jmobius/gameserver/model/L2Spawn.java @@ -29,6 +29,7 @@ import com.l2jmobius.commons.util.Rnd; import com.l2jmobius.gameserver.data.xml.impl.NpcData; import com.l2jmobius.gameserver.geoengine.GeoEngine; import com.l2jmobius.gameserver.model.actor.L2Npc; +import com.l2jmobius.gameserver.model.actor.instance.L2MonsterInstance; import com.l2jmobius.gameserver.model.actor.instance.L2NpcInstance; import com.l2jmobius.gameserver.model.actor.templates.L2NpcTemplate; import com.l2jmobius.gameserver.model.interfaces.IIdentifiable; @@ -589,6 +590,13 @@ public class L2Spawn implements IPositionable, IIdentifiable, INamable _spawnedNpcs.add(npc); _currentCount++; + + // Minions + if (npc.isMonster() && NpcData.getMasterMonsterIDs().contains(npc.getId())) + { + ((L2MonsterInstance) npc).getMinionList().spawnMinions(npc.getParameters().getMinionList("Privates")); + } + return npc; } diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/ai/others/Spawns/MonstersWithMinionSpawns.java b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/ai/others/Spawns/MonstersWithMinionSpawns.java deleted file mode 100644 index 3edd247afb..0000000000 --- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/ai/others/Spawns/MonstersWithMinionSpawns.java +++ /dev/null @@ -1,50 +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.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_4.0_GrandCrusade/java/com/l2jmobius/gameserver/model/L2Spawn.java b/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/model/L2Spawn.java index 782534dfe3..b16bbb5990 100644 --- a/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/model/L2Spawn.java +++ b/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/model/L2Spawn.java @@ -29,6 +29,7 @@ import com.l2jmobius.commons.util.Rnd; import com.l2jmobius.gameserver.data.xml.impl.NpcData; import com.l2jmobius.gameserver.geoengine.GeoEngine; import com.l2jmobius.gameserver.model.actor.L2Npc; +import com.l2jmobius.gameserver.model.actor.instance.L2MonsterInstance; import com.l2jmobius.gameserver.model.actor.instance.L2NpcInstance; import com.l2jmobius.gameserver.model.actor.templates.L2NpcTemplate; import com.l2jmobius.gameserver.model.interfaces.IIdentifiable; @@ -589,6 +590,13 @@ public class L2Spawn implements IPositionable, IIdentifiable, INamable _spawnedNpcs.add(npc); _currentCount++; + + // Minions + if (npc.isMonster() && NpcData.getMasterMonsterIDs().contains(npc.getId())) + { + ((L2MonsterInstance) npc).getMinionList().spawnMinions(npc.getParameters().getMinionList("Privates")); + } + return npc; } diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/MinionData.xml b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/MinionData.xml deleted file mode 100644 index ac6c4401f7..0000000000 --- a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/MinionData.xml +++ /dev/null @@ -1,2629 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/ai/others/MinionSpawnManager.java b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/ai/others/MinionSpawnManager.java deleted file mode 100644 index 88a5e6f1da..0000000000 --- a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/ai/others/MinionSpawnManager.java +++ /dev/null @@ -1,452 +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<>(354); - - static - { - 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(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(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 - } - - 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.getTemplate().getParameters().getSet().get("SummonPrivateRate") == null) - { - ((L2MonsterInstance) npc).getMinionList().spawnMinions(npc.getTemplate().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.getTemplate().getParameters().getInt("SummonPrivateRate", 0)) - { - for (MinionHolder is : npc.getTemplate().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_CT_2.6_HighFive/dist/game/data/scripts/ai/others/TimakOrcTroopLeader.java b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/ai/others/TimakOrcTroopLeader.java new file mode 100644 index 0000000000..bdc3560967 --- /dev/null +++ b/L2J_Mobius_CT_2.6_HighFive/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.getTemplate().getParameters().getInt("SummonPrivateRate", 0)) + { + for (MinionHolder is : npc.getTemplate().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_CT_2.6_HighFive/dist/game/data/stats/npcs/18300-18399.xml b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/18300-18399.xml index 7f88eabdc2..930422d2ad 100644 --- a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/18300-18399.xml +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/18300-18399.xml @@ -2223,6 +2223,9 @@ + + + ETC ETC @@ -2641,6 +2644,9 @@ + + + @@ -2700,6 +2706,10 @@ + + + + @@ -2761,6 +2771,9 @@ + + + @@ -2820,6 +2833,10 @@ + + + + @@ -2882,6 +2899,10 @@ + + + + @@ -2943,6 +2964,9 @@ + + + @@ -3062,6 +3086,9 @@ + + + @@ -3121,6 +3148,10 @@ + + + + @@ -3180,6 +3211,10 @@ + + + + diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/18400-18499.xml b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/18400-18499.xml index 794ed2c8b0..95811ed83f 100644 --- a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/18400-18499.xml +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/18400-18499.xml @@ -3535,6 +3535,9 @@ + + + ETC ETC @@ -3838,6 +3841,11 @@ + + + + + CONSTRUCT MALE diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/20700-20799.xml b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/20700-20799.xml index 4d6c033a25..6a06ed88a3 100644 --- a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/20700-20799.xml +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/20700-20799.xml @@ -267,6 +267,9 @@ + + + @@ -451,6 +454,9 @@ + + + @@ -605,6 +611,9 @@ + + + @@ -1194,6 +1203,10 @@ + + + + @@ -1417,6 +1430,10 @@ + + + + UNDEAD MALE @@ -1663,6 +1680,9 @@ + + + @@ -2146,6 +2166,11 @@ + + + + + HUMANOID MALE @@ -2631,6 +2656,9 @@ + + + ANIMAL MALE diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/20900-20999.xml b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/20900-20999.xml index 7258de603c..1ecb9a1411 100644 --- a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/20900-20999.xml +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/20900-20999.xml @@ -1829,6 +1829,11 @@ + + + + + @@ -1996,6 +2001,9 @@ + + + @@ -2226,6 +2234,10 @@ + + + + @@ -3211,6 +3223,10 @@ + + + + @@ -3464,6 +3480,10 @@ + + + + @@ -3799,6 +3819,11 @@ + + + + + @@ -4754,6 +4779,10 @@ + + + + @@ -5050,6 +5079,11 @@ + + + + + @@ -5308,6 +5342,10 @@ + + + + @@ -5568,6 +5606,11 @@ + + + + + @@ -6231,6 +6274,10 @@ + + + + @@ -6538,6 +6585,9 @@ + + + diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/21000-21099.xml b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/21000-21099.xml index c6b1bdc023..2a8bb02f15 100644 --- a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/21000-21099.xml +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/21000-21099.xml @@ -4854,6 +4854,10 @@ + + + + @@ -5126,6 +5130,10 @@ + + + + DEMONIC MALE @@ -5378,6 +5386,10 @@ + + + + @@ -6154,6 +6166,10 @@ + + + + diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/21300-21399.xml b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/21300-21399.xml index f1d526a8ee..8f2c1accc6 100644 --- a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/21300-21399.xml +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/21300-21399.xml @@ -6988,6 +6988,9 @@ + + + @@ -7162,6 +7165,9 @@ + + + @@ -7329,6 +7335,10 @@ + + + + diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/21500-21599.xml b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/21500-21599.xml index 564d9018b5..0f010dd2e6 100644 --- a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/21500-21599.xml +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/21500-21599.xml @@ -1075,6 +1075,9 @@ + + + @@ -1574,6 +1577,9 @@ + + + diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/22000-22099.xml b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/22000-22099.xml index b2e4a7b4fe..77599697da 100644 --- a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/22000-22099.xml +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/22000-22099.xml @@ -2435,6 +2435,9 @@ + + + @@ -7483,6 +7486,9 @@ + + + BEAST MALE @@ -7857,6 +7863,9 @@ + + + BEAST MALE @@ -8619,6 +8628,9 @@ + + + CONSTRUCT MALE @@ -8971,6 +8983,9 @@ + + + ANIMAL MALE diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/22100-22199.xml b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/22100-22199.xml index 3cf37b8cb1..0a71f8a02e 100644 --- a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/22100-22199.xml +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/22100-22199.xml @@ -6,6 +6,9 @@ + + + @@ -177,6 +180,9 @@ + + + @@ -342,6 +348,9 @@ + + + @@ -4455,6 +4464,11 @@ + + + + + @@ -4771,6 +4785,11 @@ + + + + + @@ -5085,6 +5104,11 @@ + + + + + @@ -5406,6 +5430,11 @@ + + + + + @@ -5712,6 +5741,11 @@ + + + + + @@ -6201,6 +6235,10 @@ + + + + HUMANOID MALE @@ -6789,6 +6827,9 @@ + + + @@ -6952,6 +6993,9 @@ + + + diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/22200-22299.xml b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/22200-22299.xml index 459538ddef..74785ef952 100644 --- a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/22200-22299.xml +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/22200-22299.xml @@ -195,6 +195,9 @@ + + + @@ -475,6 +478,9 @@ + + + @@ -739,6 +745,9 @@ + + + @@ -994,6 +1003,9 @@ + + + @@ -1926,6 +1938,9 @@ + + + @@ -2010,6 +2025,9 @@ + + + @@ -2104,6 +2122,9 @@ + + + @@ -6342,6 +6363,9 @@ + + + @@ -6510,6 +6534,9 @@ + + + diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/22300-22399.xml b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/22300-22399.xml index 674e3e32a2..168de49516 100644 --- a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/22300-22399.xml +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/22300-22399.xml @@ -396,6 +396,9 @@ + + + CONSTRUCT MALE @@ -479,6 +482,10 @@ + + + + CONSTRUCT MALE @@ -559,6 +566,11 @@ + + + + + CONSTRUCT MALE @@ -1485,6 +1497,10 @@ + + + + DEMONIC MALE @@ -1583,6 +1599,10 @@ + + + + DEMONIC FEMALE @@ -3378,6 +3398,9 @@ + + + DEMONIC MALE @@ -4577,6 +4600,9 @@ + + + UNDEAD MALE @@ -5202,6 +5228,9 @@ + + + DEMONIC MALE @@ -5854,6 +5883,10 @@ + + + + DEMONIC MALE @@ -6999,6 +7032,9 @@ + + + DEMONIC MALE diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/22400-22499.xml b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/22400-22499.xml index e435e1c988..0a234f52a1 100644 --- a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/22400-22499.xml +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/22400-22499.xml @@ -1429,6 +1429,12 @@ + + + + + + diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/22600-22699.xml b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/22600-22699.xml index a283b10804..6299451872 100644 --- a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/22600-22699.xml +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/22600-22699.xml @@ -1534,6 +1534,9 @@ + + + @@ -1852,6 +1855,9 @@ + + + @@ -2255,6 +2261,9 @@ + + + @@ -5062,6 +5071,9 @@ + + + @@ -5344,6 +5356,10 @@ + + + + ANIMAL diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/22700-22799.xml b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/22700-22799.xml index 58cadd3694..48e1d2bd3b 100644 --- a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/22700-22799.xml +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/22700-22799.xml @@ -3056,6 +3056,9 @@ + + + @@ -3154,6 +3157,9 @@ + + + diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/25500-25599.xml b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/25500-25599.xml index c5e930c840..178f8201f5 100644 --- a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/25500-25599.xml +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/25500-25599.xml @@ -1619,6 +1619,10 @@ + + + + diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/27000-27099.xml b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/27000-27099.xml index 143d1a209d..7e3a423744 100644 --- a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/27000-27099.xml +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/27000-27099.xml @@ -1018,6 +1018,9 @@ + + + HUMANOID MALE @@ -1148,6 +1151,9 @@ + + + HUMANOID MALE @@ -2066,6 +2072,9 @@ + + + HUMANOID MALE @@ -2203,6 +2212,9 @@ + + + HUMANOID MALE @@ -2340,6 +2352,9 @@ + + + HUMANOID MALE @@ -3003,6 +3018,9 @@ + + + HUMANOID MALE diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/27100-27199.xml b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/27100-27199.xml index 47cf702e34..c44687bdae 100644 --- a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/27100-27199.xml +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/27100-27199.xml @@ -342,6 +342,9 @@ + + + BEAST FEMALE @@ -425,6 +428,9 @@ + + + BEAST FEMALE @@ -511,6 +517,9 @@ + + + BEAST FEMALE @@ -556,6 +565,9 @@ + + + BEAST FEMALE @@ -601,6 +613,9 @@ + + + DEMONIC FEMALE @@ -3694,6 +3709,9 @@ + + + PLANT ETC @@ -3739,6 +3757,9 @@ + + + PLANT ETC @@ -3784,6 +3805,9 @@ + + + PLANT ETC @@ -3829,6 +3853,9 @@ + + + PLANT ETC diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/29000-29099.xml b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/29000-29099.xml index 6f0cb35d85..b4654bc35e 100644 --- a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/29000-29099.xml +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/29000-29099.xml @@ -2,6 +2,12 @@ + + + + + + BUG FEMALE @@ -257,6 +263,13 @@ + + + + + + + CONSTRUCT MALE @@ -680,6 +693,9 @@ + + + FAIRY FEMALE @@ -3314,6 +3330,10 @@ + + + + diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/32100-32199.xml b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/32100-32199.xml index 23e7ae57a4..cad16b2b2c 100644 --- a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/32100-32199.xml +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/32100-32199.xml @@ -1095,6 +1095,11 @@ + + + + + HUMAN FEMALE diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/32300-32399.xml b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/32300-32399.xml index 82f9f8d85c..ec6c51e930 100644 --- a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/32300-32399.xml +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/32300-32399.xml @@ -849,6 +849,11 @@ + + + + + CONSTRUCT MALE diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/35300-35399.xml b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/35300-35399.xml index 9b67217625..93dccac2ea 100644 --- a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/35300-35399.xml +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/stats/npcs/35300-35399.xml @@ -3386,6 +3386,16 @@ + + + + + + + + + + HUMANOID MALE diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/xsd/MinionData.xsd b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/xsd/MinionData.xsd deleted file mode 100644 index 375abbd485..0000000000 --- a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/xsd/MinionData.xsd +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_CT_2.6_HighFive/java/com/l2jmobius/gameserver/data/xml/impl/NpcData.java b/L2J_Mobius_CT_2.6_HighFive/java/com/l2jmobius/gameserver/data/xml/impl/NpcData.java index f5466146be..f2ac056a7a 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/com/l2jmobius/gameserver/data/xml/impl/NpcData.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/com/l2jmobius/gameserver/data/xml/impl/NpcData.java @@ -56,7 +56,7 @@ public class NpcData implements IGameXmlReader { private final Map _npcs = new ConcurrentHashMap<>(); private final Map _clans = new ConcurrentHashMap<>(); - private MinionData _minionData; + private static final List _masterMonsterIDs = new ArrayList<>(); protected NpcData() { @@ -66,7 +66,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."); @@ -78,7 +78,6 @@ public class NpcData implements IGameXmlReader LOGGER.info(getClass().getSimpleName() + ": Loaded " + (_npcs.size() - npcCount) + " Custom NPCs."); } - _minionData = null; loadNpcsSkillLearn(); } @@ -520,15 +519,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)); - } - template.setParameters(parameters != null ? new StatsSet(Collections.unmodifiableMap(parameters)) : StatsSet.EMPTY_STATSET); if (skills != null) @@ -661,6 +651,14 @@ public class NpcData implements IGameXmlReader } } } + + if (!template.getParameters().getMinionList("Privates").isEmpty()) + { + if (template.getParameters().getSet().get("SummonPrivateRate") == null) + { + _masterMonsterIDs.add(template.getId()); + } + } } } } @@ -788,55 +786,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 final class MinionData implements IGameXmlReader + public static List getMasterMonsterIDs() { - public final Map> _tempMinions = new HashMap<>(); - - protected MinionData() - { - load(); - } - - @Override - public void load() - { - _tempMinions.clear(); - parseDatapackFile("data/MinionData.xml"); - 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 listNode = node.getFirstChild(); listNode != null; listNode = listNode.getNextSibling()) - { - if ("npc".equals(listNode.getNodeName())) - { - final List minions = new ArrayList<>(1); - NamedNodeMap attrs = listNode.getAttributes(); - final int id = parseInteger(attrs, "id"); - for (Node npcNode = listNode.getFirstChild(); npcNode != null; npcNode = npcNode.getNextSibling()) - { - if ("minion".equals(npcNode.getNodeName())) - { - attrs = npcNode.getAttributes(); - minions.add(new MinionHolder(parseInteger(attrs, "id"), parseInteger(attrs, "count"), parseInteger(attrs, "respawnTime"), 0)); - } - } - _tempMinions.put(id, minions); - } - } - } - } - } + return _masterMonsterIDs; } /** diff --git a/L2J_Mobius_CT_2.6_HighFive/java/com/l2jmobius/gameserver/model/L2Spawn.java b/L2J_Mobius_CT_2.6_HighFive/java/com/l2jmobius/gameserver/model/L2Spawn.java index ba6dd37a96..21c9c3e055 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/com/l2jmobius/gameserver/model/L2Spawn.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/com/l2jmobius/gameserver/model/L2Spawn.java @@ -35,6 +35,7 @@ import com.l2jmobius.gameserver.datatables.NpcPersonalAIData; import com.l2jmobius.gameserver.geoengine.GeoEngine; import com.l2jmobius.gameserver.model.actor.L2Attackable; import com.l2jmobius.gameserver.model.actor.L2Npc; +import com.l2jmobius.gameserver.model.actor.instance.L2MonsterInstance; import com.l2jmobius.gameserver.model.actor.templates.L2NpcTemplate; import com.l2jmobius.gameserver.model.interfaces.IIdentifiable; import com.l2jmobius.gameserver.model.interfaces.ILocational; @@ -659,6 +660,13 @@ public class L2Spawn implements IPositionable, IIdentifiable, INamable // Increase the current number of L2NpcInstance managed by this L2Spawn _currentCount++; + + // Minions + if (npc.isMonster() && NpcData.getMasterMonsterIDs().contains(npc.getId())) + { + ((L2MonsterInstance) npc).getMinionList().spawnMinions(npc.getTemplate().getParameters().getMinionList("Privates")); + } + return npc; } diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/ai/others/Spawns/MonstersWithMinionSpawns.java b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/ai/others/Spawns/MonstersWithMinionSpawns.java deleted file mode 100644 index 3edd247afb..0000000000 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/ai/others/Spawns/MonstersWithMinionSpawns.java +++ /dev/null @@ -1,50 +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.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_Classic_2.0_Saviors/java/com/l2jmobius/gameserver/model/L2Spawn.java b/L2J_Mobius_Classic_2.0_Saviors/java/com/l2jmobius/gameserver/model/L2Spawn.java index 782534dfe3..b16bbb5990 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/com/l2jmobius/gameserver/model/L2Spawn.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/com/l2jmobius/gameserver/model/L2Spawn.java @@ -29,6 +29,7 @@ import com.l2jmobius.commons.util.Rnd; import com.l2jmobius.gameserver.data.xml.impl.NpcData; import com.l2jmobius.gameserver.geoengine.GeoEngine; import com.l2jmobius.gameserver.model.actor.L2Npc; +import com.l2jmobius.gameserver.model.actor.instance.L2MonsterInstance; import com.l2jmobius.gameserver.model.actor.instance.L2NpcInstance; import com.l2jmobius.gameserver.model.actor.templates.L2NpcTemplate; import com.l2jmobius.gameserver.model.interfaces.IIdentifiable; @@ -589,6 +590,13 @@ public class L2Spawn implements IPositionable, IIdentifiable, INamable _spawnedNpcs.add(npc); _currentCount++; + + // Minions + if (npc.isMonster() && NpcData.getMasterMonsterIDs().contains(npc.getId())) + { + ((L2MonsterInstance) npc).getMinionList().spawnMinions(npc.getParameters().getMinionList("Privates")); + } + return npc; } diff --git a/L2J_Mobius_Classic_2.0_Zaken/dist/game/data/scripts/ai/others/Spawns/MonstersWithMinionSpawns.java b/L2J_Mobius_Classic_2.0_Zaken/dist/game/data/scripts/ai/others/Spawns/MonstersWithMinionSpawns.java deleted file mode 100644 index 3edd247afb..0000000000 --- a/L2J_Mobius_Classic_2.0_Zaken/dist/game/data/scripts/ai/others/Spawns/MonstersWithMinionSpawns.java +++ /dev/null @@ -1,50 +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.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_Classic_2.0_Zaken/java/com/l2jmobius/gameserver/model/L2Spawn.java b/L2J_Mobius_Classic_2.0_Zaken/java/com/l2jmobius/gameserver/model/L2Spawn.java index 782534dfe3..b16bbb5990 100644 --- a/L2J_Mobius_Classic_2.0_Zaken/java/com/l2jmobius/gameserver/model/L2Spawn.java +++ b/L2J_Mobius_Classic_2.0_Zaken/java/com/l2jmobius/gameserver/model/L2Spawn.java @@ -29,6 +29,7 @@ import com.l2jmobius.commons.util.Rnd; import com.l2jmobius.gameserver.data.xml.impl.NpcData; import com.l2jmobius.gameserver.geoengine.GeoEngine; import com.l2jmobius.gameserver.model.actor.L2Npc; +import com.l2jmobius.gameserver.model.actor.instance.L2MonsterInstance; import com.l2jmobius.gameserver.model.actor.instance.L2NpcInstance; import com.l2jmobius.gameserver.model.actor.templates.L2NpcTemplate; import com.l2jmobius.gameserver.model.interfaces.IIdentifiable; @@ -589,6 +590,13 @@ public class L2Spawn implements IPositionable, IIdentifiable, INamable _spawnedNpcs.add(npc); _currentCount++; + + // Minions + if (npc.isMonster() && NpcData.getMasterMonsterIDs().contains(npc.getId())) + { + ((L2MonsterInstance) npc).getMinionList().spawnMinions(npc.getParameters().getMinionList("Privates")); + } + return npc; }