Jelajahi Sumber

Fixing bug preventing NPCs to display dialogs

Reported by: Cresceus

Removed broken AI from quest Hunt of the Golden Ram Mercenary Force
(628).
Added retail like AI for Abercrombie.
Added retail like AI for Selina.

Note: NPCs shouldn't be registered in multiple scripts for "on first
talk" event.
Zoey76 10 tahun lalu
induk
melakukan
07a74c6f5c

+ 0 - 5
L2J_DataPack/dist/game/data/html/default/31556.htm

@@ -1,5 +0,0 @@
-<html><body>Mercenary Medic Selina:<br>
-Hey, you're not my boyfriend! You don't even belong to the Golden Ram Mercenary force! Get away from me!<br>
-If you want to join our force go talk to that rough-looking Orc over there.<br>
-<a action="bypass -h npc_%objectId%_Quest">Quest</a>
-</body></html>

+ 2 - 0
L2J_DataPack/dist/game/data/scripts.cfg

@@ -11,6 +11,7 @@ handlers/MasterHandler.java
 # AI Section
 
 # Npc
+ai/npc/Abercrombie/Abercrombie.java
 ai/npc/Alarm/Alarm.java
 ai/npc/Alexandria/Alexandria.java
 ai/npc/ArenaManager/ArenaManager.java
@@ -47,6 +48,7 @@ ai/npc/NpcBuffers/impl/CabaleBuffer.java
 ai/npc/PriestOfBlessing/PriestOfBlessing.java
 ai/npc/Rignos/Rignos.java
 ai/npc/Rafforty/Rafforty.java
+ai/npc/Selina/Selina.java
 ai/npc/Sirra/Sirra.java
 ai/npc/SubclassCertification/SubclassCertification.java
 ai/npc/Summons/MerchantGolem/GolemTrader.java

+ 7 - 0
L2J_DataPack/dist/game/data/scripts/ai/npc/Abercrombie/31555-01.html

@@ -0,0 +1,7 @@
+<html><body>Mercenary Supplier Abercrombie:<br>
+As usual, the delivery of supplies are very unreliable in this godforsaken swampland! My life is totally miserable! The monsters around here are a real pain! I should've known when they sent me out here to the northernmost corner of nowhere... Dammit! What am I doing here!? They don't pay me enough! I don't know what my bosses are thinking!<br>
+When Sighardt led the mercenary army, things like this never happened! Challenges always existed, but at least life was liveable!<br>
+Did you want an item? Hold on, give me a moment. I must check the list. By the way, you brought a chit didn't you?<br>
+<a action="bypass -h npc_%objectId%_multisell 526">"I want to trade a chit of Golden Ram for an item."</a><br>
+<a action="bypass -h npc_%objectId%_Quest">Quest</a>
+</body></html>

+ 5 - 5
L2J_DataPack/dist/game/data/scripts/quests/Q00628_HuntGoldenRam/31555-01.htm → L2J_DataPack/dist/game/data/scripts/ai/npc/Abercrombie/31555-07.html

@@ -1,6 +1,6 @@
-<html><body>Mercenary Supplier Abercrombie:<br>
-Everyone's talking about the excellence you showed in battle again today! You're winning all the bonuses! Ha! It's good to see someone succeed in this godforsaken place!<br>
-Now tell me! Is there anything in particular you want? Although only a few types of supplies are available, I'll see what I can do. By the way, you prepared a chit didn't you?<br>
-<a action="bypass -h npc_%objectId%_multisell 521">"I want to trade a chit of Golden Ram for an item."</a><br>
-<a action="bypass -h npc_%objectId%_Quest">Quest</a>
+<html><body>Mercenary Supplier Abercrombie:<br>
+Everyone's talking about the excellence you showed in battle again today! You're winning all the bonuses! Ha! It's good to see someone succeed in this godforsaken place!<br>
+Now tell me! Is there anything in particular you want? Although only a few types of supplies are available, I'll see what I can do. By the way, you prepared a chit didn't you?<br>
+<a action="bypass -h npc_%objectId%_multisell 521">"I want to trade a chit of Golden Ram for an item."</a><br>
+<a action="bypass -h npc_%objectId%_Quest">Quest</a>
 </body></html>

