-
\ No newline at end of file
diff --git a/trunk/dist/game/data/html/default/31590-1.htm b/trunk/dist/game/data/html/default/31590-1.htm
new file mode 100644
index 0000000000..a57219b5e6
--- /dev/null
+++ b/trunk/dist/game/data/html/default/31590-1.htm
@@ -0,0 +1,4 @@
+Truth Scholar Devianne:
+The natives to this area, you mean? They're not doing well. Some did flee to the continent or the Refugee Camp, but most of them have been enslaved by Beleth. Terrible.
+
+
\ No newline at end of file
diff --git a/trunk/dist/game/data/html/default/31590-2.htm b/trunk/dist/game/data/html/default/31590-2.htm
new file mode 100644
index 0000000000..e541df8965
--- /dev/null
+++ b/trunk/dist/game/data/html/default/31590-2.htm
@@ -0,0 +1,4 @@
+Truth Scholar Devianne:
+You don't know Leona Blackbird? Are your serious? She was the Lord of Oren! Well, Sieghardt rules it now, but she was also the continent's very Dreadnought. You really are clueless!
+
+
\ No newline at end of file
diff --git a/trunk/dist/game/data/html/default/31590-3.htm b/trunk/dist/game/data/html/default/31590-3.htm
new file mode 100644
index 0000000000..be1901076c
--- /dev/null
+++ b/trunk/dist/game/data/html/default/31590-3.htm
@@ -0,0 +1,4 @@
+Truth Scholar Devianne:
+Beleth is insane! The greatest wizard on the continent? Ha! He puts my Ivory Tower to shame. Curiosity is great, sure, but experimenting on humans? Toying with lives? Unforgivable!
+
+
\ No newline at end of file
diff --git a/trunk/dist/game/data/html/default/31590.htm b/trunk/dist/game/data/html/default/31590.htm
new file mode 100644
index 0000000000..0fce71e18b
--- /dev/null
+++ b/trunk/dist/game/data/html/default/31590.htm
@@ -0,0 +1,7 @@
+Truth Scholar Devianne:
+Did you hear what's been going on in Hellbound? I was officially trained to be a top-class sorcerer in the Ivory Tower, but seems there are so many things in the world that can't be learned through books!
+
+
+
+
+
\ No newline at end of file
diff --git a/trunk/dist/game/data/html/default/31595-1.htm b/trunk/dist/game/data/html/default/31595-1.htm
new file mode 100644
index 0000000000..bc81c0b5d3
--- /dev/null
+++ b/trunk/dist/game/data/html/default/31595-1.htm
@@ -0,0 +1,4 @@
+Fire Dragon Bride Leona Blackbird:
+Iason Heine is a friend. He has purchased people whose poverty drove them to slavery, and sold them to Beleth in Hellbound. People selling people, and experimenting on them! Unspeakable.
+
+
\ No newline at end of file
diff --git a/trunk/dist/game/data/html/default/31595-2.htm b/trunk/dist/game/data/html/default/31595-2.htm
new file mode 100644
index 0000000000..e29d076dde
--- /dev/null
+++ b/trunk/dist/game/data/html/default/31595-2.htm
@@ -0,0 +1,4 @@
+Fire Dragon Bride Leona Blackbird:
+Everything has its origin. Pa'agrio breathed the soul of fire into Orcs, while Maphr created Dwarvens with the spirit of the earth. Humans were made by Gran Kain, and a part of our souls still contains the chaos we were built with. Beleth seeks to extract this chaos from human souls and use it to create Core Naia.
+
+
\ No newline at end of file
diff --git a/trunk/dist/game/data/html/default/31595-3.htm b/trunk/dist/game/data/html/default/31595-3.htm
new file mode 100644
index 0000000000..90c30a2e6a
--- /dev/null
+++ b/trunk/dist/game/data/html/default/31595-3.htm
@@ -0,0 +1,4 @@
+Fire Dragon Bride Leona Blackbird:
+We've discovered the Giant's Grinder, which can destroy the Fragments of Chaos. Beleth noticed us running it the other day and came out of his Steel Citadel to see what was going on -- so we are planning on luring him out with more Fragments of Chaos and destroy him once and for all.
+
+
\ No newline at end of file
diff --git a/trunk/dist/game/data/html/default/31595.htm b/trunk/dist/game/data/html/default/31595.htm
new file mode 100644
index 0000000000..59a572f28b
--- /dev/null
+++ b/trunk/dist/game/data/html/default/31595.htm
@@ -0,0 +1,8 @@
+Fire Dragon Bride Leona Blackbird:
+Did you hear what's been going on in Hellbound? I was officially trained to be a top-class sorcerer in the Ivory Tower, but seems there are so many things in the world that can;t be learned through books!
+
+
+
+
+
+
\ No newline at end of file
diff --git a/trunk/dist/game/data/html/default/31619-1.htm b/trunk/dist/game/data/html/default/31619-1.htm
new file mode 100644
index 0000000000..08580a62a5
--- /dev/null
+++ b/trunk/dist/game/data/html/default/31619-1.htm
@@ -0,0 +1,5 @@
+Wind Shadow Erica Ken Weber:
+Curious about me, huh? I am Erica Ken Weber, occupied with cleaning up after Sieghardt's mess. But as you can see, the Black Bird has me tied down here.
+Not that I couldn't run away if I tried -- I'm only here because of Leona Blackbird. Interesting one, that woman.
+
+
\ No newline at end of file
diff --git a/trunk/dist/game/data/html/default/31619-2.htm b/trunk/dist/game/data/html/default/31619-2.htm
new file mode 100644
index 0000000000..d93611ba3b
--- /dev/null
+++ b/trunk/dist/game/data/html/default/31619-2.htm
@@ -0,0 +1,6 @@
+Wind Shadow Erica Ken Weber:
+Leona and Sieghardt had a showdown in Goddard.
+It was about slave trade. They say the lord of Goddard did it, but everyone knows that the Dawn Knights are directly involved. Iason Heine is tied up in it, and he's the Dawn Knighs' cash cow, so there's no doubt.
+Sieghardt was just helping Iason Heine. But so what? He helped it happen, the selling of people. He is just as guilty in this filthy business!
+
+
\ No newline at end of file
diff --git a/trunk/dist/game/data/html/default/31619-3.htm b/trunk/dist/game/data/html/default/31619-3.htm
new file mode 100644
index 0000000000..a69747381c
--- /dev/null
+++ b/trunk/dist/game/data/html/default/31619-3.htm
@@ -0,0 +1,6 @@
+Wind Shadow Erica Ken Weber:
+You've seen him, haven't you? That filthy pig in Heine? He's one of the Lords of Dawn, and controls all the funds in the organization.
+Seems that the Lords of Dawn are involved with Embryo too, and needed money for something related to it.
+What's the worried look? Oh, wait, did I talk to much? Just...ignore what I said, ok?
+
+
\ No newline at end of file
diff --git a/trunk/dist/game/data/html/default/31619.htm b/trunk/dist/game/data/html/default/31619.htm
new file mode 100644
index 0000000000..b3e01e62fd
--- /dev/null
+++ b/trunk/dist/game/data/html/default/31619.htm
@@ -0,0 +1,7 @@
+Wind Shadow Erica Ken Weber:
+What do you want?
+
+
+
+
+
\ No newline at end of file
diff --git a/trunk/dist/game/data/html/default/32294-1.htm b/trunk/dist/game/data/html/default/32294-1.htm
new file mode 100644
index 0000000000..5227cebdd7
--- /dev/null
+++ b/trunk/dist/game/data/html/default/32294-1.htm
@@ -0,0 +1,4 @@
+Ancient Literature Caravaner Budenka:
+The Demonic Tomes are what the monsters carry as proof of loyalty to Beleth. Loyalty, my foot! Anyway, I'm not sure destroying them will stop the brainwashing, but at least it's a start, right? These tomes are in an indecipherable ancient tongue, but apparently mention a pact with Beleth.
+
+
\ No newline at end of file
diff --git a/trunk/dist/game/data/html/default/32294-2.htm b/trunk/dist/game/data/html/default/32294-2.htm
new file mode 100644
index 0000000000..5c2ae6b944
--- /dev/null
+++ b/trunk/dist/game/data/html/default/32294-2.htm
@@ -0,0 +1,4 @@
+Ancient Literature Caravaner Budenka:
+Beleth changed everything. I used to think that whoever was strongest deserved to rule Hellbound. But... this wasn't what I wanted.
+
+
\ No newline at end of file
diff --git a/trunk/dist/game/data/html/default/32294-3.htm b/trunk/dist/game/data/html/default/32294-3.htm
new file mode 100644
index 0000000000..65b4d0ac90
--- /dev/null
+++ b/trunk/dist/game/data/html/default/32294-3.htm
@@ -0,0 +1,6 @@
+Ancient Literature Caravaner Budenka:
+So, what do you want to trade for?
+
+
+
+
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Budenka/Budenka-05.html b/trunk/dist/game/data/html/default/32294-4.htm
similarity index 99%
rename from trunk/dist/game/data/scripts/hellbound/AI/NPC/Budenka/Budenka-05.html
rename to trunk/dist/game/data/html/default/32294-4.htm
index 4f507611aa..8bc9317ce5 100644
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Budenka/Budenka-05.html
+++ b/trunk/dist/game/data/html/default/32294-4.htm
@@ -1,3 +1,3 @@
-Budenka:
-Bernarde is the divine official staying at Oasis. He is working hard to restore the ruins, which were once a sacred shrine, but is facing a number of challenges. To be honest, as long as Beleth governs this land, I think his chances for success are remote at best...
+Budenka:
+Bernarde is the divine official staying at Oasis. He is working hard to restore the ruins, which were once a sacred shrine, but is facing a number of challenges. To be honest, as long as Beleth governs this land, I think his chances for success are remote at best...
\ No newline at end of file
diff --git a/trunk/dist/game/data/html/default/32294.htm b/trunk/dist/game/data/html/default/32294.htm
new file mode 100644
index 0000000000..c80ae72cac
--- /dev/null
+++ b/trunk/dist/game/data/html/default/32294.htm
@@ -0,0 +1,9 @@
+Ancient Literature Caravaner Budenka:
+The local monsters have all been brainwashed by Beleth. We're looking for a way to save them, but all we can do right now is to take the Demonic Tomes out of their hands.
+So bring either the Sealed Demonig Tome or the Bloodied Demonic Tome, and I'll pay ya for it.
+
+
+
+
+
+
\ No newline at end of file
diff --git a/trunk/dist/game/data/html/default/32356-1.htm b/trunk/dist/game/data/html/default/32356-1.htm
new file mode 100644
index 0000000000..99371ffab3
--- /dev/null
+++ b/trunk/dist/game/data/html/default/32356-1.htm
@@ -0,0 +1,4 @@
+Jude:
+I heard that Beleth is extracting chaos out of humans by turning them into monsters. Wielding the magic of the Giants was terrifying enough, but now this for Core Naia? He is fighting beyond belief.
+
+
\ No newline at end of file
diff --git a/trunk/dist/game/data/html/default/32356-2.htm b/trunk/dist/game/data/html/default/32356-2.htm
new file mode 100644
index 0000000000..cfcc00a771
--- /dev/null
+++ b/trunk/dist/game/data/html/default/32356-2.htm
@@ -0,0 +1,4 @@
+Jude:
+The dimensional gate that Beleth opened is called Core Naia. It was for this that Beleth had drained Hellbound of all life in the bast. It's good to see some trees and grass growing again, but it still feels so ominous....
+
+
\ No newline at end of file
diff --git a/trunk/dist/game/data/html/default/32356.htm b/trunk/dist/game/data/html/default/32356.htm
index dcf97230e7..f644f8476a 100644
--- a/trunk/dist/game/data/html/default/32356.htm
+++ b/trunk/dist/game/data/html/default/32356.htm
@@ -1,4 +1,6 @@
-Jude:
-Our thanks to you! Because of your help, many of our people have found a new life. On the other hand, I hear that Darion's situation is rapidly deteriorating.
-
+Jude:
+Wait, what are you doing in a dangerous place like this? I am Jude, chief of Refugee Camp. Tell me your business, and I will point you in the right direction.
+
+
+
\ No newline at end of file
diff --git a/trunk/dist/game/data/html/default/33778.htm b/trunk/dist/game/data/html/default/33778.htm
new file mode 100644
index 0000000000..c25577bb47
--- /dev/null
+++ b/trunk/dist/game/data/html/default/33778.htm
@@ -0,0 +1,6 @@
+Masa:
+Slaves sold to Hellbound became subjects to Beleth's experiments.
+You see, when a number of them die, the color of the magic circle changes. When it's yellow, the slaves have a chance of being rescued.
+But some slaves may be mutated beyond sanity, so be careful of their attacks!
+When the magic circle is in full power, it's red. It produces berserk monsters, but hard as they are to beat, they give some really good rewards!
+
\ No newline at end of file
diff --git a/trunk/dist/game/data/html/default/33895-1.htm b/trunk/dist/game/data/html/default/33895-1.htm
new file mode 100644
index 0000000000..ed15e8a642
--- /dev/null
+++ b/trunk/dist/game/data/html/default/33895-1.htm
@@ -0,0 +1,4 @@
+Crane Activator:
+You need a Crane Activator to move the Crane.
+Note: You can obtain a Crane Activator from Tanya, Scarlett, Berserk Tanya, Berserk Scarlett or Lavisys' Boss Deathmoz.
+
\ No newline at end of file
diff --git a/trunk/dist/game/data/html/default/33895.htm b/trunk/dist/game/data/html/default/33895.htm
new file mode 100644
index 0000000000..29d1c4df55
--- /dev/null
+++ b/trunk/dist/game/data/html/default/33895.htm
@@ -0,0 +1,4 @@
+Crane Activator:
+Clatter clatter...
+
+
\ No newline at end of file
diff --git a/trunk/dist/game/data/html/default/33897.htm b/trunk/dist/game/data/html/default/33897.htm
new file mode 100644
index 0000000000..f3b5612c12
--- /dev/null
+++ b/trunk/dist/game/data/html/default/33897.htm
@@ -0,0 +1,9 @@
+Theorn:
+Hey there! I'm researching the power of Heroes, and boy do I need a lots of Skill Points for it! Do you want to donate yours? If things go well, you can earn additional SP! Interested? Here's the trick.
+This research requires 100,000 Adena and 500,000 SP. If my experiment is a success, I can pay you in double the SP! But if it fails, say goodbye to the SP! Oh, and no refunds for your Adena. It's necessary for my research!
+And don't die! Or else you will lose the buff I give you, and lose out on rewards.
+And I'm kind of a night-owl, so don't expect me to be around to reward you in the daytime.
+Well, what do you say? I'm at the end of my experimental stages, so all that's left to do is to inject some SP into either the Flask of Darkness or Flask of Light. Here, I'll let you pick.
+
+
+
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts.cfg b/trunk/dist/game/data/scripts.cfg
index 9f7e2b5e66..d4bb7f68b8 100644
--- a/trunk/dist/game/data/scripts.cfg
+++ b/trunk/dist/game/data/scripts.cfg
@@ -82,6 +82,7 @@ ai/npc/Teleports/TeleportToRaceTrack/TeleportToRaceTrack.java
ai/npc/Teleports/TeleportToUndergroundColiseum/TeleportToUndergroundColiseum.java
ai/npc/Teleports/TeleportWithCharm/TeleportWithCharm.java
ai/npc/Teleports/ToIVortex/ToIVortex.java
+ai/npc/Teleports/Warpgate/Warpgate.java
ai/npc/Trainers/HealerTrainer/HealerTrainer.java
ai/npc/Trandon/Trandon.java
ai/npc/Tunatun/Tunatun.java
@@ -198,9 +199,6 @@ instances/InstanceLoader.java
# Gracia Section
gracia/GraciaLoader.java
-# Hellbound Section
-hellbound/HellboundLoader.java
-
# Quests Section
quests/QuestMasterHandler.java
diff --git a/trunk/dist/game/data/scripts/ai/npc/Teleports/Warpgate/Warpgate-01.html b/trunk/dist/game/data/scripts/ai/npc/Teleports/Warpgate/Warpgate-01.html
new file mode 100644
index 0000000000..c9f58eac55
--- /dev/null
+++ b/trunk/dist/game/data/scripts/ai/npc/Teleports/Warpgate/Warpgate-01.html
@@ -0,0 +1,4 @@
+Warp Gate:
+(Nothing works.)
+(If you are not at Lv. 99, you need a Visitation Scroll: Hellbound to enter.)
+
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/ai/npc/Teleports/Warpgate/Warpgate-02.html b/trunk/dist/game/data/scripts/ai/npc/Teleports/Warpgate/Warpgate-02.html
new file mode 100644
index 0000000000..ae13ad4afe
--- /dev/null
+++ b/trunk/dist/game/data/scripts/ai/npc/Teleports/Warpgate/Warpgate-02.html
@@ -0,0 +1,4 @@
+Warp Gate:
+(Use this gate to go to the Refuge Camp in Hellbound.)
+
+
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Warpgate/Warpgate-03.html b/trunk/dist/game/data/scripts/ai/npc/Teleports/Warpgate/Warpgate-03.html
similarity index 100%
rename from trunk/dist/game/data/scripts/hellbound/AI/NPC/Warpgate/Warpgate-03.html
rename to trunk/dist/game/data/scripts/ai/npc/Teleports/Warpgate/Warpgate-03.html
diff --git a/trunk/dist/game/data/scripts/ai/npc/Teleports/Warpgate/Warpgate-Exit.html b/trunk/dist/game/data/scripts/ai/npc/Teleports/Warpgate/Warpgate-Exit.html
new file mode 100644
index 0000000000..053aa3e668
--- /dev/null
+++ b/trunk/dist/game/data/scripts/ai/npc/Teleports/Warpgate/Warpgate-Exit.html
@@ -0,0 +1,4 @@
+Warp Gate:
+(This takes you out of Hellbound. Operate it to go to Heine.)
+
+
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Warpgate/Warpgate.java b/trunk/dist/game/data/scripts/ai/npc/Teleports/Warpgate/Warpgate.java
similarity index 68%
rename from trunk/dist/game/data/scripts/hellbound/AI/NPC/Warpgate/Warpgate.java
rename to trunk/dist/game/data/scripts/ai/npc/Teleports/Warpgate/Warpgate.java
index 956e5268a9..5a59576fee 100644
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Warpgate/Warpgate.java
+++ b/trunk/dist/game/data/scripts/ai/npc/Teleports/Warpgate/Warpgate.java
@@ -16,11 +16,11 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package hellbound.AI.NPC.Warpgate;
+package ai.npc.Teleports.Warpgate;
-import hellbound.HellboundEngine;
import ai.npc.AbstractNpcAI;
+import com.l2jserver.Config;
import com.l2jserver.gameserver.model.Location;
import com.l2jserver.gameserver.model.PcCondOverride;
import com.l2jserver.gameserver.model.actor.L2Character;
@@ -31,10 +31,12 @@ import com.l2jserver.gameserver.model.zone.L2ZoneType;
/**
* Warpgate teleport AI.
* @author _DS_
+ * @Updated to Ertheia by Mobius
*/
public final class Warpgate extends AbstractNpcAI
{
// NPCs
+ private static final int EXIT_GATE = 33902;
private static final int[] WARPGATES =
{
32314,
@@ -43,18 +45,20 @@ public final class Warpgate extends AbstractNpcAI
32317,
32318,
32319,
+ EXIT_GATE
};
// Locations
- private static final Location ENTER_LOC = new Location(-11272, 236464, -3248);
- private static final Location REMOVE_LOC = new Location(-16555, 209375, -3670);
- // Item
+ private static final Location ENTER_LOC = new Location(-28632, 255640, -2230);
+ private static final Location EXPEL_LOC = new Location(111384, 219080, -3567);
+ // Items
private static final int MAP = 9994;
+ private static final int VISITATION_SCROLL = 45448;
// Misc
private static final int ZONE = 40101;
public Warpgate()
{
- super(Warpgate.class.getSimpleName(), "hellbound/AI/NPC");
+ super(Warpgate.class.getSimpleName(), "ai/npc/Teleports");
addStartNpc(WARPGATES);
addFirstTalkId(WARPGATES);
addTalkId(WARPGATES);
@@ -75,9 +79,9 @@ public final class Warpgate extends AbstractNpcAI
return "Warpgate-03.html";
}
}
- else if (event.equals("TELEPORT"))
+ else if (event.equals("expel"))
{
- player.teleToLocation(REMOVE_LOC, true);
+ player.teleToLocation(EXPEL_LOC, true);
}
return super.onAdvEvent(event, npc, player);
}
@@ -85,7 +89,11 @@ public final class Warpgate extends AbstractNpcAI
@Override
public String onFirstTalk(L2Npc npc, L2PcInstance player)
{
- return HellboundEngine.getInstance().isLocked() ? "Warpgate-01.html" : "Warpgate-02.html";
+ if (npc.getId() == EXIT_GATE)
+ {
+ return "Warpgate-Exit.html";
+ }
+ return canEnter(player) ? "Warpgate-02.html" : "Warpgate-01.html";
}
@Override
@@ -97,7 +105,7 @@ public final class Warpgate extends AbstractNpcAI
if (!canEnter(player) && !player.canOverrideCond(PcCondOverride.ZONE_CONDITIONS) && !player.isOnEvent())
{
- startQuestTimer("TELEPORT", 1000, null, player);
+ startQuestTimer("expel", 1000, null, player);
}
else if (!player.isMinimapAllowed() && hasAtLeastOneQuestItem(player, MAP))
{
@@ -109,6 +117,23 @@ public final class Warpgate extends AbstractNpcAI
private static boolean canEnter(L2PcInstance player)
{
- return !player.isFlying();
+ if (player.isFlying())
+ {
+ return false;
+ }
+ if (player.getLevel() < Config.HELLBOUND_LEVEL_LIMIT)
+ {
+ if (player.getInventory().getItemByItemId(VISITATION_SCROLL) != null)
+ {
+ return true;
+ }
+ return false;
+ }
+ return true;
+ }
+
+ public static void main(String[] args)
+ {
+ new Warpgate();
}
}
diff --git a/trunk/dist/game/data/scripts/handlers/admincommandhandlers/AdminHellbound.java b/trunk/dist/game/data/scripts/handlers/admincommandhandlers/AdminHellbound.java
deleted file mode 100644
index bd2d5b46e1..0000000000
--- a/trunk/dist/game/data/scripts/handlers/admincommandhandlers/AdminHellbound.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Copyright (C) 2004-2015 L2J DataPack
- *
- * This file is part of L2J DataPack.
- *
- * L2J DataPack 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.
- *
- * L2J DataPack 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 handlers.admincommandhandlers;
-
-import hellbound.HellboundEngine;
-
-import java.util.StringTokenizer;
-
-import com.l2jserver.gameserver.handler.IAdminCommandHandler;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
-import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;
-
-/**
- * Hellbound admin command.
- * @author DS, Gladicek
- */
-public class AdminHellbound implements IAdminCommandHandler
-{
- private static final String[] ADMIN_COMMANDS =
- {
- "admin_hellbound_setlevel",
- "admin_hellbound"
- };
-
- @Override
- public String[] getAdminCommandList()
- {
- return ADMIN_COMMANDS;
- }
-
- @Override
- public boolean useAdminCommand(String command, L2PcInstance activeChar)
- {
- if (activeChar == null)
- {
- return false;
- }
-
- if (command.startsWith(ADMIN_COMMANDS[0]))
- {
- try
- {
- StringTokenizer st = new StringTokenizer(command, " ");
- st.nextToken();
- final int level = Integer.parseInt(st.nextToken());
- if ((level < 0) || (level > 11))
- {
- throw new NumberFormatException();
- }
-
- HellboundEngine.getInstance().setLevel(level);
- activeChar.sendMessage("Hellbound level set to " + level);
- return true;
- }
- catch (Exception e)
- {
- activeChar.sendMessage("Usage: //hellbound_setlevel 0-11");
- return false;
- }
- }
- else if (command.startsWith(ADMIN_COMMANDS[1]))
- {
- showMenu(activeChar);
- return true;
- }
- return false;
- }
-
- private void showMenu(L2PcInstance activeChar)
- {
- final NpcHtmlMessage html = new NpcHtmlMessage();
- html.setFile(activeChar.getHtmlPrefix(), "data/html/admin/hellbound.htm");
- html.replace("%hbstage%", String.valueOf(HellboundEngine.getInstance().getLevel()));
- html.replace("%trust%", String.valueOf(HellboundEngine.getInstance().getTrust()));
- html.replace("%maxtrust%", String.valueOf(HellboundEngine.getInstance().getMaxTrust()));
- html.replace("%mintrust%", String.valueOf(HellboundEngine.getInstance().getMinTrust()));
- activeChar.sendPacket(html);
- }
-}
diff --git a/trunk/dist/game/data/scripts/handlers/voicedcommandhandlers/Hellbound.java b/trunk/dist/game/data/scripts/handlers/voicedcommandhandlers/Hellbound.java
deleted file mode 100644
index c71162c653..0000000000
--- a/trunk/dist/game/data/scripts/handlers/voicedcommandhandlers/Hellbound.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (C) 2004-2015 L2J DataPack
- *
- * This file is part of L2J DataPack.
- *
- * L2J DataPack 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.
- *
- * L2J DataPack 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 handlers.voicedcommandhandlers;
-
-import hellbound.HellboundEngine;
-
-import com.l2jserver.gameserver.handler.IVoicedCommandHandler;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
-
-/**
- * Hellbound voiced command.
- * @author DS
- */
-public class Hellbound implements IVoicedCommandHandler
-{
- private static final String[] VOICED_COMMANDS =
- {
- "hellbound"
- };
-
- @Override
- public boolean useVoicedCommand(String command, L2PcInstance activeChar, String params)
- {
- if (HellboundEngine.getInstance().isLocked())
- {
- activeChar.sendMessage("Hellbound is currently locked.");
- return true;
- }
-
- final int maxTrust = HellboundEngine.getInstance().getMaxTrust();
- activeChar.sendMessage("Hellbound level: " + HellboundEngine.getInstance().getLevel() + " trust: " + HellboundEngine.getInstance().getTrust() + (maxTrust > 0 ? "/" + maxTrust : ""));
- return true;
- }
-
- @Override
- public String[] getVoicedCommandList()
- {
- return VOICED_COMMANDS;
- }
-}
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/Amaskari.java b/trunk/dist/game/data/scripts/hellbound/AI/Amaskari.java
deleted file mode 100644
index e288161595..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/Amaskari.java
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * Copyright (C) 2004-2015 L2J DataPack
- *
- * This file is part of L2J DataPack.
- *
- * L2J DataPack 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.
- *
- * L2J DataPack 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 hellbound.AI;
-
-import hellbound.HellboundEngine;
-import ai.npc.AbstractNpcAI;
-
-import com.l2jserver.gameserver.ai.CtrlIntention;
-import com.l2jserver.gameserver.enums.ChatType;
-import com.l2jserver.gameserver.model.actor.L2Npc;
-import com.l2jserver.gameserver.model.actor.instance.L2MonsterInstance;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
-import com.l2jserver.gameserver.model.holders.SkillHolder;
-import com.l2jserver.gameserver.model.skills.BuffInfo;
-import com.l2jserver.gameserver.model.skills.Skill;
-import com.l2jserver.gameserver.network.NpcStringId;
-
-/**
- * Manages Amaskari's and minions' chat and some skill usage.
- * @author GKR
- */
-public final class Amaskari extends AbstractNpcAI
-{
- // NPCs
- private static final int AMASKARI = 22449;
- private static final int AMASKARI_PRISONER = 22450;
- // Skills
- // private static SkillHolder INVINCIBILITY = new SkillHolder(5417, 1);
- private static final int BUFF_ID = 4632;
- private static SkillHolder[] BUFF =
- {
- new SkillHolder(BUFF_ID, 1),
- new SkillHolder(BUFF_ID, 2),
- new SkillHolder(BUFF_ID, 3)
- };
- // Misc
- private static final NpcStringId[] AMASKARI_NPCSTRING_ID =
- {
- NpcStringId.I_LL_MAKE_EVERYONE_FEEL_THE_SAME_SUFFERING_AS_ME,
- NpcStringId.HA_HA_YES_DIE_SLOWLY_WRITHING_IN_PAIN_AND_AGONY,
- NpcStringId.MORE_NEED_MORE_SEVERE_PAIN,
- NpcStringId.SOMETHING_IS_BURNING_INSIDE_MY_BODY
- };
- private static final NpcStringId[] MINIONS_NPCSTRING_ID =
- {
- NpcStringId.AHH_MY_LIFE_IS_BEING_DRAINED_OUT,
- NpcStringId.THANK_YOU_FOR_SAVING_ME,
- NpcStringId.IT_WILL_KILL_EVERYONE,
- NpcStringId.EEEK_I_FEEL_SICK_YOW
- };
-
- public Amaskari()
- {
- super(Amaskari.class.getSimpleName(), "hellbound/AI");
- addKillId(AMASKARI, AMASKARI_PRISONER);
- addAttackId(AMASKARI);
- addSpawnId(AMASKARI_PRISONER);
- }
-
- @Override
- public final String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
- {
- if (event.equalsIgnoreCase("stop_toggle"))
- {
- broadcastNpcSay(npc, ChatType.NPC_GENERAL, AMASKARI_NPCSTRING_ID[2]);
- ((L2MonsterInstance) npc).clearAggroList();
- ((L2MonsterInstance) npc).getAI().setIntention(CtrlIntention.AI_INTENTION_ACTIVE);
- npc.setIsInvul(false);
- // npc.doCast(INVINCIBILITY.getSkill())
- }
- else if (event.equalsIgnoreCase("onspawn_msg") && (npc != null) && !npc.isDead())
- {
- if (getRandom(100) > 20)
- {
- broadcastNpcSay(npc, ChatType.NPC_GENERAL, MINIONS_NPCSTRING_ID[2]);
- }
- else if (getRandom(100) > 40)
- {
- broadcastNpcSay(npc, ChatType.NPC_GENERAL, MINIONS_NPCSTRING_ID[3]);
- }
- startQuestTimer("onspawn_msg", (getRandom(8) + 1) * 30000, npc, null);
- }
- return null;
- }
-
- @Override
- public String onAttack(L2Npc npc, L2PcInstance attacker, int damage, boolean isSummon, Skill skill)
- {
- if ((npc.getId() == AMASKARI) && (getRandom(1000) < 25))
- {
- broadcastNpcSay(npc, ChatType.NPC_GENERAL, AMASKARI_NPCSTRING_ID[0]);
- for (L2MonsterInstance minion : ((L2MonsterInstance) npc).getMinionList().getSpawnedMinions())
- {
- if ((minion != null) && !minion.isDead() && (getRandom(10) == 0))
- {
- broadcastNpcSay(minion, ChatType.NPC_GENERAL, MINIONS_NPCSTRING_ID[0]);
- minion.setCurrentHp(minion.getCurrentHp() - (minion.getCurrentHp() / 5));
- }
- }
- }
- return super.onAttack(npc, attacker, damage, isSummon, skill);
- }
-
- @Override
- public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
- {
- if (npc.getId() == AMASKARI_PRISONER)
- {
- final L2MonsterInstance master = ((L2MonsterInstance) npc).getLeader();
- if ((master != null) && !master.isDead())
- {
- broadcastNpcSay(master, ChatType.NPC_GENERAL, AMASKARI_NPCSTRING_ID[1]);
- final BuffInfo info = master.getEffectList().getBuffInfoBySkillId(BUFF_ID);
- if ((info != null) && (info.getSkill().getAbnormalLvl() == 3) && master.isInvul())
- {
- master.setCurrentHp(master.getCurrentHp() + (master.getCurrentHp() / 5));
- }
- else
- {
- master.clearAggroList();
- master.getAI().setIntention(CtrlIntention.AI_INTENTION_ACTIVE);
- if (info == null)
- {
- master.doCast(BUFF[0].getSkill());
- }
- else if (info.getSkill().getAbnormalLvl() < 3)
- {
- master.doCast(BUFF[info.getSkill().getAbnormalLvl()].getSkill());
- }
- else
- {
- broadcastNpcSay(master, ChatType.NPC_GENERAL, AMASKARI_NPCSTRING_ID[3]);
- // master.doCast(INVINCIBILITY.getSkill())
- master.setIsInvul(true);
- startQuestTimer("stop_toggle", 10000, master, null);
- }
- }
- }
- }
- else if (npc.getId() == AMASKARI)
- {
- for (L2MonsterInstance minion : ((L2MonsterInstance) npc).getMinionList().getSpawnedMinions())
- {
- if ((minion != null) && !minion.isDead())
- {
- if (getRandom(1000) > 300)
- {
- broadcastNpcSay(minion, ChatType.NPC_GENERAL, MINIONS_NPCSTRING_ID[1]);
- }
- HellboundEngine.getInstance().updateTrust(30, true);
- minion.deleteMe();
- }
- }
- }
- return super.onKill(npc, killer, isSummon);
- }
-
- @Override
- public final String onSpawn(L2Npc npc)
- {
- startQuestTimer("onspawn_msg", (getRandom(3) + 1) * 30000, npc, null);
- return super.onSpawn(npc);
- }
-}
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/Chimeras.java b/trunk/dist/game/data/scripts/hellbound/AI/Chimeras.java
deleted file mode 100644
index d627c01954..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/Chimeras.java
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * Copyright (C) 2004-2015 L2J DataPack
- *
- * This file is part of L2J DataPack.
- *
- * L2J DataPack 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.
- *
- * L2J DataPack 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 hellbound.AI;
-
-import hellbound.HellboundEngine;
-import ai.npc.AbstractNpcAI;
-
-import com.l2jserver.gameserver.ThreadPoolManager;
-import com.l2jserver.gameserver.model.L2Object;
-import com.l2jserver.gameserver.model.Location;
-import com.l2jserver.gameserver.model.actor.L2Npc;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
-import com.l2jserver.gameserver.model.skills.Skill;
-
-/**
- * Chimeras AI.
- * @author DS
- */
-public final class Chimeras extends AbstractNpcAI
-{
- // NPCs
- private static final int[] NPCS =
- {
- 22349, // Chimera of Earth
- 22350, // Chimera of Darkness
- 22351, // Chimera of Wind
- 22352, // Chimera of Fire
- };
- private static final int CELTUS = 22353;
- // Locations
- private static final Location[] LOCATIONS =
- {
- new Location(3678, 233418, -3319),
- new Location(2038, 237125, -3363),
- new Location(7222, 240617, -2033),
- new Location(9969, 235570, -1993)
- };
- // Skills
- private static final int BOTTLE = 2359; // Magic Bottle
- // Items
- private static final int DIM_LIFE_FORCE = 9680;
- private static final int LIFE_FORCE = 9681;
- private static final int CONTAINED_LIFE_FORCE = 9682;
-
- public Chimeras()
- {
- super(Chimeras.class.getSimpleName(), "hellbound/AI");
- addSkillSeeId(NPCS);
- addSpawnId(CELTUS);
- addSkillSeeId(CELTUS);
- }
-
- @Override
- public final String onSpawn(L2Npc npc)
- {
- if (HellboundEngine.getInstance().getLevel() == 7) // Have random spawn points only in 7 lvl
- {
- final Location loc = LOCATIONS[getRandom(LOCATIONS.length)];
- if (!npc.isInsideRadius(loc, 200, false, false))
- {
- npc.getSpawn().setLocation(loc);
- ThreadPoolManager.getInstance().scheduleGeneral(new Teleport(npc, loc), 100);
- }
- }
- return super.onSpawn(npc);
- }
-
- @Override
- public final String onSkillSee(L2Npc npc, L2PcInstance caster, Skill skill, L2Object[] targets, boolean isSummon)
- {
- if ((skill.getId() == BOTTLE) && !npc.isDead())
- {
- if ((targets.length > 0) && (targets[0] == npc))
- {
- if (npc.getCurrentHp() < (npc.getMaxHp() * 0.1))
- {
- if (HellboundEngine.getInstance().getLevel() == 7)
- {
- HellboundEngine.getInstance().updateTrust(3, true);
- }
-
- npc.setIsDead(true);
- if (npc.getId() == CELTUS)
- {
- npc.dropItem(caster, CONTAINED_LIFE_FORCE, 1);
- }
- else
- {
- if (getRandom(100) < 80)
- {
- npc.dropItem(caster, DIM_LIFE_FORCE, 1);
- }
- else if (getRandom(100) < 80)
- {
- npc.dropItem(caster, LIFE_FORCE, 1);
- }
- }
- npc.onDecay();
- }
- }
- }
- return super.onSkillSee(npc, caster, skill, targets, isSummon);
- }
-
- private static class Teleport implements Runnable
- {
- private final L2Npc _npc;
- private final Location _loc;
-
- public Teleport(L2Npc npc, Location loc)
- {
- _npc = npc;
- _loc = loc;
- }
-
- @Override
- public void run()
- {
- _npc.teleToLocation(_loc, false);
- }
- }
-}
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/DemonPrince.java b/trunk/dist/game/data/scripts/hellbound/AI/DemonPrince.java
deleted file mode 100644
index 1e9b41c33e..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/DemonPrince.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * Copyright (C) 2004-2015 L2J DataPack
- *
- * This file is part of L2J DataPack.
- *
- * L2J DataPack 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.
- *
- * L2J DataPack 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 hellbound.AI;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import ai.npc.AbstractNpcAI;
-
-import com.l2jserver.gameserver.model.actor.L2Npc;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
-import com.l2jserver.gameserver.model.holders.SkillHolder;
-import com.l2jserver.gameserver.model.skills.Skill;
-
-/**
- * Demon Prince's AI.
- * @author GKR
- */
-public final class DemonPrince extends AbstractNpcAI
-{
- // NPCs
- private static final int DEMON_PRINCE = 25540;
- private static final int FIEND = 25541;
- // Skills
- private static final SkillHolder UD = new SkillHolder(5044, 2);
- private static final SkillHolder[] AOE =
- {
- new SkillHolder(5376, 4),
- new SkillHolder(5376, 5),
- new SkillHolder(5376, 6),
- };
-
- private static final Map ATTACK_STATE = new HashMap<>();
-
- public DemonPrince()
- {
- super(DemonPrince.class.getSimpleName(), "hellbound/AI");
- addAttackId(DEMON_PRINCE);
- addKillId(DEMON_PRINCE);
- addSpawnId(FIEND);
- }
-
- @Override
- public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
- {
- if (event.equalsIgnoreCase("cast") && (npc != null) && (npc.getId() == FIEND) && !npc.isDead())
- {
- npc.doCast(AOE[getRandom(AOE.length)].getSkill());
- }
- return super.onAdvEvent(event, npc, player);
- }
-
- @Override
- public String onAttack(L2Npc npc, L2PcInstance attacker, int damage, boolean isSummon, Skill skill)
- {
- if (!npc.isDead())
- {
- if (!ATTACK_STATE.containsKey(npc.getObjectId()) && (npc.getCurrentHp() < (npc.getMaxHp() * 0.5)))
- {
- npc.doCast(UD.getSkill());
- spawnMinions(npc);
- ATTACK_STATE.put(npc.getObjectId(), false);
- }
- else if ((npc.getCurrentHp() < (npc.getMaxHp() * 0.1)) && ATTACK_STATE.containsKey(npc.getObjectId()) && (ATTACK_STATE.get(npc.getObjectId()) == false))
- {
- npc.doCast(UD.getSkill());
- spawnMinions(npc);
- ATTACK_STATE.put(npc.getObjectId(), true);
- }
-
- if (getRandom(1000) < 10)
- {
- spawnMinions(npc);
- }
- }
- return super.onAttack(npc, attacker, damage, isSummon, skill);
- }
-
- @Override
- public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
- {
- ATTACK_STATE.remove(npc.getObjectId());
- return super.onKill(npc, killer, isSummon);
- }
-
- @Override
- public final String onSpawn(L2Npc npc)
- {
- if (npc.getId() == FIEND)
- {
- startQuestTimer("cast", 15000, npc, null);
- }
- return super.onSpawn(npc);
- }
-
- private void spawnMinions(L2Npc master)
- {
- if ((master != null) && !master.isDead())
- {
- final int instanceId = master.getInstanceId();
- final int x = master.getX();
- final int y = master.getY();
- final int z = master.getZ();
- addSpawn(FIEND, x + 200, y, z, 0, false, 0, false, instanceId);
- addSpawn(FIEND, x - 200, y, z, 0, false, 0, false, instanceId);
- addSpawn(FIEND, x - 100, y - 140, z, 0, false, 0, false, instanceId);
- addSpawn(FIEND, x - 100, y + 140, z, 0, false, 0, false, instanceId);
- addSpawn(FIEND, x + 100, y - 140, z, 0, false, 0, false, instanceId);
- addSpawn(FIEND, x + 100, y + 140, z, 0, false, 0, false, instanceId);
- }
- }
-}
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/HellboundCore.java b/trunk/dist/game/data/scripts/hellbound/AI/HellboundCore.java
deleted file mode 100644
index 9e9b12c259..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/HellboundCore.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright (C) 2004-2015 L2J DataPack
- *
- * This file is part of L2J DataPack.
- *
- * L2J DataPack 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.
- *
- * L2J DataPack 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 hellbound.AI;
-
-import hellbound.HellboundEngine;
-import ai.npc.AbstractNpcAI;
-
-import com.l2jserver.gameserver.model.actor.L2Character;
-import com.l2jserver.gameserver.model.actor.L2Npc;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
-import com.l2jserver.gameserver.model.holders.SkillHolder;
-
-/**
- * Manages Naia's cast on the Hellbound Core
- * @author GKR
- */
-public final class HellboundCore extends AbstractNpcAI
-{
- // NPCs
- private static final int NAIA = 18484;
- private static final int HELLBOUND_CORE = 32331;
- // Skills
- private static SkillHolder BEAM = new SkillHolder(5493, 1);
-
- public HellboundCore()
- {
- super(HellboundCore.class.getSimpleName(), "hellbound/AI");
- addSpawnId(HELLBOUND_CORE);
- }
-
- @Override
- public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
- {
- if (event.equalsIgnoreCase("cast") && (HellboundEngine.getInstance().getLevel() <= 6))
- {
- for (L2Character naia : npc.getKnownList().getKnownCharactersInRadius(900))
- {
- if ((naia != null) && naia.isMonster() && (naia.getId() == NAIA) && !naia.isDead())
- {
- naia.setTarget(npc);
- naia.doSimultaneousCast(BEAM.getSkill());
- }
- }
- startQuestTimer("cast", 10000, npc, null);
- }
- return super.onAdvEvent(event, npc, player);
- }
-
- @Override
- public final String onSpawn(L2Npc npc)
- {
- startQuestTimer("cast", 10000, npc, null);
- return super.onSpawn(npc);
- }
-}
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/Keltas.java b/trunk/dist/game/data/scripts/hellbound/AI/Keltas.java
deleted file mode 100644
index 9e3d0c91b6..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/Keltas.java
+++ /dev/null
@@ -1,190 +0,0 @@
-/*
- * Copyright (C) 2004-2015 L2J DataPack
- *
- * This file is part of L2J DataPack.
- *
- * L2J DataPack 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.
- *
- * L2J DataPack 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 hellbound.AI;
-
-import java.util.Collections;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-
-import ai.npc.AbstractNpcAI;
-
-import com.l2jserver.gameserver.enums.ChatType;
-import com.l2jserver.gameserver.model.L2Spawn;
-import com.l2jserver.gameserver.model.Location;
-import com.l2jserver.gameserver.model.actor.L2Npc;
-import com.l2jserver.gameserver.model.actor.instance.L2MonsterInstance;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
-import com.l2jserver.gameserver.network.NpcStringId;
-
-/**
- * Manages Darion's Enforcer's and Darion's Executioner spawn/despawn
- * @author GKR
- */
-public final class Keltas extends AbstractNpcAI
-{
- // NPCs
- private static final int KELTAS = 22341;
- private static final int ENFORCER = 22342;
- private static final int EXECUTIONER = 22343;
- // Locations
- private static final Location[] ENFORCER_SPAWN_POINTS =
- {
- new Location(-24540, 251404, -3320),
- new Location(-24100, 252578, -3060),
- new Location(-24607, 252443, -3074),
- new Location(-23962, 252041, -3275),
- new Location(-24381, 252132, -3090),
- new Location(-23652, 251838, -3370),
- new Location(-23838, 252603, -3095),
- new Location(-23257, 251671, -3360),
- new Location(-27127, 251106, -3523),
- new Location(-27118, 251203, -3523),
- new Location(-27052, 251205, -3523),
- new Location(-26999, 250818, -3523),
- new Location(-29613, 252888, -3523),
- new Location(-29765, 253009, -3523),
- new Location(-29594, 252570, -3523),
- new Location(-29770, 252658, -3523),
- new Location(-27816, 252008, -3527),
- new Location(-27930, 252011, -3523),
- new Location(-28702, 251986, -3523),
- new Location(-27357, 251987, -3527),
- new Location(-28859, 251081, -3527),
- new Location(-28607, 250397, -3523),
- new Location(-28801, 250462, -3523),
- new Location(-29123, 250387, -3472),
- new Location(-25376, 252368, -3257),
- new Location(-25376, 252208, -3257)
- };
- private static final Location[] EXECUTIONER_SPAWN_POINTS =
- {
- new Location(-24419, 251395, -3340),
- new Location(-24912, 252160, -3310),
- new Location(-25027, 251941, -3300),
- new Location(-24127, 252657, -3058),
- new Location(-25120, 252372, -3270),
- new Location(-24456, 252651, -3060),
- new Location(-24844, 251614, -3295),
- new Location(-28675, 252008, -3523),
- new Location(-27943, 251238, -3523),
- new Location(-27827, 251984, -3523),
- new Location(-27276, 251995, -3523),
- new Location(-28769, 251955, -3523),
- new Location(-27969, 251073, -3523),
- new Location(-27233, 250938, -3523),
- new Location(-26835, 250914, -3523),
- new Location(-26802, 251276, -3523),
- new Location(-29671, 252781, -3527),
- new Location(-29536, 252831, -3523),
- new Location(-29419, 253214, -3523),
- new Location(-27923, 251965, -3523),
- new Location(-28499, 251882, -3527),
- new Location(-28194, 251915, -3523),
- new Location(-28358, 251078, -3527),
- new Location(-28580, 251071, -3527),
- new Location(-28492, 250704, -3523)
- };
- // Misc
- private L2MonsterInstance _spawnedKeltas = null;
- private final Set _spawnedMonsters = Collections.newSetFromMap(new ConcurrentHashMap());
-
- public Keltas()
- {
- super(Keltas.class.getSimpleName(), "hellbound/AI");
- addKillId(KELTAS);
- addSpawnId(KELTAS);
- }
-
- private void spawnMinions()
- {
- for (Location loc : ENFORCER_SPAWN_POINTS)
- {
- final L2MonsterInstance minion = (L2MonsterInstance) addSpawn(ENFORCER, loc, false, 0, false);
- final L2Spawn spawn = minion.getSpawn();
- spawn.setRespawnDelay(60);
- spawn.setAmount(1);
- spawn.startRespawn();
- _spawnedMonsters.add(spawn);
- }
-
- for (Location loc : EXECUTIONER_SPAWN_POINTS)
- {
- final L2MonsterInstance minion = (L2MonsterInstance) addSpawn(EXECUTIONER, loc, false, 0, false);
- final L2Spawn spawn = minion.getSpawn();
- spawn.setRespawnDelay(80);
- spawn.setAmount(1);
- spawn.startRespawn();
- _spawnedMonsters.add(spawn);
- }
- }
-
- private void despawnMinions()
- {
- if (_spawnedMonsters.isEmpty())
- {
- return;
- }
-
- for (L2Spawn spawn : _spawnedMonsters)
- {
- spawn.stopRespawn();
- L2Npc minion = spawn.getLastSpawn();
- if ((minion != null) && !minion.isDead())
- {
- minion.deleteMe();
- }
- }
- _spawnedMonsters.clear();
- }
-
- @Override
- public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
- {
- if (event.equalsIgnoreCase("despawn"))
- {
- final L2Npc keltas = _spawnedKeltas;
- if ((keltas != null) && !keltas.isDead())
- {
- broadcastNpcSay(keltas, ChatType.NPC_SHOUT, NpcStringId.THAT_IS_IT_FOR_TODAY_LET_S_RETREAT_EVERYONE_PULL_BACK);
- keltas.deleteMe();
- keltas.getSpawn().decreaseCount(keltas);
- despawnMinions();
- }
- }
- return super.onAdvEvent(event, npc, player);
- }
-
- @Override
- public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
- {
- cancelQuestTimers("despawn");
- despawnMinions();
- return super.onKill(npc, killer, isSummon);
- }
-
- @Override
- public final String onSpawn(L2Npc npc)
- {
- _spawnedKeltas = (L2MonsterInstance) npc;
- broadcastNpcSay(_spawnedKeltas, ChatType.NPC_SHOUT, NpcStringId.GUYS_SHOW_THEM_OUR_POWER);
- spawnMinions();
- startQuestTimer("despawn", 1800000, null, null);
- return super.onSpawn(npc);
- }
-}
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-01.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-01.htm
deleted file mode 100644
index b095eecabf..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-01.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-Bernarde:
-Who are you? You must be from the mainland. Your people have already taken from us all there is to take. Return to your own kind and let us be!
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-01a.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-01a.htm
deleted file mode 100644
index a7b0c86f82..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-01a.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-Bernarde:
-He must be from our island. He looks unusually fit and strong.
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-01c.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-01c.htm
deleted file mode 100644
index 8e5c547d5c..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-01c.htm
+++ /dev/null
@@ -1,7 +0,0 @@
-Bernarde:
-He must be from our island -- he has a robust complexion that I haven't seen anywhere else! Rumor has it that the Demons are invading the natives'
-village and laying it to waste. They even seem to have plundered those treasures that the natives cherish most. I would be most grateful if you could
-secure those treasures and bring them to me. Of course, I must also ask you to finish the work being done at the Ancient Temple Remnants.
-
-
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-01d.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-01d.htm
deleted file mode 100644
index b66034ce6f..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-01d.htm
+++ /dev/null
@@ -1,7 +0,0 @@
-Bernarde:
-He must be from our island -- he has a robust complexion that I haven't seen anywhere else! I have news from those who have visited the
-Ancient Temple Remnants. They say that the soul of Derek, the First Generation Seer, wanders that place. I do not know the truth of these tales,
-but I believe those who told them to me are credible witnesses. Will you go and investigate the Ancient Temple Remnants? If you encounter Derek,
-please help him enter Nirvana.
-
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-01f.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-01f.htm
deleted file mode 100644
index fd6db1e2df..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-01f.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-Bernarde:
-Ah, well met, my friend! My thanks for helping Derek's soul enter Nirvana at last. The natives in the village have received his guardianship.
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-02.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-02.htm
deleted file mode 100644
index 450f489c97..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-02.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-Bernarde:
-He must be from our island. He looks unusually fit and strong.
-
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-02a.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-02a.htm
deleted file mode 100644
index 89f5b3f3eb..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-02a.htm
+++ /dev/null
@@ -1,7 +0,0 @@
-Bernarde:
-I have a favor to ask of you. You are aware, are you not, that my ancestors in the Ancient Temple Remnants are not at peace? It is a great tragedy...
-However, you can give them the rest they deserve by spraying this holy water. Are your ancestors there, too? Take this holy water, I beg you,
-to the ruins and use it to lay the spirits of the seers to rest. There are so many foreigners here these days that it has been difficult to find someone
-willing to take on this mission...
-
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-02b.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-02b.htm
deleted file mode 100644
index a7e48fa3e8..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-02b.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-Bernarde:
-Here it is. Now, please help our ancestors rest in peace!
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-02c.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-02c.htm
deleted file mode 100644
index 37d4b5a167..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-02c.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-Bernarde:
-I am afraid that you do not have a sufficient number of Darion's Badges.
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-02d.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-02d.htm
deleted file mode 100644
index b19f054816..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-02d.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-Bernarde:
-Thank you! This treasure will be a huge help to the natives.
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-02e.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-02e.htm
deleted file mode 100644
index 98710141b5..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-02e.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-Bernarde:
-Eh, where is the treasure?
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-03.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-03.htm
deleted file mode 100644
index 149b216e22..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-03.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-Bernarde:
-It's been some time since I've seen you, my friend. How have you been?
-
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-10r.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-10r.htm
deleted file mode 100644
index 336efa6f63..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-10r.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-Bernarde:
-Darion's minions are likely still numerous within the Steel Citadel, making our path even more difficult. We must find a way to decrease their numbers!
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-11r.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-11r.htm
deleted file mode 100644
index 57328aa7df..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-11r.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-Bernarde:
-Now we must defeat both Beleth and Darion, and in doing so bring peace to Hellbound...
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-1r.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-1r.htm
deleted file mode 100644
index 1771cd92df..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-1r.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-Bernarde:
-I have nothing to say. Away with you!
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-2r.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-2r.htm
deleted file mode 100644
index 9be4f14ad8..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-2r.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-Bernarde:
-I've said enough; now I must return to my duty. Please help bring rest to those ancestors of mine who are forced to roam the ruins of the ancient temple.
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-3r.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-3r.htm
deleted file mode 100644
index bd181e61be..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-3r.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-Bernarde:
-The Resistance Village is often attacked by Demons who have begun to sense the power of the Resistance and the continent's inhabitants. Be careful!
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-4r.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-4r.htm
deleted file mode 100644
index 3c94fa1a15..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-4r.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-Bernarde:
-Apparently Derek, the first priest, appears from time to time in the ruins of the ancient temple. How tragic that his spirit still wanders there,
-unable to rest! Unless he can, I fear there will never be peace between the temple and the native village...
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-5r.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-5r.htm
deleted file mode 100644
index 1be60bbe0d..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-5r.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-Bernarde:
-They say that the caravan slaves are being forced to work at the quarry. If you can rescue them, the caravan may become more willing to ally with the
-natives. Please help us by freeing the caravan slaves!
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-6r.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-6r.htm
deleted file mode 100644
index 5618c2e1ff..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-6r.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-Bernarde:
-Demons have been very active in the Enchanted Megaliths lately. There must be something going on for them to only increase security in that area.
-Would you investigate? Perhaps you will find something that will help us reduce Beleth's power.
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-7r.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-7r.htm
deleted file mode 100644
index 8d3338604f..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-7r.htm
+++ /dev/null
@@ -1,5 +0,0 @@
-Bernarde:
-I've learned why the Scarred Plateau was abandoned, why even the money-hungry caravans fear to go there. Perhaps, once you've fully prepared yourself,
-you'd care to investigate for yourself? It is said that you can use a Magic Bottle to capture Magic Spirits from the monsters there,
-which in turn are very valuable to magicians overseas. Why not try it?
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-8r.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-8r.htm
deleted file mode 100644
index 71ae339d1b..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-8r.htm
+++ /dev/null
@@ -1,5 +0,0 @@
-Bernarde:
-I've heard that that the Resistance and the mainlanders have pushed the Devils all the way back to the Steel Citadel's outer gates!
-Breaching the gates is now just a matter of time. True, one of the enemy's captains has made a stand before gates, but the combined strength of our
-forces should be enough to defeat even him!
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-9r.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-9r.htm
deleted file mode 100644
index 4a17a6193f..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/32300-9r.htm
+++ /dev/null
@@ -1,5 +0,0 @@
-Bernarde:
-I hear that the mainlanders and the Resistance have advanced deep into the heart of the Steel Citadel. Oh, that this accursed land might finally see the
-dawning of a new era! I could cry tears of joy just thinking about it! But we cannot celebrate just yet -- we must still go to the aid of our brethren in
-the castle.
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/Bernarde.java b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/Bernarde.java
deleted file mode 100644
index de54a352e4..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Bernarde/Bernarde.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Copyright (C) 2004-2015 L2J DataPack
- *
- * This file is part of L2J DataPack.
- *
- * L2J DataPack 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.
- *
- * L2J DataPack 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 hellbound.AI.NPC.Bernarde;
-
-import hellbound.HellboundEngine;
-import ai.npc.AbstractNpcAI;
-
-import com.l2jserver.gameserver.model.actor.L2Npc;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
-
-/**
- * Bernarde AI.
- * @author DS
- */
-public final class Bernarde extends AbstractNpcAI
-{
- // NPCs
- private static final int BERNARDE = 32300;
- // Misc
- private static final int NATIVE_TRANSFORM = 101;
- // Items
- private static final int HOLY_WATER = 9673;
- private static final int DARION_BADGE = 9674;
- private static final int TREASURE = 9684;
-
- public Bernarde()
- {
- super(Bernarde.class.getSimpleName(), "hellbound/AI/NPC");
- addFirstTalkId(BERNARDE);
- addStartNpc(BERNARDE);
- addTalkId(BERNARDE);
- }
-
- @Override
- public final String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
- {
- switch (event)
- {
- case "HolyWater":
- {
- if (HellboundEngine.getInstance().getLevel() == 2)
- {
- if (player.getInventory().getInventoryItemCount(DARION_BADGE, -1, false) >= 5)
- {
- if (player.exchangeItemsById("Quest", npc, DARION_BADGE, 5, HOLY_WATER, 1, true))
- {
- return "32300-02b.htm";
- }
- }
- }
- event = "32300-02c.htm";
- break;
- }
- case "Treasure":
- {
- if ((HellboundEngine.getInstance().getLevel() == 3) && hasQuestItems(player, TREASURE))
- {
- HellboundEngine.getInstance().updateTrust((int) (getQuestItemsCount(player, TREASURE) * 1000), true);
- takeItems(player, TREASURE, -1);
- return "32300-02d.htm";
- }
- event = "32300-02e.htm";
- break;
- }
- case "rumors":
- {
- event = "32300-" + HellboundEngine.getInstance().getLevel() + "r.htm";
- break;
- }
- }
- return event;
- }
-
- @Override
- public final String onFirstTalk(L2Npc npc, L2PcInstance player)
- {
- switch (HellboundEngine.getInstance().getLevel())
- {
- case 0:
- case 1:
- return isTransformed(player) ? "32300-01a.htm" : "32300-01.htm";
- case 2:
- return isTransformed(player) ? "32300-02.htm" : "32300-03.htm";
- case 3:
- return isTransformed(player) ? "32300-01c.htm" : "32300-03.htm";
- case 4:
- return isTransformed(player) ? "32300-01d.htm" : "32300-03.htm";
- default:
- return isTransformed(player) ? "32300-01f.htm" : "32300-03.htm";
- }
- }
-
- private static final boolean isTransformed(L2PcInstance player)
- {
- return player.isTransformed() && (player.getTransformation().getId() == NATIVE_TRANSFORM);
- }
-}
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Budenka/Budenka-01.html b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Budenka/Budenka-01.html
deleted file mode 100644
index db4424fd1e..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Budenka/Budenka-01.html
+++ /dev/null
@@ -1,8 +0,0 @@
-Budenka:
-Oh... From your appearance, I can see that you have crossed the Great Sea to come here.
-
-
-
-
-
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Budenka/Budenka-02.html b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Budenka/Budenka-02.html
deleted file mode 100644
index 0b25fcf3c4..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Budenka/Budenka-02.html
+++ /dev/null
@@ -1,3 +0,0 @@
-Budenka:
-You will find out soon enough, of that I am sure. Ha ha!
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Budenka/Budenka-03.html b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Budenka/Budenka-03.html
deleted file mode 100644
index df67769386..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Budenka/Budenka-03.html
+++ /dev/null
@@ -1,3 +0,0 @@
-Budenka:
-He was a resident here? I wonder how he escaped... You'd best ask Bernarde over at the Oasis.
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Budenka/Budenka-04.html b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Budenka/Budenka-04.html
deleted file mode 100644
index f347e3f80a..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Budenka/Budenka-04.html
+++ /dev/null
@@ -1,3 +0,0 @@
-Budenka:
-Who is Beleth, you ask? Only the master of this island! Sure, it's rumored that he is actually a Demon, but as long as he rules fairly and well, I say "Who cares?"
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Budenka/Budenka-06.html b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Budenka/Budenka-06.html
deleted file mode 100644
index 0d6cc9914a..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Budenka/Budenka-06.html
+++ /dev/null
@@ -1,3 +0,0 @@
-Budenka:
-Oh, it's you! I heard about you from the Guild. Did you see Bernarde's business through to a fit conclusion?
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Budenka/Budenka-07.html b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Budenka/Budenka-07.html
deleted file mode 100644
index a0e9d69ff4..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Budenka/Budenka-07.html
+++ /dev/null
@@ -1,3 +0,0 @@
-Budenka:
-Eh, you have a pretty lofty reputation in the Guild already. How are you?
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Budenka/Budenka.java b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Budenka/Budenka.java
deleted file mode 100644
index 32a9d7f802..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Budenka/Budenka.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright (C) 2004-2015 L2J DataPack
- *
- * This file is part of L2J DataPack.
- *
- * L2J DataPack 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.
- *
- * L2J DataPack 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 hellbound.AI.NPC.Budenka;
-
-import ai.npc.AbstractNpcAI;
-
-import com.l2jserver.gameserver.model.actor.L2Npc;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
-
-/**
- * Budenka AI.
- * @author St3eT
- */
-public final class Budenka extends AbstractNpcAI
-{
- // NPCs
- private static final int BUDENKA = 32294;
- // Items
- private static final int STANDART_CERT = 9851;
- private static final int PREMIUM_CERT = 9852;
-
- public Budenka()
- {
- super(Budenka.class.getSimpleName(), "hellbound/AI/NPC");
- addStartNpc(BUDENKA);
- addFirstTalkId(BUDENKA);
- addTalkId(BUDENKA);
- }
-
- @Override
- public final String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
- {
- String htmltext = null;
- switch (event)
- {
- case "Budenka-02.html":
- case "Budenka-03.html":
- case "Budenka-04.html":
- case "Budenka-05.html":
- {
- htmltext = event;
- break;
- }
- }
- return htmltext;
- }
-
- @Override
- public final String onFirstTalk(L2Npc npc, L2PcInstance player)
- {
- String htmltext = null;
- if (hasQuestItems(player, STANDART_CERT, PREMIUM_CERT))
- {
- htmltext = "Budenka-07.html";
- }
- else if (hasQuestItems(player, STANDART_CERT))
- {
- htmltext = "Budenka-06.html";
- }
- else
- {
- htmltext = "Budenka-01.html";
- }
- return htmltext;
- }
-}
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Buron/32345-01.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Buron/32345-01.htm
deleted file mode 100644
index 002e4e795b..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Buron/32345-01.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-Buron:
-Ah, you have come from the continent! Have you seen my little brother?
-
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Buron/32345-01a.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Buron/32345-01a.htm
deleted file mode 100644
index 2e79438189..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Buron/32345-01a.htm
+++ /dev/null
@@ -1,9 +0,0 @@
-Buron:
-Finally, we have regained our home! Please give my regards to Jirrone, who left the island some time ago.
-There is obviously a great deal of work for me to do now that we have regained our village, but I will gladly create native clothes for you whenever you
-wish it.
-
-
-
-
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Buron/32345-02.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Buron/32345-02.htm
deleted file mode 100644
index 3d8fc822a1..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Buron/32345-02.htm
+++ /dev/null
@@ -1,8 +0,0 @@
-Buron:
-Ah, now I can trust you! If you give me 10 Darion's Badges, I will make you some of our clothes as a token of my appreciation.
-Wear them here and the people of the village will welcome you.
-
-
-
-
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Buron/32345-10r.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Buron/32345-10r.htm
deleted file mode 100644
index a35fdbb353..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Buron/32345-10r.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-Buron:
-The Steel Citadel is filled with monsters, which must be cleared level by level. To conquer the Steel Citadel, destroy them all!
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Buron/32345-11r.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Buron/32345-11r.htm
deleted file mode 100644
index 986d801b5b..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Buron/32345-11r.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-Buron:
-Now all that remains is to defeat Darion and Beleth and restore peace to Hellbound.
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Buron/32345-1r.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Buron/32345-1r.htm
deleted file mode 100644
index 63c5b30216..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Buron/32345-1r.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-Buron:
-Perhaps it is a result of the seal being broken, but now we occasionally encounter a few adventurers from the mainland. You may also meet some of our
-brethren who have been led astray by Darion's minions. Please rescue them!
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Buron/32345-2r.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Buron/32345-2r.htm
deleted file mode 100644
index d00c35a664..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Buron/32345-2r.htm
+++ /dev/null
@@ -1,5 +0,0 @@
-Buron:
-The mainlanders are incredibly strong ?they have advanced all the way to the Oasis. Rumor also has it that the ghosts of priests and warriors appear
-from time to time at the ancient temple ruins located to the southwest of the Oasis. Talk to Bernarde at the Oasis to learn more.
-I should mention that Bernarde has a deep mistrust of foreigners, so you'd be well advised to dress like a native when you meet him.
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Buron/32345-3r.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Buron/32345-3r.htm
deleted file mode 100644
index 9a7bcd8359..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Buron/32345-3r.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-Buron:
-The Resistance village continues to suffer frequent attacks from the Devils, who are probably fearful that the mainlanders and the Resistance will join
-forces to oppose them. Please go and save the village!
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Buron/32345-4r.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Buron/32345-4r.htm
deleted file mode 100644
index 2e5048303c..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Buron/32345-4r.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-Buron:
-The Resistance village remains under frequent attack by the Devils, but they rarely break through now thanks to the efforts of both the mainlanders and
-the natives. Still, we need to strike our enemy a decisive blow... Perhaps Bernarde will know of a way.
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Buron/32345-5r.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Buron/32345-5r.htm
deleted file mode 100644
index 790cee8d95..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Buron/32345-5r.htm
+++ /dev/null
@@ -1,5 +0,0 @@
-Buron:
-The Resistance village is saved, and our home is again our own! Now we must formulate a plan to rescue the caravan slaves imprisoned in the quarry.
-Beleth desired that place because of its wealth of rare minerals. If we can save those slaves, I'm sure that the caravan will be favorably disposed
-towards us. Without their help, we will surely starve...
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Buron/32345-6r.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Buron/32345-6r.htm
deleted file mode 100644
index 288b009783..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Buron/32345-6r.htm
+++ /dev/null
@@ -1,5 +0,0 @@
-Buron:
-Darion's influence has grown weak in the face of the united opposition of the newcomers from the continent, the natives and the Caravan.
-His army has already abandoned most of Hellbound to the Resistance. Still, Darion's forces are doing everything possible to defend the Enchanted Megaliths.
-I wonder -- is there something important buried in there?
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Buron/32345-7r.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Buron/32345-7r.htm
deleted file mode 100644
index 63e949aa54..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Buron/32345-7r.htm
+++ /dev/null
@@ -1,5 +0,0 @@
-Buron:
-I've learned why even the money-hungry caravans fear to go to the Scarred Plateau. How can such a terrible place exist... I have not been there myself,
-but they say that it is inhabited by terrible monsters. That said, apparently it is possible to obtain Magic Spirits from those monsters,
-for which foreign magicians will pay a steep price. If you could capture some for us, we would be in your debt.
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Buron/32345-8r.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Buron/32345-8r.htm
deleted file mode 100644
index 40747a8bc3..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Buron/32345-8r.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-Buron:
-Amazing! I just heard that that the Resistance and the mainlanders have joined forces and are pushing the Devils back to the outer gates!
-There is a captain guarding the gates, but I think we will prevail and breach the defenses!
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Buron/32345-9r.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Buron/32345-9r.htm
deleted file mode 100644
index a232a942a5..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Buron/32345-9r.htm
+++ /dev/null
@@ -1,5 +0,0 @@
-Buron:
-I hear that the outer gates have fallen and our forces are steadily advancing into the Steel Citadel! There is a rumor that the Dwarf who designed the
-Steel Citadel still resides somewhere inside the castle. Many of our brethren also live in the Oasis or in the town located within the castle walls.
-Please save them! If you have any of Darion's Badges, you should be able to travel anywhere without restrictions.
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Buron/32345-lowlvl.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Buron/32345-lowlvl.htm
deleted file mode 100644
index 114f8f0ef4..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Buron/32345-lowlvl.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-Buron:
-I cannot trust you. Outsider!
-
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Buron/32345-noitems.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Buron/32345-noitems.htm
deleted file mode 100644
index afc392b210..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Buron/32345-noitems.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-Buron:
-Sorry, you do not have the required items.
-
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Buron/Buron.java b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Buron/Buron.java
deleted file mode 100644
index 0d2f292604..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Buron/Buron.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Copyright (C) 2004-2015 L2J DataPack
- *
- * This file is part of L2J DataPack.
- *
- * L2J DataPack 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.
- *
- * L2J DataPack 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 hellbound.AI.NPC.Buron;
-
-import hellbound.HellboundEngine;
-import ai.npc.AbstractNpcAI;
-
-import com.l2jserver.gameserver.model.actor.L2Npc;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
-
-/**
- * Buron AI.
- * @author DS
- */
-public final class Buron extends AbstractNpcAI
-{
- private static final int BURON = 32345;
- private static final int HELMET = 9669;
- private static final int TUNIC = 9670;
- private static final int PANTS = 9671;
- private static final int DARION_BADGE = 9674;
-
- public Buron()
- {
- super(Buron.class.getSimpleName(), "hellbound/AI/NPC");
- addFirstTalkId(BURON);
- addStartNpc(BURON);
- addTalkId(BURON);
- }
-
- @Override
- public final String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
- {
- String htmltext = event;
- if ("Rumor".equalsIgnoreCase(event))
- {
- htmltext = "32345-" + HellboundEngine.getInstance().getLevel() + "r.htm";
- }
- else
- {
- if (HellboundEngine.getInstance().getLevel() < 2)
- {
- htmltext = "32345-lowlvl.htm";
- }
- else
- {
- if (getQuestItemsCount(player, DARION_BADGE) >= 10)
- {
- takeItems(player, DARION_BADGE, 10);
- if (event.equalsIgnoreCase("Tunic"))
- {
- player.addItem("Quest", TUNIC, 1, npc, true);
- }
- else if (event.equalsIgnoreCase("Helmet"))
- {
- player.addItem("Quest", HELMET, 1, npc, true);
- }
- else if (event.equalsIgnoreCase("Pants"))
- {
- player.addItem("Quest", PANTS, 1, npc, true);
- }
- htmltext = null;
- }
- else
- {
- htmltext = "32345-noitems.htm";
- }
- }
- }
- return htmltext;
- }
-
- @Override
- public final String onFirstTalk(L2Npc npc, L2PcInstance player)
- {
- getQuestState(player, true);
- switch (HellboundEngine.getInstance().getLevel())
- {
- case 1:
- return "32345-01.htm";
- case 2:
- case 3:
- case 4:
- return "32345-02.htm";
- default:
- return "32345-01a.htm";
- }
- }
-}
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Deltuva/32313-02.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Deltuva/32313-02.htm
deleted file mode 100644
index dc13d567d1..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Deltuva/32313-02.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-Deltuva:
-Hmm...I can't recall you ever having been to the Steel Citadel before. I'm afraid I cannot let you in -- it's simply too dangerous!
-
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Deltuva/Deltuva.java b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Deltuva/Deltuva.java
deleted file mode 100644
index 5ddf0cff93..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Deltuva/Deltuva.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright (C) 2004-2015 L2J DataPack
- *
- * This file is part of L2J DataPack.
- *
- * L2J DataPack 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.
- *
- * L2J DataPack 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 hellbound.AI.NPC.Deltuva;
-
-import ai.npc.AbstractNpcAI;
-
-import com.l2jserver.gameserver.model.Location;
-import com.l2jserver.gameserver.model.actor.L2Npc;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
-
-/**
- * Deltuva AI.
- * @author GKR
- */
-public final class Deltuva extends AbstractNpcAI
-{
- // NPCs
- private static final int DELTUVA = 32313;
- // Location
- private static final Location TELEPORT = new Location(17934, 283189, -9701);
-
- public Deltuva()
- {
- super(Deltuva.class.getSimpleName(), "hellbound/AI/NPC");
- addStartNpc(DELTUVA);
- addTalkId(DELTUVA);
- }
-
- @Override
- public final String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
- {
- if (event.equalsIgnoreCase("teleport"))
- {
- player.teleToLocation(TELEPORT);
- }
- return super.onAdvEvent(event, npc, player);
- }
-}
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Falk/32297-01.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Falk/32297-01.htm
deleted file mode 100644
index 10261a0999..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Falk/32297-01.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-Falk:
-I see that you're an adventurer from a foreign land. Would you consider helping me? If you do, I'll help smooth your dealings with others in my Caravan group.
-
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Falk/32297-01a.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Falk/32297-01a.htm
deleted file mode 100644
index b7e0e5e702..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Falk/32297-01a.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-Falk:
-You already gave me a Darion's Badge, remember? You really should deal with someone else now.
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Falk/32297-02.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Falk/32297-02.htm
deleted file mode 100644
index 2b3b45f8b1..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Falk/32297-02.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-Falk:
-I'm not asking anything particularly difficult, but I do need a favor from you, my friend. We in the Caravan travel to and through many places on this island, which requires a great many of Darion's Badges. Although we are able to lay our hands on some, they are simply not enough for us to turn a profit, even considering the natives' unquenching demand for Prayer Fragments... If you can spare any Darion's Badges, please give them to me. I don't need that many -- even 20 will suffice. In return, I will give you a voucher that will allow you trade with the Caravan members.
-
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Falk/32297-02a.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Falk/32297-02a.htm
deleted file mode 100644
index a64c124d16..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Falk/32297-02a.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-Falk:
-Thank you! Here, take this and you'll be able to trade with other Caravans.
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Falk/32297-02b.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Falk/32297-02b.htm
deleted file mode 100644
index 614b5931fc..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Falk/32297-02b.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-Falk:
-I'm afraid that you don't have enough Darion's Badges. Please obtain some more and come back.
-
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Falk/Falk.java b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Falk/Falk.java
deleted file mode 100644
index cc2de81a8f..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Falk/Falk.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright (C) 2004-2015 L2J DataPack
- *
- * This file is part of L2J DataPack.
- *
- * L2J DataPack 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.
- *
- * L2J DataPack 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 hellbound.AI.NPC.Falk;
-
-import ai.npc.AbstractNpcAI;
-
-import com.l2jserver.gameserver.model.actor.L2Npc;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
-
-/**
- * Falk AI.
- * @author DS
- */
-public final class Falk extends AbstractNpcAI
-{
- // NPCs
- private static final int FALK = 32297;
- // Items
- private static final int DARION_BADGE = 9674;
- private static final int BASIC_CERT = 9850; // Basic Caravan Certificate
- private static final int STANDART_CERT = 9851; // Standard Caravan Certificate
- private static final int PREMIUM_CERT = 9852; // Premium Caravan Certificate
-
- public Falk()
- {
- super(Falk.class.getSimpleName(), "hellbound/AI/NPC");
- addFirstTalkId(FALK);
- addStartNpc(FALK);
- addTalkId(FALK);
- }
-
- @Override
- public final String onFirstTalk(L2Npc npc, L2PcInstance player)
- {
- if (hasAtLeastOneQuestItem(player, BASIC_CERT, STANDART_CERT, PREMIUM_CERT))
- {
- return "32297-01a.htm";
- }
- return "32297-01.htm";
- }
-
- @Override
- public final String onTalk(L2Npc npc, L2PcInstance player)
- {
- if (hasAtLeastOneQuestItem(player, BASIC_CERT, STANDART_CERT, PREMIUM_CERT))
- {
- return "32297-01a.htm";
- }
- return "32297-02.htm";
- }
-
- @Override
- public final String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
- {
- if (event.equalsIgnoreCase("badges"))
- {
- if (!hasAtLeastOneQuestItem(player, BASIC_CERT, STANDART_CERT, PREMIUM_CERT))
- {
- if (getQuestItemsCount(player, DARION_BADGE) >= 20)
- {
- takeItems(player, DARION_BADGE, 20);
- giveItems(player, BASIC_CERT, 1);
- return "32297-02a.htm";
- }
- return "32297-02b.htm";
- }
- }
- return super.onAdvEvent(event, npc, player);
- }
-}
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Hude/32298-01.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Hude/32298-01.htm
deleted file mode 100644
index 064e5e085e..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Hude/32298-01.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-Hude:
-I've never seen them before, but they're dressed in really awful clothes.
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Hude/32298-03.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Hude/32298-03.htm
deleted file mode 100644
index a741d4b6fb..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Hude/32298-03.htm
+++ /dev/null
@@ -1,6 +0,0 @@
-Hude:
-Ah, it's you! I was hoping it was Falk... I haven't heard from him for over a week. If you happen to see him, please tell him that I'm looking for him. I know that he went looking for Scorpion Poison Stingers, which are very useful as medicine...
-Say, perhaps you would be wiling to go and get me 60 Scorpion Poison Stingers and 30 Marks of Betrayal? If you do, I will give you a voucher so you can trade with me.
-
-
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Hude/32298-04a.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Hude/32298-04a.htm
deleted file mode 100644
index a18d1760d9..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Hude/32298-04a.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-Hude:
-Wonderful! You've pleasantly surprised me, I have to confess.
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Hude/32298-04b.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Hude/32298-04b.htm
deleted file mode 100644
index 4d82eeeac2..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Hude/32298-04b.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-Hude:
-I don't see them anywhere. Don't play tricks on me!
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Hude/32298-05.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Hude/32298-05.htm
deleted file mode 100644
index aa827dfd70..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Hude/32298-05.htm
+++ /dev/null
@@ -1,6 +0,0 @@
-Hude:
-Oh, look who's here! I've got a big opportunity this time. If you catch the Chimeras in the Battered Lands with the Magic Bottle, you can obtain a unique item. Bring me 56 Life Forces and 14 Contained Life Forces. Then we will accept you as our friend. Before you go, take a look at the special item that we use.
-
-
-
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Hude/32298-06a.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Hude/32298-06a.htm
deleted file mode 100644
index e6170c87f3..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Hude/32298-06a.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-Hude:
-Well done! With high quality materials like this, I can fetch a very good price indeed. Here, take this Map of Tears that the Caravan found near Hellbound. Put it to good use.
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Hude/32298-06b.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Hude/32298-06b.htm
deleted file mode 100644
index 52711cce07..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Hude/32298-06b.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-Hude:
-I know you wouldn't try to pull a fast one on me, but in the interests of our continued business relationship I think it would be best if you provided some sort of proof...
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Hude/32298-07.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Hude/32298-07.htm
deleted file mode 100644
index 13d8165678..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Hude/32298-07.htm
+++ /dev/null
@@ -1,6 +0,0 @@
-Hude:
-Welcome, friend, welcome! What can I do for you today?
-
-
-
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Hude/Hude.java b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Hude/Hude.java
deleted file mode 100644
index 810bbfe851..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Hude/Hude.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Copyright (C) 2004-2015 L2J DataPack
- *
- * This file is part of L2J DataPack.
- *
- * L2J DataPack 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.
- *
- * L2J DataPack 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 hellbound.AI.NPC.Hude;
-
-import hellbound.HellboundEngine;
-import ai.npc.AbstractNpcAI;
-
-import com.l2jserver.gameserver.data.xml.impl.MultisellData;
-import com.l2jserver.gameserver.model.actor.L2Npc;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
-
-/**
- * Hude AI.
- * @author DS
- */
-public final class Hude extends AbstractNpcAI
-{
- // NPCs
- private static final int HUDE = 32298;
- // Items
- private static final int BASIC_CERT = 9850;
- private static final int STANDART_CERT = 9851;
- private static final int PREMIUM_CERT = 9852;
- private static final int MARK_OF_BETRAYAL = 9676;
- private static final int LIFE_FORCE = 9681;
- private static final int CONTAINED_LIFE_FORCE = 9682;
- private static final int MAP = 9994;
- private static final int STINGER = 10012;
-
- public Hude()
- {
- super(Hude.class.getSimpleName(), "hellbound/AI/NPC");
- addFirstTalkId(HUDE);
- addStartNpc(HUDE);
- addTalkId(HUDE);
- }
-
- @Override
- public final String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
- {
- switch (event)
- {
- case "scertif":
- {
- if (HellboundEngine.getInstance().getLevel() > 3)
- {
- if (hasQuestItems(player, BASIC_CERT) && (getQuestItemsCount(player, MARK_OF_BETRAYAL) >= 30) && (getQuestItemsCount(player, STINGER) >= 60))
- {
- takeItems(player, MARK_OF_BETRAYAL, 30);
- takeItems(player, STINGER, 60);
- takeItems(player, BASIC_CERT, 1);
- giveItems(player, STANDART_CERT, 1);
- return "32298-04a.htm";
- }
- }
- return "32298-04b.htm";
- }
- case "pcertif":
- {
- if (HellboundEngine.getInstance().getLevel() > 6)
- {
- if (hasQuestItems(player, STANDART_CERT) && (getQuestItemsCount(player, LIFE_FORCE) >= 56) && (getQuestItemsCount(player, CONTAINED_LIFE_FORCE) >= 14))
- {
- takeItems(player, LIFE_FORCE, 56);
- takeItems(player, CONTAINED_LIFE_FORCE, 14);
- takeItems(player, STANDART_CERT, 1);
- giveItems(player, PREMIUM_CERT, 1);
- giveItems(player, MAP, 1);
- return "32298-06a.htm";
- }
- }
- return "32298-06b.htm";
- }
- case "multisell1":
- {
- if (hasQuestItems(player, STANDART_CERT) || hasQuestItems(player, PREMIUM_CERT))
- {
- MultisellData.getInstance().separateAndSend(322980001, player, npc, false);
- }
- break;
- }
- case "multisell2":
- {
- if (hasQuestItems(player, PREMIUM_CERT))
- {
- MultisellData.getInstance().separateAndSend(322980002, player, npc, false);
- }
- break;
- }
- }
- return super.onAdvEvent(event, npc, player);
- }
-
- @Override
- public final String onFirstTalk(L2Npc npc, L2PcInstance player)
- {
- String htmltext = null;
- if (!hasAtLeastOneQuestItem(player, BASIC_CERT, STANDART_CERT, PREMIUM_CERT))
- {
- htmltext = "32298-01.htm";
- }
- else if (hasQuestItems(player, BASIC_CERT) && !hasAtLeastOneQuestItem(player, STANDART_CERT, PREMIUM_CERT))
- {
- htmltext = "32298-03.htm";
- }
- else if (hasQuestItems(player, STANDART_CERT) && !hasQuestItems(player, PREMIUM_CERT))
- {
- htmltext = "32298-05.htm";
- }
- else if (hasQuestItems(player, PREMIUM_CERT))
- {
- htmltext = "32298-07.htm";
- }
- return htmltext;
- }
-}
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Jude/32356-01.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Jude/32356-01.htm
deleted file mode 100644
index b0d7bbde28..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Jude/32356-01.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-Jude:
-Newcomers, eh? Where do you hail from?
-
-
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Jude/32356-01a.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Jude/32356-01a.htm
deleted file mode 100644
index 02c4b7a53c..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Jude/32356-01a.htm
+++ /dev/null
@@ -1,6 +0,0 @@
-Jude:
-Oh, the Natives asked you to do that? Well, I certainly sympathize with their situation, but we are traders after all. You could say that give-and-take is the natural order of things! I actually have a favor to ask of you. I don't know about the Natives, but I am sure that you can manage this task.
-If you go north from here, you will find a place where minerals are unearthed for Darion. It is called The Quarry, and many of our people have been enslaved there, forced to dig and mine. Please free them! It would be even better if you could free the Caravan village, but that is a long and arduous journey. Take the freed slaves to the Dolmen at the entrance to the Quarry. The Natives regard it as a sacred spot, but we frequently use it for navigation. Once there, we will be able to take care of them.
-The Quarry guards have orders to kill any slave that tries to escape. You must at all costs protect our people from that fate! Avoid the guards and safeguard our people to freedom.
-
-
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Jude/32356-01b.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Jude/32356-01b.htm
deleted file mode 100644
index 770e288965..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Jude/32356-01b.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-Jude:
-Our thanks to you! Because of your help, many of our people have found a new life. On the other hand, I hear that Darion's situation is rapidly deteriorating.
-
-
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Jude/32356-01c.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Jude/32356-01c.htm
deleted file mode 100644
index 4d25b89b2c..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Jude/32356-01c.htm
+++ /dev/null
@@ -1,5 +0,0 @@
-Jude:
-I hear that the Natives' village is often attacked these days. I don't know how the Natives gathered all those treasures and hid them, but that's what the Keltas are after. Do me a favor and bring me that treasure before it's all plundered. The compensation will be more than adequate, I promise you. Bring me 40 Native Treasures as fast as you can.
-
-
-
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Jude/32356-02.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Jude/32356-02.htm
deleted file mode 100644
index dc5d4aec02..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Jude/32356-02.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-Jude:
-Thank you. Here is your reward.
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Jude/32356-02a.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Jude/32356-02a.htm
deleted file mode 100644
index 2e2b1cb5a9..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Jude/32356-02a.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-Jude:
-Oh oh, the treasure... Where did you say it was?
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Jude/Jude.java b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Jude/Jude.java
deleted file mode 100644
index 16eabab786..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Jude/Jude.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Copyright (C) 2004-2015 L2J DataPack
- *
- * This file is part of L2J DataPack.
- *
- * L2J DataPack 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.
- *
- * L2J DataPack 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 hellbound.AI.NPC.Jude;
-
-import hellbound.HellboundEngine;
-import ai.npc.AbstractNpcAI;
-
-import com.l2jserver.gameserver.model.actor.L2Npc;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
-
-/**
- * Jude AI.
- * @author DS
- */
-public final class Jude extends AbstractNpcAI
-{
- // NPCs
- private static final int JUDE = 32356;
- private static final int NATIVE_TREASURE = 9684;
- private static final int RING_OF_WIND_MASTERY = 9677;
-
- public Jude()
- {
- super(Jude.class.getSimpleName(), "hellbound/AI/NPC");
- addFirstTalkId(JUDE);
- addStartNpc(JUDE);
- addTalkId(JUDE);
- }
-
- @Override
- public final String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
- {
- if ("TreasureSacks".equalsIgnoreCase(event))
- {
- if (HellboundEngine.getInstance().getLevel() == 3)
- {
- if (getQuestItemsCount(player, NATIVE_TREASURE) >= 40)
- {
- takeItems(player, NATIVE_TREASURE, 40);
- giveItems(player, RING_OF_WIND_MASTERY, 1);
- return "32356-02.htm";
- }
- }
- return "32356-02a.htm";
- }
- return super.onAdvEvent(event, npc, player);
- }
-
- @Override
- public final String onFirstTalk(L2Npc npc, L2PcInstance player)
- {
- switch (HellboundEngine.getInstance().getLevel())
- {
- case 0:
- case 1:
- case 2:
- return "32356-01.htm";
- case 3:
- case 4:
- return "32356-01c.htm";
- case 5:
- return "32356-01a.htm";
- default:
- return "32356-01b.htm";
- }
- }
-}
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kanaf/32346-01.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kanaf/32346-01.htm
deleted file mode 100644
index b619f10c49..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kanaf/32346-01.htm
+++ /dev/null
@@ -1,5 +0,0 @@
-Kanaf:
-We have information that the chief guard is hiding somewhere in the town. He has the key to the sculpture that can take you to the entrance of the Steel Citadel. To enter the Steel Citadel, you must first find him!
-
-
-
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kanaf/32346-02.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kanaf/32346-02.htm
deleted file mode 100644
index b64614eecd..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kanaf/32346-02.htm
+++ /dev/null
@@ -1,5 +0,0 @@
-Kanaf:
-According to our intelligence sources, Torture Expert Amaskari has been guarding the prisoners. However, even if some of our comrades have collaborated with him rather than face torture, we can't let them become human shields to protect him!
-
-
-
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kanaf/32346-03.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kanaf/32346-03.htm
deleted file mode 100644
index 4be1651d18..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kanaf/32346-03.htm
+++ /dev/null
@@ -1,5 +0,0 @@
-Kanaf:
-It is said that there is a passage to a workshop somewhere in the Steel Citadel where evil creatures are being manufactured for the war. Supposedly you need something very rare in order to enter it, and no one we know has yet been able to do so.
-
-
-
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kanaf/32346.html b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kanaf/32346.html
deleted file mode 100644
index e45dfcfa4c..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kanaf/32346.html
+++ /dev/null
@@ -1,8 +0,0 @@
-Kanaf:
-Shh! Please be still. Over there is the old town, which is the only entrance to the Steel Citadel. It is used as a prison camp for Native captives.
-Some time ago, when the Steel Citadel's defenses were temporarily weakened, we attacked the town in an attempt to rescue the captives. However, the enemy was still too strong, and many of us were killed or wounded.
-And our comrades in the town still thirst for their freedom!
-
-
-
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kanaf/Kanaf.java b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kanaf/Kanaf.java
deleted file mode 100644
index 53303b2f4e..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kanaf/Kanaf.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (C) 2004-2015 L2J DataPack
- *
- * This file is part of L2J DataPack.
- *
- * L2J DataPack 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.
- *
- * L2J DataPack 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 hellbound.AI.NPC.Kanaf;
-
-import ai.npc.AbstractNpcAI;
-
-import com.l2jserver.gameserver.model.actor.L2Npc;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
-
-/**
- * Kanaf AI.
- * @author GKR
- */
-public final class Kanaf extends AbstractNpcAI
-{
- // NPCs
- private static final int KANAF = 32346;
-
- public Kanaf()
- {
- super(Kanaf.class.getSimpleName(), "hellbound/AI/NPC");
- addStartNpc(KANAF);
- addTalkId(KANAF);
- addFirstTalkId(KANAF);
- }
-
- @Override
- public final String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
- {
- if (event.equals("info"))
- {
- return "32346-0" + getRandom(1, 3) + ".htm";
- }
- return super.onAdvEvent(event, npc, player);
- }
-}
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kief/32354-01.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kief/32354-01.htm
deleted file mode 100644
index e03d5c14c2..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kief/32354-01.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-Kief:
-Wh-wh-who are you? Do not approach me!!!!
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kief/32354-01a.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kief/32354-01a.htm
deleted file mode 100644
index 85fc0ece43..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kief/32354-01a.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-Kief
-Have you come to save us? Then I must ask you for a favor. In order to move about this island, you need Darion's permission. If you don't have it, there is no place here that you will be able to go. Help us, please!
-
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kief/32354-01b.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kief/32354-01b.htm
deleted file mode 100644
index 06e0d5326a..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kief/32354-01b.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-Kief:
-Due to the newcomers from the continent, Darion's military power has been weakened. But it is rumored that they are attempting to alter the Magic Fields.
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kief/32354-01c.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kief/32354-01c.htm
deleted file mode 100644
index 78df0c3af4..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kief/32354-01c.htm
+++ /dev/null
@@ -1,7 +0,0 @@
-Kief:
-In the Battered Lands live monsters created by Beleth's dark magic. Just before they die, it is possible to use this magic bottle to obtain their Life Force, which contains the original magical energy used to create them. Take it and capture the Chimeras' Life Force, then return to me. The Ivory Tower magicians will undoubtedly pay a high price for those Life Forces, even the dim ones. Of course, a Contained Life Force would be even better...
-
-
-
-
-
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kief/32354-01d.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kief/32354-01d.htm
deleted file mode 100644
index 8c0d458cf4..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kief/32354-01d.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-Kief:
-We finally returned to our home. I'm so happy!
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kief/32354-01e.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kief/32354-01e.htm
deleted file mode 100644
index cafa32d1fe..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kief/32354-01e.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-Kief:
-There is a recent rumor that the First Generation Seer appears in the Ancient Temple Remnants. I don't know if it's true, since I haven't seen it myself. Do you think it's possible?
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kief/32354-01f.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kief/32354-01f.htm
deleted file mode 100644
index fa87ecc815..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kief/32354-01f.htm
+++ /dev/null
@@ -1,5 +0,0 @@
-Kief:
-Thanks to your help, the resistance is steadily gaining ground. Thank you!
-I must tell you one more thing, however. Though their numbers have been greatly decreased, the monsters created by Beleth's magic still roam the Battered Lands. If you use a special item when those creatures are on the brink of death, you can obtain their life force, which contains that primal magic power. This Magic Bottle is the item you need.
-
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kief/32354-10.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kief/32354-10.htm
deleted file mode 100644
index 5f25559900..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kief/32354-10.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-Kief:
-Thank you. Your support is greatly appreciated by the natives who suffer in Hellbound.
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kief/32354-10a.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kief/32354-10a.htm
deleted file mode 100644
index 3364a8bfbd..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kief/32354-10a.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-Kief:
-I just can't find Darion's Badges.
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kief/32354-11a.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kief/32354-11a.htm
deleted file mode 100644
index 5f83e7c4e9..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kief/32354-11a.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-Kief:
-Thank you! Your support was a great help in expelling Beleth from this place.
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kief/32354-11b.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kief/32354-11b.htm
deleted file mode 100644
index f63622c767..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kief/32354-11b.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-Kief:
-I am sorry, but you don't have anything.
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kief/32354-11c.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kief/32354-11c.htm
deleted file mode 100644
index 8dca27fe8a..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kief/32354-11c.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-Kief:
-Thank you. Your support was a great help in expelling Beleth from this place.
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kief/32354-11d.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kief/32354-11d.htm
deleted file mode 100644
index e78c936e6f..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kief/32354-11d.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-Kief:
-I'm sorry, but you don't have anything.
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kief/32354-11e.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kief/32354-11e.htm
deleted file mode 100644
index 8dca27fe8a..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kief/32354-11e.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-Kief:
-Thank you. Your support was a great help in expelling Beleth from this place.
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kief/32354-11f.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kief/32354-11f.htm
deleted file mode 100644
index ea57eaed07..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kief/32354-11f.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-Kief:
-I am sorry, but you do not have anything.
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kief/32354-11g.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kief/32354-11g.htm
deleted file mode 100644
index a416279927..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kief/32354-11g.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-Kief:
-This magical bottle was created by the magicians of the Ivory Tower, who are frequent visitors to Hellbound. It was designed to be used against the monsters of the Battered Lands. Those creatures possess powerful magic, but if they become physically weakened, you can use the bottle to capture their magic power. Remember, they must be weakened first! Nevertheless, I think it is a risk worth running. The Ivory Tower magicians are eager to research these magical spirits ? these creatures may have been failures, but they were still created by Beleth, after all, and their magic is still powerful. Will you attempt to collect some of these magical spirits? If so, I will be happpy to provide you with this magical bottle for just 20 Scorpion Poison Stingers. I wish I could give it to you for free, but since I must pay the Ivory Tower magicians for it, I'm afraid I must charge a small fee.
-
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kief/32354-11h.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kief/32354-11h.htm
deleted file mode 100644
index 56f4ee9fab..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kief/32354-11h.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-Kief:
-Here it is.
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kief/32354-11i.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kief/32354-11i.htm
deleted file mode 100644
index eea2af5803..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kief/32354-11i.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-Kief:
-I'm sorry, but you don't have enough.
-
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kief/Kief.java b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kief/Kief.java
deleted file mode 100644
index a91fd89c0d..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Kief/Kief.java
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- * Copyright (C) 2004-2015 L2J DataPack
- *
- * This file is part of L2J DataPack.
- *
- * L2J DataPack 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.
- *
- * L2J DataPack 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 hellbound.AI.NPC.Kief;
-
-import hellbound.HellboundEngine;
-import ai.npc.AbstractNpcAI;
-
-import com.l2jserver.gameserver.model.actor.L2Npc;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
-
-/**
- * Kief AI.
- * @author DS
- */
-public final class Kief extends AbstractNpcAI
-{
- // NPCs
- private static final int KIEF = 32354;
- // Items
- private static final int BOTTLE = 9672; // Magic Bottle
- private static final int DARION_BADGE = 9674; // Darion's Badge
- private static final int DIM_LIFE_FORCE = 9680; // Dim Life Force
- private static final int LIFE_FORCE = 9681; // Life Force
- private static final int CONTAINED_LIFE_FORCE = 9682; // Contained Life Force
- private static final int STINGER = 10012; // Scorpion Poison Stinger
-
- public Kief()
- {
- super(Kief.class.getSimpleName(), "hellbound/AI/NPC");
- addFirstTalkId(KIEF);
- addStartNpc(KIEF);
- addTalkId(KIEF);
- }
-
- @Override
- public final String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
- {
- String htmltext = null;
- switch (event)
- {
- case "Badges":
- {
- switch (HellboundEngine.getInstance().getLevel())
- {
- case 2:
- case 3:
- {
- if (hasQuestItems(player, DARION_BADGE))
- {
- HellboundEngine.getInstance().updateTrust((int) getQuestItemsCount(player, DARION_BADGE) * 10, true);
- takeItems(player, DARION_BADGE, -1);
- return "32354-10.htm";
- }
- break;
- }
- default:
- {
- htmltext = "32354-10a.htm";
- break;
- }
- }
- break;
- }
- case "Bottle":
- {
- if (HellboundEngine.getInstance().getLevel() >= 7)
- {
- if (getQuestItemsCount(player, STINGER) >= 20)
- {
- takeItems(player, STINGER, 20);
- giveItems(player, BOTTLE, 1);
- htmltext = "32354-11h.htm";
- }
- else
- {
- htmltext = "32354-11i.htm";
- }
- }
- break;
- }
- case "dlf":
- {
- if (HellboundEngine.getInstance().getLevel() == 7)
- {
- if (hasQuestItems(player, DIM_LIFE_FORCE))
- {
- HellboundEngine.getInstance().updateTrust((int) getQuestItemsCount(player, DIM_LIFE_FORCE) * 20, true);
- takeItems(player, DIM_LIFE_FORCE, -1);
- htmltext = "32354-11a.htm";
- }
- else
- {
- htmltext = "32354-11b.htm";
- }
- }
- break;
- }
- case "lf":
- {
- if (HellboundEngine.getInstance().getLevel() == 7)
- {
- if (hasQuestItems(player, LIFE_FORCE))
- {
- HellboundEngine.getInstance().updateTrust((int) getQuestItemsCount(player, LIFE_FORCE) * 80, true);
- takeItems(player, LIFE_FORCE, -1);
- htmltext = "32354-11c.htm";
- }
- else
- {
- htmltext = "32354-11d.htm";
- }
- }
- break;
- }
- case "clf":
- {
- if (HellboundEngine.getInstance().getLevel() == 7)
- {
- if (hasQuestItems(player, CONTAINED_LIFE_FORCE))
- {
- HellboundEngine.getInstance().updateTrust((int) getQuestItemsCount(player, CONTAINED_LIFE_FORCE) * 200, true);
- takeItems(player, CONTAINED_LIFE_FORCE, -1);
- htmltext = "32354-11e.htm";
- }
- else
- {
- htmltext = "32354-11f.htm";
- }
- }
- break;
- }
- }
- return htmltext;
- }
-
- @Override
- public final String onFirstTalk(L2Npc npc, L2PcInstance player)
- {
- switch (HellboundEngine.getInstance().getLevel())
- {
- case 1:
- return "32354-01.htm";
- case 2:
- case 3:
- return "32354-01a.htm";
- case 4:
- return "32354-01e.htm";
- case 5:
- return "32354-01d.htm";
- case 6:
- return "32354-01b.htm";
- case 7:
- return "32354-01c.htm";
- default:
- return "32354-01f.htm";
- }
- }
-}
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Natives/32357-01.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Natives/32357-01.htm
deleted file mode 100644
index 2af13a8956..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Natives/32357-01.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-Native Slave:
-Please save me! You must have Darion's Badge to leave this place. Any native who attempts to leave the Outer Gate without permission is immediately put to death. Will you give me a Badge? I beg of you...
-
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Natives/32357-01a.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Natives/32357-01a.htm
deleted file mode 100644
index 2843f67a57..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Natives/32357-01a.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-Native Slave:
-How did you get in here? The castle gates are closed... A patrol will be here any minute. Run!
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Natives/32357-01b.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Natives/32357-01b.htm
deleted file mode 100644
index d7d6d1482f..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Natives/32357-01b.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-Native Slave:
-To my mind, Hellbound Island has earned its freedom. My thanks!
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Natives/32357-02.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Natives/32357-02.htm
deleted file mode 100644
index ca0b901713..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Natives/32357-02.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-Native Slave:
-Thank you. Now I can leave here!
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Natives/32357-02a.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Natives/32357-02a.htm
deleted file mode 100644
index 708d14d472..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Natives/32357-02a.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-Native Slave:
-You do not have enough Badges from Darion. You need a minimum of 5 if you want to leave this palace.
-
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Natives/32362-01.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Natives/32362-01.htm
deleted file mode 100644
index c374f02f78..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Natives/32362-01.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-Hellbound Native:
-Welcome!
-Thanks to your efforts, we were able to get enough food from the Caravan in order to survive. Now, let's combine our strength and show those Steel Citadel bastards a thing or two!
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Natives/32362.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Natives/32362.htm
deleted file mode 100644
index 05cc232322..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Natives/32362.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-Hellbound Native:
-Ugh...food...give me some food...
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Natives/32363-01.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Natives/32363-01.htm
deleted file mode 100644
index 27f057b97e..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Natives/32363-01.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-Hellbound Resistance:
-Thank you!
-I fully understand my comrades' resentment of outsiders, but the fact remains that we are far too weak to confront the Steel Citadel head on without help. But if we can help defeat the Demons in any way, no matter how trivial, we will do it!
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Natives/32363.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Natives/32363.htm
deleted file mode 100644
index fdc0155b12..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Natives/32363.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-Hellbound Resistance:
-Our comrades barely escaped with their lives are are now suffering from the effects of their wounds and a lack of food. We need help!
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Natives/32364-01.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Natives/32364-01.htm
deleted file mode 100644
index 926ca32227..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Natives/32364-01.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-Hellbound Traitor:
-Ha ha! You have the Mark of Betrayal. Ah, but unless I have 10 of them, no deal. Bring them all and I will open this door right away.
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Natives/32364-02.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Natives/32364-02.htm
deleted file mode 100644
index 7e4b8b7ee2..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Natives/32364-02.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-Hellbound Traitor:
-I need 10 Marks of Betrayal. You don't even have one!
-Don't try to trick me -- just get what I asked for!
-
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Natives/Natives.java b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Natives/Natives.java
deleted file mode 100644
index cef310ea61..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Natives/Natives.java
+++ /dev/null
@@ -1,190 +0,0 @@
-/*
- * Copyright (C) 2004-2015 L2J DataPack
- *
- * This file is part of L2J DataPack.
- *
- * L2J DataPack 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.
- *
- * L2J DataPack 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 hellbound.AI.NPC.Natives;
-
-import hellbound.HellboundEngine;
-import ai.npc.AbstractNpcAI;
-
-import com.l2jserver.gameserver.data.xml.impl.DoorData;
-import com.l2jserver.gameserver.enums.ChatType;
-import com.l2jserver.gameserver.model.actor.L2Npc;
-import com.l2jserver.gameserver.model.actor.instance.L2DoorInstance;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
-import com.l2jserver.gameserver.network.NpcStringId;
-
-/**
- * Natives AI.
- * @author DS, GKR
- */
-public final class Natives extends AbstractNpcAI
-{
- // NPCs
- private static final int NATIVE = 32362;
- private static final int INSURGENT = 32363;
- private static final int TRAITOR = 32364;
- private static final int INCASTLE = 32357;
- // Items
- private static final int MARK_OF_BETRAYAL = 9676; // Mark of Betrayal
- private static final int BADGES = 9674; // Darion's Badge
- // Misc
- private static final int[] DOORS =
- {
- 19250003,
- 19250004,
- };
-
- public Natives()
- {
- super(Natives.class.getSimpleName(), "hellbound/AI/NPC");
- addFirstTalkId(NATIVE);
- addFirstTalkId(INSURGENT);
- addFirstTalkId(INCASTLE);
- addStartNpc(TRAITOR);
- addStartNpc(INCASTLE);
- addTalkId(TRAITOR);
- addTalkId(INCASTLE);
- addSpawnId(NATIVE);
- }
-
- @Override
- public final String onFirstTalk(L2Npc npc, L2PcInstance player)
- {
- String htmltext = null;
- final int hellboundLevel = HellboundEngine.getInstance().getLevel();
- switch (npc.getId())
- {
- case NATIVE:
- {
- htmltext = hellboundLevel > 5 ? "32362-01.htm" : "32362.htm";
- break;
- }
- case INSURGENT:
- {
- htmltext = hellboundLevel > 5 ? "32363-01.htm" : "32363.htm";
- break;
- }
- case INCASTLE:
- {
- if (hellboundLevel < 9)
- {
- htmltext = "32357-01a.htm";
- }
- else if (hellboundLevel == 9)
- {
- htmltext = npc.isBusy() ? "32357-02.htm" : "32357-01.htm";
- }
- else
- {
- htmltext = "32357-01b.htm";
- }
- break;
- }
- }
- return htmltext;
- }
-
- @Override
- public final String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
- {
- String htmltext = null;
- if (npc.getId() == TRAITOR)
- {
- if (event.equalsIgnoreCase("open_door"))
- {
- if (getQuestItemsCount(player, MARK_OF_BETRAYAL) >= 10)
- {
- takeItems(player, MARK_OF_BETRAYAL, 10);
- broadcastNpcSay(npc, ChatType.NPC_GENERAL, NpcStringId.ALRIGHT_NOW_LEODAS_IS_YOURS);
- HellboundEngine.getInstance().updateTrust(-50, true);
-
- for (int doorId : DOORS)
- {
- L2DoorInstance door = DoorData.getInstance().getDoor(doorId);
- if (door != null)
- {
- door.openMe();
- }
- }
-
- cancelQuestTimers("close_doors");
- startQuestTimer("close_doors", 1800000, npc, player); // 30 min
- }
- else if (hasQuestItems(player, MARK_OF_BETRAYAL))
- {
- htmltext = "32364-01.htm";
- }
- else
- {
- htmltext = "32364-02.htm";
- }
- }
- else if (event.equalsIgnoreCase("close_doors"))
- {
- for (int doorId : DOORS)
- {
- L2DoorInstance door = DoorData.getInstance().getDoor(doorId);
- if (door != null)
- {
- door.closeMe();
- }
- }
- }
- }
- else if ((npc.getId() == NATIVE) && event.equalsIgnoreCase("hungry_death"))
- {
- broadcastNpcSay(npc, ChatType.NPC_GENERAL, NpcStringId.HUN_HUNGRY);
- npc.doDie(null);
- }
- else if (npc.getId() == INCASTLE)
- {
- if (event.equalsIgnoreCase("FreeSlaves"))
- {
- if (getQuestItemsCount(player, BADGES) >= 5)
- {
- takeItems(player, BADGES, 5);
- npc.setBusy(true); // Prevent Native from take items more, than once
- HellboundEngine.getInstance().updateTrust(100, true);
- htmltext = "32357-02.htm";
- startQuestTimer("delete_me", 3000, npc, null);
- }
- else
- {
- htmltext = "32357-02a.htm";
- }
- }
- else if (event.equalsIgnoreCase("delete_me"))
- {
- npc.setBusy(false); // TODO: Does it really need?
- npc.deleteMe();
- npc.getSpawn().decreaseCount(npc);
- }
- }
- return htmltext;
- }
-
- @Override
- public final String onSpawn(L2Npc npc)
- {
- if ((npc.getId() == NATIVE) && (HellboundEngine.getInstance().getLevel() < 6))
- {
- startQuestTimer("hungry_death", 600000, npc, null);
- }
- return super.onSpawn(npc);
- }
-}
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Quarry/32299-01.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Quarry/32299-01.htm
deleted file mode 100644
index eca815473f..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Quarry/32299-01.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-Quarry Slave:
-Who...who are you?
-
-
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Quarry/32299-02.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Quarry/32299-02.htm
deleted file mode 100644
index 3fd98049ec..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Quarry/32299-02.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-Quarry Slave:
-Have you come to rescue us? Please save us!
-
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Quarry/32299.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Quarry/32299.htm
deleted file mode 100644
index 0f61ed7123..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Quarry/32299.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-Quarry Slave:
-Who are you? Leave me alone...
-
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Quarry/Quarry.java b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Quarry/Quarry.java
deleted file mode 100644
index d9b0171010..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Quarry/Quarry.java
+++ /dev/null
@@ -1,191 +0,0 @@
-/*
- * Copyright (C) 2004-2015 L2J DataPack
- *
- * This file is part of L2J DataPack.
- *
- * L2J DataPack 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.
- *
- * L2J DataPack 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 hellbound.AI.NPC.Quarry;
-
-import hellbound.HellboundEngine;
-import ai.npc.AbstractNpcAI;
-
-import com.l2jserver.Config;
-import com.l2jserver.gameserver.ai.CtrlIntention;
-import com.l2jserver.gameserver.enums.ChatType;
-import com.l2jserver.gameserver.instancemanager.ZoneManager;
-import com.l2jserver.gameserver.model.actor.L2Attackable;
-import com.l2jserver.gameserver.model.actor.L2Character;
-import com.l2jserver.gameserver.model.actor.L2Npc;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
-import com.l2jserver.gameserver.model.actor.instance.L2QuestGuardInstance;
-import com.l2jserver.gameserver.model.holders.ItemChanceHolder;
-import com.l2jserver.gameserver.model.zone.L2ZoneType;
-import com.l2jserver.gameserver.network.NpcStringId;
-
-/**
- * Quarry AI.
- * @author DS, GKR
- */
-public final class Quarry extends AbstractNpcAI
-{
- // NPCs
- private static final int SLAVE = 32299;
- // Items
- protected static final ItemChanceHolder[] DROP_LIST =
- {
- new ItemChanceHolder(9628, 261), // Leonard
- new ItemChanceHolder(9630, 175), // Orichalcum
- new ItemChanceHolder(9629, 145), // Adamantine
- new ItemChanceHolder(1876, 6667), // Mithril ore
- new ItemChanceHolder(1877, 1333), // Adamantine nugget
- new ItemChanceHolder(1874, 2222), // Oriharukon ore
- };
- // Zone
- private static final int ZONE = 40107;
- // Misc
- private static final int TRUST = 50;
-
- public Quarry()
- {
- super(Quarry.class.getSimpleName(), "hellbound/AI/NPC");
- addSpawnId(SLAVE);
- addFirstTalkId(SLAVE);
- addStartNpc(SLAVE);
- addTalkId(SLAVE);
- addKillId(SLAVE);
- addEnterZoneId(ZONE);
- }
-
- @Override
- public final String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
- {
- String htmltext = null;
- switch (event)
- {
- case "FollowMe":
- {
- npc.getAI().setIntention(CtrlIntention.AI_INTENTION_FOLLOW, player);
- npc.setTarget(player);
- npc.setAutoAttackable(true);
- npc.setRHandId(9136);
- npc.setWalking();
-
- if (getQuestTimer("TIME_LIMIT", npc, null) == null)
- {
- startQuestTimer("TIME_LIMIT", 900000, npc, null); // 15 min limit for save
- }
- htmltext = "32299-02.htm";
- break;
- }
- case "TIME_LIMIT":
- {
- for (L2ZoneType zone : ZoneManager.getInstance().getZones(npc))
- {
- if (zone.getId() == 40108)
- {
- npc.setTarget(null);
- npc.getAI().setIntention(CtrlIntention.AI_INTENTION_ACTIVE);
- npc.setAutoAttackable(false);
- npc.setRHandId(0);
- npc.teleToLocation(npc.getSpawn().getLocation());
- return null;
- }
- }
- broadcastNpcSay(npc, ChatType.NPC_GENERAL, NpcStringId.HUN_HUNGRY);
- npc.doDie(npc);
- break;
- }
- case "DECAY":
- {
- if ((npc != null) && !npc.isDead())
- {
- if (npc.getTarget().isPlayer())
- {
- for (ItemChanceHolder item : DROP_LIST)
- {
- if (getRandom(10000) < item.getChance())
- {
- npc.dropItem((L2PcInstance) npc.getTarget(), item.getId(), (int) (item.getCount() * Config.RATE_QUEST_DROP));
- break;
- }
- }
- }
- npc.setAutoAttackable(false);
- npc.deleteMe();
- npc.getSpawn().decreaseCount(npc);
- HellboundEngine.getInstance().updateTrust(TRUST, true);
- }
- }
- }
-
- return htmltext;
- }
-
- @Override
- public final String onSpawn(L2Npc npc)
- {
- npc.setAutoAttackable(false);
- if (npc instanceof L2QuestGuardInstance)
- {
- ((L2QuestGuardInstance) npc).setPassive(true);
- }
- return super.onSpawn(npc);
- }
-
- @Override
- public final String onFirstTalk(L2Npc npc, L2PcInstance player)
- {
- if (HellboundEngine.getInstance().getLevel() != 5)
- {
- return "32299.htm";
- }
- return "32299-01.htm";
- }
-
- @Override
- public final String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
- {
- npc.setAutoAttackable(false);
- return super.onKill(npc, killer, isSummon);
- }
-
- @Override
- public final String onEnterZone(L2Character character, L2ZoneType zone)
- {
- if (character.isAttackable())
- {
- final L2Attackable npc = (L2Attackable) character;
- if (npc.getId() == SLAVE)
- {
- if (!npc.isDead() && !npc.isDecayed() && (npc.getAI().getIntention() == CtrlIntention.AI_INTENTION_FOLLOW))
- {
- if (HellboundEngine.getInstance().getLevel() == 5)
- {
- startQuestTimer("DECAY", 1000, npc, null);
- try
- {
- broadcastNpcSay(npc, ChatType.NPC_GENERAL, NpcStringId.THANK_YOU_FOR_THE_RESCUE_IT_S_A_SMALL_GIFT);
- }
- catch (Exception e)
- {
- //
- }
- }
- }
- }
- }
- return super.onEnterZone(character, zone);
- }
-}
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Shadai/Shadai.java b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Shadai/Shadai.java
deleted file mode 100644
index e65660e827..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Shadai/Shadai.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright (C) 2004-2015 L2J DataPack
- *
- * This file is part of L2J DataPack.
- *
- * L2J DataPack 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.
- *
- * L2J DataPack 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 hellbound.AI.NPC.Shadai;
-
-import ai.npc.AbstractNpcAI;
-
-import com.l2jserver.gameserver.GameTimeController;
-import com.l2jserver.gameserver.model.Location;
-import com.l2jserver.gameserver.model.actor.L2Npc;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
-
-/**
- * Shadai AI.
- * @author GKR
- */
-public final class Shadai extends AbstractNpcAI
-{
- // NPCs
- private static final int SHADAI = 32347;
- // Locations
- private static final Location DAY_COORDS = new Location(16882, 238952, 9776);
- private static final Location NIGHT_COORDS = new Location(9064, 253037, -1928);
-
- public Shadai()
- {
- super(Shadai.class.getSimpleName(), "hellbound/AI/NPC");
- addSpawnId(SHADAI);
- }
-
- @Override
- public final String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
- {
- if (event.equals("VALIDATE_POS") && (npc != null))
- {
- Location coords = DAY_COORDS;
- boolean mustRevalidate = false;
- if ((npc.getX() != NIGHT_COORDS.getX()) && GameTimeController.getInstance().isNight())
- {
- coords = NIGHT_COORDS;
- mustRevalidate = true;
- }
- else if ((npc.getX() != DAY_COORDS.getX()) && !GameTimeController.getInstance().isNight())
- {
- mustRevalidate = true;
- }
-
- if (mustRevalidate)
- {
- npc.getSpawn().setLocation(coords);
- npc.teleToLocation(coords);
- }
- }
- return super.onAdvEvent(event, npc, player);
- }
-
- @Override
- public final String onSpawn(L2Npc npc)
- {
- startQuestTimer("VALIDATE_POS", 60000, npc, null, true);
- return super.onSpawn(npc);
- }
-}
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Solomon/32355-01.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Solomon/32355-01.htm
deleted file mode 100644
index ee8d4a8392..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Solomon/32355-01.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-Solomon:
-Now we have recaptured our nest from the followers of Darion, thanks to the help of those from the mainland. Thank you!
-But we will require a great deal of food to continue the fight. Will you visit Caravan Jude in the Caravan Village and ask him if he would be willing to trade with us in secret?
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Solomon/32355-01a.htm b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Solomon/32355-01a.htm
deleted file mode 100644
index e3024e1a0c..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Solomon/32355-01a.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-Solomon:
-With your help, we have finally begun to establish friendly relations with Caravan. The food we receive from them is a great help to us, and I am confident that sooner or later we will reach the outer gate of Steel Citadel -- after passing the Battered Lands, of course.
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Solomon/Solomon.java b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Solomon/Solomon.java
deleted file mode 100644
index ff2cd8db84..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Solomon/Solomon.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (C) 2004-2015 L2J DataPack
- *
- * This file is part of L2J DataPack.
- *
- * L2J DataPack 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.
- *
- * L2J DataPack 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 hellbound.AI.NPC.Solomon;
-
-import hellbound.HellboundEngine;
-import ai.npc.AbstractNpcAI;
-
-import com.l2jserver.gameserver.model.actor.L2Npc;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
-
-/**
- * Solomon AI.
- * @author DS
- */
-public final class Solomon extends AbstractNpcAI
-{
- // NPCs
- private static final int SOLOMON = 32355;
-
- public Solomon()
- {
- super(Solomon.class.getSimpleName(), "hellbound/AI/NPC");
- addFirstTalkId(SOLOMON);
- }
-
- @Override
- public final String onFirstTalk(L2Npc npc, L2PcInstance player)
- {
- if (HellboundEngine.getInstance().getLevel() == 5)
- {
- return "32355-01.htm";
- }
- else if (HellboundEngine.getInstance().getLevel() > 5)
- {
- return "32355-01a.htm";
- }
- return super.onFirstTalk(npc, player);
- }
-}
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Warpgate/Warpgate-01.html b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Warpgate/Warpgate-01.html
deleted file mode 100644
index 4ecb826203..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Warpgate/Warpgate-01.html
+++ /dev/null
@@ -1,3 +0,0 @@
-Warpgate:
-The Warpgate is not operational. Something seems to be needed to open it.
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Warpgate/Warpgate-02.html b/trunk/dist/game/data/scripts/hellbound/AI/NPC/Warpgate/Warpgate-02.html
deleted file mode 100644
index 2236540584..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NPC/Warpgate/Warpgate-02.html
+++ /dev/null
@@ -1,4 +0,0 @@
-Warpgate:
-The Warpgate is now operational.
-
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/NaiaLock.java b/trunk/dist/game/data/scripts/hellbound/AI/NaiaLock.java
deleted file mode 100644
index a200cefec3..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/NaiaLock.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (C) 2004-2015 L2J DataPack
- *
- * This file is part of L2J DataPack.
- *
- * L2J DataPack 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.
- *
- * L2J DataPack 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 hellbound.AI;
-
-import ai.npc.AbstractNpcAI;
-
-import com.l2jserver.gameserver.model.actor.L2Npc;
-import com.l2jserver.gameserver.model.actor.instance.L2MonsterInstance;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
-
-/**
- * Naia Lock AI.
- * Removes minions after master's death.
- * @author GKR
- */
-public final class NaiaLock extends AbstractNpcAI
-{
- // NPCs
- private static final int LOCK = 18491;
-
- public NaiaLock()
- {
- super(NaiaLock.class.getSimpleName(), "hellbound/AI");
- addKillId(LOCK);
- }
-
- @Override
- public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
- {
- ((L2MonsterInstance) npc).getMinionList().onMasterDie(true);
- return super.onKill(npc, killer, isSummon);
- }
-}
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/OutpostCaptain.java b/trunk/dist/game/data/scripts/hellbound/AI/OutpostCaptain.java
deleted file mode 100644
index 09af1e50fa..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/OutpostCaptain.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright (C) 2004-2015 L2J DataPack
- *
- * This file is part of L2J DataPack.
- *
- * L2J DataPack 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.
- *
- * L2J DataPack 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 hellbound.AI;
-
-import hellbound.HellboundEngine;
-import ai.npc.AbstractNpcAI;
-
-import com.l2jserver.gameserver.data.xml.impl.DoorData;
-import com.l2jserver.gameserver.model.actor.L2Npc;
-import com.l2jserver.gameserver.model.actor.instance.L2DoorInstance;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
-
-/**
- * Outpost Captain's AI.
- * @author DS
- */
-public final class OutpostCaptain extends AbstractNpcAI
-{
- // NPCs
- private static final int CAPTAIN = 18466;
- private static final int[] DEFENDERS =
- {
- 22357, // Enceinte Defender
- 22358, // Enceinte Defender
- };
- private static final int DOORKEEPER = 32351;
-
- public OutpostCaptain()
- {
- super(OutpostCaptain.class.getSimpleName(), "hellbound/AI");
- addKillId(CAPTAIN);
- addSpawnId(CAPTAIN, DOORKEEPER);
- addSpawnId(DEFENDERS);
- }
-
- @Override
- public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
- {
- if (event.equalsIgnoreCase("LEVEL_UP"))
- {
- npc.deleteMe();
- HellboundEngine.getInstance().setLevel(9);
- }
- return super.onAdvEvent(event, npc, player);
- }
-
- @Override
- public final String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
- {
- if (HellboundEngine.getInstance().getLevel() == 8)
- {
- addSpawn(DOORKEEPER, npc.getSpawn().getLocation(), false, 0, false);
- }
- return super.onKill(npc, killer, isSummon);
- }
-
- @Override
- public final String onSpawn(L2Npc npc)
- {
- npc.setIsNoRndWalk(true);
-
- if (npc.getId() == CAPTAIN)
- {
- final L2DoorInstance door = DoorData.getInstance().getDoor(20250001);
- if (door != null)
- {
- door.closeMe();
- }
- }
- else if (npc.getId() == DOORKEEPER)
- {
- startQuestTimer("LEVEL_UP", 3000, npc, null);
- }
- return super.onSpawn(npc);
- }
-}
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/Ranku.java b/trunk/dist/game/data/scripts/hellbound/AI/Ranku.java
deleted file mode 100644
index 7000188034..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/Ranku.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * Copyright (C) 2004-2015 L2J DataPack
- *
- * This file is part of L2J DataPack.
- *
- * L2J DataPack 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.
- *
- * L2J DataPack 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 hellbound.AI;
-
-import java.util.Set;
-import java.util.concurrent.CopyOnWriteArraySet;
-
-import ai.npc.AbstractNpcAI;
-
-import com.l2jserver.gameserver.enums.ChatType;
-import com.l2jserver.gameserver.model.actor.L2Npc;
-import com.l2jserver.gameserver.model.actor.instance.L2MonsterInstance;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
-import com.l2jserver.gameserver.model.skills.Skill;
-import com.l2jserver.gameserver.network.NpcStringId;
-import com.l2jserver.gameserver.util.MinionList;
-
-/**
- * Ranku's AI.
- * @author GKR
- */
-public final class Ranku extends AbstractNpcAI
-{
- // NPCs
- private static final int RANKU = 25542;
- private static final int MINION = 32305;
- private static final int MINION_2 = 25543;
- // Misc
- private static final Set MY_TRACKING_SET = new CopyOnWriteArraySet<>();
-
- public Ranku()
- {
- super(Ranku.class.getSimpleName(), "hellbound/AI");
- addAttackId(RANKU);
- addKillId(RANKU, MINION);
- }
-
- @Override
- public final String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
- {
- if (event.equalsIgnoreCase("checkup") && (npc.getId() == RANKU) && !npc.isDead())
- {
- for (L2MonsterInstance minion : ((L2MonsterInstance) npc).getMinionList().getSpawnedMinions())
- {
- if ((minion != null) && !minion.isDead() && MY_TRACKING_SET.contains(minion.getObjectId()))
- {
- final L2PcInstance[] players = minion.getKnownList().getKnownPlayers().values().toArray(new L2PcInstance[minion.getKnownList().getKnownPlayers().size()]);
- final L2PcInstance killer = players[getRandom(players.length)];
- minion.reduceCurrentHp(minion.getMaxHp() / 100, killer, null);
- }
- }
- startQuestTimer("checkup", 1000, npc, null);
- }
- return super.onAdvEvent(event, npc, player);
- }
-
- @Override
- public String onAttack(L2Npc npc, L2PcInstance attacker, int damage, boolean isSummon, Skill skill)
- {
- if (npc.getId() == RANKU)
- {
- for (L2MonsterInstance minion : ((L2MonsterInstance) npc).getMinionList().getSpawnedMinions())
- {
- if ((minion != null) && !minion.isDead() && !MY_TRACKING_SET.contains(minion.getObjectId()))
- {
- broadcastNpcSay(minion, ChatType.NPC_GENERAL, NpcStringId.DON_T_KILL_ME_PLEASE_SOMETHING_S_STRANGLING_ME);
- startQuestTimer("checkup", 1000, npc, null);
- MY_TRACKING_SET.add(minion.getObjectId());
- }
- }
- }
- return super.onAttack(npc, attacker, damage, isSummon, skill);
- }
-
- @Override
- public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
- {
- if (npc.getId() == MINION)
- {
- if (MY_TRACKING_SET.contains(npc.getObjectId()))
- {
- MY_TRACKING_SET.remove(npc.getObjectId());
- }
-
- final L2MonsterInstance master = ((L2MonsterInstance) npc).getLeader();
- if ((master != null) && !master.isDead())
- {
- L2MonsterInstance minion2 = MinionList.spawnMinion(master, MINION_2);
- minion2.teleToLocation(npc.getLocation());
- }
- }
- else if (npc.getId() == RANKU)
- {
- for (L2MonsterInstance minion : ((L2MonsterInstance) npc).getMinionList().getSpawnedMinions())
- {
- if (MY_TRACKING_SET.contains(minion.getObjectId()))
- {
- MY_TRACKING_SET.remove(minion.getObjectId());
- }
- }
- }
- return super.onKill(npc, killer, isSummon);
- }
-}
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/Slaves.java b/trunk/dist/game/data/scripts/hellbound/AI/Slaves.java
deleted file mode 100644
index cd8a47e345..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/Slaves.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright (C) 2004-2015 L2J DataPack
- *
- * This file is part of L2J DataPack.
- *
- * L2J DataPack 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.
- *
- * L2J DataPack 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 hellbound.AI;
-
-import hellbound.HellboundEngine;
-
-import java.util.List;
-
-import ai.npc.AbstractNpcAI;
-
-import com.l2jserver.gameserver.ai.CtrlIntention;
-import com.l2jserver.gameserver.enums.ChatType;
-import com.l2jserver.gameserver.model.Location;
-import com.l2jserver.gameserver.model.actor.L2Npc;
-import com.l2jserver.gameserver.model.actor.instance.L2MonsterInstance;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
-import com.l2jserver.gameserver.network.NpcStringId;
-import com.l2jserver.gameserver.taskmanager.DecayTaskManager;
-
-/**
- * Hellbound Slaves AI.
- * @author DS
- */
-public final class Slaves extends AbstractNpcAI
-{
- // NPCs
- private static final int[] MASTERS =
- {
- 22320, // Junior Watchman
- 22321, // Junior Summoner
- };
- // Locations
- private static final Location MOVE_TO = new Location(-25451, 252291, -3252, 3500);
- // Misc
- private static final int TRUST_REWARD = 10;
-
- public Slaves()
- {
- super(Slaves.class.getSimpleName(), "hellbound/AI");
- addSpawnId(MASTERS);
- addKillId(MASTERS);
- }
-
- @Override
- public final String onSpawn(L2Npc npc)
- {
- ((L2MonsterInstance) npc).enableMinions(HellboundEngine.getInstance().getLevel() < 5);
- return super.onSpawn(npc);
- }
-
- @Override
- public final String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
- {
- if (((L2MonsterInstance) npc).getMinionList() != null)
- {
- final List slaves = ((L2MonsterInstance) npc).getMinionList().getSpawnedMinions();
- if ((slaves != null) && !slaves.isEmpty())
- {
- for (L2MonsterInstance slave : slaves)
- {
- if ((slave == null) || slave.isDead())
- {
- continue;
- }
- slave.clearAggroList();
- slave.abortAttack();
- slave.abortCast();
- broadcastNpcSay(slave, ChatType.NPC_GENERAL, NpcStringId.THANK_YOU_FOR_SAVING_ME_FROM_THE_CLUTCHES_OF_EVIL);
-
- if ((HellboundEngine.getInstance().getLevel() >= 1) && (HellboundEngine.getInstance().getLevel() <= 2))
- {
- HellboundEngine.getInstance().updateTrust(TRUST_REWARD, false);
- }
- slave.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, MOVE_TO);
- DecayTaskManager.getInstance().add(slave);
- }
- }
- }
- return super.onKill(npc, killer, isSummon);
- }
-}
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/Typhoon.java b/trunk/dist/game/data/scripts/hellbound/AI/Typhoon.java
deleted file mode 100644
index 2859b30334..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/Typhoon.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright (C) 2004-2015 L2J DataPack
- *
- * This file is part of L2J DataPack.
- *
- * L2J DataPack 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.
- *
- * L2J DataPack 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 hellbound.AI;
-
-import ai.npc.AbstractNpcAI;
-
-import com.l2jserver.gameserver.instancemanager.RaidBossSpawnManager;
-import com.l2jserver.gameserver.model.actor.L2Npc;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
-import com.l2jserver.gameserver.model.actor.instance.L2RaidBossInstance;
-import com.l2jserver.gameserver.model.holders.SkillHolder;
-
-/**
- * Typhoon's AI.
- * @author GKR
- */
-public final class Typhoon extends AbstractNpcAI
-{
- // NPCs
- private static final int TYPHOON = 25539;
- // Skills
- private static SkillHolder STORM = new SkillHolder(5434, 1); // Gust
-
- public Typhoon()
- {
- super(Typhoon.class.getSimpleName(), "hellbound/AI");
- addAggroRangeEnterId(TYPHOON);
- addSpawnId(TYPHOON);
-
- final L2RaidBossInstance boss = RaidBossSpawnManager.getInstance().getBosses().get(TYPHOON);
- if (boss != null)
- {
- onSpawn(boss);
- }
- }
-
- @Override
- public final String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
- {
- if (event.equalsIgnoreCase("CAST") && (npc != null) && !npc.isDead())
- {
- npc.doSimultaneousCast(STORM.getSkill());
- startQuestTimer("CAST", 5000, npc, null);
- }
- return super.onAdvEvent(event, npc, player);
- }
-
- @Override
- public String onAggroRangeEnter(L2Npc npc, L2PcInstance player, boolean isSummon)
- {
- npc.doSimultaneousCast(STORM.getSkill());
- return super.onAggroRangeEnter(npc, player, isSummon);
- }
-
- @Override
- public final String onSpawn(L2Npc npc)
- {
- startQuestTimer("CAST", 5000, npc, null);
- return super.onSpawn(npc);
- }
-}
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/Zones/AnomicFoundry/AnomicFoundry.java b/trunk/dist/game/data/scripts/hellbound/AI/Zones/AnomicFoundry/AnomicFoundry.java
deleted file mode 100644
index 407cee18cb..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/Zones/AnomicFoundry/AnomicFoundry.java
+++ /dev/null
@@ -1,268 +0,0 @@
-/*
- * Copyright (C) 2004-2015 L2J DataPack
- *
- * This file is part of L2J DataPack.
- *
- * L2J DataPack 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.
- *
- * L2J DataPack 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 hellbound.AI.Zones.AnomicFoundry;
-
-import hellbound.HellboundEngine;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import ai.npc.AbstractNpcAI;
-
-import com.l2jserver.gameserver.ai.CtrlIntention;
-import com.l2jserver.gameserver.datatables.SpawnTable;
-import com.l2jserver.gameserver.enums.ChatType;
-import com.l2jserver.gameserver.model.L2Spawn;
-import com.l2jserver.gameserver.model.Location;
-import com.l2jserver.gameserver.model.actor.L2Attackable;
-import com.l2jserver.gameserver.model.actor.L2Npc;
-import com.l2jserver.gameserver.model.actor.instance.L2MonsterInstance;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
-import com.l2jserver.gameserver.model.skills.Skill;
-import com.l2jserver.gameserver.network.NpcStringId;
-
-/**
- * Anomic Foundry.
- * @author GKR
- */
-public final class AnomicFoundry extends AbstractNpcAI
-{
- // NPCs
- private static int LABORER = 22396;
- private static int FOREMAN = 22397;
- private static int LESSER_EVIL = 22398;
- private static int GREATER_EVIL = 22399;
- // Misc
- private final Map _atkIndex = new HashMap<>();
- // npcId, x, y, z, heading, max count
- //@formatter:off
- private static int[][] SPAWNS =
- {
- {LESSER_EVIL, 27883, 248613, -3209, -13248, 5},
- {LESSER_EVIL, 26142, 246442, -3216, 7064, 5},
- {LESSER_EVIL, 27335, 246217, -3668, -7992, 5},
- {LESSER_EVIL, 28486, 245913, -3698, 0, 10},
- {GREATER_EVIL, 28684, 244118, -3700, -22560, 10},
- };
- //@formatter:on
-
- private int respawnTime = 60000;
- private final int respawnMin = 20000;
- private final int respawnMax = 300000;
-
- private final int[] _spawned =
- {
- 0,
- 0,
- 0,
- 0,
- 0
- };
-
- public AnomicFoundry()
- {
- super(AnomicFoundry.class.getSimpleName(), "hellbound/AI/Zones");
- addAggroRangeEnterId(LABORER);
- addAttackId(LABORER);
- addKillId(LABORER, LESSER_EVIL, GREATER_EVIL);
- addSpawnId(LABORER, LESSER_EVIL, GREATER_EVIL);
- addTeleportId(LABORER, LESSER_EVIL, GREATER_EVIL);
- startQuestTimer("make_spawn_1", respawnTime, null, null);
- }
-
- @Override
- public final String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
- {
- if (event.equalsIgnoreCase("make_spawn_1"))
- {
- if (HellboundEngine.getInstance().getLevel() >= 10)
- {
- int idx = getRandom(3);
- if (_spawned[idx] < SPAWNS[idx][5])
- {
- addSpawn(SPAWNS[idx][0], SPAWNS[idx][1], SPAWNS[idx][2], SPAWNS[idx][3], SPAWNS[idx][4], false, 0, false);
- respawnTime += 10000;
- }
- startQuestTimer("make_spawn_1", respawnTime, null, null);
- }
- }
- else if (event.equalsIgnoreCase("make_spawn_2"))
- {
- if (_spawned[4] < SPAWNS[4][5])
- {
- addSpawn(SPAWNS[4][0], SPAWNS[4][1], SPAWNS[4][2], SPAWNS[4][3], SPAWNS[4][4], false, 0, false);
- }
- }
- else if (event.equalsIgnoreCase("return_laborer"))
- {
- if ((npc != null) && !npc.isDead())
- {
- ((L2Attackable) npc).returnHome();
- }
- }
- else if (event.equalsIgnoreCase("reset_respawn_time"))
- {
- respawnTime = 60000;
- }
- return super.onAdvEvent(event, npc, player);
- }
-
- @Override
- public String onAggroRangeEnter(L2Npc npc, L2PcInstance player, boolean isSummon)
- {
- if (getRandom(10000) < 2000)
- {
- requestHelp(npc, player, 500, FOREMAN);
- requestHelp(npc, player, 500, LESSER_EVIL);
- requestHelp(npc, player, 500, GREATER_EVIL);
- }
-
- return super.onAggroRangeEnter(npc, player, isSummon);
- }
-
- @Override
- public String onAttack(L2Npc npc, L2PcInstance attacker, int damage, boolean isSummon, Skill skill)
- {
- int atkIndex = _atkIndex.containsKey(npc.getObjectId()) ? _atkIndex.get(npc.getObjectId()) : 0;
- if (atkIndex == 0)
- {
- broadcastNpcSay(npc, ChatType.NPC_GENERAL, NpcStringId.ENEMY_INVASION_HURRY_UP);
- cancelQuestTimer("return_laborer", npc, null);
- startQuestTimer("return_laborer", 60000, npc, null);
-
- if (respawnTime > respawnMin)
- {
- respawnTime -= 5000;
- }
- else if ((respawnTime <= respawnMin) && (getQuestTimer("reset_respawn_time", null, null) == null))
- {
- startQuestTimer("reset_respawn_time", 600000, null, null);
- }
- }
-
- if (getRandom(10000) < 2000)
- {
- atkIndex++;
- _atkIndex.put(npc.getObjectId(), atkIndex);
- requestHelp(npc, attacker, 1000 * atkIndex, FOREMAN);
- requestHelp(npc, attacker, 1000 * atkIndex, LESSER_EVIL);
- requestHelp(npc, attacker, 1000 * atkIndex, GREATER_EVIL);
- if (getRandom(10) < 1)
- {
- npc.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, new Location((npc.getX() + getRandom(-800, 800)), (npc.getY() + getRandom(-800, 800)), npc.getZ(), npc.getHeading()));
- }
- }
- return super.onAttack(npc, attacker, damage, isSummon, skill);
- }
-
- @Override
- public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
- {
- if (getSpawnGroup(npc) >= 0)
- {
- _spawned[getSpawnGroup(npc)]--;
- SpawnTable.getInstance().deleteSpawn(npc.getSpawn(), false);
- }
- else if (npc.getId() == LABORER)
- {
- if (getRandom(10000) < 8000)
- {
- broadcastNpcSay(npc, ChatType.NPC_GENERAL, NpcStringId.PROCESS_SHOULDN_T_BE_DELAYED_BECAUSE_OF_ME);
- if (respawnTime < respawnMax)
- {
- respawnTime += 10000;
- }
- else if ((respawnTime >= respawnMax) && (getQuestTimer("reset_respawn_time", null, null) == null))
- {
- startQuestTimer("reset_respawn_time", 600000, null, null);
- }
- }
- _atkIndex.remove(npc.getObjectId());
- }
-
- return super.onKill(npc, killer, isSummon);
- }
-
- @Override
- public final String onSpawn(L2Npc npc)
- {
- SpawnTable.getInstance().addNewSpawn(npc.getSpawn(), false);
- if (getSpawnGroup(npc) >= 0)
- {
- _spawned[getSpawnGroup(npc)]++;
- }
-
- if (npc.getId() == LABORER)
- {
- npc.setIsNoRndWalk(true);
- }
- return super.onSpawn(npc);
- }
-
- @Override
- protected void onTeleport(L2Npc npc)
- {
- if ((getSpawnGroup(npc) >= 0) && (getSpawnGroup(npc) <= 2))
- {
- _spawned[getSpawnGroup(npc)]--;
- SpawnTable.getInstance().deleteSpawn(npc.getSpawn(), false);
- npc.scheduleDespawn(100);
- if (_spawned[3] < SPAWNS[3][5])
- {
- addSpawn(SPAWNS[3][0], SPAWNS[3][1], SPAWNS[3][2], SPAWNS[3][3], SPAWNS[3][4], false, 0, false);
- }
- }
- else if (getSpawnGroup(npc) == 3)
- {
- startQuestTimer("make_spawn_2", respawnTime * 2, null, null);
- _spawned[3]--;
- SpawnTable.getInstance().deleteSpawn(npc.getSpawn(), false);
- npc.scheduleDespawn(100);
- }
- }
-
- private static int getSpawnGroup(L2Npc npc)
- {
- final int coordX = npc.getSpawn().getX();
- final int coordY = npc.getSpawn().getY();
- final int npcId = npc.getId();
-
- for (int i = 0; i < 5; i++)
- {
- if ((SPAWNS[i][0] == npcId) && (SPAWNS[i][1] == coordX) && (SPAWNS[i][2] == coordY))
- {
- return i;
- }
- }
- return -1;
- }
-
- // Zoey76: TODO: This should be done with onFactionCall(..)
- private static void requestHelp(L2Npc requester, L2PcInstance agressor, int range, int helperId)
- {
- for (L2Spawn spawn : SpawnTable.getInstance().getSpawns(helperId))
- {
- final L2MonsterInstance monster = (L2MonsterInstance) spawn.getLastSpawn();
- if ((monster != null) && (agressor != null) && !monster.isDead() && monster.isInsideRadius(requester, range, true, false) && !agressor.isDead())
- {
- monster.addDamageHate(agressor, 0, 1000);
- }
- }
- }
-}
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/Zones/BaseTower/32301-01.htm b/trunk/dist/game/data/scripts/hellbound/AI/Zones/BaseTower/32301-01.htm
deleted file mode 100644
index a49391d9d3..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/Zones/BaseTower/32301-01.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-Kendal:
-(It feels creepy for some reason.)
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/Zones/BaseTower/32301-02.htm b/trunk/dist/game/data/scripts/hellbound/AI/Zones/BaseTower/32301-02.htm
deleted file mode 100644
index ce9c6203cc..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/Zones/BaseTower/32301-02.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-Kendal:
-It was really horrible. They were tortured, abused, killed. That's how it was. Beleth is evil, and so is Darion. Hmph. Go teach them a lesson!
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/Zones/BaseTower/BaseTower.java b/trunk/dist/game/data/scripts/hellbound/AI/Zones/BaseTower/BaseTower.java
deleted file mode 100644
index 181549d158..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/Zones/BaseTower/BaseTower.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * Copyright (C) 2004-2015 L2J DataPack
- *
- * This file is part of L2J DataPack.
- *
- * L2J DataPack 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.
- *
- * L2J DataPack 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 hellbound.AI.Zones.BaseTower;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import ai.npc.AbstractNpcAI;
-
-import com.l2jserver.gameserver.data.xml.impl.DoorData;
-import com.l2jserver.gameserver.model.actor.L2Npc;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
-import com.l2jserver.gameserver.model.base.ClassId;
-import com.l2jserver.gameserver.model.holders.SkillHolder;
-
-/**
- * Base Tower.
- * @author GKR
- */
-public final class BaseTower extends AbstractNpcAI
-{
- // NPCs
- private static final int GUZEN = 22362;
- private static final int KENDAL = 32301;
- private static final int BODY_DESTROYER = 22363;
- // Skills
- private static final SkillHolder DEATH_WORD = new SkillHolder(5256, 1);
- // Misc
- private static final Map BODY_DESTROYER_TARGET_LIST = new HashMap<>();
-
- public BaseTower()
- {
- super(BaseTower.class.getSimpleName(), "hellbound/AI/Zones");
- addKillId(GUZEN);
- addKillId(BODY_DESTROYER);
- addFirstTalkId(KENDAL);
- addAggroRangeEnterId(BODY_DESTROYER);
- }
-
- @Override
- public final String onFirstTalk(L2Npc npc, L2PcInstance player)
- {
- final ClassId classId = player.getClassId();
- if (classId.equalsOrChildOf(ClassId.HELL_KNIGHT) || classId.equalsOrChildOf(ClassId.SOULTAKER))
- {
- return "32301-02.htm";
- }
- return "32301-01.htm";
- }
-
- @Override
- public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
- {
- if (event.equalsIgnoreCase("CLOSE"))
- {
- DoorData.getInstance().getDoor(20260004).closeMe();
- }
- return super.onAdvEvent(event, npc, player);
- }
-
- @Override
- public String onAggroRangeEnter(L2Npc npc, L2PcInstance player, boolean isSummon)
- {
- if (!BODY_DESTROYER_TARGET_LIST.containsKey(npc.getObjectId()))
- {
- BODY_DESTROYER_TARGET_LIST.put(npc.getObjectId(), player);
- npc.setTarget(player);
- npc.doSimultaneousCast(DEATH_WORD.getSkill());
- }
- return super.onAggroRangeEnter(npc, player, isSummon);
- }
-
- @Override
- public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
- {
- switch (npc.getId())
- {
- case GUZEN:
- {
- // Should Kendal be despawned before Guzen's spawn? Or it will be crowd of Kendal's
- addSpawn(KENDAL, npc.getSpawn().getLocation(), false, npc.getSpawn().getRespawnDelay(), false);
- DoorData.getInstance().getDoor(20260003).openMe();
- DoorData.getInstance().getDoor(20260004).openMe();
- startQuestTimer("CLOSE", 60000, npc, null, false);
- break;
- }
- case BODY_DESTROYER:
- {
- if (BODY_DESTROYER_TARGET_LIST.containsKey(npc.getObjectId()))
- {
- final L2PcInstance pl = BODY_DESTROYER_TARGET_LIST.get(npc.getObjectId());
- if ((pl != null) && pl.isOnline() && !pl.isDead())
- {
- pl.stopSkillEffects(true, DEATH_WORD.getSkillId());
- }
- BODY_DESTROYER_TARGET_LIST.remove(npc.getObjectId());
- }
- break;
- }
- }
- return super.onKill(npc, killer, isSummon);
- }
-}
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TowerOfInfinitum/32302-02.htm b/trunk/dist/game/data/scripts/hellbound/AI/Zones/TowerOfInfinitum/32302-02.htm
deleted file mode 100644
index d0f58e55be..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TowerOfInfinitum/32302-02.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-Jerian:
-I cannot smell any Devil's blood, or it's too far away.
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TowerOfInfinitum/32302-02a.htm b/trunk/dist/game/data/scripts/hellbound/AI/Zones/TowerOfInfinitum/32302-02a.htm
deleted file mode 100644
index a398cdb66c..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TowerOfInfinitum/32302-02a.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-Jerian:
-You are not a party leader. Lead a group into battle, or just send your party leader to talk to me.
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TowerOfInfinitum/32302-02b.htm b/trunk/dist/game/data/scripts/hellbound/AI/Zones/TowerOfInfinitum/32302-02b.htm
deleted file mode 100644
index a1a8e032a8..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TowerOfInfinitum/32302-02b.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-Jerian:
-This foe is still too powerful. Come back when he is weakened.
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TowerOfInfinitum/TowerOfInfinitum.java b/trunk/dist/game/data/scripts/hellbound/AI/Zones/TowerOfInfinitum/TowerOfInfinitum.java
deleted file mode 100644
index 964ec068ff..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TowerOfInfinitum/TowerOfInfinitum.java
+++ /dev/null
@@ -1,179 +0,0 @@
-/*
- * Copyright (C) 2004-2015 L2J DataPack
- *
- * This file is part of L2J DataPack.
- *
- * L2J DataPack 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.
- *
- * L2J DataPack 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 hellbound.AI.Zones.TowerOfInfinitum;
-
-import hellbound.HellboundEngine;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import ai.npc.AbstractNpcAI;
-
-import com.l2jserver.gameserver.model.L2Party;
-import com.l2jserver.gameserver.model.Location;
-import com.l2jserver.gameserver.model.actor.L2Npc;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
-import com.l2jserver.gameserver.util.Util;
-
-/**
- * Tower Of Infinitum.
- * @author GKR
- */
-public final class TowerOfInfinitum extends AbstractNpcAI
-{
- // NPCs
- private static final int JERIAN = 32302;
- private static final int GK_FIRST = 32745;
- private static final int GK_LAST = 32752;
- // Skills
- private static final int PASS_SKILL = 2357;
- // Misc
- private static final Map TELE_COORDS = new HashMap<>();
- static
- {
- TELE_COORDS.put(32745, new Location[]
- {
- new Location(-22208, 277122, -13376),
- null
- });
- TELE_COORDS.put(32746, new Location[]
- {
- new Location(-22208, 277106, -11648),
- new Location(-22208, 277074, -15040)
- });
- TELE_COORDS.put(32747, new Location[]
- {
- new Location(-22208, 277120, -9920),
- new Location(-22208, 277120, -13376)
- });
- TELE_COORDS.put(32748, new Location[]
- {
- new Location(-19024, 277126, -8256),
- new Location(-22208, 277106, -11648)
- });
- TELE_COORDS.put(32749, new Location[]
- {
- new Location(-19024, 277106, -9920),
- new Location(-22208, 277122, -9920)
- });
- TELE_COORDS.put(32750, new Location[]
- {
- new Location(-19008, 277100, -11648),
- new Location(-19024, 277122, -8256)
- });
- TELE_COORDS.put(32751, new Location[]
- {
- new Location(-19008, 277100, -13376),
- new Location(-19008, 277106, -9920)
- });
- TELE_COORDS.put(32752, new Location[]
- {
- new Location(14602, 283179, -7500),
- new Location(-19008, 277100, -11648)
- });
- }
-
- public TowerOfInfinitum()
- {
- super(TowerOfInfinitum.class.getSimpleName(), "hellbound/AI/Zones");
- addStartNpc(JERIAN);
- addTalkId(JERIAN);
-
- for (int i = GK_FIRST; i <= GK_LAST; i++)
- {
- addStartNpc(i);
- addTalkId(i);
- }
- }
-
- private static final Location ENTER_LOCATION = new Location(-22204, 277056, -15023);
-
- @Override
- public final String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
- {
- String htmltext = event;
- final int npcId = npc.getId();
-
- if (event.equalsIgnoreCase("enter") && (npcId == JERIAN))
- {
- if (HellboundEngine.getInstance().getLevel() >= 11)
- {
- L2Party party = player.getParty();
- if ((party != null) && (party.getLeaderObjectId() == player.getObjectId()))
- {
- for (L2PcInstance partyMember : party.getMembers())
- {
- if (!Util.checkIfInRange(300, partyMember, npc, true) || !partyMember.isAffectedBySkill(PASS_SKILL))
- {
- return "32302-02.htm";
- }
- }
- for (L2PcInstance partyMember : party.getMembers())
- {
- partyMember.teleToLocation(ENTER_LOCATION, true);
- }
- htmltext = null;
- }
- else
- {
- htmltext = "32302-02a.htm";
- }
- }
- else
- {
- htmltext = "32302-02b.htm";
- }
- }
- else if ((event.equalsIgnoreCase("up") || event.equalsIgnoreCase("down")) && (npcId >= GK_FIRST) && (npcId <= GK_LAST))
- {
- final int direction = event.equalsIgnoreCase("up") ? 0 : 1;
- final L2Party party = player.getParty();
-
- if (party == null)
- {
- htmltext = "gk-noparty.htm";
- }
- else if (!party.isLeader(player))
- {
- htmltext = "gk-noreq.htm";
- }
- else
- {
- for (L2PcInstance partyMember : party.getMembers())
- {
- if (!Util.checkIfInRange(1000, partyMember, npc, false) || (Math.abs(partyMember.getZ() - npc.getZ()) > 100))
- {
- return "gk-noreq.htm";
- }
- }
-
- final Location tele = TELE_COORDS.get(npcId)[direction];
- if (tele != null)
- {
- for (L2PcInstance partyMember : party.getMembers())
- {
- partyMember.teleToLocation(tele, true);
- }
- }
- htmltext = null;
- }
- }
- return htmltext;
- }
-}
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TowerOfInfinitum/gk-noparty.htm b/trunk/dist/game/data/scripts/hellbound/AI/Zones/TowerOfInfinitum/gk-noparty.htm
deleted file mode 100644
index 11404ccc12..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TowerOfInfinitum/gk-noparty.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-Teleport Device:
-The teleport device is not working because you're not a party member.
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TowerOfInfinitum/gk-noreq.htm b/trunk/dist/game/data/scripts/hellbound/AI/Zones/TowerOfInfinitum/gk-noreq.htm
deleted file mode 100644
index dca6147dd1..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TowerOfInfinitum/gk-noreq.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-Teleport Device:
-The teleport device does not work because you're not a party leader or a party member is too far away.
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TowerOfNaia/18492-01.htm b/trunk/dist/game/data/scripts/hellbound/AI/Zones/TowerOfNaia/18492-01.htm
deleted file mode 100644
index e9fba5da70..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TowerOfNaia/18492-01.htm
+++ /dev/null
@@ -1,6 +0,0 @@
-Control Device:
-You see a very complex machine standing in the middle of the room. Its multi-colored controls feature a number of symbols, glyphs, and pictures.
-One bright red button stands out among the rest...
-
-
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TowerOfNaia/18492-02.htm b/trunk/dist/game/data/scripts/hellbound/AI/Zones/TowerOfNaia/18492-02.htm
deleted file mode 100644
index 0173cb47ee..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TowerOfNaia/18492-02.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-Control Device:
-It looks like a very complicated and elaborate machine, but you see no moving parts. Perhaps it is broken.
-(Time is needed to reactivate it. Please wait a moment.)
-
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TowerOfNaia/18492-05.htm b/trunk/dist/game/data/scripts/hellbound/AI/Zones/TowerOfNaia/18492-05.htm
deleted file mode 100644
index 07aba01944..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TowerOfNaia/18492-05.htm
+++ /dev/null
@@ -1,6 +0,0 @@
-Controller:
-With a loud noise, a series of bright green lights emanate from the image representing the pillar, and a powerful energy vortex forms nearby.
-It appears as though you may now enter the Tower of Naia.
-(Only one party can enter at a time.)
-
-
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TowerOfNaia/32370-03a.htm b/trunk/dist/game/data/scripts/hellbound/AI/Zones/TowerOfNaia/32370-03a.htm
deleted file mode 100644
index d16b620c4d..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TowerOfNaia/32370-03a.htm
+++ /dev/null
@@ -1,8 +0,0 @@
-Old Dwarven Ghost:
-The room behind me is...a storage area for magical energy...extracted by Beleth...from Hellbound Isle... It is Core Naia...
-Nature spirits...that once inhabited... the air, the earth and even living things...were trapped in this place for a long, long time... They mutated...as they tried to...escape.
-They still possess their elemental nature...fire, water, wind and earth...and they exist separately...
-But they are now interconnected... When they sense danger...they join together in...a powerful spiritual body...
-They are extremely powerful now...difficult to defeat...
-
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TowerOfNaia/32370-03b.htm b/trunk/dist/game/data/scripts/hellbound/AI/Zones/TowerOfNaia/32370-03b.htm
deleted file mode 100644
index d4b39beb95..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TowerOfNaia/32370-03b.htm
+++ /dev/null
@@ -1,6 +0,0 @@
-Old Dwarven Ghost:
-One existence in Core Naia... a collective body of numerous nature spirits... Its name is... Epidos...
-It creates small creatures...
-When you see...a strange creature in the room...do not kill it...unless you can withstand the fury of Epidos...
-(Before facing the Raid Boss Epidos, it is recommended you have a party of at least 27 characters. Epidos possesses water, fire, wind and earth attributes.)
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TowerOfNaia/TowerOfNaia.java b/trunk/dist/game/data/scripts/hellbound/AI/Zones/TowerOfNaia/TowerOfNaia.java
deleted file mode 100644
index 42d10a58cc..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TowerOfNaia/TowerOfNaia.java
+++ /dev/null
@@ -1,967 +0,0 @@
-/*
- * Copyright (C) 2004-2015 L2J DataPack
- *
- * This file is part of L2J DataPack.
- *
- * L2J DataPack 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.
- *
- * L2J DataPack 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 hellbound.AI.Zones.TowerOfNaia;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.CopyOnWriteArrayList;
-
-import ai.npc.AbstractNpcAI;
-
-import com.l2jserver.gameserver.ThreadPoolManager;
-import com.l2jserver.gameserver.ai.CtrlIntention;
-import com.l2jserver.gameserver.data.xml.impl.DoorData;
-import com.l2jserver.gameserver.datatables.SkillData;
-import com.l2jserver.gameserver.enums.ChatType;
-import com.l2jserver.gameserver.instancemanager.GlobalVariablesManager;
-import com.l2jserver.gameserver.instancemanager.ZoneManager;
-import com.l2jserver.gameserver.model.L2Party;
-import com.l2jserver.gameserver.model.Location;
-import com.l2jserver.gameserver.model.actor.L2Npc;
-import com.l2jserver.gameserver.model.actor.instance.L2MonsterInstance;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
-import com.l2jserver.gameserver.model.skills.Skill;
-import com.l2jserver.gameserver.model.zone.L2ZoneType;
-import com.l2jserver.gameserver.network.NpcStringId;
-import com.l2jserver.gameserver.network.SystemMessageId;
-import com.l2jserver.gameserver.util.MinionList;
-import com.l2jserver.gameserver.util.Util;
-
-/**
- * Tower Of Naia.
- * @author GKR
- */
-public final class TowerOfNaia extends AbstractNpcAI
-{
- // Challenge states
- private static final int STATE_SPORE_CHALLENGE_IN_PROGRESS = 1;
- private static final int STATE_SPORE_CHALLENGE_SUCCESSFULL = 2;
- private static final int STATE_SPORE_IDLE_TOO_LONG = 3;
-
- // Some constants
- private static final int SELF_DESPAWN_LIMIT = 600; // Challenge discontinues after 600 self-despawns by timer
- private static final int ELEMENT_INDEX_LIMIT = 120; // Epidos spawns when index reaches 120 points
-
- private static final int LOCK = 18491;
- private static final int CONTROLLER = 18492;
- private static final int ROOM_MANAGER_FIRST = 18494;
- private static final int ROOM_MANAGER_LAST = 18505;
- private static final int MUTATED_ELPY = 25604;
- private static final int SPORE_BASIC = 25613;
- private static final int SPORE_FIRE = 25605;
- private static final int SPORE_WATER = 25606;
- private static final int SPORE_WIND = 25607;
- private static final int SPORE_EARTH = 25608;
- private static final int DWARVEN_GHOST = 32370;
- private static final int[] EPIDOSES =
- {
- 25610,
- 25609,
- 25612,
- 25611
- }; // Order is important!
- private static final int[] TOWER_MONSTERS =
- {
- 18490,
- 22393,
- 22394,
- 22395,
- 22411,
- 22412,
- 22413,
- 22439,
- 22440,
- 22441,
- 22442
- };
- private static final int[] ELEMENTS =
- {
- 25605,
- 25606,
- 25607,
- 25608
- };
- private static final int[] OPPOSITE_ELEMENTS =
- {
- 25606,
- 25605,
- 25608,
- 25607
- };
- private static final String[] ELEMENTS_NAME =
- {
- "Fire",
- "Water",
- "Wind",
- "Earth"
- };
- //@formatter:off
- private static final int[][] SPORES_MOVE_POINTS =
- {
- {-46080, 246368, -14183},
- {-44816, 246368, -14183},
- {-44224, 247440, -14184},
- {-44896, 248464, -14183},
- {-46064, 248544, -14183},
- {-46720, 247424, -14183},
- };
- private static final int[][] SPORES_MERGE_POSITION =
- {
- {-45488, 246768, -14183},
- {-44767, 247419, -14183},
- {-46207, 247417, -14183},
- {-45462, 248174, -14183},
- };
- //@formatter:on
- private static final NpcStringId[] SPORES_NPCSTRING_ID =
- {
- NpcStringId.IT_S_S1,
- NpcStringId.S1_IS_STRONG,
- NpcStringId.IT_S_ALWAYS_S1,
- NpcStringId.S1_WON_T_DO
- };
-
- private static Map DOORS = new HashMap<>();
- private static Map ZONES = new HashMap<>();
- private static Map SPAWNS = new HashMap<>();
-
- private L2MonsterInstance _lock;
- private final L2Npc _controller;
- private int _counter;
- private int _despawnedSporesCount;
- private final int[] _indexCount =
- {
- 0,
- 0
- };
- private int _challengeState;
- private int _winIndex;
-
- private final Map _activeRooms = new HashMap<>();
- private final Map> _spawns = new HashMap<>();
- private final CopyOnWriteArrayList _sporeSpawn = new CopyOnWriteArrayList<>();
- static
- {
- // Format: entrance_door, exit_door
- DOORS.put(18494, new int[]
- {
- 18250001,
- 18250002
- });
- DOORS.put(18495, new int[]
- {
- 18250003,
- 18250004
- });
- DOORS.put(18496, new int[]
- {
- 18250005,
- 18250006
- });
- DOORS.put(18497, new int[]
- {
- 18250007,
- 18250008
- });
- DOORS.put(18498, new int[]
- {
- 18250009,
- 18250010
- });
- DOORS.put(18499, new int[]
- {
- 18250011,
- 18250101
- });
- DOORS.put(18500, new int[]
- {
- 18250013,
- 18250014
- });
- DOORS.put(18501, new int[]
- {
- 18250015,
- 18250102
- });
- DOORS.put(18502, new int[]
- {
- 18250017,
- 18250018
- });
- DOORS.put(18503, new int[]
- {
- 18250019,
- 18250103
- });
- DOORS.put(18504, new int[]
- {
- 18250021,
- 18250022
- });
- DOORS.put(18505, new int[]
- {
- 18250023,
- 18250024
- });
-
- ZONES.put(18494, 200020);
- ZONES.put(18495, 200021);
- ZONES.put(18496, 200022);
- ZONES.put(18497, 200023);
- ZONES.put(18498, 200024);
- ZONES.put(18499, 200025);
- ZONES.put(18500, 200026);
- ZONES.put(18501, 200027);
- ZONES.put(18502, 200028);
- ZONES.put(18503, 200029);
- ZONES.put(18504, 200030);
- ZONES.put(18505, 200031);
- //@formatter:off
- SPAWNS.put(18494, new int[][]
- {
- {22393, -46371, 246400, -9120, 0},
- {22394, -46435, 245830, -9120, 0},
- {22394, -46536, 246275, -9120, 0},
- {22393, -46239, 245996, -9120, 0},
- {22394, -46229, 246347, -9120, 0},
- {22394, -46019, 246198, -9120, 0},
- });
- SPAWNS.put(18495, new int[][]
- {
- {22439, -48146, 249597, -9124, -16280},
- {22439, -48144, 248711, -9124, 16368},
- {22439, -48704, 249597, -9104, -16380},
- {22439, -49219, 249596, -9104, -16400},
- {22439, -49715, 249601, -9104, -16360},
- {22439, -49714, 248696, -9104, 15932},
- {22439, -49225, 248710, -9104, 16512},
- {22439, -48705, 248708, -9104, 16576},
- });
- SPAWNS.put(18496, new int[][]
- {
- {22441, -51176, 246055, -9984, 0},
- {22441, -51699, 246190, -9984, 0},
- {22442, -52060, 245956, -9984, 0},
- {22442, -51565, 246433, -9984, 0},
- });
- SPAWNS.put(18497, new int[][]
- {
- {22440, -49754, 243866, -9968, -16328},
- {22440, -49754, 242940, -9968, 16336},
- {22440, -48733, 243858, -9968, -16208},
- {22440, -48745, 242936, -9968, 16320},
- {22440, -49264, 242946, -9968, 16312},
- {22440, -49268, 243869, -9968, -16448},
- {22440, -48186, 242934, -9968, 16576},
- {22440, -48185, 243855, -9968, -16448},
- });
- SPAWNS.put(18498, new int[][]
- {
- {22411, -46355, 246375, -9984, 0},
- {22411, -46167, 246160, -9984, 0},
- {22393, -45952, 245748, -9984, 0},
- {22394, -46428, 246254, -9984, 0},
- {22393, -46490, 245871, -9984, 0},
- {22394, -45877, 246309, -9984, 0},
- });
- SPAWNS.put(18499, new int[][]
- {
- {22395, -48730, 248067, -9984, 0},
- {22395, -49112, 248250, -9984, 0},
- });
- SPAWNS.put(18500, new int[][]
- {
- {22393, -51954, 246475, -10848, 0},
- {22394, -51421, 246512, -10848, 0},
- {22394, -51404, 245951, -10848, 0},
- {22393, -51913, 246206, -10848, 0},
- {22394, -51663, 245979, -10848, 0},
- {22394, -51969, 245809, -10848, 0},
- {22412, -51259, 246357, -10848, 0},
- });
- SPAWNS.put(18501, new int[][]
- {
- {22395, -48856, 243949, -10848, 0},
- {22395, -49144, 244190, -10848, 0},
- });
- SPAWNS.put(18502, new int[][]
- {
- {22441, -46471, 246135, -11704, 0},
- {22441, -46449, 245997, -11704, 0},
- {22441, -46235, 246187, -11704, 0},
- {22441, -46513, 246326, -11704, 0},
- {22441, -45889, 246313, -11704, 0},
- });
- SPAWNS.put(18503, new int[][]
- {
- {22395, -49067, 248050, -11712, 0},
- {22395, -48957, 248223, -11712, 0},
- });
- SPAWNS.put(18504, new int[][]
- {
- {22413, -51748, 246138, -12568, 0},
- {22413, -51279, 246200, -12568, 0},
- {22413, -51787, 246594, -12568, 0},
- {22413, -51892, 246544, -12568, 0},
- {22413, -51500, 245781, -12568, 0},
- {22413, -51941, 246045, -12568, 0},
- });
- SPAWNS.put(18505, new int[][]
- {
- {18490, -48238, 243347, -13376, 0},
- {18490, -48462, 244022, -13376, 0},
- {18490, -48050, 244045, -13376, 0},
- {18490, -48229, 243823, -13376, 0},
- {18490, -47871, 243208, -13376, 0},
- {18490, -48255, 243528, -13376, 0},
- {18490, -48461, 243780, -13376, 0},
- {18490, -47983, 243197, -13376, 0},
- {18490, -47841, 243819, -13376, 0},
- {18490, -48646, 243764, -13376, 0},
- {18490, -47806, 243850, -13376, 0},
- {18490, -48456, 243447, -13376, 0},
- });
- //@formatter:on
- }
-
- public TowerOfNaia()
- {
- super(TowerOfNaia.class.getSimpleName(), "hellbound/AI/Zones");
- addFirstTalkId(CONTROLLER);
- addStartNpc(CONTROLLER);
- addStartNpc(DWARVEN_GHOST);
- addTalkId(CONTROLLER);
- addTalkId(DWARVEN_GHOST);
- addAttackId(LOCK);
- addKillId(LOCK);
- addKillId(MUTATED_ELPY);
- addSpawnId(MUTATED_ELPY);
- addKillId(SPORE_BASIC);
- addSpawnId(SPORE_BASIC);
-
- for (int npcId = SPORE_FIRE; npcId <= SPORE_EARTH; npcId++)
- {
- addKillId(npcId);
- addSpawnId(npcId);
- }
-
- for (int npcId = ROOM_MANAGER_FIRST; npcId <= ROOM_MANAGER_LAST; npcId++)
- {
- addFirstTalkId(npcId);
- addTalkId(npcId);
- addStartNpc(npcId);
- initRoom(npcId);
- }
-
- for (int npcId : TOWER_MONSTERS)
- {
- addKillId(npcId);
- }
-
- _lock = (L2MonsterInstance) addSpawn(LOCK, 16409, 244438, 11620, -1048, false, 0, false);
- _controller = addSpawn(CONTROLLER, 16608, 244420, 11620, 31264, false, 0, false);
- _counter = 90;
- _despawnedSporesCount = 0;
- _challengeState = 0;
- _winIndex = -1;
- initSporeChallenge();
- spawnElpy();
- }
-
- @Override
- public final String onFirstTalk(L2Npc npc, L2PcInstance player)
- {
- final int npcId = npc.getId();
-
- if (npcId == CONTROLLER)
- {
- if (_lock == null)
- {
- return "18492-02.htm";
- }
- return "18492-01.htm";
- }
-
- else if ((npcId >= ROOM_MANAGER_FIRST) && (npcId <= ROOM_MANAGER_LAST))
- {
- if (_activeRooms.containsKey(npcId) && !_activeRooms.get(npcId))
- {
- if (player.getParty() == null)
- {
- player.sendPacket(SystemMessageId.YOU_MUST_BE_IN_A_PARTY_IN_ORDER_TO_OPERATE_THE_MACHINE);
- return null;
- }
- return "manager.htm";
- }
- }
- return super.onFirstTalk(npc, player);
- }
-
- @Override
- public final String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
- {
- String htmltext = event;
-
- // Timer. Spawns Naia Lock
- if (event.equalsIgnoreCase("spawn_lock"))
- {
- htmltext = null;
- _lock = (L2MonsterInstance) addSpawn(LOCK, 16409, 244438, 11620, -1048, false, 0, false);
- _counter = 90;
- }
-
- // Timer. Depending of _challengeState despans all spawned spores, or spores, reached assembly point
- else if (event.equalsIgnoreCase("despawn_total"))
- {
- // Spores is not attacked too long - despawn them all, reinit values
- if (_challengeState == STATE_SPORE_IDLE_TOO_LONG)
- {
- for (L2Npc spore : _sporeSpawn)
- {
- if ((spore != null) && !spore.isDead())
- {
- spore.deleteMe();
- }
- }
- _sporeSpawn.clear();
- initSporeChallenge();
- }
- // Spores are moving to assembly point. Despawn all reached, check for reached spores count.
- else if ((_challengeState == STATE_SPORE_CHALLENGE_SUCCESSFULL) && (_winIndex >= 0))
- {
- // Requirements are met, despawn all spores, spawn Epidos
- if ((_despawnedSporesCount >= 10) || _sporeSpawn.isEmpty())
- {
- if (!_sporeSpawn.isEmpty())
- {
- for (L2Npc spore : _sporeSpawn)
- {
- if ((spore != null) && !spore.isDead())
- {
- spore.deleteMe();
- }
- }
- }
- _sporeSpawn.clear();
- _despawnedSporesCount = 0;
- int[] coords = SPORES_MERGE_POSITION[_winIndex];
- addSpawn(EPIDOSES[_winIndex], coords[0], coords[1], coords[2], 0, false, 0, false);
- initSporeChallenge();
- }
- // Requirements aren't met, despawn reached spores
- else
- {
- Iterator it = _sporeSpawn.iterator();
- while (it.hasNext())
- {
- L2Npc spore = it.next();
- if ((spore != null) && !spore.isDead() && (spore.getX() == spore.getSpawn().getX()) && (spore.getY() == spore.getSpawn().getY()))
- {
- spore.deleteMe();
- it.remove();
- _despawnedSporesCount++;
- }
- }
-
- startQuestTimer("despawn_total", 3000, null, null);
- }
- }
- }
-
- if (npc == null)
- {
- return null;
- }
-
- final int npcId = npc.getId();
-
- if (event.equalsIgnoreCase("despawn_spore") && !npc.isDead() && (_challengeState == STATE_SPORE_CHALLENGE_IN_PROGRESS))
- {
- htmltext = null;
-
- _sporeSpawn.remove(npc);
- npc.deleteMe();
-
- if (npcId == SPORE_BASIC)
- {
- spawnRandomSpore();
- spawnRandomSpore();
- }
-
- else if ((npcId >= SPORE_FIRE) && (npcId <= SPORE_EARTH))
- {
- _despawnedSporesCount++;
-
- if (_despawnedSporesCount < SELF_DESPAWN_LIMIT)
- {
- spawnOppositeSpore(npcId);
- }
- else
- {
- _challengeState = STATE_SPORE_IDLE_TOO_LONG;
- startQuestTimer("despawn_total", 60000, null, null);
- }
- }
- }
- else if (event.equalsIgnoreCase("18492-05.htm"))
- {
- if ((_lock == null) || (_lock.getCurrentHp() > (_lock.getMaxHp() / 10)))
- {
- htmltext = null;
- if (_lock != null)
- {
- _lock.deleteMe();
- _lock = null;
- }
- cancelQuestTimers("spawn_lock");
- startQuestTimer("spawn_lock", 300000, null, null);
- npc.setTarget(player);
- npc.doCast(SkillData.getInstance().getSkill(5527, 1));
- }
- }
- else if (event.equalsIgnoreCase("teleport") && (_lock != null))
- {
- htmltext = null;
- L2Party party = player.getParty();
- if (party != null)
- {
- if (Util.checkIfInRange(3000, party.getLeader(), npc, true))
- {
- for (L2PcInstance partyMember : party.getMembers())
- {
- if (Util.checkIfInRange(2000, partyMember, npc, true))
- {
- partyMember.teleToLocation(-47271, 246098, -9120, true);
- }
- }
- _lock.deleteMe();
- _lock = null;
- cancelQuestTimers("spawn_lock");
- startQuestTimer("spawn_lock", 1200000, null, null);
- }
- else
- {
- npc.setTarget(player);
- npc.doCast(SkillData.getInstance().getSkill(5527, 1));
- }
- }
- else
- {
- player.teleToLocation(-47271, 246098, -9120);
- _lock.deleteMe();
- _lock = null;
- cancelQuestTimers("spawn_lock");
- startQuestTimer("spawn_lock", 1200000, null, null);
- }
- }
- else if (event.equalsIgnoreCase("go") && _activeRooms.containsKey(npcId) && !_activeRooms.get(npcId))
- {
- htmltext = null;
- L2Party party = player.getParty();
-
- if (party != null)
- {
- removeForeigners(npcId, party);
- startRoom(npcId);
- ThreadPoolManager.getInstance().scheduleGeneral(new StopRoomTask(npcId), 300000);
- }
- else
- {
- player.sendPacket(SystemMessageId.YOU_MUST_BE_IN_A_PARTY_IN_ORDER_TO_OPERATE_THE_MACHINE);
- }
- }
- return htmltext;
- }
-
- @Override
- public String onAttack(L2Npc npc, L2PcInstance attacker, int damage, boolean isSummon, Skill skill)
- {
- if ((_lock != null) && (npc.getObjectId() == _lock.getObjectId()))
- {
- int remaindedHpPercent = (int) ((npc.getCurrentHp() * 100) / npc.getMaxHp());
-
- if ((remaindedHpPercent <= _counter) && (_controller != null))
- {
- if (_counter == 50)
- {
- MinionList.spawnMinion(_lock, 18493);
- }
-
- else if (_counter == 10)
- {
- MinionList.spawnMinion(_lock, 18493);
- MinionList.spawnMinion(_lock, 18493);
- }
- broadcastNpcSay(_controller, ChatType.NPC_GENERAL, NpcStringId.EMERGENCY_EMERGENCY_THE_OUTER_WALL_IS_WEAKENING_RAPIDLY);
- _counter -= 10;
- }
- }
- return super.onAttack(npc, attacker, damage, isSummon, skill);
- }
-
- @Override
- public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
- {
- int npcId = npc.getId();
-
- if (npcId == LOCK)
- {
- _lock = null;
- cancelQuestTimers("spawn_lock");
- startQuestTimer("spawn_lock", 300000, null, null);
- }
-
- else if (Arrays.binarySearch(TOWER_MONSTERS, npcId) >= 0)
- {
- int managerId = 0;
-
- for (L2ZoneType zone : ZoneManager.getInstance().getZones(npc.getX(), npc.getY(), npc.getZ()))
- {
- if (ZONES.containsValue(zone.getId()))
- {
- for (int i : ZONES.keySet())
- {
- if (ZONES.get(i) == zone.getId())
- {
- managerId = i;
- break;
- }
- }
- }
- }
-
- if ((managerId > 0) && _spawns.containsKey(managerId))
- {
- List spawned = _spawns.get(managerId);
- spawned.remove(npc);
- if (spawned.isEmpty() && DOORS.containsKey(managerId))
- {
- int[] doorList = DOORS.get(managerId);
- DoorData.getInstance().getDoor(doorList[1]).openMe();
- _spawns.remove(managerId);
- }
- }
- }
- else if (npcId == MUTATED_ELPY)
- {
- _challengeState = STATE_SPORE_CHALLENGE_IN_PROGRESS;
- markElpyRespawn();
- DoorData.getInstance().getDoor(18250025).closeMe();
- ZoneManager.getInstance().getZoneById(200100).setEnabled(true);
-
- for (int i = 0; i < 10; i++)
- {
- addSpawn(SPORE_BASIC, -45474, 247450, -13994, 49152, false, 0, false);
- }
- }
- else if ((npcId == SPORE_BASIC) && (_challengeState == STATE_SPORE_CHALLENGE_IN_PROGRESS))
- {
- _sporeSpawn.remove(npc);
- spawnRandomSpore();
- spawnRandomSpore();
- }
- else if ((npcId >= SPORE_FIRE) && (npcId <= SPORE_EARTH) && ((_challengeState == STATE_SPORE_CHALLENGE_IN_PROGRESS) || (_challengeState == STATE_SPORE_CHALLENGE_SUCCESSFULL)))
- {
- _sporeSpawn.remove(npc);
-
- if (_challengeState == STATE_SPORE_CHALLENGE_IN_PROGRESS)
- {
- _despawnedSporesCount--;
- int sporeGroup = getSporeGroup(npcId);
-
- if (sporeGroup >= 0)
- {
- if ((npcId == SPORE_FIRE) || (npcId == SPORE_WIND))
- {
- _indexCount[sporeGroup] += 2;
- }
- else
- {
- _indexCount[sporeGroup] -= 2;
- }
-
- if (_indexCount[Math.abs(sporeGroup - 1)] > 0)
- {
- _indexCount[Math.abs(sporeGroup - 1)]--;
- }
- else if (_indexCount[Math.abs(sporeGroup - 1)] < 0)
- {
- _indexCount[Math.abs(sporeGroup - 1)]++;
- }
-
- if ((Math.abs(_indexCount[sporeGroup]) < ELEMENT_INDEX_LIMIT) && (Math.abs(_indexCount[sporeGroup]) > 0) && ((_indexCount[sporeGroup] % 20) == 0) && (getRandom(100) < 50))
- {
- String el = ELEMENTS_NAME[Arrays.binarySearch(ELEMENTS, npcId)];
- for (L2Npc spore : _sporeSpawn)
- {
- if ((spore != null) && !spore.isDead() && (spore.getId() == npcId))
- {
- broadcastNpcSay(spore, ChatType.NPC_GENERAL, SPORES_NPCSTRING_ID[getRandom(4)], el);
- }
- }
- }
- if (Math.abs(_indexCount[sporeGroup]) < ELEMENT_INDEX_LIMIT)
- {
- if ((((_indexCount[sporeGroup] > 0) && ((npcId == SPORE_FIRE) || (npcId == SPORE_WIND))) || ((_indexCount[sporeGroup] <= 0) && ((npcId == SPORE_WATER) || (npcId == SPORE_EARTH)))) && (getRandom(1000) > 200))
- {
- spawnOppositeSpore(npcId);
- }
- else
- {
- spawnRandomSpore();
- }
- }
- else
- // index value was reached
- {
- _challengeState = STATE_SPORE_CHALLENGE_SUCCESSFULL;
- _despawnedSporesCount = 0;
- _winIndex = Arrays.binarySearch(ELEMENTS, npcId);
- int[] coord = SPORES_MERGE_POSITION[_winIndex];
-
- for (L2Npc spore : _sporeSpawn)
- {
- if ((spore != null) && !spore.isDead())
- {
- moveTo(spore, coord);
- }
- }
-
- startQuestTimer("despawn_total", 3000, null, null);
- }
- }
- }
- }
- return super.onKill(npc, killer, isSummon);
- }
-
- @Override
- public final String onSpawn(L2Npc npc)
- {
- final int npcId = npc.getId();
-
- if (npcId == MUTATED_ELPY)
- {
- DoorData.getInstance().getDoor(18250025).openMe();
- ZoneManager.getInstance().getZoneById(200100).setEnabled(false);
- ZoneManager.getInstance().getZoneById(200101).setEnabled(true);
- ZoneManager.getInstance().getZoneById(200101).setEnabled(false);
- }
- else if (((npcId == SPORE_BASIC) || ((npcId >= SPORE_FIRE) && (npcId <= SPORE_EARTH))) && (_challengeState == STATE_SPORE_CHALLENGE_IN_PROGRESS))
- {
- _sporeSpawn.add(npc);
- npc.setIsRunning(false);
- int[] coord = SPORES_MOVE_POINTS[getRandom(SPORES_MOVE_POINTS.length)];
- npc.getSpawn().setX(coord[0]);
- npc.getSpawn().setY(coord[1]);
- npc.getSpawn().setZ(coord[2]);
- npc.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, new Location(coord[0], coord[1], coord[2], 0));
- startQuestTimer("despawn_spore", 60000, npc, null);
- }
- return super.onSpawn(npc);
- }
-
- private int getSporeGroup(int sporeId)
- {
- int ret;
- switch (sporeId)
- {
- case SPORE_FIRE:
- case SPORE_WATER:
- ret = 0;
- break;
- case SPORE_WIND:
- case SPORE_EARTH:
- ret = 1;
- break;
- default:
- ret = -1;
- }
- return ret;
- }
-
- protected void initRoom(int managerId)
- {
- removeAllPlayers(managerId);
- _activeRooms.put(managerId, false);
-
- if (DOORS.containsKey(managerId))
- {
- int[] doorList = DOORS.get(managerId);
- DoorData.getInstance().getDoor(doorList[0]).openMe();
- DoorData.getInstance().getDoor(doorList[1]).closeMe();
- }
-
- if (_spawns.containsKey(managerId) && (_spawns.get(managerId) != null))
- {
- for (L2Npc npc : _spawns.get(managerId))
- {
- if ((npc != null) && !npc.isDead())
- {
- npc.deleteMe();
- }
- }
-
- _spawns.get(managerId).clear();
- _spawns.remove(managerId);
- }
- }
-
- private void initSporeChallenge()
- {
- _despawnedSporesCount = 0;
- _challengeState = 0;
- _winIndex = -1;
- _indexCount[0] = 0;
- _indexCount[1] = 0;
- ZoneManager.getInstance().getZoneById(200100).setEnabled(false);
- ZoneManager.getInstance().getZoneById(200101).setEnabled(false);
- ZoneManager.getInstance().getZoneById(200101).setEnabled(true);
-
- }
-
- private void markElpyRespawn()
- {
- final long respawnTime = (getRandom(43200, 216000) * 1000) + System.currentTimeMillis();
- GlobalVariablesManager.getInstance().set("elpy_respawn_time", respawnTime);
- }
-
- private int moveTo(L2Npc npc, int[] coords)
- {
- int time = 0;
- if (npc != null)
- {
- double distance = npc.calculateDistance(coords[0], coords[1], coords[2], true, false);
- int heading = Util.calculateHeadingFrom(npc.getX(), npc.getY(), coords[0], coords[1]);
- time = (int) ((distance / npc.getWalkSpeed()) * 1000);
- npc.setIsRunning(false);
- npc.disableCoreAI(true);
- npc.setIsNoRndWalk(true);
- npc.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, new Location(coords[0], coords[1], coords[2], heading));
- npc.getSpawn().setX(coords[0]);
- npc.getSpawn().setY(coords[1]);
- npc.getSpawn().setZ(coords[2]);
- }
- return time == 0 ? 100 : time;
- }
-
- private void spawnElpy()
- {
- final long respawnTime = GlobalVariablesManager.getInstance().getLong("elpy_respawn_time", 0);
- if (respawnTime <= System.currentTimeMillis())
- {
- addSpawn(MUTATED_ELPY, -45474, 247450, -13994, 49152, false, 0, false);
- }
- else
- {
- ThreadPoolManager.getInstance().scheduleGeneral(() -> addSpawn(MUTATED_ELPY, -45474, 247450, -13994, 49152, false, 0, false), respawnTime - System.currentTimeMillis());
- }
- }
-
- private L2Npc spawnRandomSpore()
- {
- return addSpawn(getRandom(SPORE_FIRE, SPORE_EARTH), -45474, 247450, -13994, 49152, false, 0, false);
- }
-
- private L2Npc spawnOppositeSpore(int srcSporeId)
- {
- final int idx = Arrays.binarySearch(ELEMENTS, srcSporeId);
- return idx >= 0 ? addSpawn(OPPOSITE_ELEMENTS[idx], -45474, 247450, -13994, 49152, false, 0, false) : null;
- }
-
- private void startRoom(int managerId)
- {
- _activeRooms.put(managerId, true);
-
- if (DOORS.containsKey(managerId))
- {
- int[] doorList = DOORS.get(managerId);
- DoorData.getInstance().getDoor(doorList[0]).closeMe();
- }
-
- if (SPAWNS.containsKey(managerId))
- {
- int[][] spawnList = SPAWNS.get(managerId);
- List spawned = new ArrayList<>();
- for (int[] spawn : spawnList)
- {
- L2Npc spawnedNpc = addSpawn(spawn[0], spawn[1], spawn[2], spawn[3], spawn[4], false, 0, false);
- spawned.add(spawnedNpc);
- }
- if (!spawned.isEmpty())
- {
- _spawns.put(managerId, spawned);
- }
- }
- }
-
- private void removeForeigners(int managerId, L2Party party)
- {
- if ((party != null) && ZONES.containsKey(managerId) && (ZoneManager.getInstance().getZoneById(ZONES.get(managerId)) != null))
- {
- L2ZoneType zone = ZoneManager.getInstance().getZoneById(ZONES.get(managerId));
- for (L2PcInstance player : zone.getPlayersInside())
- {
- if (player != null)
- {
- L2Party charParty = player.getParty();
- if ((charParty == null) || (charParty.getLeaderObjectId() != party.getLeaderObjectId()))
- {
- player.teleToLocation(16110, 243841, 11616);
- }
- }
- }
- }
- }
-
- private void removeAllPlayers(int managerId)
- {
- if (ZONES.containsKey(managerId) && (ZoneManager.getInstance().getZoneById(ZONES.get(managerId)) != null))
- {
- L2ZoneType zone = ZoneManager.getInstance().getZoneById(ZONES.get(managerId));
- for (L2PcInstance player : zone.getPlayersInside())
- {
- if (player != null)
- {
- player.teleToLocation(16110, 243841, 11616);
- }
- }
- }
- }
-
- private class StopRoomTask implements Runnable
- {
- private final int _managerId;
-
- public StopRoomTask(int managerId)
- {
- _managerId = managerId;
- }
-
- @Override
- public void run()
- {
- initRoom(_managerId);
- }
- }
-}
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TowerOfNaia/manager.htm b/trunk/dist/game/data/scripts/hellbound/AI/Zones/TowerOfNaia/manager.htm
deleted file mode 100644
index 251abc8b1b..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TowerOfNaia/manager.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-Ingenious Contraption:
-You are unable to fathom the purpose for which the machine was built. You do see what looks like a switch. Would you like to flip it?
-
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32344-01.htm b/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32344-01.htm
deleted file mode 100644
index e0eed957c5..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32344-01.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-Spooky Tombstone:
-You see arcane symbols and intricate patterns engraved on the tombstone, which seems to radiate magical power. Between the symbols are carved 5 deep grooves, each of which looks just wide enough to insert a small disc. Interestingly, each groove is lined with a different metal: tin, lead, iron, copper and white gold.
-
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32344-01a.htm b/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32344-01a.htm
deleted file mode 100644
index 7839f85be7..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32344-01a.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-Spooky Tombstone:
-You see arcane symbols and intricate patterns engraved on the tombstone, which seems to radiate magical power. Between the symbols are carved 5 deep grooves, each of which looks just wide enough to insert a small disc. Interestingly, each groove is lined with a different metal: tin, lead, iron, copper and white gold.
-(In order to advance, you must form a party that possesses all of Tully's 5 medals; each member must own a different type.)
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32344-02.htm b/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32344-02.htm
deleted file mode 100644
index 1efbda4b98..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32344-02.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-Spooky Tombstone:
-You don't have enough medals to fill all 5 grooves.
-(In order to advance, you must form a party that possesses all of Tully's 5 medals; each member must own a different type.)
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32344-03.htm b/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32344-03.htm
deleted file mode 100644
index 44e870d929..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32344-03.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-Spooky Tombstone:
-The 5 metal grooves shine with an eery, baleful light.
-(In order to advance, you must form a party that possesses all of Tully's 5 medals; each member must own a different type.)
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32370-01.htm b/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32370-01.htm
deleted file mode 100644
index b5a28dd8a6..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32370-01.htm
+++ /dev/null
@@ -1,8 +0,0 @@
-Old Dwarven Ghost:
-...I am Tully...shielded by my spirit...the defense system of this Steel Citadel is impenetrable...
-You cannot enter...
-You will be killed by the intruder-destruction device...unless... are you willing to help me...?
-
-
-
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32370-01a.htm b/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32370-01a.htm
deleted file mode 100644
index a3baf18024..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32370-01a.htm
+++ /dev/null
@@ -1,7 +0,0 @@
-Old Dwarven Ghost:
-I was...enticed by those devils...and built this castle for them...but their greed did not stop there... They stole my soul and made me their slave forever...
-The body you just destroyed...was only a shell... This castle and I have become one... I cannot die even if I want to...
-My soul is watched by Darion...who resides atop this tower... Please destroy him...so that I... can finally rest in peace...
-
-
-
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32370-01b.htm b/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32370-01b.htm
deleted file mode 100644
index ece9c16965..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32370-01b.htm
+++ /dev/null
@@ -1,7 +0,0 @@
-Old Dwarven Ghost:
-Thank the gods... Finally someone willing to help me...
-I will send you...up the stairs of this tower... That is all I can do for now...
-You will encounter powerful devils...who will try your strength... But unintentionally... some of the devils...may be of help to you...
-Watch out... and increase your strength...in order to survive in this tower...
-
-
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32370-01c.htm b/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32370-01c.htm
deleted file mode 100644
index 7770958bf3..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32370-01c.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-Old Dwarven Ghost:
-I knew it... Then...perish...with my tower...
-
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32370-01d.htm b/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32370-01d.htm
deleted file mode 100644
index c238a41b0d..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32370-01d.htm
+++ /dev/null
@@ -1,7 +0,0 @@
-Old Dwarven Ghost:
-The gravestone...is a result of...my technology.
-It is a portal...designed to transport...personnel and equipment...to a special workshop filled with evil creatures...
-Only those qualified...may use it...
-
-
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32370-01e.htm b/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32370-01e.htm
deleted file mode 100644
index 1a7cb7b612..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32370-01e.htm
+++ /dev/null
@@ -1,6 +0,0 @@
-Old Dwarven Ghost:
-The Tombstone is...a complicated 5-stage mechanism... It has a built-in...safety lock device... To release the device, you need each key... You need 5 small metal medals.
-Those medals...can be found...somewhere in this maze...
-The medal's unique owner recognition device won't allow one person to have more than one medal...so don't go looking for the medals...by yourself...
-
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32370-01f.htm b/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32370-01f.htm
deleted file mode 100644
index 43e1f47099..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32370-01f.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-Old Dwarven Ghost:
-Ah... No... The particle formation... between the targets... If it's too thick... Activating... the gap control device... is like... committing... suicide... In other words... if you aren't properly gathered together... it means... that I can't send you... to where... you wish to go...
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32370-02.htm b/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32370-02.htm
deleted file mode 100644
index fc97b05e79..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32370-02.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-Spirit of an Aged Dwarf:
-Thank you for...releasing my soul... In return...I will teach you the key to my technology...so that you may enter...the Tower of Naia....
-
-
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32370-02a.htm b/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32370-02a.htm
deleted file mode 100644
index e30178ea0b..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32370-02a.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-Old Dwarven Ghost:
-On the upper level...of the sealed Tower of Naia...is a lock that blocks...the only exit...in order to prevent energy from leaking outside...and a control device for the lock...
-
-
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32370-02b.htm b/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32370-02b.htm
deleted file mode 100644
index 242be9663b..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32370-02b.htm
+++ /dev/null
@@ -1,5 +0,0 @@
-Old Dwarven Ghost:
-Because the exterior of this lock...is the super metal Tolecium...it is virtually invicible...to physical attack... However, it is...very sensitive to attribute energy...If it is continually exposed to...energy with nature attributes...its surface will be temporarily weakened... Below 1/10, the different energy intensities...between the exterior...and the interior...may cause a strong...extruding effect.
-If you are lucky...you can take advantage of that effect...to enter the Tower of Naia...
-
-
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32370-02c.htm b/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32370-02c.htm
deleted file mode 100644
index 88fd732568..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32370-02c.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-Old Dwarven Ghost:
-But...the concentrated magical energy...within the lock device...may cause mutations...and abnormalities...
-Strange creatures...for example...
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32370-03.htm b/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32370-03.htm
deleted file mode 100644
index a66ff5fa62..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32370-03.htm
+++ /dev/null
@@ -1,6 +0,0 @@
-Old Dwarven Ghost:
-You're here...
-Dark magic was forced in...and is slowly rotting this place...within the Tower... It has altered it...from my original design... I wish I could help you... I knew you would come here...after overcoming the barriers...
-But you cannot relax yet... The most formidable obstacle still awaits you... Before you face the final trial...listen to this old man's advice, I pray...
-
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32371-01.htm b/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32371-01.htm
deleted file mode 100644
index 05fd395885..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32371-01.htm
+++ /dev/null
@@ -1,5 +0,0 @@
-Complex Machinery:
-You see some very intricate controls, but nothing seems to be functioning at the moment.
-
-
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32371-01a.htm b/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32371-01a.htm
deleted file mode 100644
index 9b34f2ca05..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32371-01a.htm
+++ /dev/null
@@ -1,5 +0,0 @@
-Complex Machinery:
-You see some very intricate controls, but nothing seems to be functioning at the moment.
-
-
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32371-02.htm b/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32371-02.htm
deleted file mode 100644
index cc7200909c..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32371-02.htm
+++ /dev/null
@@ -1,5 +0,0 @@
-Ingenious Contraption:
-You see an array of complex and bewildering equipment.
-One shining button stands out among the rest.
-
-
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32371-03.htm b/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32371-03.htm
deleted file mode 100644
index 6b56ce9f37..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32371-03.htm
+++ /dev/null
@@ -1,5 +0,0 @@
-Complex Machinery:
-The controls suddenly come to life, whirring and shining in various colors.
-One large glowing button particularly stands out from the rest.
-
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32371-03a.htm b/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32371-03a.htm
deleted file mode 100644
index 55fc3a5919..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32371-03a.htm
+++ /dev/null
@@ -1,5 +0,0 @@
-Complex Machinery:
-You were able to successfully identify the nonfunctional part and make some quick repairs to it.
-The controls light up and begin to hum softly. One large glowing button particularly stands out from the rest.
-
-
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32371-04.htm b/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32371-04.htm
deleted file mode 100644
index db9f1ab53e..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32371-04.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-Complex Machinery:
-The controls are still dark and unmovable.
-(You must wait until the device becomes operational before attempting anything else.)
-
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32371-05.htm b/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32371-05.htm
deleted file mode 100644
index 91e33aae6d..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32371-05.htm
+++ /dev/null
@@ -1,5 +0,0 @@
-Ingenious Contraption:
-With a loud noise, the red light on the front of the machine begins to flash on and off.
-(Only characters who do not possess any of Tully's Medals may receive the medal. It may only be received once.)
-
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32372-01.htm b/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32372-01.htm
deleted file mode 100644
index 4431682231..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32372-01.htm
+++ /dev/null
@@ -1,7 +0,0 @@
-Mysterious Agent:
-Ah, Darion's favorite retainer... They overthrew him at the peak of his power -- an accomplishment not to be underestimated.
-My superiors are interested in you. Will you follow me and them?
-
-
-
-
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32372-01a.htm b/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32372-01a.htm
deleted file mode 100644
index f6f81b197a..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32372-01a.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-Mysterious Agent:
-Where is your leader? I am too busy to speak with you commoners...
-(Only the party leader may speak with him.)
-
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32372-01b.htm b/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32372-01b.htm
deleted file mode 100644
index 1915ba4c2d..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32372-01b.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-Mysterious Agent:
-If you wish to have the masters' blesing, you must concentrate. Do not all come here at once, either!
-(Some members of your party are too far away to allow your group to move.)
-
\ No newline at end of file
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32372-02.htm b/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32372-02.htm
deleted file mode 100644
index 156923daf6..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32372-02.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-Mysterious Agent:
-Be welcome, then. Salute the lords behind me politely. Yes, well done... Now then, my masters wish a favor from you. As you are of humble origin and likely unable to understand their words, I will deliver their message.
-
-
diff --git a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32372-02a.htm b/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32372-02a.htm
deleted file mode 100644
index c18caa712c..0000000000
--- a/trunk/dist/game/data/scripts/hellbound/AI/Zones/TullyWorkshop/32372-02a.htm
+++ /dev/null
@@ -1,8 +0,0 @@
-Mysterious Agent:
-It is obvious that only the strongest lords should govern this citadel.
-Although they have already humbled the devils who previously ruled this tower, there is one more obstacle to their victory: that arrogant beast called Darion, Beleth's chief lackey.
-Once he is eliminated, my superiors will be free to become the true masters of this tower.
-Well...heh heh...perhaps just one of the lords...
-