+ 1 - 1
L2J_DataPack/dist/game/data/html/default/31555.htm → L2J_DataPack/dist/game/data/scripts/ai/npc/Abercrombie/31555-09.html

@@ -1,5 +1,5 @@
 <html><body>Mercenary Supplier Abercrombie:<br>
-Jeesh! Why are you turning into such a pain?! Can't you see I'm busy? It's more than enough for me to deal with the mercenaries! I don't have the time to deal with an outsider like you!
+Jeesh! Why are you turning into such a pain?! Can't you see I'm busy? It's more than enough for me to deal with the mercenaries! I don't have the time to deal with an outsider like you!<br>
 If you want to serve in our Golden Ram Mercenary force, why don't you go see Kadoon. What a life! What kind of fortune can I make here? Sigh! What a life!<br>
 <a action="bypass -h npc_%objectId%_Quest">Quest</a>
 </body></html>

+ 67 - 0
L2J_DataPack/dist/game/data/scripts/ai/npc/Abercrombie/Abercrombie.java

@@ -0,0 +1,67 @@
+/*
+ * 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 <http://www.gnu.org/licenses/>.
+ */
+package ai.npc.Abercrombie;
+
+import ai.npc.AbstractNpcAI;
+
+import com.l2jserver.gameserver.model.actor.L2Npc;
+import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
+
+/**
+ * Mercenary Supplier Abercrombie AI.
+ * @author Zoey76
+ */
+public final class Abercrombie extends AbstractNpcAI
+{
+	// NPC
+	private static final int ABERCROMBIE = 31555;
+	// Items
+	private static final int GOLDEN_RAM_BADGE_RECRUIT = 7246;
+	private static final int GOLDEN_RAM_BADGE_SOLDIER = 7247;
+	
+	public Abercrombie()
+	{
+		super(Abercrombie.class.getSimpleName(), "ai/npc");
+		addFirstTalkId(ABERCROMBIE);
+	}
+	
+	@Override
+	public String onFirstTalk(L2Npc npc, L2PcInstance player)
+	{
+		final String htmltext;
+		if (hasQuestItems(player, GOLDEN_RAM_BADGE_SOLDIER))
+		{
+			htmltext = "31555-07.html";
+		}
+		else if (hasQuestItems(player, GOLDEN_RAM_BADGE_RECRUIT))
+		{
+			htmltext = "31555-01.html";
+		}
+		else
+		{
+			htmltext = "31555-09.html";
+		}
+		return htmltext;
+	}
+	
+	public static void main(String[] args)
+	{
+		new Abercrombie();
+	}
+}

+ 4 - 4
L2J_DataPack/dist/game/data/scripts/quests/Q00628_HuntGoldenRam/31556-01.htm → L2J_DataPack/dist/game/data/scripts/ai/npc/Selina/31556-01.html

@@ -1,5 +1,5 @@
-<html><body>Mercenary Medic Selina:<br>
-Huh? Have you joined us? Excellent!<br>
-My name's Selina. I'm a medic. Welcome aboard!<br>
-<a action="bypass -h npc_%objectId%_Quest">Quest</a>
+<html><body>Mercenary Medic Selina:<br>
+Huh? Have you joined us? Excellent!<br>
+My name's Selina. I'm a medic. Welcome aboard!<br>
+<a action="bypass -h npc_%objectId%_Quest">Quest</a>
 </body></html>

+ 3 - 0
L2J_DataPack/dist/game/data/scripts/ai/npc/Selina/31556-02.html

@@ -0,0 +1,3 @@
+<html><body>Mercenary Medic Selina:<br>
+You'll need to pay a <font color="LEVEL">Golden Ram's mark</font> for my help. Complete a mission for Captain Pierce to get one!
+</body></html>

+ 13 - 0
L2J_DataPack/dist/game/data/scripts/ai/npc/Selina/31556-08.html

@@ -0,0 +1,13 @@
+<html><body>Mercenary Medic Selina:<br>
+Listen up! Your bravery is admirable, but you must take better care of yourself! I actually felt sorry for you when you came in so mangled!<br>
+But don't get me wrong, you did a great job! You really raised morale around here! I'd like to offer you some magical assistance. Let me know if you need anything.<br>
+<a action="bypass -h Quest Selina 4359">Focus: Requires 2 Golden Ram Coins</a><br>
+<a action="bypass -h Quest Selina 4360">Death Whisper:  Requires 2 Golden Ram Coins</a><br>
+<a action="bypass -h Quest Selina 4345">Might: Requires 3 Golden Ram Coins</a><br>
+<a action="bypass -h Quest Selina 4355">Acumen: Requires 3 Golden Ram Coins</a><br>
+<a action="bypass -h Quest Selina 4352">Berserker: Requires 3 Golden Ram Coins</a><br>
+<a action="bypass -h Quest Selina 4354">Vampiric Rage: Requires 3 Golden Ram Coins</a><br>
+<a action="bypass -h Quest Selina 4356">Empower: Requires 6 Golden Ram Coins</a><br>
+<a action="bypass -h Quest Selina 4357">Haste: Requires 6 Golden Ram Coins</a><br>
+<a action="bypass -h npc_%objectId%_Quest">Quest</a>
+</body></html>

+ 3 - 3
L2J_DataPack/dist/game/data/scripts/quests/Q00628_HuntGoldenRam/31556-00.htm → L2J_DataPack/dist/game/data/scripts/ai/npc/Selina/31556-09.html

@@ -1,4 +1,4 @@
-<html><body>Mercenary Medic Selina:<br>
-Hey, you're not my boyfriend! You don't even belong to the Golden Ram Mercenary force! Get away from me!<br>
-If you want to join our force go talk to that rough-looking Orc over there.
+<html><body>Mercenary Medic Selina:<br>
+Hey, you're not my boyfriend! You don't even belong to the Golden Ram Mercenary force! Get away from me!<br>
+If you want to join our force go talk to that rough-looking Orc over there.
 </body></html>

+ 136 - 0
L2J_DataPack/dist/game/data/scripts/ai/npc/Selina/Selina.java

@@ -0,0 +1,136 @@
+/*
+ * 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 <http://www.gnu.org/licenses/>.
+ */
+package ai.npc.Selina;
+
+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;
+
+/**
+ * Mercenary Medic Selina AI.
+ * @author Zoey76
+ */
+public final class Selina extends AbstractNpcAI
+{
+	// NPC
+	private static final int SELINA = 31556;
+	// Items
+	private static final int GOLDEN_RAM_BADGE_RECRUIT = 7246;
+	private static final int GOLDEN_RAM_BADGE_SOLDIER = 7247;
+	private static final int GOLDEN_RAM_COIN = 7251;
+	// Skills
+	private static final Map<String, BuffHolder> BUFFS = new HashMap<>();
+	
+	static
+	{
+		BUFFS.put("4359", new BuffHolder(4359, 2, 2)); // Focus
+		BUFFS.put("4360", new BuffHolder(4360, 2, 2)); // Death Whisper
+		BUFFS.put("4345", new BuffHolder(4345, 3, 3)); // Might
+		BUFFS.put("4355", new BuffHolder(4355, 2, 3)); // Acumen
+		BUFFS.put("4352", new BuffHolder(4352, 1, 3)); // Berserker Spirit
+		BUFFS.put("4354", new BuffHolder(4354, 2, 3)); // Vampiric Rage
+		BUFFS.put("4356", new BuffHolder(4356, 1, 6)); // Empower
+		BUFFS.put("4357", new BuffHolder(4357, 2, 6)); // Haste
+	}
+	
+	public Selina()
+	{
+		super(Selina.class.getSimpleName(), "ai/npc");
+		addStartNpc(SELINA);
+		addTalkId(SELINA);
+		addFirstTalkId(SELINA);
+		addSpellFinishedId(SELINA);
+	}
+	
+	@Override
+	public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
+	{
+		final BuffHolder buff = BUFFS.get(event);
+		if (buff != null)
+		{
+			if ((getQuestItemsCount(player, GOLDEN_RAM_COIN) >= buff.getCost()))
+			{
+				castSkill(npc, player, buff);
+				return super.onAdvEvent(event, npc, player);
+			}
+		}
+		else
+		{
+			_log.warning(Selina.class.getSimpleName() + " AI: player " + player + " sent invalid bypass: " + event);
+		}
+		return "31556-02.html";
+	}
+	
+	@Override
+	public String onFirstTalk(L2Npc npc, L2PcInstance player)
+	{
+		final String htmltext;
+		if (hasQuestItems(player, GOLDEN_RAM_BADGE_SOLDIER))
+		{
+			htmltext = "31556-08.html";
+		}
+		else if (hasQuestItems(player, GOLDEN_RAM_BADGE_RECRUIT))
+		{
+			htmltext = "31556-01.html";
+		}
+		else
+		{
+			htmltext = "31556-09.html";
+		}
+		return htmltext;
+	}
+	
+	@Override
+	public String onSpellFinished(L2Npc npc, L2PcInstance player, Skill skill)
+	{
+		final BuffHolder buff = BUFFS.get(Integer.toString(skill.getId()));
+		if (buff != null)
+		{
+			takeItems(player, GOLDEN_RAM_COIN, buff.getCost());
+		}
+		return super.onSpellFinished(npc, player, skill);
+	}
+	
+	public static void main(String[] args)
+	{
+		new Selina();
+	}
+	
+	private static class BuffHolder extends SkillHolder
+	{
+		private final int _cost;
+		
+		public BuffHolder(int skillId, int skillLvl, int cost)
+		{
+			super(skillId, skillLvl);
+			_cost = cost;
+		}
+		
+		public int getCost()
+		{
+			return _cost;
+		}
+	}
+}

+ 0 - 5
L2J_DataPack/dist/game/data/scripts/quests/Q00628_HuntGoldenRam/31555-00.htm

@@ -1,5 +0,0 @@
-<html><body>Mercenary Supplier Abercrombie:<br>
-Jeesh! Why are you turning into such a pain?!  Can't you see I'm busy?  It's more than enough for me to deal with the mercenaries! I don't have the time to deal with an outsider like you!<br>
-If you want to serve in our Golden Ram Mercenary force, why don't you go see Kadoon. What a life! What kind of fortune can I make here? Sigh! What a life!<br>
-<a action="bypass -h npc_%objectId%_Quest">Quest</a>
-</body></html>

+ 0 - 6
L2J_DataPack/dist/game/data/scripts/quests/Q00628_HuntGoldenRam/31555-02.htm

@@ -1,6 +0,0 @@
-<html><body>Mercenary Supplier Abercrombie:<br>
-Everyone's talking about the excellence you showed in battle again today! You're winning all the bonuses! Ha! It's good to see someone succeed in this godforsaken place!<br>
-Now tell me! Is there anything in particular you want? Although only a few types of supplies are available, I'll see what I can do. By the way, you prepared a chit didn't you?<br>
-<a action="bypass -h npc_%objectId%_multisell 526">"I want to trade a chit of Golden Ram for an item."</a><br>
-<a action="bypass -h npc_%objectId%_Quest">Quest</a>
-</body></html>

+ 0 - 5
L2J_DataPack/dist/game/data/scripts/quests/Q00628_HuntGoldenRam/31556-02.htm

@@ -1,5 +0,0 @@
-<html><body>Mercenary Medic Selina:<br>
-Listen up! Your bravery is admirable, but you must take better care of yourself! I actually felt sorry for you when you came in so mangled!<br>
-But don't get me wrong, you did a great job! You really raised morale around here! I'd like to offer you some magical assistance. Let me know if you need anything.<br>
-<a action="bypass -h npc_%objectId%_Quest">Please give me some buff.</a>
-</body></html>

+ 0 - 10
L2J_DataPack/dist/game/data/scripts/quests/Q00628_HuntGoldenRam/31556-03.htm

@@ -1,10 +0,0 @@
-<html><body>Mercenary Medic Selina:<br>
-<a action="bypass -h Quest Q00628_HuntGoldenRam Focus">Focus: Requires 2 Golden Ram Coins</a><br>
-<a action="bypass -h Quest Q00628_HuntGoldenRam Death">Death Whisper: Requires 2 Golden Ram Coins</a><br>
-<a action="bypass -h Quest Q00628_HuntGoldenRam Might">Might: Requires 3 Golden Ram Coins</a><br>
-<a action="bypass -h Quest Q00628_HuntGoldenRam Acumen">Acumen: Requires 3 Golden Ram Coins</a><br>
-<a action="bypass -h Quest Q00628_HuntGoldenRam Berserker">Berserker: Requires 3 Golden Ram Coins</a><br>
-<a action="bypass -h Quest Q00628_HuntGoldenRam Vampiric">Vampiric Rage: Requires 3 Golden Ram Coins</a><br>
-<a action="bypass -h Quest Q00628_HuntGoldenRam Empower">Empower: Requires 6 Golden Ram Coins</a><br>
-<a action="bypass -h Quest Q00628_HuntGoldenRam Haste">Haste: Requires 6 Golden Ram Coins</a><br>
-</body></html>

+ 0 - 3
L2J_DataPack/dist/game/data/scripts/quests/Q00628_HuntGoldenRam/31556-04.htm

@@ -1,3 +0,0 @@
-<html><body>Mercenary Medic Selina:<br>
-You don't have required items.
-</body></html>

+ 54 - 183
L2J_DataPack/dist/game/data/scripts/quests/Q00628_HuntGoldenRam/Q00628_HuntGoldenRam.java

@@ -21,29 +21,24 @@ package quests.Q00628_HuntGoldenRam;
 import java.util.HashMap;
 import java.util.Map;
 
-import com.l2jserver.gameserver.datatables.SkillData;
 import com.l2jserver.gameserver.model.actor.L2Npc;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.holders.ItemChanceHolder;
-import com.l2jserver.gameserver.model.holders.QuestItemHolder;
 import com.l2jserver.gameserver.model.quest.Quest;
 import com.l2jserver.gameserver.model.quest.QuestState;
 import com.l2jserver.gameserver.model.quest.State;
 
 /**
  * Hunt of the Golden Ram Mercenary Force (628)
- * @author netvirus
+ * @author netvirus, Zoey76
  */
 public final class Q00628_HuntGoldenRam extends Quest
 {
 	// NPCs
 	private static final int KAHMAN = 31554;
-	private static final int ABERCROMBIE = 31555;
-	private static final int SELINA = 31556;
 	// Items
-	private static final int GOLDEN_RAM_COIN = 7251;
-	private static final int BADGE_RECRUIT = 7246;
-	private static final int BADGE_SOLDIER = 7247;
+	private static final int GOLDEN_RAM_BADGE_RECRUIT = 7246;
+	private static final int GOLDEN_RAM_BADGE_SOLDIER = 7247;
 	private static final int SPLINTER_STAKATO_CHITIN = 7248;
 	private static final int NEEDLE_STAKATO_CHITIN = 7249;
 	// Misc
@@ -51,8 +46,6 @@ public final class Q00628_HuntGoldenRam extends Quest
 	private static final int MIN_LVL = 66;
 	// Mobs
 	private static final Map<Integer, ItemChanceHolder> MOBS_DROP_CHANCES = new HashMap<>();
-	// Buffs
-	private static final Map<String, QuestItemHolder> BUFFS = new HashMap<>();
 	
 	static
 	{
@@ -66,25 +59,15 @@ public final class Q00628_HuntGoldenRam extends Quest
 		MOBS_DROP_CHANCES.put(21515, new ItemChanceHolder(NEEDLE_STAKATO_CHITIN, 0.520, 2)); // needle_stakato_soldier
 		MOBS_DROP_CHANCES.put(21516, new ItemChanceHolder(NEEDLE_STAKATO_CHITIN, 0.531, 2)); // needle_stakato_drone
 		MOBS_DROP_CHANCES.put(21517, new ItemChanceHolder(NEEDLE_STAKATO_CHITIN, 0.744, 2)); // needle_stakato_drone_a
-		
-		BUFFS.put("Focus", new QuestItemHolder(4404, 2, 2)); // (buff_id, buff_level, buff_cost)
-		BUFFS.put("Death", new QuestItemHolder(4405, 2, 2));
-		BUFFS.put("Might", new QuestItemHolder(4393, 3, 3));
-		BUFFS.put("Acumen", new QuestItemHolder(4400, 2, 3));
-		BUFFS.put("Berserker", new QuestItemHolder(4397, 1, 3));
-		BUFFS.put("Vampiric", new QuestItemHolder(4399, 2, 3));
-		BUFFS.put("Empower", new QuestItemHolder(4401, 1, 6));
-		BUFFS.put("Haste", new QuestItemHolder(4402, 2, 6));
 	}
 	
 	public Q00628_HuntGoldenRam()
 	{
 		super(628, Q00628_HuntGoldenRam.class.getSimpleName(), "Hunt of the Golden Ram Mercenary Force");
 		addStartNpc(KAHMAN);
-		addTalkId(KAHMAN, SELINA);
-		addFirstTalkId(ABERCROMBIE, SELINA);
+		addTalkId(KAHMAN);
 		addKillId(MOBS_DROP_CHANCES.keySet());
-		registerQuestItems(SPLINTER_STAKATO_CHITIN, NEEDLE_STAKATO_CHITIN, BADGE_RECRUIT, BADGE_SOLDIER);
+		registerQuestItems(SPLINTER_STAKATO_CHITIN, NEEDLE_STAKATO_CHITIN);
 	}
 	
 	@Override
@@ -101,20 +84,18 @@ public final class Q00628_HuntGoldenRam extends Quest
 		{
 			case "accept":
 			{
-				if (qs.isCreated())
+				if (qs.isCreated() && (player.getLevel() >= MIN_LVL))
 				{
-					final boolean itemRecruit = hasQuestItems(player, BADGE_RECRUIT);
-					final boolean itemSoldier = hasQuestItems(player, BADGE_SOLDIER);
 					qs.startQuest();
-					if (itemSoldier)
+					if (hasQuestItems(player, GOLDEN_RAM_BADGE_SOLDIER))
 					{
-						htmltext = "31554-05.htm";
 						qs.setCond(3);
+						htmltext = "31554-05.htm";
 					}
-					else if (itemRecruit)
+					else if (hasQuestItems(player, GOLDEN_RAM_BADGE_RECRUIT))
 					{
-						htmltext = "31554-04.htm";
 						qs.setCond(2);
+						htmltext = "31554-04.htm";
 					}
 					else
 					{
@@ -125,9 +106,9 @@ public final class Q00628_HuntGoldenRam extends Quest
 			}
 			case "31554-08.html":
 			{
-				if (qs.isStarted())
+				if (getQuestItemsCount(player, SPLINTER_STAKATO_CHITIN) >= REQUIRED_ITEM_COUNT)
 				{
-					giveItems(player, BADGE_RECRUIT, 1);
+					giveItems(player, GOLDEN_RAM_BADGE_RECRUIT, 1);
 					takeItems(player, SPLINTER_STAKATO_CHITIN, -1);
 					qs.setCond(2, true);
 					htmltext = event;
@@ -152,101 +133,6 @@ public final class Q00628_HuntGoldenRam extends Quest
 				}
 				break;
 			}
-			case "Focus":
-			case "Death":
-			case "Might":
-			case "Acumen":
-			case "Berserker":
-			case "Vampiric":
-			case "Empower":
-			case "Haste":
-			{
-				if (qs.isCond(3))
-				{
-					final QuestItemHolder buffs = BUFFS.get(event);
-					if (getQuestItemsCount(player, GOLDEN_RAM_COIN) >= buffs.getCount())
-					{
-						takeItems(player, GOLDEN_RAM_COIN, buffs.getCount());
-						npc.setTarget(player);
-						npc.doCast(SkillData.getInstance().getSkill(buffs.getId(), buffs.getChance()));
-						htmltext = "31556-03.htm";
-					}
-					else
-					{
-						htmltext = "31556-04.htm";
-					}
-				}
-				break;
-			}
-		}
-		return htmltext;
-	}
-	
-	@Override
-	public String onFirstTalk(L2Npc npc, L2PcInstance player)
-	{
-		final QuestState qs = getQuestState(player, true);
-		String htmltext = null;
-		if (qs == null)
-		{
-			switch (npc.getId())
-			{
-				case ABERCROMBIE:
-				{
-					htmltext = "31555-00.htm";
-					break;
-				}
-				case SELINA:
-				{
-					htmltext = "31556-00.htm";
-					break;
-				}
-			}
-			return htmltext;
-		}
-		
-		final boolean itemRecruit = hasQuestItems(player, BADGE_RECRUIT);
-		final boolean itemSolder = hasQuestItems(player, BADGE_SOLDIER);
-		switch (npc.getId())
-		{
-			case ABERCROMBIE:
-			{
-				if (qs.isStarted())
-				{
-					if (itemRecruit)
-					{
-						htmltext = "31555-01.htm";
-					}
-					else if (itemSolder)
-					{
-						htmltext = "31555-02.htm";
-					}
-					else
-					{
-						htmltext = "31555-00.htm";
-					}
-				}
-				break;
-			}
-			case SELINA:
-			{
-				if (qs.isStarted())
-				{
-					if (itemRecruit)
-					{
-						htmltext = "31556-01.htm";
-					}
-					else if (itemSolder)
-					{
-						htmltext = "31556-02.htm";
-					}
-					else
-					{
-						htmltext = "31556-00.htm";
-					}
-				}
-				break;
-			}
 		}
 		return htmltext;
 	}
@@ -254,7 +140,7 @@ public final class Q00628_HuntGoldenRam extends Quest
 	@Override
 	public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
 	{
-		QuestState qs = getRandomPartyMemberState(killer, -1, 1, npc);
+		final QuestState qs = getRandomPartyMemberState(killer, -1, 1, npc);
 		if (qs != null)
 		{
 			final ItemChanceHolder item = MOBS_DROP_CHANCES.get(npc.getId());
@@ -276,77 +162,62 @@ public final class Q00628_HuntGoldenRam extends Quest
 			return htmltext;
 		}
 		
-		switch (npc.getId())
+		switch (qs.getState())
 		{
-			case KAHMAN:
+			case State.CREATED:
 			{
-				switch (qs.getState())
+				htmltext = ((player.getLevel() >= MIN_LVL) ? "31554-01.htm" : "31554-02.htm");
+				break;
+			}
+			case State.STARTED:
+			{
+				final long itemCountSplinter = getQuestItemsCount(player, SPLINTER_STAKATO_CHITIN);
+				final long itemCountNeedle = getQuestItemsCount(player, NEEDLE_STAKATO_CHITIN);
+				switch (qs.getCond())
 				{
-					case State.CREATED:
+					case 1:
 					{
-						htmltext = ((player.getLevel() >= MIN_LVL) ? "31554-01.htm" : "31554-02.htm");
+						htmltext = ((itemCountSplinter >= REQUIRED_ITEM_COUNT) ? "31554-07.html" : "31554-06.html");
 						break;
 					}
-					case State.STARTED:
+					case 2:
 					{
-						final long itemCountSplinter = getQuestItemsCount(player, SPLINTER_STAKATO_CHITIN);
-						final long itemCountNeedle = getQuestItemsCount(player, NEEDLE_STAKATO_CHITIN);
-						switch (qs.getCond())
+						if (hasQuestItems(player, GOLDEN_RAM_BADGE_RECRUIT))
 						{
-							case 1:
-							{
-								htmltext = ((itemCountSplinter >= REQUIRED_ITEM_COUNT) ? "31554-07.html" : "31554-06.html");
-								break;
-							}
-							case 2:
+							if ((itemCountSplinter >= REQUIRED_ITEM_COUNT) && (itemCountNeedle >= REQUIRED_ITEM_COUNT))
 							{
-								if (hasQuestItems(player, BADGE_RECRUIT))
-								{
-									if ((itemCountSplinter >= REQUIRED_ITEM_COUNT) && (itemCountNeedle >= REQUIRED_ITEM_COUNT))
-									{
-										takeItems(player, BADGE_RECRUIT, -1);
-										takeItems(player, SPLINTER_STAKATO_CHITIN, -1);
-										takeItems(player, NEEDLE_STAKATO_CHITIN, -1);
-										giveItems(player, BADGE_SOLDIER, 1);
-										qs.setCond(3, true);
-										htmltext = "31554-10.html";
-									}
-									else
-									{
-										htmltext = "31554-09.html";
-									}
-								}
-								else
-								{
-									qs.setCond(1);
-									htmltext = ((itemCountSplinter >= REQUIRED_ITEM_COUNT) ? "31554-07.html" : "31554-06.html");
-								}
-								break;
+								takeItems(player, GOLDEN_RAM_BADGE_RECRUIT, -1);
+								takeItems(player, SPLINTER_STAKATO_CHITIN, -1);
+								takeItems(player, NEEDLE_STAKATO_CHITIN, -1);
+								giveItems(player, GOLDEN_RAM_BADGE_SOLDIER, 1);
+								qs.setCond(3, true);
+								htmltext = "31554-10.html";
 							}
-							case 3:
+							else
 							{
-								if (hasQuestItems(player, BADGE_SOLDIER))
-								{
-									htmltext = "31554-11.html";
-								}
-								else
-								{
-									qs.setCond(1);
-									htmltext = ((itemCountSplinter >= REQUIRED_ITEM_COUNT) ? "31554-07.html" : "31554-06.html");
-								}
-								break;
+								htmltext = "31554-09.html";
 							}
 						}
+						else
+						{
+							qs.setCond(1);
+							htmltext = ((itemCountSplinter >= REQUIRED_ITEM_COUNT) ? "31554-07.html" : "31554-06.html");
+						}
+						break;
+					}
+					case 3:
+					{
+						if (hasQuestItems(player, GOLDEN_RAM_BADGE_SOLDIER))
+						{
+							htmltext = "31554-11.html";
+						}
+						else
+						{
+							qs.setCond(1);
+							htmltext = ((itemCountSplinter >= REQUIRED_ITEM_COUNT) ? "31554-07.html" : "31554-06.html");
+						}
 						break;
 					}
-				}
-				break;
-			}
-			case SELINA:
-			{
-				if (qs.isCond(3))
-				{
-					htmltext = "31556-03.htm";
 				}
 				break;
 			}