diff --git a/dist/game/data/scripts.cfg b/dist/game/data/scripts.cfg
index 0338f62f37e5f1680653d041f1c356daade6435f..84dc6def1c2a758f23b6a609f0d3734cff9eae4e 100644
--- a/dist/game/data/scripts.cfg
+++ b/dist/game/data/scripts.cfg
@@ -192,7 +192,6 @@ quests/334_TheWishingPotion/__init__.py
 quests/335_TheSongOfTheHunter/__init__.py
 quests/348_ArrogantSearch/__init__.py
 quests/384_WarehouseKeepersPastime/__init__.py
-quests/386_StolenDignity/__init__.py
 quests/620_FourGoblets/__init__.py
 quests/663_SeductiveWhispers/__init__.py
 quests/999_T1Tutorial/__init__.py
diff --git a/dist/game/data/scripts/quests/386_StolenDignity/Bingo_howto.htm b/dist/game/data/scripts/quests/386_StolenDignity/Bingo_howto.htm
deleted file mode 100644
index 35ca49fb0a83f7844793267fc5334dfcf9434504..0000000000000000000000000000000000000000
--- a/dist/game/data/scripts/quests/386_StolenDignity/Bingo_howto.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-<html><body>Warehouse Freightman Romp:<br>
-I will arrange the numbers 1 thorugh 9 on a grid. Next you will have to<font color="LEVEL"> choose six numbers</font> between 1 and 9. For you to win, you will have to<font color="LEVEL"> form three different lines</font> with the numbers you've chosen: a row, a column and diagonal. If you win, i will reward you with rare materials used in the manufacture of A-grade weapons.
-</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/386_StolenDignity/Bingo_start.htm b/dist/game/data/scripts/quests/386_StolenDignity/Bingo_start.htm
deleted file mode 100644
index 320576c678023c3513ba414fec7b3b853878df04..0000000000000000000000000000000000000000
--- a/dist/game/data/scripts/quests/386_StolenDignity/Bingo_start.htm
+++ /dev/null
@@ -1,5 +0,0 @@
-<html><body>Warehouse Freightman Romp:<br>
-Excellent! You brought a lot of infernium ore. Just for a hundred pieces you can win several rare materials. What you say, will you give it a try?<br>
-<a action="bypass -h Quest 386_StolenDignity bingo">Ok, Let's play bingo!</a><br>
-<a action="bypass -h Quest 386_StolenDignity 0">No thanks, i prefer to quit</a>
-</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/386_StolenDignity/Bingo_starting.htm b/dist/game/data/scripts/quests/386_StolenDignity/Bingo_starting.htm
deleted file mode 100644
index 17fcbaff00e1c0eb1482689069030782eebe0f17..0000000000000000000000000000000000000000
--- a/dist/game/data/scripts/quests/386_StolenDignity/Bingo_starting.htm
+++ /dev/null
@@ -1,15 +0,0 @@
-<html><body>Warehouse Freightman Romp:<br><br>
-I've arranged the number 1 through 9 on the grid. Don't peek!<br>
-Let me have the 100 infernium ores. Too many players try to run away without paying when it becomes obvious that they're losing...<br>
-OK, select six numbers between 1 and 9. Choose the first number<br>
-<a action="bypass -h Quest 386_StolenDignity 1">1</a>&nbsp;&nbsp;&nbsp;&nbsp;
-<a action="bypass -h Quest 386_StolenDignity 2">2</a>&nbsp;&nbsp;&nbsp;&nbsp;
-<a action="bypass -h Quest 386_StolenDignity 3">3</a>&nbsp;&nbsp;&nbsp;&nbsp;
-<a action="bypass -h Quest 386_StolenDignity 4">4</a>&nbsp;&nbsp;&nbsp;&nbsp;
-<a action="bypass -h Quest 386_StolenDignity 5">5</a>&nbsp;&nbsp;&nbsp;&nbsp;
-
-<a action="bypass -h Quest 386_StolenDignity 6">6</a>&nbsp;&nbsp;&nbsp;&nbsp;
-<a action="bypass -h Quest 386_StolenDignity 7">7</a>&nbsp;&nbsp;&nbsp;&nbsp;
-<a action="bypass -h Quest 386_StolenDignity 8">8</a>&nbsp;&nbsp;&nbsp;&nbsp;
-<a action="bypass -h Quest 386_StolenDignity 9">9</a>
-</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/386_StolenDignity/Low_level.htm b/dist/game/data/scripts/quests/386_StolenDignity/Low_level.htm
deleted file mode 100644
index 5762d6bdeb9e7f05cff9d2b6757beeabc9dc98ec..0000000000000000000000000000000000000000
--- a/dist/game/data/scripts/quests/386_StolenDignity/Low_level.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-<html><body>Warehouse Freightman Romp:<br>
-I think it is too early for you to help us. Come back after you have gained some more experience.<br>
-<font color="LEVEL">(Quest for characters level 58 and above.)</font>
-</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/386_StolenDignity/Start.htm b/dist/game/data/scripts/quests/386_StolenDignity/Start.htm
deleted file mode 100644
index 350bcfcc2be126fdc8266a243f351786a93777ab..0000000000000000000000000000000000000000
--- a/dist/game/data/scripts/quests/386_StolenDignity/Start.htm
+++ /dev/null
@@ -1,5 +0,0 @@
-<html><body>Warehouse Freightman Romp:<br>
-The infernium ore that the Iron Gate Guild needs to construct a warehouse has been stolen by monsters. Recover the infernium ore and take it back to me. If you gather enough pieces, you can come back and we'll play one round of bingo. If you win, you'll receive a prize from the Iron Gate Guild.<br>
-<a action="bypass -h Quest 386_StolenDignity yes">I will recover your stolen items</a><br>
-<a action="bypass -h Quest 386_StolenDignity 0">Say you won't help</a>
-</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/386_StolenDignity/Starting.htm b/dist/game/data/scripts/quests/386_StolenDignity/Starting.htm
deleted file mode 100644
index d2b4db2a300dab8c346b8bce124177d3cb8e5c45..0000000000000000000000000000000000000000
--- a/dist/game/data/scripts/quests/386_StolenDignity/Starting.htm
+++ /dev/null
@@ -1,11 +0,0 @@
-<html><body>Warehouse Freightman Romp:<br>
-Ok, This is a list of the monsters you must destroy:<br>
-Ancient Battleground:<font color="LEVEL"> past knights, hungry corpses, bloody lords, bloody ghosts, dark guards, and death blades.</font><br>
-Blazing Swamp:<font color="LEVEL"> glow wisps, marsh predators, Hames orc snipers, cursed guardians, and Hames orc overlords.</font><br>
-Fields of Massacre:<font color="LEVEL"> wretched archers, grave liches, grave predators, spiteful soul leaders, and spiteful soul wizards.</font><br>
-The Forbidden Gateway:<font color="LEVEL"> crimson drakes, and kadios.</font><br>
-Forsaken Plains:<font color="LEVEL"> fallen orc shamans, and sharp talon tigers.</font><br>
-Silent Valley:<font color="LEVEL"> huge footmarks, giant's shadows, past creatures, and soldiers of ancient times.</font><br><br>
-Gather<font color="LEVEL"> 100 Stolen Infernium Ore</font> and get back here, and we will play a round of bingo<br>
-<a action="bypass -h Quest 386_StolenDignity binfo">Tell me more about the Bingo</a>
-</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/386_StolenDignity/Starting2.htm b/dist/game/data/scripts/quests/386_StolenDignity/Starting2.htm
deleted file mode 100644
index 02c86db204ecb1f446bb5f8e5db4277916e7bf3a..0000000000000000000000000000000000000000
--- a/dist/game/data/scripts/quests/386_StolenDignity/Starting2.htm
+++ /dev/null
@@ -1,5 +0,0 @@
-<html><body>Warehouse Freightman Romp:<br>
-As i mentioned before, destroy the <font color=LEVEL>glow wisp, marsh predator, Hames orc sniper, cursed guardian, Hames orc overlord, wretched archer, grave lich, grave predator, crimson drake, kadios, fallen orc shaman, sharp talon tiger, past knight, hungry corpse, bloody lord, bloody ghost, dark guard, death blade, spiteful soul leader, spiteful soul wizard, huge footmark, giant's shadow, past creature, soldier of ancient times and warrior of ancient times etc.</font> and recover the stolen infernium ore. If you do that <font color=LEVEL>I'll let you play a game of bingo for each 100 infernium ores you bring to me.</font> The honor of our guild rests on your shoulders, so rest assured that you'll be well-rewarded. You'll receive a rare ingredient, used in the manufacture of A-grade weapons. Have I sparked your interest?<br>
-<a action="bypass -h Quest 386_StolenDignity binfo">"Tell me more about the Bingo"</a><br>
-<a action="bypass -h Quest 386_StolenDignity 0">"I want to quit"</a>
-</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/386_StolenDignity/__init__.py b/dist/game/data/scripts/quests/386_StolenDignity/__init__.py
deleted file mode 100644
index ff7d154ef21c55c7ea9e5a20afc9bb6f8fcf49b9..0000000000000000000000000000000000000000
--- a/dist/game/data/scripts/quests/386_StolenDignity/__init__.py
+++ /dev/null
@@ -1,223 +0,0 @@
-# Stolen Dignity version 0.1 
-# by DrLecter
-import sys
-from com.l2jserver import Config
-from com.l2jserver.gameserver.model.quest import State
-from com.l2jserver.gameserver.model.quest import QuestState
-from com.l2jserver.gameserver.model.quest import Quest as JQuest
-
-#Quest info
-QUEST_NUMBER,QUEST_NAME,QUEST_DESCRIPTION = 386,"StolenDignity","Stolen Dignity"
-qn = "386_StolenDignity"
-
-#Variables
-DROP_RATE=15*Config.RATE_QUEST_DROP
-REQUIRED_ORE=100 #how many items will be paid for a game (affects onkill sounds too)
-
-#Quest items
-SI_ORE = 6363
-
-#Rewards
-REWARDS=[5529]+range(5532,5540)+range(5541,5549)+[8331]+range(8341,8343)+[8346]+[8349]+range(8712,8723)
- 
-#Messages
-error_1   = "Low_level.htm"
-start     = "Start.htm"
-starting  = "Starting.htm"
-starting2 = "Starting2.htm"
-binfo1    = "Bingo_howto.htm"
-bingo     = "Bingo_start.htm"
-bingo0    = "Bingo_starting.htm"
-ext_msg   = "Quest aborted"
-
-#NPCs
-WK_ROMP = 30843
-
-#Mobs
-MOBS = [ 20670,20671,20954,20956,20958,20959,20960,20964,20969,20967,20970,20971,20974,20975,21001,21003,21005,21020,21021,21089,21108,21110,21113,21114,21116 ]
-MOB={
-    20670:14,
-    20671:14,
-    20954:11,
-    20956:13,
-    20958:13,
-    20959:13,
-    20960:11,
-    20964:13,
-    20969:19,
-    20967:18,
-    20970:18,
-    20971:18,
-    20974:28,
-    20975:28,
-    21001:14,
-    21003:18,
-    21005:14,
-    21020:16,
-    21021:15,
-    21089:13,
-    21108:19,
-    21110:18,
-    21113:25,
-    21114:23,
-    21116:25    
-}
-MAX = 100
-
-#templates
-number  = ["second","third","fourth","fifth","sixth"]
-header  = "<html><body>Warehouse Freightman Romp:<br><br>"
-link    = "<a action=\"bypass -h Quest 386_StolenDignity "
-middle  = "<br><br>Your selection thus far: <br><br><table border=1 width=120 hieght=64>"
-footer  = "</table></body></html>"
-loser   = "Wow! How unlucky can you get? Your choices are highlighted in red below. As you can see, your choices didn't make a single line! Losing this badly is actually quite rare!<br><br>You look so sad, I feel bad for you... Wait here...<br><br>.<br><br>.<br><br>.<br><br>Take this... I hope it will bring you better luck in the future.<br><br>"
-winner  = "Excellent! As you can see, you've formed three lines! Congratulations! As promised, I'll give you some unclaimed merchandise from the warehouse. Wait here...<br><br>.<br><br>.<br><br>.<br><br>Whew, it's dusty! OK, here you go. Do you like it?<br><br>"
-average = "Hum. Well, your choices are highlighted in red below. As you can see your choices didn't formed three lines... but you were near, so don't be sad. You can always get another few infernium ores and try again. Better luck in the future!<br><br>"
-
-def partial(st) :
-    html = " number:<br><br>"
-    for z in range(1,10) :
-        html += link+str(z)+"\">"+str(z)+"</a>&nbsp;&nbsp;&nbsp;&nbsp;"
-    html += middle
-    chosen = st.get("chosen").split()
-    for y in range(0,7,3) :
-        html +="<tr>"
-        for x in range(3) :
-            html+="<td align=center>"+chosen[x+y]+"</td>"
-        html +="</tr>"
-    html += footer
-    return html
-
-def result(st) :
-    chosen = st.get("chosen").split()
-    grid = st.get("grid").split()
-    html = "<table border=1 width=120 height=64>"
-    for y in range(0,7,3) :
-        html +="<tr>"
-        for x in range(3) :
-            html+="<td align=center>"
-            if grid[x+y] == chosen[x+y] :
-                html+="<font color=\"FF0000\"> "+grid[x+y]+" </font>"
-            else :
-                html+=grid[x+y]
-            html+="</td>"
-        html +="</tr>"
-    html += footer
-    return html
-
-
-class Quest (JQuest) :
-
- def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
-
- def onEvent (self,event,st) :
-    htmltext = event
-    if event == "yes" :
-       htmltext = starting
-       st.setState(State.STARTED)
-       st.set("cond","1")
-       st.playSound("ItemSound.quest_accept")
-    elif event == "binfo" :
-        htmltext = binfo1
-    elif event == "0" :
-       htmltext = ext_msg
-       st.exitQuest(1)
-    elif event == "bingo" :
-       if st.getQuestItemsCount(SI_ORE) >= REQUIRED_ORE :
-         st.takeItems(SI_ORE,REQUIRED_ORE)
-         htmltext = bingo0
-         grid = range(1,10) #random.sample(xrange(1,10),9) ... damn jython that makes me think that inefficient stuff
-         for i in range(len(grid)-1, 0, -1) :
-           j = self.getRandom(8)
-           grid[i], grid[j] = grid[j], grid[i]
-         for i in range(len(grid)): grid[i]=str(grid[i])
-         st.set("chosen","? ? ? ? ? ? ? ? ?")
-         st.set("grid"," ".join(grid))
-         st.set("playing","1")
-       else :
-         htmltext = "You don't have required items"
-    else :
-       for i in range(1,10) :
-          if event == str(i) :
-            if st.getInt("playing"):
-              chosen = st.get("chosen").split()
-              grid = st.get("grid").split()
-              if chosen.count("?") >= 3 :
-                  chosen[grid.index(str(i))]=str(i)
-                  st.set("chosen"," ".join(chosen))
-                  if chosen.count("?")==3 :
-                      htmltext = header
-                      row = col = diag = 0
-                      for i in range(3) :
-                          if ''.join(chosen[3*i:3*i+3]).isdigit() : row += 1
-                          if ''.join(chosen[i:9:3]).isdigit() : col += 1
-                      if ''.join(chosen[0:9:4]).isdigit() : diag += 1
-                      if ''.join(chosen[2:7:2]).isdigit() : diag += 1
-                      if (col + row + diag) == 3 :
-                          htmltext += winner
-                          st.giveItems(REWARDS[self.getRandom(len(REWARDS))],4)
-                          st.playSound("ItemSound.quest_finish")
-                      elif (diag + row + col) == 0 :
-                          htmltext += loser
-                          st.giveItems(REWARDS[self.getRandom(len(REWARDS))],10)
-                          st.playSound("ItemSound.quest_jackpot")
-                      else :
-                          htmltext += average
-                          st.playSound("ItemSound.quest_giveup")
-                      htmltext += result(st)
-                      for var in ["chosen","grid","playing"]:
-                          st.unset(var)
-                  else :
-                      htmltext = header+"Select your "+number[8-chosen.count("?")]+partial(st)
-            else:
-              htmltext = Quest.getNoQuestMsg(player)
-    return htmltext
-
- def onTalk (self,npc,player):
-   htmltext = Quest.getNoQuestMsg(player)
-   st = self.getQuestState(player, True)
-   if not st : return htmltext
-
-   npcId = npc.getId()
-   id = st.getState()
-   if id == State.CREATED :
-      st.set("cond","0")
-      if player.getLevel() < 58 :
-         st.exitQuest(1)
-         htmltext = error_1
-      else :
-         htmltext = start
-   elif id == State.STARTED :
-      if st.getQuestItemsCount(SI_ORE) >= REQUIRED_ORE :
-         htmltext = bingo
-      else :
-         htmltext = starting2 
-   return htmltext
-
- def onKill(self,npc,player,isPet):
-     partyMember = self.getRandomPartyMemberState(player, State.STARTED)
-     if not partyMember : return
-     st = partyMember.getQuestState(qn)
-     numItems,chance = divmod(MOB[npc.getId()]*Config.RATE_QUEST_DROP,MAX)
-     prevItems = st.getQuestItemsCount(SI_ORE)
-     if self.getRandom(MAX) < chance :
-        numItems = numItems + 1
-     if numItems != 0 :   
-        st.giveItems(SI_ORE,int(numItems))
-        if int(prevItems+numItems)/REQUIRED_ORE > int(prevItems)/REQUIRED_ORE :
-           st.playSound("ItemSound.quest_middle")
-        else :
-           st.playSound("ItemSound.quest_itemget")
-     return  
-
-# Quest class and state definition
-QUEST       = Quest(QUEST_NUMBER, str(QUEST_NUMBER)+"_"+QUEST_NAME, QUEST_DESCRIPTION)
-
-
-# Quest NPC starter initialization
-QUEST.addStartNpc(WK_ROMP)
-# Quest initialization
-QUEST.addTalkId(WK_ROMP)
-
-for i in MOBS :
-  QUEST.addKillId(i)
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00234_FatesWhisper/31002-005.html b/dist/game/data/scripts/quests/Q00234_FatesWhisper/31002-005.html
index 2a9fd88eb6d00f4b6abaf659a5c6442a7191d126..03f35eb4e06aeb7f20bccd1a7666138f681c09c2 100644
--- a/dist/game/data/scripts/quests/Q00234_FatesWhisper/31002-005.html
+++ b/dist/game/data/scripts/quests/Q00234_FatesWhisper/31002-005.html
@@ -1,6 +1,4 @@
 <html><body>Maestro Reorin:<br>
 I was not satisfied. I had enough Adena that I never needed to work again. I could have retired with my lovely wife to a life of leisure. I was highly respected by all, but still I wanted more. I dreamed of creating a masterpiece that would go down in history. It was all I could think of. It even kept me awake at night! Soon I became as a man possessed, ignoring my apprentices and worst of all my adoring wife. In the midst of this obsession, demons whispered in my ear their words of temptation...<br>
 <a action="bypass -h Quest Q00234_FatesWhisper 31002-006.html">"How did they tempt you?"</a>
-</body></html>
-
-
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00234_FatesWhisper/Q00234_FatesWhisper.java b/dist/game/data/scripts/quests/Q00234_FatesWhisper/Q00234_FatesWhisper.java
index 0dbb7bb84ee6d4fdab44e69b4e6f508ddbee5cc5..3af2fc284109acf8d50b81f78f2b376a5da8385b 100644
--- a/dist/game/data/scripts/quests/Q00234_FatesWhisper/Q00234_FatesWhisper.java
+++ b/dist/game/data/scripts/quests/Q00234_FatesWhisper/Q00234_FatesWhisper.java
@@ -38,123 +38,123 @@ import com.l2jserver.gameserver.util.Util;
 public final class Q00234_FatesWhisper extends Quest
 {
 	// NPCs
-	private static final int zenkin = 30178;
-	private static final int cliff = 30182;
-	private static final int master_kaspar = 30833;
-	private static final int head_blacksmith_ferris = 30847;
-	private static final int maestro_leorin = 31002;
-	private static final int coffer_of_the_dead = 31027;
-	private static final int chest_of_kernon = 31028;
-	private static final int chest_of_golkonda = 31029;
-	private static final int chest_of_hallate = 31030;
+	private static final int ZENKIN = 30178;
+	private static final int CLIFF = 30182;
+	private static final int MASTER_KASPAR = 30833;
+	private static final int HEAD_BLACKSMITH_FERRIS = 30847;
+	private static final int MAESTRO_LEORIN = 31002;
+	private static final int COFFER_OF_THE_DEAD = 31027;
+	private static final int CHEST_OF_KERNON = 31028;
+	private static final int CHEST_OF_GOLKONDA = 31029;
+	private static final int CHEST_OF_HALLATE = 31030;
 	// Quest Items
-	private static final int q_bloody_fabric_q0234 = 14361;
-	private static final int q_white_fabric_q0234 = 14362;
-	private static final int q_star_of_destiny = 5011;
-	private static final int q_pipette_knife = 4665;
-	private static final int q_reirias_soulorb = 4666;
-	private static final int q_infernium_scepter_1 = 4667;
-	private static final int q_infernium_scepter_2 = 4668;
-	private static final int q_infernium_scepter_3 = 4669;
-	private static final int q_maestro_reorins_hammer = 4670;
-	private static final int q_maestro_reorins_mold = 4671;
-	private static final int q_infernium_varnish = 4672;
-	private static final int q_red_pipette_knife = 4673;
+	private static final int Q_BLOODY_FABRIC_Q0234 = 14361;
+	private static final int Q_WHITE_FABRIC_Q0234 = 14362;
+	private static final int Q_STAR_OF_DESTINY = 5011;
+	private static final int Q_PIPETTE_KNIFE = 4665;
+	private static final int Q_REIRIAS_SOULORB = 4666;
+	private static final int Q_INFERNIUM_SCEPTER_1 = 4667;
+	private static final int Q_INFERNIUM_SCEPTER_2 = 4668;
+	private static final int Q_INFERNIUM_SCEPTER_3 = 4669;
+	private static final int Q_MAESTRO_REORINS_HAMMER = 4670;
+	private static final int Q_MAESTRO_REORINS_MOLD = 4671;
+	private static final int Q_INFERNIUM_VARNISH = 4672;
+	private static final int Q_RED_PIPETTE_KNIFE = 4673;
 	// Other Items
-	private static final int crystal_b = 1460;
+	private static final int CRYSTAL_B = 1460;
 	// Monsters
-	private static final int platinum_tribe_grunt = 20823;
-	private static final int platinum_tribe_archer = 20826;
-	private static final int platinum_tribe_warrior = 20827;
-	private static final int platinum_tribe_shaman = 20828;
-	private static final int platinum_tribe_lord = 20829;
-	private static final int guardian_angel = 20830;
-	private static final int seal_angel = 20831;
-	private static final int seal_angel_r = 20860;
+	private static final int PLATINUM_TRIBE_GRUNT = 20823;
+	private static final int PLATINUM_TRIBE_ARCHER = 20826;
+	private static final int PLATINUM_TRIBE_WARRIOR = 20827;
+	private static final int PLATINUM_TRIBE_SHAMAN = 20828;
+	private static final int PLATINUM_TRIBE_LORD = 20829;
+	private static final int GUARDIAN_ANGEL = 20830;
+	private static final int SEAL_ANGEL = 20831;
+	private static final int SEAL_ANGEL_R = 20860;
 	
-	private static final int domb_death_cabrio = 25035;
-	private static final int kernon = 25054;
-	private static final int golkonda_longhorn = 25126;
-	private static final int hallate_the_death_lord = 25220;
-	private static final int baium = 29020;
+	private static final int DOMB_DEATH_CABRIO = 25035;
+	private static final int KERNON = 25054;
+	private static final int GOLKONDA_LONGHORN = 25126;
+	private static final int HALLATE_THE_DEATH_LORD = 25220;
+	private static final int BAIUM = 29020;
 	
 	// B-grade
-	private static final int sword_of_damascus = 79;
-	private static final int sword_of_damascus_focus = 4717;
-	private static final int sword_of_damascus_crt_damage = 4718;
-	private static final int sword_of_damascus_haste = 4719;
-	private static final int hazard_bow = 287;
-	private static final int hazard_bow_guidence = 4828;
-	private static final int hazard_bow_quickrecovery = 4829;
-	private static final int hazard_bow_cheapshot = 4830;
-	private static final int lancia = 97;
-	private static final int lancia_anger = 4858;
-	private static final int lancia_crt_stun = 4859;
-	private static final int lancia_longblow = 4860;
-	private static final int art_of_battle_axe = 175;
-	private static final int art_of_battle_axe_health = 4753;
-	private static final int art_of_battle_axe_rsk_focus = 4754;
-	private static final int art_of_battle_axe_haste = 4755;
-	private static final int staff_of_evil_sprit = 210;
-	private static final int staff_of_evil_sprit_magicfocus = 4900;
-	private static final int staff_of_evil_sprit_magicblessthebody = 4901;
-	private static final int staff_of_evil_sprit_magicpoison = 4902;
-	private static final int demons_sword = 234;
-	private static final int demons_sword_crt_bleed = 4780;
-	private static final int demons_sword_crt_poison = 4781;
-	private static final int demons_sword_mightmotal = 4782;
-	private static final int bellion_cestus = 268;
-	private static final int bellion_cestus_crt_drain = 4804;
-	private static final int bellion_cestus_crt_poison = 4805;
-	private static final int bellion_cestus_rsk_haste = 4806;
-	private static final int deadmans_glory = 171;
-	private static final int deadmans_glory_anger = 4750;
-	private static final int deadmans_glory_health = 4751;
-	private static final int deadmans_glory_haste = 4752;
-	private static final int samurai_longsword_samurai_longsword = 2626;
-	private static final int guardians_sword = 7883;
-	private static final int guardians_sword_crt_drain = 8105;
-	private static final int guardians_sword_health = 8106;
-	private static final int guardians_sword_crt_bleed = 8107;
-	private static final int tears_of_wizard = 7889;
-	private static final int tears_of_wizard_acumen = 8117;
-	private static final int tears_of_wizard_magicpower = 8118;
-	private static final int tears_of_wizard_updown = 8119;
-	private static final int star_buster = 7901;
-	private static final int star_buster_health = 8132;
-	private static final int star_buster_haste = 8133;
-	private static final int star_buster_rsk_focus = 8134;
-	private static final int bone_of_kaim_vanul = 7893;
-	private static final int bone_of_kaim_vanul_manaup = 8144;
-	private static final int bone_of_kaim_vanul_magicsilence = 8145;
-	private static final int bone_of_kaim_vanul_updown = 8146;
+	private static final int SWORD_OF_DAMASCUS = 79;
+	private static final int SWORD_OF_DAMASCUS_FOCUS = 4717;
+	private static final int SWORD_OF_DAMASCUS_CRT_DAMAGE = 4718;
+	private static final int SWORD_OF_DAMASCUS_HASTE = 4719;
+	private static final int HAZARD_BOW = 287;
+	private static final int HAZARD_BOW_GUIDENCE = 4828;
+	private static final int HAZARD_BOW_QUICKRECOVERY = 4829;
+	private static final int HAZARD_BOW_CHEAPSHOT = 4830;
+	private static final int LANCIA = 97;
+	private static final int LANCIA_ANGER = 4858;
+	private static final int LANCIA_CRT_STUN = 4859;
+	private static final int LANCIA_LONGBLOW = 4860;
+	private static final int ART_OF_BATTLE_AXE = 175;
+	private static final int ART_OF_BATTLE_AXE_HEALTH = 4753;
+	private static final int ART_OF_BATTLE_AXE_RSK_FOCUS = 4754;
+	private static final int ART_OF_BATTLE_AXE_HASTE = 4755;
+	private static final int STAFF_OF_EVIL_SPRIT = 210;
+	private static final int STAFF_OF_EVIL_SPRIT_MAGICFOCUS = 4900;
+	private static final int STAFF_OF_EVIL_SPRIT_MAGICBLESSTHEBODY = 4901;
+	private static final int STAFF_OF_EVIL_SPRIT_MAGICPOISON = 4902;
+	private static final int DEMONS_SWORD = 234;
+	private static final int DEMONS_SWORD_CRT_BLEED = 4780;
+	private static final int DEMONS_SWORD_CRT_POISON = 4781;
+	private static final int DEMONS_SWORD_MIGHTMOTAL = 4782;
+	private static final int BELLION_CESTUS = 268;
+	private static final int BELLION_CESTUS_CRT_DRAIN = 4804;
+	private static final int BELLION_CESTUS_CRT_POISON = 4805;
+	private static final int BELLION_CESTUS_RSK_HASTE = 4806;
+	private static final int DEADMANS_GLORY = 171;
+	private static final int DEADMANS_GLORY_ANGER = 4750;
+	private static final int DEADMANS_GLORY_HEALTH = 4751;
+	private static final int DEADMANS_GLORY_HASTE = 4752;
+	private static final int SAMURAI_LONGSWORD_SAMURAI_LONGSWORD = 2626;
+	private static final int GUARDIANS_SWORD = 7883;
+	private static final int GUARDIANS_SWORD_CRT_DRAIN = 8105;
+	private static final int GUARDIANS_SWORD_HEALTH = 8106;
+	private static final int GUARDIANS_SWORD_CRT_BLEED = 8107;
+	private static final int TEARS_OF_WIZARD = 7889;
+	private static final int TEARS_OF_WIZARD_ACUMEN = 8117;
+	private static final int TEARS_OF_WIZARD_MAGICPOWER = 8118;
+	private static final int TEARS_OF_WIZARD_UPDOWN = 8119;
+	private static final int STAR_BUSTER = 7901;
+	private static final int STAR_BUSTER_HEALTH = 8132;
+	private static final int STAR_BUSTER_HASTE = 8133;
+	private static final int STAR_BUSTER_RSK_FOCUS = 8134;
+	private static final int BONE_OF_KAIM_VANUL = 7893;
+	private static final int BONE_OF_KAIM_VANUL_MANAUP = 8144;
+	private static final int BONE_OF_KAIM_VANUL_MAGICSILENCE = 8145;
+	private static final int BONE_OF_KAIM_VANUL_UPDOWN = 8146;
 	// A-grade
-	private static final int tallum_blade = 80;
-	private static final int carnium_bow = 288;
-	private static final int halbard = 98;
-	private static final int elemental_sword = 150;
-	private static final int dasparions_staff = 212;
-	private static final int bloody_orchid = 235;
-	private static final int blood_tornado = 269;
-	private static final int meteor_shower = 2504;
-	private static final int kshanberk_kshanberk = 5233;
-	private static final int inferno_master = 7884;
-	private static final int eye_of_soul = 7894;
-	private static final int hammer_of_destroyer = 7899;
+	private static final int TALLUM_BLADE = 80;
+	private static final int CARNIUM_BOW = 288;
+	private static final int HALBARD = 98;
+	private static final int ELEMENTAL_SWORD = 150;
+	private static final int DASPARIONS_STAFF = 212;
+	private static final int BLOODY_ORCHID = 235;
+	private static final int BLOOD_TORNADO = 269;
+	private static final int METEOR_SHOWER = 2504;
+	private static final int KSHANBERK_KSHANBERK = 5233;
+	private static final int INFERNO_MASTER = 7884;
+	private static final int EYE_OF_SOUL = 7894;
+	private static final int HAMMER_OF_DESTROYER = 7899;
 	
 	public Q00234_FatesWhisper()
 	{
 		super(234, Q00234_FatesWhisper.class.getSimpleName(), "Fate's Whisper");
-		addStartNpc(maestro_leorin);
-		addTalkId(zenkin, cliff, master_kaspar, head_blacksmith_ferris, maestro_leorin);
-		addTalkId(coffer_of_the_dead, chest_of_kernon, chest_of_hallate, chest_of_golkonda);
+		addStartNpc(MAESTRO_LEORIN);
+		addTalkId(ZENKIN, CLIFF, MASTER_KASPAR, HEAD_BLACKSMITH_FERRIS, MAESTRO_LEORIN);
+		addTalkId(COFFER_OF_THE_DEAD, CHEST_OF_KERNON, CHEST_OF_HALLATE, CHEST_OF_GOLKONDA);
 		
-		addKillId(platinum_tribe_grunt, platinum_tribe_archer, platinum_tribe_warrior, platinum_tribe_shaman, platinum_tribe_lord, guardian_angel, seal_angel, seal_angel_r);
-		addKillId(domb_death_cabrio, kernon, golkonda_longhorn, hallate_the_death_lord);
+		addKillId(PLATINUM_TRIBE_GRUNT, PLATINUM_TRIBE_ARCHER, PLATINUM_TRIBE_WARRIOR, PLATINUM_TRIBE_SHAMAN, PLATINUM_TRIBE_LORD, GUARDIAN_ANGEL, SEAL_ANGEL, SEAL_ANGEL_R);
+		addKillId(DOMB_DEATH_CABRIO, KERNON, GOLKONDA_LONGHORN, HALLATE_THE_DEATH_LORD);
 		
-		addSpawnId(coffer_of_the_dead, chest_of_kernon, chest_of_hallate, chest_of_golkonda);
-		addAttackId(baium);
-		registerQuestItems(q_bloody_fabric_q0234, q_white_fabric_q0234, q_pipette_knife, q_reirias_soulorb, q_infernium_scepter_1, q_infernium_scepter_2, q_infernium_scepter_3, q_maestro_reorins_hammer, q_maestro_reorins_mold, q_infernium_varnish, q_red_pipette_knife);
+		addSpawnId(COFFER_OF_THE_DEAD, CHEST_OF_KERNON, CHEST_OF_HALLATE, CHEST_OF_GOLKONDA);
+		addAttackId(BAIUM);
+		registerQuestItems(Q_BLOODY_FABRIC_Q0234, Q_WHITE_FABRIC_Q0234, Q_PIPETTE_KNIFE, Q_REIRIAS_SOULORB, Q_INFERNIUM_SCEPTER_1, Q_INFERNIUM_SCEPTER_2, Q_INFERNIUM_SCEPTER_3, Q_MAESTRO_REORINS_HAMMER, Q_MAESTRO_REORINS_MOLD, Q_INFERNIUM_VARNISH, Q_RED_PIPETTE_KNIFE);
 	}
 	
 	@Override
@@ -162,22 +162,22 @@ public final class Q00234_FatesWhisper extends Quest
 	{
 		switch (npc.getId())
 		{
-			case coffer_of_the_dead:
+			case COFFER_OF_THE_DEAD:
 			{
 				startQuestTimer("23401", 1000 * 120, npc, null);
 				break;
 			}
-			case chest_of_kernon:
+			case CHEST_OF_KERNON:
 			{
 				startQuestTimer("23402", 1000 * 120, npc, null);
 				break;
 			}
-			case chest_of_hallate:
+			case CHEST_OF_HALLATE:
 			{
 				startQuestTimer("23403", 1000 * 120, npc, null);
 				break;
 			}
-			case chest_of_golkonda:
+			case CHEST_OF_GOLKONDA:
 			{
 				startQuestTimer("23404", 1000 * 120, npc, null);
 				break;
@@ -197,7 +197,7 @@ public final class Q00234_FatesWhisper extends Quest
 		}
 		switch (npc.getId())
 		{
-			case zenkin:
+			case ZENKIN:
 			{
 				switch (qs.getMemoState())
 				{
@@ -210,13 +210,13 @@ public final class Q00234_FatesWhisper extends Quest
 				}
 				break;
 			}
-			case cliff:
+			case CLIFF:
 			{
-				if (qs.isMemoState(4) && !qs.hasQuestItems(q_infernium_varnish))
+				if (qs.isMemoState(4) && !qs.hasQuestItems(Q_INFERNIUM_VARNISH))
 				{
 					return "30182-01.html";
 				}
-				if (qs.isMemoState(4) && qs.hasQuestItems(q_infernium_varnish))
+				if (qs.isMemoState(4) && qs.hasQuestItems(Q_INFERNIUM_VARNISH))
 				{
 					return "30182-05.html";
 				}
@@ -225,42 +225,42 @@ public final class Q00234_FatesWhisper extends Quest
 					return "30182-06.html";
 				}
 			}
-			case master_kaspar:
+			case MASTER_KASPAR:
 			{
 				if (qs.isMemoState(7))
 				{
 					return "30833-01.html";
 				}
-				if (qs.isMemoState(8) && !qs.hasQuestItems(q_red_pipette_knife) && !qs.hasQuestItems(q_bloody_fabric_q0234, q_white_fabric_q0234))
+				if (qs.isMemoState(8) && !qs.hasQuestItems(Q_RED_PIPETTE_KNIFE) && !qs.hasQuestItems(Q_BLOODY_FABRIC_Q0234, Q_WHITE_FABRIC_Q0234))
 				{
 					return "30833-03.html";
 				}
-				if (qs.isMemoState(8) && qs.hasQuestItems(q_red_pipette_knife) && !qs.hasQuestItems(q_bloody_fabric_q0234, q_white_fabric_q0234))
+				if (qs.isMemoState(8) && qs.hasQuestItems(Q_RED_PIPETTE_KNIFE) && !qs.hasQuestItems(Q_BLOODY_FABRIC_Q0234, Q_WHITE_FABRIC_Q0234))
 				{
-					qs.giveItems(q_maestro_reorins_mold, 1);
-					qs.takeItems(q_red_pipette_knife, 1);
+					qs.giveItems(Q_MAESTRO_REORINS_MOLD, 1);
+					qs.takeItems(Q_RED_PIPETTE_KNIFE, 1);
 					qs.setMemoState(9);
 					qs.setCond(10, true);
 					qs.showQuestionMark(234);
 					return "30833-04.html";
 				}
-				if (qs.isMemoState(8) && !qs.hasQuestItems(q_red_pipette_knife) && (qs.getQuestItemsCount(q_bloody_fabric_q0234) < 30) && ((qs.getQuestItemsCount(q_bloody_fabric_q0234) + qs.getQuestItemsCount(q_white_fabric_q0234)) >= 30))
+				if (qs.isMemoState(8) && !qs.hasQuestItems(Q_RED_PIPETTE_KNIFE) && (qs.getQuestItemsCount(Q_BLOODY_FABRIC_Q0234) < 30) && ((qs.getQuestItemsCount(Q_BLOODY_FABRIC_Q0234) + qs.getQuestItemsCount(Q_WHITE_FABRIC_Q0234)) >= 30))
 				{
 					return "30833-03c.html";
 				}
-				if (qs.isMemoState(8) && !qs.hasQuestItems(q_red_pipette_knife) && (qs.getQuestItemsCount(q_bloody_fabric_q0234) >= 30) && ((qs.getQuestItemsCount(q_bloody_fabric_q0234) + qs.getQuestItemsCount(q_white_fabric_q0234)) >= 30))
+				if (qs.isMemoState(8) && !qs.hasQuestItems(Q_RED_PIPETTE_KNIFE) && (qs.getQuestItemsCount(Q_BLOODY_FABRIC_Q0234) >= 30) && ((qs.getQuestItemsCount(Q_BLOODY_FABRIC_Q0234) + qs.getQuestItemsCount(Q_WHITE_FABRIC_Q0234)) >= 30))
 				{
-					qs.giveItems(q_maestro_reorins_mold, 1);
-					qs.takeItems(q_bloody_fabric_q0234, -1);
+					qs.giveItems(Q_MAESTRO_REORINS_MOLD, 1);
+					qs.takeItems(Q_BLOODY_FABRIC_Q0234, -1);
 					qs.setMemoState(9);
 					qs.setCond(10, true);
 					qs.showQuestionMark(234);
 					return "30833-03d.html";
 				}
-				if (qs.isMemoState(8) && !qs.hasQuestItems(q_red_pipette_knife) && ((qs.getQuestItemsCount(q_bloody_fabric_q0234) + qs.getQuestItemsCount(q_white_fabric_q0234)) < 30) && ((qs.getQuestItemsCount(q_bloody_fabric_q0234) + qs.getQuestItemsCount(q_white_fabric_q0234)) > 0))
+				if (qs.isMemoState(8) && !qs.hasQuestItems(Q_RED_PIPETTE_KNIFE) && ((qs.getQuestItemsCount(Q_BLOODY_FABRIC_Q0234) + qs.getQuestItemsCount(Q_WHITE_FABRIC_Q0234)) < 30) && ((qs.getQuestItemsCount(Q_BLOODY_FABRIC_Q0234) + qs.getQuestItemsCount(Q_WHITE_FABRIC_Q0234)) > 0))
 				{
-					qs.giveItems(q_white_fabric_q0234, 30 - qs.getQuestItemsCount(q_white_fabric_q0234));
-					qs.takeItems(q_bloody_fabric_q0234, -1);
+					qs.giveItems(Q_WHITE_FABRIC_Q0234, 30 - qs.getQuestItemsCount(Q_WHITE_FABRIC_Q0234));
+					qs.takeItems(Q_BLOODY_FABRIC_Q0234, -1);
 					return "30833-03e.html";
 				}
 				if (qs.getMemoState() >= 9)
@@ -269,15 +269,15 @@ public final class Q00234_FatesWhisper extends Quest
 				}
 				break;
 			}
-			case head_blacksmith_ferris:
+			case HEAD_BLACKSMITH_FERRIS:
 			{
 				if (qs.isMemoState(5))
 				{
-					if (qs.hasQuestItems(q_maestro_reorins_hammer))
+					if (qs.hasQuestItems(Q_MAESTRO_REORINS_HAMMER))
 					{
 						return "30847-02.html";
 					}
-					qs.giveItems(q_maestro_reorins_hammer, 1);
+					qs.giveItems(Q_MAESTRO_REORINS_HAMMER, 1);
 					return "30847-01.html";
 				}
 				if (qs.getMemoState() >= 6)
@@ -286,7 +286,7 @@ public final class Q00234_FatesWhisper extends Quest
 				}
 				break;
 			}
-			case maestro_leorin:
+			case MAESTRO_LEORIN:
 			{
 				if (qs.isCreated() && (player.getLevel() >= 75))
 				{
@@ -300,35 +300,35 @@ public final class Q00234_FatesWhisper extends Quest
 				{
 					return getAlreadyCompletedMsg(player);
 				}
-				if (qs.isMemoState(1) && !qs.hasQuestItems(q_reirias_soulorb))
+				if (qs.isMemoState(1) && !qs.hasQuestItems(Q_REIRIAS_SOULORB))
 				{
 					return "31002-09.html";
 				}
-				if (qs.isMemoState(1) && qs.hasQuestItems(q_reirias_soulorb))
+				if (qs.isMemoState(1) && qs.hasQuestItems(Q_REIRIAS_SOULORB))
 				{
 					return "31002-10.html";
 				}
-				if (qs.isMemoState(2) && !qs.hasQuestItems(q_infernium_scepter_1, q_infernium_scepter_2, q_infernium_scepter_3))
+				if (qs.isMemoState(2) && !qs.hasQuestItems(Q_INFERNIUM_SCEPTER_1, Q_INFERNIUM_SCEPTER_2, Q_INFERNIUM_SCEPTER_3))
 				{
 					return "31002-12.html";
 				}
-				if (qs.isMemoState(2) && qs.hasQuestItems(q_infernium_scepter_1, q_infernium_scepter_2, q_infernium_scepter_3))
+				if (qs.isMemoState(2) && qs.hasQuestItems(Q_INFERNIUM_SCEPTER_1, Q_INFERNIUM_SCEPTER_2, Q_INFERNIUM_SCEPTER_3))
 				{
 					return "31002-13.html";
 				}
-				if (qs.isMemoState(4) && !qs.hasQuestItems(q_infernium_varnish))
+				if (qs.isMemoState(4) && !qs.hasQuestItems(Q_INFERNIUM_VARNISH))
 				{
 					return "31002-15.html";
 				}
-				if (qs.isMemoState(4) && qs.hasQuestItems(q_infernium_varnish))
+				if (qs.isMemoState(4) && qs.hasQuestItems(Q_INFERNIUM_VARNISH))
 				{
 					return "31002-16.html";
 				}
-				if (qs.isMemoState(5) && !qs.hasQuestItems(q_maestro_reorins_hammer))
+				if (qs.isMemoState(5) && !qs.hasQuestItems(Q_MAESTRO_REORINS_HAMMER))
 				{
 					return "31002-18.html";
 				}
-				if (qs.isMemoState(5) && qs.hasQuestItems(q_maestro_reorins_hammer))
+				if (qs.isMemoState(5) && qs.hasQuestItems(Q_MAESTRO_REORINS_HAMMER))
 				{
 					return "31002-19.html";
 				}
@@ -336,94 +336,94 @@ public final class Q00234_FatesWhisper extends Quest
 				{
 					return "31002-21.html";
 				}
-				if (qs.isMemoState(9) && qs.hasQuestItems(q_maestro_reorins_mold))
+				if (qs.isMemoState(9) && qs.hasQuestItems(Q_MAESTRO_REORINS_MOLD))
 				{
 					return "31002-22.html";
 				}
-				if (qs.isMemoState(10) && (qs.getQuestItemsCount(crystal_b) < 984))
+				if (qs.isMemoState(10) && (qs.getQuestItemsCount(CRYSTAL_B) < 984))
 				{
 					return "31002-24.html";
 				}
-				if (qs.isMemoState(10) && (qs.getQuestItemsCount(crystal_b) >= 984))
+				if (qs.isMemoState(10) && (qs.getQuestItemsCount(CRYSTAL_B) >= 984))
 				{
 					return "31002-25.html";
 				}
 				switch (qs.getMemoState())
 				{
 					case 11:
-						if (hasAtLeastOneQuestItem(player, sword_of_damascus, sword_of_damascus_focus, sword_of_damascus_crt_damage, sword_of_damascus_haste))
+						if (hasAtLeastOneQuestItem(player, SWORD_OF_DAMASCUS, SWORD_OF_DAMASCUS_FOCUS, SWORD_OF_DAMASCUS_CRT_DAMAGE, SWORD_OF_DAMASCUS_HASTE))
 						{
 							return "31002-35.html";
 						}
 						return "31002-35a.html";
 					case 12:
-						if (hasAtLeastOneQuestItem(player, hazard_bow_guidence, hazard_bow_quickrecovery, hazard_bow_cheapshot, hazard_bow))
+						if (hasAtLeastOneQuestItem(player, HAZARD_BOW_GUIDENCE, HAZARD_BOW_QUICKRECOVERY, HAZARD_BOW_CHEAPSHOT, HAZARD_BOW))
 						{
 							return "31002-36.html";
 						}
 						return "31002-36a.html";
 					case 13:
-						if (hasAtLeastOneQuestItem(player, lancia_anger, lancia_crt_stun, lancia_longblow, lancia))
+						if (hasAtLeastOneQuestItem(player, LANCIA_ANGER, LANCIA_CRT_STUN, LANCIA_LONGBLOW, LANCIA))
 						{
 							return "31002-37.html";
 						}
 						return "31002-37a.html";
 					case 14:
-						if (hasAtLeastOneQuestItem(player, art_of_battle_axe_health, art_of_battle_axe_rsk_focus, art_of_battle_axe_haste, art_of_battle_axe))
+						if (hasAtLeastOneQuestItem(player, ART_OF_BATTLE_AXE_HEALTH, ART_OF_BATTLE_AXE_RSK_FOCUS, ART_OF_BATTLE_AXE_HASTE, ART_OF_BATTLE_AXE))
 						{
 							return "31002-38.html";
 						}
 						return "31002-38a.html";
 					case 15:
-						if (hasAtLeastOneQuestItem(player, staff_of_evil_sprit_magicfocus, staff_of_evil_sprit_magicblessthebody, staff_of_evil_sprit_magicpoison, staff_of_evil_sprit))
+						if (hasAtLeastOneQuestItem(player, STAFF_OF_EVIL_SPRIT_MAGICFOCUS, STAFF_OF_EVIL_SPRIT_MAGICBLESSTHEBODY, STAFF_OF_EVIL_SPRIT_MAGICPOISON, STAFF_OF_EVIL_SPRIT))
 						{
 							return "31002-39.html";
 						}
 						return "31002-39a.html";
 					case 16:
-						if (hasAtLeastOneQuestItem(player, demons_sword_crt_bleed, demons_sword_crt_poison, demons_sword_mightmotal, demons_sword))
+						if (hasAtLeastOneQuestItem(player, DEMONS_SWORD_CRT_BLEED, DEMONS_SWORD_CRT_POISON, DEMONS_SWORD_MIGHTMOTAL, DEMONS_SWORD))
 						{
 							return "31002-40.html";
 						}
 						return "31002-40a.html";
 					case 17:
-						if (hasAtLeastOneQuestItem(player, bellion_cestus_crt_drain, bellion_cestus_crt_poison, bellion_cestus_rsk_haste, bellion_cestus))
+						if (hasAtLeastOneQuestItem(player, BELLION_CESTUS_CRT_DRAIN, BELLION_CESTUS_CRT_POISON, BELLION_CESTUS_RSK_HASTE, BELLION_CESTUS))
 						{
 							return "31002-41.html";
 						}
 						return "31002-41a.html";
 					case 18:
-						if (hasAtLeastOneQuestItem(player, deadmans_glory_anger, deadmans_glory_health, deadmans_glory_haste, deadmans_glory))
+						if (hasAtLeastOneQuestItem(player, DEADMANS_GLORY_ANGER, DEADMANS_GLORY_HEALTH, DEADMANS_GLORY_HASTE, DEADMANS_GLORY))
 						{
 							return "31002-42.html";
 						}
 						return "31002-42a.html";
 					case 19:
-						if (hasAtLeastOneQuestItem(player, samurai_longsword_samurai_longsword))
+						if (hasAtLeastOneQuestItem(player, SAMURAI_LONGSWORD_SAMURAI_LONGSWORD))
 						{
 							return "31002-43.html";
 						}
 						return "31002-43a.html";
 					case 41:
-						if (hasAtLeastOneQuestItem(player, guardians_sword, guardians_sword_crt_drain, guardians_sword_health, guardians_sword_crt_bleed))
+						if (hasAtLeastOneQuestItem(player, GUARDIANS_SWORD, GUARDIANS_SWORD_CRT_DRAIN, GUARDIANS_SWORD_HEALTH, GUARDIANS_SWORD_CRT_BLEED))
 						{
 							return "31002-43b.html";
 						}
 						return "31002-43c.html";
 					case 42:
-						if (hasAtLeastOneQuestItem(player, tears_of_wizard, tears_of_wizard_acumen, tears_of_wizard_magicpower, tears_of_wizard_updown))
+						if (hasAtLeastOneQuestItem(player, TEARS_OF_WIZARD, TEARS_OF_WIZARD_ACUMEN, TEARS_OF_WIZARD_MAGICPOWER, TEARS_OF_WIZARD_UPDOWN))
 						{
 							return "31002-43d.html";
 						}
 						return "31002-43e.html";
 					case 43:
-						if (hasAtLeastOneQuestItem(player, star_buster, star_buster_health, star_buster_haste, star_buster_rsk_focus))
+						if (hasAtLeastOneQuestItem(player, STAR_BUSTER, STAR_BUSTER_HEALTH, STAR_BUSTER_HASTE, STAR_BUSTER_RSK_FOCUS))
 						{
 							return "31002-43f.html";
 						}
 						return "31002-43g.html";
 					case 44:
-						if (hasAtLeastOneQuestItem(player, bone_of_kaim_vanul, bone_of_kaim_vanul_manaup, bone_of_kaim_vanul_magicsilence, bone_of_kaim_vanul_updown))
+						if (hasAtLeastOneQuestItem(player, BONE_OF_KAIM_VANUL, BONE_OF_KAIM_VANUL_MANAUP, BONE_OF_KAIM_VANUL_MAGICSILENCE, BONE_OF_KAIM_VANUL_UPDOWN))
 						{
 							return "31002-43h.html";
 						}
@@ -431,57 +431,57 @@ public final class Q00234_FatesWhisper extends Quest
 				}
 				break;
 			}
-			case coffer_of_the_dead:
+			case COFFER_OF_THE_DEAD:
 			{
-				if (qs.isMemoState(1) && !qs.hasQuestItems(q_reirias_soulorb))
+				if (qs.isMemoState(1) && !qs.hasQuestItems(Q_REIRIAS_SOULORB))
 				{
-					qs.giveItems(q_reirias_soulorb, 1);
+					qs.giveItems(Q_REIRIAS_SOULORB, 1);
 					qs.playSound(QuestSound.ITEMSOUND_QUEST_ITEMGET);
 					return "31027-01.html";
 				}
-				if ((qs.getMemoState() > 1) || qs.hasQuestItems(q_reirias_soulorb))
+				if ((qs.getMemoState() > 1) || qs.hasQuestItems(Q_REIRIAS_SOULORB))
 				{
 					return "31027-02.html";
 				}
 				break;
 			}
-			case chest_of_kernon:
+			case CHEST_OF_KERNON:
 			{
-				if (qs.isMemoState(2) && !qs.hasQuestItems(q_infernium_scepter_1))
+				if (qs.isMemoState(2) && !qs.hasQuestItems(Q_INFERNIUM_SCEPTER_1))
 				{
-					qs.giveItems(q_infernium_scepter_1, 1);
+					qs.giveItems(Q_INFERNIUM_SCEPTER_1, 1);
 					qs.playSound(QuestSound.ITEMSOUND_QUEST_ITEMGET);
 					return "31028-01.html";
 				}
-				if ((qs.getMemoState() != 2) || qs.hasQuestItems(q_infernium_scepter_1))
+				if ((qs.getMemoState() != 2) || qs.hasQuestItems(Q_INFERNIUM_SCEPTER_1))
 				{
 					return "31028-02.html";
 				}
 				break;
 			}
-			case chest_of_golkonda:
+			case CHEST_OF_GOLKONDA:
 			{
-				if (qs.isMemoState(2) && !qs.hasQuestItems(q_infernium_scepter_2))
+				if (qs.isMemoState(2) && !qs.hasQuestItems(Q_INFERNIUM_SCEPTER_2))
 				{
-					qs.giveItems(q_infernium_scepter_2, 1);
+					qs.giveItems(Q_INFERNIUM_SCEPTER_2, 1);
 					qs.playSound(QuestSound.ITEMSOUND_QUEST_ITEMGET);
 					return "31029-01.html";
 				}
-				if ((qs.getMemoState() != 2) || qs.hasQuestItems(q_infernium_scepter_2))
+				if ((qs.getMemoState() != 2) || qs.hasQuestItems(Q_INFERNIUM_SCEPTER_2))
 				{
 					return "31029-02.html";
 				}
 				break;
 			}
-			case chest_of_hallate:
+			case CHEST_OF_HALLATE:
 			{
-				if (qs.isMemoState(2) && !qs.hasQuestItems(q_infernium_scepter_3))
+				if (qs.isMemoState(2) && !qs.hasQuestItems(Q_INFERNIUM_SCEPTER_3))
 				{
-					qs.giveItems(q_infernium_scepter_3, 1);
+					qs.giveItems(Q_INFERNIUM_SCEPTER_3, 1);
 					qs.playSound(QuestSound.ITEMSOUND_QUEST_ITEMGET);
 					return "31030-01.html";
 				}
-				if ((qs.getMemoState() != 2) || qs.hasQuestItems(q_infernium_scepter_3))
+				if ((qs.getMemoState() != 2) || qs.hasQuestItems(Q_INFERNIUM_SCEPTER_3))
 				{
 					return "31030-02.html";
 				}
@@ -529,7 +529,7 @@ public final class Q00234_FatesWhisper extends Quest
 		
 		switch (npcId)
 		{
-			case zenkin:
+			case ZENKIN:
 			{
 				switch (eventID)
 				{
@@ -543,7 +543,7 @@ public final class Q00234_FatesWhisper extends Quest
 					}
 				}
 			}
-			case cliff:
+			case CLIFF:
 			{
 				switch (eventID)
 				{
@@ -557,16 +557,16 @@ public final class Q00234_FatesWhisper extends Quest
 					}
 					case 3:
 					{
-						if ((qs.getMemoState() == 4) && !qs.hasQuestItems(q_infernium_varnish))
+						if ((qs.getMemoState() == 4) && !qs.hasQuestItems(Q_INFERNIUM_VARNISH))
 						{
-							qs.giveItems(q_infernium_varnish, 1);
+							qs.giveItems(Q_INFERNIUM_VARNISH, 1);
 							return "30182-04.html";
 						}
 					}
 				}
 				break;
 			}
-			case master_kaspar:
+			case MASTER_KASPAR:
 			{
 				switch (eventID)
 				{
@@ -582,7 +582,7 @@ public final class Q00234_FatesWhisper extends Quest
 					{
 						if (qs.isMemoState(7))
 						{
-							qs.giveItems(q_pipette_knife, 1);
+							qs.giveItems(Q_PIPETTE_KNIFE, 1);
 							qs.setMemoState(8);
 							qs.setCond(7, true);
 							qs.showQuestionMark(234);
@@ -594,7 +594,7 @@ public final class Q00234_FatesWhisper extends Quest
 					{
 						if (qs.isMemoState(7))
 						{
-							qs.giveItems(q_white_fabric_q0234, 30);
+							qs.giveItems(Q_WHITE_FABRIC_Q0234, 30);
 							qs.setMemoState(8);
 							qs.setCond(8, true);
 							qs.showQuestionMark(234);
@@ -605,7 +605,7 @@ public final class Q00234_FatesWhisper extends Quest
 				}
 				break;
 			}
-			case maestro_leorin:
+			case MAESTRO_LEORIN:
 			{
 				switch (eventID)
 				{
@@ -625,9 +625,9 @@ public final class Q00234_FatesWhisper extends Quest
 					}
 					case 5:
 					{
-						if (qs.isMemoState(1) && qs.hasQuestItems(q_reirias_soulorb))
+						if (qs.isMemoState(1) && qs.hasQuestItems(Q_REIRIAS_SOULORB))
 						{
-							qs.takeItems(q_reirias_soulorb, 1);
+							qs.takeItems(Q_REIRIAS_SOULORB, 1);
 							qs.setMemoState(2);
 							qs.setCond(2, true);
 							qs.showQuestionMark(234);
@@ -637,11 +637,11 @@ public final class Q00234_FatesWhisper extends Quest
 					}
 					case 6:
 					{
-						if (qs.isMemoState(2) && qs.hasQuestItems(q_infernium_scepter_1, q_infernium_scepter_2, q_infernium_scepter_3))
+						if (qs.isMemoState(2) && qs.hasQuestItems(Q_INFERNIUM_SCEPTER_1, Q_INFERNIUM_SCEPTER_2, Q_INFERNIUM_SCEPTER_3))
 						{
-							qs.takeItems(q_infernium_scepter_1, -1);
-							qs.takeItems(q_infernium_scepter_2, -1);
-							qs.takeItems(q_infernium_scepter_3, -1);
+							qs.takeItems(Q_INFERNIUM_SCEPTER_1, -1);
+							qs.takeItems(Q_INFERNIUM_SCEPTER_2, -1);
+							qs.takeItems(Q_INFERNIUM_SCEPTER_3, -1);
 							qs.setMemoState(4);
 							qs.setCond(3, true);
 							qs.showQuestionMark(234);
@@ -651,9 +651,9 @@ public final class Q00234_FatesWhisper extends Quest
 					}
 					case 7:
 					{
-						if (qs.isMemoState(4) && qs.hasQuestItems(q_infernium_varnish))
+						if (qs.isMemoState(4) && qs.hasQuestItems(Q_INFERNIUM_VARNISH))
 						{
-							qs.takeItems(q_infernium_varnish, 1);
+							qs.takeItems(Q_INFERNIUM_VARNISH, 1);
 							qs.setMemoState(5);
 							qs.setCond(4, true);
 							qs.showQuestionMark(234);
@@ -663,9 +663,9 @@ public final class Q00234_FatesWhisper extends Quest
 					}
 					case 8:
 					{
-						if (qs.isMemoState(5) && qs.hasQuestItems(q_maestro_reorins_hammer))
+						if (qs.isMemoState(5) && qs.hasQuestItems(Q_MAESTRO_REORINS_HAMMER))
 						{
-							qs.takeItems(q_maestro_reorins_hammer, 1);
+							qs.takeItems(Q_MAESTRO_REORINS_HAMMER, 1);
 							qs.setMemoState(6);
 							qs.setCond(5, true);
 							qs.showQuestionMark(234);
@@ -675,9 +675,9 @@ public final class Q00234_FatesWhisper extends Quest
 					}
 					case 9:
 					{
-						if (qs.isMemoState(9) && qs.hasQuestItems(q_maestro_reorins_mold))
+						if (qs.isMemoState(9) && qs.hasQuestItems(Q_MAESTRO_REORINS_MOLD))
 						{
-							qs.takeItems(q_maestro_reorins_mold, 1);
+							qs.takeItems(Q_MAESTRO_REORINS_MOLD, 1);
 							qs.setMemoState(10);
 							qs.setCond(11, true);
 							qs.showQuestionMark(234);
@@ -689,9 +689,9 @@ public final class Q00234_FatesWhisper extends Quest
 					{
 						if (qs.isMemoState(10))
 						{
-							if (qs.getQuestItemsCount(crystal_b) >= 984)
+							if (qs.getQuestItemsCount(CRYSTAL_B) >= 984)
 							{
-								qs.takeItems(crystal_b, 984);
+								qs.takeItems(CRYSTAL_B, 984);
 								qs.setMemoState(11);
 								qs.setCond(12, true);
 								qs.showQuestionMark(234);
@@ -705,9 +705,9 @@ public final class Q00234_FatesWhisper extends Quest
 					{
 						if (qs.isMemoState(10))
 						{
-							if (qs.getQuestItemsCount(crystal_b) >= 984)
+							if (qs.getQuestItemsCount(CRYSTAL_B) >= 984)
 							{
-								qs.takeItems(crystal_b, 984);
+								qs.takeItems(CRYSTAL_B, 984);
 								qs.setMemoState(19);
 								qs.setCond(12, true);
 								qs.showQuestionMark(234);
@@ -721,9 +721,9 @@ public final class Q00234_FatesWhisper extends Quest
 					{
 						if (qs.isMemoState(10))
 						{
-							if (qs.getQuestItemsCount(crystal_b) >= 984)
+							if (qs.getQuestItemsCount(CRYSTAL_B) >= 984)
 							{
-								qs.takeItems(crystal_b, 984);
+								qs.takeItems(CRYSTAL_B, 984);
 								qs.setMemoState(12);
 								qs.setCond(12, true);
 								qs.showQuestionMark(234);
@@ -737,9 +737,9 @@ public final class Q00234_FatesWhisper extends Quest
 					{
 						if (qs.isMemoState(10))
 						{
-							if (qs.getQuestItemsCount(crystal_b) >= 984)
+							if (qs.getQuestItemsCount(CRYSTAL_B) >= 984)
 							{
-								qs.takeItems(crystal_b, 984);
+								qs.takeItems(CRYSTAL_B, 984);
 								qs.setMemoState(13);
 								qs.setCond(12, true);
 								qs.showQuestionMark(234);
@@ -753,9 +753,9 @@ public final class Q00234_FatesWhisper extends Quest
 					{
 						if (qs.isMemoState(10))
 						{
-							if (qs.getQuestItemsCount(crystal_b) >= 984)
+							if (qs.getQuestItemsCount(CRYSTAL_B) >= 984)
 							{
-								qs.takeItems(crystal_b, 984);
+								qs.takeItems(CRYSTAL_B, 984);
 								qs.setMemoState(14);
 								qs.setCond(12, true);
 								qs.showQuestionMark(234);
@@ -769,9 +769,9 @@ public final class Q00234_FatesWhisper extends Quest
 					{
 						if (qs.isMemoState(10))
 						{
-							if (qs.getQuestItemsCount(crystal_b) >= 984)
+							if (qs.getQuestItemsCount(CRYSTAL_B) >= 984)
 							{
-								qs.takeItems(crystal_b, 984);
+								qs.takeItems(CRYSTAL_B, 984);
 								qs.setMemoState(15);
 								qs.setCond(12, true);
 								qs.showQuestionMark(234);
@@ -785,9 +785,9 @@ public final class Q00234_FatesWhisper extends Quest
 					{
 						if (qs.isMemoState(10))
 						{
-							if (qs.getQuestItemsCount(crystal_b) >= 984)
+							if (qs.getQuestItemsCount(CRYSTAL_B) >= 984)
 							{
-								qs.takeItems(crystal_b, 984);
+								qs.takeItems(CRYSTAL_B, 984);
 								qs.setMemoState(16);
 								qs.setCond(12, true);
 								qs.showQuestionMark(234);
@@ -801,9 +801,9 @@ public final class Q00234_FatesWhisper extends Quest
 					{
 						if (qs.isMemoState(10))
 						{
-							if (qs.getQuestItemsCount(crystal_b) >= 984)
+							if (qs.getQuestItemsCount(CRYSTAL_B) >= 984)
 							{
-								qs.takeItems(crystal_b, 984);
+								qs.takeItems(CRYSTAL_B, 984);
 								qs.setMemoState(17);
 								qs.setCond(12, true);
 								qs.showQuestionMark(234);
@@ -817,9 +817,9 @@ public final class Q00234_FatesWhisper extends Quest
 					{
 						if (qs.isMemoState(10))
 						{
-							if (qs.getQuestItemsCount(crystal_b) >= 984)
+							if (qs.getQuestItemsCount(CRYSTAL_B) >= 984)
 							{
-								qs.takeItems(crystal_b, 984);
+								qs.takeItems(CRYSTAL_B, 984);
 								qs.setMemoState(18);
 								qs.setCond(12, true);
 								qs.showQuestionMark(234);
@@ -833,9 +833,9 @@ public final class Q00234_FatesWhisper extends Quest
 					{
 						if (qs.isMemoState(10))
 						{
-							if (qs.getQuestItemsCount(crystal_b) >= 984)
+							if (qs.getQuestItemsCount(CRYSTAL_B) >= 984)
 							{
-								qs.takeItems(crystal_b, 984);
+								qs.takeItems(CRYSTAL_B, 984);
 								qs.setMemoState(41);
 								qs.setCond(12, true);
 								qs.showQuestionMark(234);
@@ -849,9 +849,9 @@ public final class Q00234_FatesWhisper extends Quest
 					{
 						if (qs.isMemoState(10))
 						{
-							if (qs.getQuestItemsCount(crystal_b) >= 984)
+							if (qs.getQuestItemsCount(CRYSTAL_B) >= 984)
 							{
-								qs.takeItems(crystal_b, 984);
+								qs.takeItems(CRYSTAL_B, 984);
 								qs.setMemoState(42);
 								qs.setCond(12, true);
 								qs.showQuestionMark(234);
@@ -865,9 +865,9 @@ public final class Q00234_FatesWhisper extends Quest
 					{
 						if (qs.isMemoState(10))
 						{
-							if (qs.getQuestItemsCount(crystal_b) >= 984)
+							if (qs.getQuestItemsCount(CRYSTAL_B) >= 984)
 							{
-								qs.takeItems(crystal_b, 984);
+								qs.takeItems(CRYSTAL_B, 984);
 								qs.setMemoState(43);
 								qs.setCond(12, true);
 								qs.showQuestionMark(234);
@@ -881,9 +881,9 @@ public final class Q00234_FatesWhisper extends Quest
 					{
 						if (qs.isMemoState(10))
 						{
-							if (qs.getQuestItemsCount(crystal_b) >= 984)
+							if (qs.getQuestItemsCount(CRYSTAL_B) >= 984)
 							{
-								qs.takeItems(crystal_b, 984);
+								qs.takeItems(CRYSTAL_B, 984);
 								qs.setMemoState(44);
 								qs.setCond(12, true);
 								qs.showQuestionMark(234);
@@ -895,7 +895,7 @@ public final class Q00234_FatesWhisper extends Quest
 					}
 					case 21:
 					{
-						if (calculateReward(qs, player, tallum_blade))
+						if (calculateReward(qs, player, TALLUM_BLADE))
 						{
 							return "31002-44.html";
 						}
@@ -903,7 +903,7 @@ public final class Q00234_FatesWhisper extends Quest
 					}
 					case 22:
 					{
-						if (calculateReward(qs, player, carnium_bow))
+						if (calculateReward(qs, player, CARNIUM_BOW))
 						{
 							return "31002-44.html";
 						}
@@ -911,7 +911,7 @@ public final class Q00234_FatesWhisper extends Quest
 					}
 					case 23:
 					{
-						if (calculateReward(qs, player, halbard))
+						if (calculateReward(qs, player, HALBARD))
 						{
 							return "31002-44.html";
 						}
@@ -919,7 +919,7 @@ public final class Q00234_FatesWhisper extends Quest
 					}
 					case 24:
 					{
-						if (calculateReward(qs, player, elemental_sword))
+						if (calculateReward(qs, player, ELEMENTAL_SWORD))
 						{
 							return "31002-44.html";
 						}
@@ -927,7 +927,7 @@ public final class Q00234_FatesWhisper extends Quest
 					}
 					case 25:
 					{
-						if (calculateReward(qs, player, dasparions_staff))
+						if (calculateReward(qs, player, DASPARIONS_STAFF))
 						{
 							return "31002-44.html";
 						}
@@ -935,7 +935,7 @@ public final class Q00234_FatesWhisper extends Quest
 					}
 					case 26:
 					{
-						if (calculateReward(qs, player, bloody_orchid))
+						if (calculateReward(qs, player, BLOODY_ORCHID))
 						{
 							return "31002-44.html";
 						}
@@ -943,7 +943,7 @@ public final class Q00234_FatesWhisper extends Quest
 					}
 					case 27:
 					{
-						if (calculateReward(qs, player, blood_tornado))
+						if (calculateReward(qs, player, BLOOD_TORNADO))
 						{
 							return "31002-44.html";
 						}
@@ -951,7 +951,7 @@ public final class Q00234_FatesWhisper extends Quest
 					}
 					case 28:
 					{
-						if (calculateReward(qs, player, meteor_shower))
+						if (calculateReward(qs, player, METEOR_SHOWER))
 						{
 							return "31002-44.html";
 						}
@@ -959,7 +959,7 @@ public final class Q00234_FatesWhisper extends Quest
 					}
 					case 29:
 					{
-						if (calculateReward(qs, player, kshanberk_kshanberk))
+						if (calculateReward(qs, player, KSHANBERK_KSHANBERK))
 						{
 							return "31002-44.html";
 						}
@@ -967,7 +967,7 @@ public final class Q00234_FatesWhisper extends Quest
 					}
 					case 30:
 					{
-						if (calculateReward(qs, player, inferno_master))
+						if (calculateReward(qs, player, INFERNO_MASTER))
 						{
 							return "31002-44.html";
 						}
@@ -975,7 +975,7 @@ public final class Q00234_FatesWhisper extends Quest
 					}
 					case 31:
 					{
-						if (calculateReward(qs, player, eye_of_soul))
+						if (calculateReward(qs, player, EYE_OF_SOUL))
 						{
 							return "31002-44.html";
 						}
@@ -983,7 +983,7 @@ public final class Q00234_FatesWhisper extends Quest
 					}
 					case 32:
 					{
-						if (calculateReward(qs, player, hammer_of_destroyer))
+						if (calculateReward(qs, player, HAMMER_OF_DESTROYER))
 						{
 							return "31002-44.html";
 						}
@@ -1001,31 +1001,31 @@ public final class Q00234_FatesWhisper extends Quest
 		switch (qs.getMemoState())
 		{
 			case 11:
-				return getReward(qs, player, sword_of_damascus, sword_of_damascus_focus, sword_of_damascus_crt_damage, sword_of_damascus_haste, REWARD);
+				return getReward(qs, player, SWORD_OF_DAMASCUS, SWORD_OF_DAMASCUS_FOCUS, SWORD_OF_DAMASCUS_CRT_DAMAGE, SWORD_OF_DAMASCUS_HASTE, REWARD);
 			case 12:
-				return getReward(qs, player, hazard_bow, hazard_bow_guidence, hazard_bow_quickrecovery, hazard_bow_cheapshot, REWARD);
+				return getReward(qs, player, HAZARD_BOW, HAZARD_BOW_GUIDENCE, HAZARD_BOW_QUICKRECOVERY, HAZARD_BOW_CHEAPSHOT, REWARD);
 			case 13:
-				return getReward(qs, player, lancia, lancia_anger, lancia_crt_stun, lancia_longblow, REWARD);
+				return getReward(qs, player, LANCIA, LANCIA_ANGER, LANCIA_CRT_STUN, LANCIA_LONGBLOW, REWARD);
 			case 14:
-				return getReward(qs, player, art_of_battle_axe, art_of_battle_axe_health, art_of_battle_axe_rsk_focus, art_of_battle_axe_haste, REWARD);
+				return getReward(qs, player, ART_OF_BATTLE_AXE, ART_OF_BATTLE_AXE_HEALTH, ART_OF_BATTLE_AXE_RSK_FOCUS, ART_OF_BATTLE_AXE_HASTE, REWARD);
 			case 15:
-				return getReward(qs, player, staff_of_evil_sprit, staff_of_evil_sprit_magicfocus, staff_of_evil_sprit_magicblessthebody, staff_of_evil_sprit_magicpoison, REWARD);
+				return getReward(qs, player, STAFF_OF_EVIL_SPRIT, STAFF_OF_EVIL_SPRIT_MAGICFOCUS, STAFF_OF_EVIL_SPRIT_MAGICBLESSTHEBODY, STAFF_OF_EVIL_SPRIT_MAGICPOISON, REWARD);
 			case 16:
-				return getReward(qs, player, demons_sword, demons_sword_crt_bleed, demons_sword_crt_poison, demons_sword_mightmotal, REWARD);
+				return getReward(qs, player, DEMONS_SWORD, DEMONS_SWORD_CRT_BLEED, DEMONS_SWORD_CRT_POISON, DEMONS_SWORD_MIGHTMOTAL, REWARD);
 			case 17:
-				return getReward(qs, player, bellion_cestus, bellion_cestus_crt_drain, bellion_cestus_crt_poison, bellion_cestus_rsk_haste, REWARD);
+				return getReward(qs, player, BELLION_CESTUS, BELLION_CESTUS_CRT_DRAIN, BELLION_CESTUS_CRT_POISON, BELLION_CESTUS_RSK_HASTE, REWARD);
 			case 18:
-				return getReward(qs, player, deadmans_glory, deadmans_glory_anger, deadmans_glory_health, deadmans_glory_haste, REWARD);
+				return getReward(qs, player, DEADMANS_GLORY, DEADMANS_GLORY_ANGER, DEADMANS_GLORY_HEALTH, DEADMANS_GLORY_HASTE, REWARD);
 			case 19:
-				return getReward(qs, player, samurai_longsword_samurai_longsword, 0, 0, 0, REWARD);
+				return getReward(qs, player, SAMURAI_LONGSWORD_SAMURAI_LONGSWORD, 0, 0, 0, REWARD);
 			case 41:
-				return getReward(qs, player, guardians_sword, guardians_sword_crt_drain, guardians_sword_health, guardians_sword_crt_bleed, REWARD);
+				return getReward(qs, player, GUARDIANS_SWORD, GUARDIANS_SWORD_CRT_DRAIN, GUARDIANS_SWORD_HEALTH, GUARDIANS_SWORD_CRT_BLEED, REWARD);
 			case 42:
-				return getReward(qs, player, tears_of_wizard, tears_of_wizard_acumen, tears_of_wizard_magicpower, tears_of_wizard_updown, REWARD);
+				return getReward(qs, player, TEARS_OF_WIZARD, TEARS_OF_WIZARD_ACUMEN, TEARS_OF_WIZARD_MAGICPOWER, TEARS_OF_WIZARD_UPDOWN, REWARD);
 			case 43:
-				return getReward(qs, player, star_buster, star_buster_health, star_buster_haste, star_buster_rsk_focus, REWARD);
+				return getReward(qs, player, STAR_BUSTER, STAR_BUSTER_HEALTH, STAR_BUSTER_HASTE, STAR_BUSTER_RSK_FOCUS, REWARD);
 			case 44:
-				return getReward(qs, player, bone_of_kaim_vanul, bone_of_kaim_vanul_manaup, bone_of_kaim_vanul_magicsilence, bone_of_kaim_vanul_updown, REWARD);
+				return getReward(qs, player, BONE_OF_KAIM_VANUL, BONE_OF_KAIM_VANUL_MANAUP, BONE_OF_KAIM_VANUL_MAGICSILENCE, BONE_OF_KAIM_VANUL_UPDOWN, REWARD);
 		}
 		return false;
 	}
@@ -1035,7 +1035,7 @@ public final class Q00234_FatesWhisper extends Quest
 		if (hasAtLeastOneQuestItem(player, ITEM1, ITEM2, ITEM3, ITEM4))
 		{
 			qs.giveItems(REWARD, 1);
-			qs.giveItems(q_star_of_destiny, 1);
+			qs.giveItems(Q_STAR_OF_DESTINY, 1);
 			if (qs.hasQuestItems(ITEM1))
 			{
 				qs.takeItems(ITEM1, 1);
@@ -1064,24 +1064,24 @@ public final class Q00234_FatesWhisper extends Quest
 	{
 		switch (npc.getId())
 		{
-			case domb_death_cabrio:
+			case DOMB_DEATH_CABRIO:
 			{
-				addSpawn(coffer_of_the_dead, npc.getLocation());
+				addSpawn(COFFER_OF_THE_DEAD, npc.getLocation());
 				return super.onKill(npc, killer, isSummon);
 			}
-			case kernon:
+			case KERNON:
 			{
-				addSpawn(chest_of_kernon, npc.getLocation());
+				addSpawn(CHEST_OF_KERNON, npc.getLocation());
 				return super.onKill(npc, killer, isSummon);
 			}
-			case golkonda_longhorn:
+			case GOLKONDA_LONGHORN:
 			{
-				addSpawn(chest_of_golkonda, npc.getLocation());
+				addSpawn(CHEST_OF_GOLKONDA, npc.getLocation());
 				return super.onKill(npc, killer, isSummon);
 			}
-			case hallate_the_death_lord:
+			case HALLATE_THE_DEATH_LORD:
 			{
-				addSpawn(chest_of_hallate, npc.getLocation());
+				addSpawn(CHEST_OF_HALLATE, npc.getLocation());
 				return super.onKill(npc, killer, isSummon);
 			}
 		}
@@ -1090,18 +1090,18 @@ public final class Q00234_FatesWhisper extends Quest
 		{
 			switch (npc.getId())
 			{
-				case platinum_tribe_grunt:
-				case platinum_tribe_archer:
-				case platinum_tribe_warrior:
-				case platinum_tribe_shaman:
-				case platinum_tribe_lord:
-				case guardian_angel:
-				case seal_angel:
-				case seal_angel_r:
+				case PLATINUM_TRIBE_GRUNT:
+				case PLATINUM_TRIBE_ARCHER:
+				case PLATINUM_TRIBE_WARRIOR:
+				case PLATINUM_TRIBE_SHAMAN:
+				case PLATINUM_TRIBE_LORD:
+				case GUARDIAN_ANGEL:
+				case SEAL_ANGEL:
+				case SEAL_ANGEL_R:
 				{
-					giveItemRandomly(qs.getPlayer(), npc, q_bloody_fabric_q0234, 1, 0, 1, false);
-					qs.takeItems(q_white_fabric_q0234, 1);
-					if (qs.getQuestItemsCount(q_bloody_fabric_q0234) >= 29)
+					giveItemRandomly(qs.getPlayer(), npc, Q_BLOODY_FABRIC_Q0234, 1, 0, 1, false);
+					qs.takeItems(Q_WHITE_FABRIC_Q0234, 1);
+					if (qs.getQuestItemsCount(Q_BLOODY_FABRIC_Q0234) >= 29)
 					{
 						qs.setCond(9, true);
 						qs.showQuestionMark(234);
@@ -1122,12 +1122,12 @@ public final class Q00234_FatesWhisper extends Quest
 	public String onAttack(L2Npc npc, L2PcInstance attacker, int damage, boolean isSummon)
 	{
 		QuestState qs = attacker.getQuestState(getName());
-		if ((qs != null) && (npc.getId() == baium))
+		if ((qs != null) && (npc.getId() == BAIUM))
 		{
-			if ((attacker.getActiveWeaponItem() != null) && (attacker.getActiveWeaponItem().getId() == q_pipette_knife))
+			if ((attacker.getActiveWeaponItem() != null) && (attacker.getActiveWeaponItem().getId() == Q_PIPETTE_KNIFE))
 			{
-				qs.takeItems(q_pipette_knife, 1);
-				qs.giveItems(q_red_pipette_knife, 1);
+				qs.takeItems(Q_PIPETTE_KNIFE, 1);
+				qs.giveItems(Q_RED_PIPETTE_KNIFE, 1);
 				qs.playSound(QuestSound.ITEMSOUND_QUEST_ITEMGET);
 				npc.broadcastPacket(new NpcSay(npc.getObjectId(), Say2.ALL, npc.getId(), NpcStringId.WHO_DARES_TO_TRY_AND_STEAL_MY_NOBLE_BLOOD));
 			}
@@ -1140,7 +1140,7 @@ public final class Q00234_FatesWhisper extends Quest
 		QuestState qs = player.getQuestState(getName());
 		final List<QuestState> candidates = new ArrayList<>();
 		
-		if ((qs != null) && qs.isStarted() && (qs.getMemoState() == memoState) && !qs.hasQuestItems(q_white_fabric_q0234))
+		if ((qs != null) && qs.isStarted() && (qs.getMemoState() == memoState) && !qs.hasQuestItems(Q_WHITE_FABRIC_Q0234))
 		{
 			candidates.add(qs);
 			candidates.add(qs);
@@ -1152,7 +1152,7 @@ public final class Q00234_FatesWhisper extends Quest
 			{
 				
 				QuestState qss = pm.getQuestState(getName());
-				if ((qss != null) && qss.isStarted() && (qss.getMemoState() == memoState) && !qss.hasQuestItems(q_white_fabric_q0234) && Util.checkIfInRange(1500, npc, pm, true))
+				if ((qss != null) && qss.isStarted() && (qss.getMemoState() == memoState) && !qss.hasQuestItems(Q_WHITE_FABRIC_Q0234) && Util.checkIfInRange(1500, npc, pm, true))
 				{
 					candidates.add(qss);
 				}
diff --git a/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-01.htm b/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-01.htm
new file mode 100644
index 0000000000000000000000000000000000000000..58c95815d22d43e41587e9883edd0b99abfcb242
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-01.htm
@@ -0,0 +1,5 @@
+<html><body>Warehouse Keeper Romp:<br>
+The Iron Gate Guild is dedicated to keeping its customers' goods safe and sound. Our warehouses are virtual fortresses, strong and solid.<br>
+We now use Infernium for our warehouse doors, locks and exterior walls. There's nothing stronger that we know of. But... <br>
+<a action="bypass -h Quest Q00386_StolenDignity 5">"But what?"</a>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-03.html b/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-03.html
new file mode 100644
index 0000000000000000000000000000000000000000..884925970676298e21efc04dd039bfc8092e2193
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-03.html
@@ -0,0 +1,5 @@
+<html><body>Warehouse Keeper Romp:<br>
+Something happened a few days ago. The <font color="LEVEL">Blacksmith who was refining Infernium was attacked by monsters</font>, and all the Infernium ore were stolen. That ore was going to be used to construct a new, state-of-the-art warehouse. We must retrieve them at all costs! <br>
+Will you help us <font color="LEVEL">retrieve the Infernium ore</font>? We will gladly pay you...<br>
+<a action="bypass -h Quest Q00386_StolenDignity QUEST_ACCEPTED">Say yes.</a>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-04.html b/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-04.html
new file mode 100644
index 0000000000000000000000000000000000000000..f520ff29fa82e066f73e1f8699a240e0350d04bb
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-04.html
@@ -0,0 +1,4 @@
+<html><body>Warehouse Keeper Romp:<br>
+The Iron Gate Guild is dedicated to keeping its customers' goods safe and sound. Our warehouses are virtual fortresses, strong and solid.<br>We now use Infernium for our warehouse doors, locks and exterior walls. There's nothing stronger that we know of. But...  Eh, no, never mind. It's too early to tell you this story.<br>
+(Only characters who are level 58 or higher may undertake this quest.)
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-05.htm b/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-05.htm
new file mode 100644
index 0000000000000000000000000000000000000000..517b221f609ef4bf748c5ee4a47a598b57637311
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-05.htm
@@ -0,0 +1,4 @@
+<html><body>Warehouse Keeper Romp:<br>
+Good! <font color="LEVEL">For every 100 Infernium Ores you recover, I will give you a chance to play bingo.</font> If you do well in bingo you will also receive a nice reward: a necessary ingredient for the manufacture of an A-Grade weapon. Nice, eh?<br>
+Oh! I forgot to tell you something important. From the footprints, fur and eyewitness testimony, the monsters that attacked the blacksmith shop seem to be <font color="LEVEL">Glow Wisps, Marsh Predators, Hames Orc Snipers, Cursed Guardians, Hames Orc Overlords, Wretched Archers, Grace Lichs, Grave Predators, Crimson Drakes, Kadios, Fallen Orc Shamans, Sharp Talon Tigers, Past Knights, Hungered Corpses, Bloody Lords, Bloody Ghosts, Dark Guards, Death Agents, Spiteful Soul Leaders, Spiteful Soul Wizards, Giant's Shadows, Past Creatures, Warriors of Ancient Times and Soldiers of Ancient Times</font>. Please help us -- our Guild's pride is at stake!
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-06.html b/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-06.html
new file mode 100644
index 0000000000000000000000000000000000000000..ccc438a660054ea511d130741f31d5657b9f0d2a
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-06.html
@@ -0,0 +1,5 @@
+<html><body>Warehouse Keeper Romp:<br>
+As I told you, hunt <font color="LEVEL">Glow Wisps, Marsh Predators, Hames Orc Snipers, Cursed Guardians, Hames Orc Overlords, Wretched Archers, Grace Lichs, Grave Predators, Crimson Drakes, Kadios, Fallen Orc Shamans, Sharp Talon Tigers, Past Knights, Hungered Corpses, Bloody Lords, Bloody Ghosts, Dark Guards, Death Agents, Spiteful Soul Leaders, Spiteful Soul Wizards, Giant's Shadows, Past Creatures, Warriors of Ancient Times and Soldiers of Ancient Times</font> and bring back the Infernium Ores they stole. <font color="LEVEL">For every 100 Infernium Ores you recover, I will give you a chance to play bingo.</font> If you do well in bingo you will also receive a nice reward: a necessary ingredient for the manufacture of an A-Grade weapon.  Nice, eh? Please hurry-- our Guild's pride is at stake!<br>
+<a action="bypass -h Quest Q00386_StolenDignity 3">Listen to the rules of bingo.</a><br>
+<a action="bypass -h Quest Q00386_StolenDignity 6">Say you want to quit.</a>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-07.html b/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-07.html
new file mode 100644
index 0000000000000000000000000000000000000000..5accbdaaac67fa5aa004010496ba3e44d749a9e2
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-07.html
@@ -0,0 +1,6 @@
+<html><body>Warehouse Keeper Romp:<br>
+Did you recover the Infernium Ores? Then let's play bingo!<br>
+<font color="LEVEL">Oh, make sure you have enough spaces in your inventory before we start playing. I'd hate for you to do well and then not be able to actually receive the item!</font><br>
+<a action="bypass -h Quest Q00386_StolenDignity 8">Use 100 Infernium Ores to play bingo.</a><br>
+<a action="bypass -h Quest Q00386_StolenDignity 9">Listen to the rules of bingo.</a>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-08.html b/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-08.html
new file mode 100644
index 0000000000000000000000000000000000000000..55ebae8402448f2324761892676f27f7f1a91f9c
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-08.html
@@ -0,0 +1,4 @@
+<html><body>Warehouse Keeper Romp:<br>
+Ah well. You haven't yet recovered all the stolen Infernium Ores, but I suppose you have other concerns to deal with, too... <br>
+If you change your mind and want to help us again, please come see me.
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-09.html b/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-09.html
new file mode 100644
index 0000000000000000000000000000000000000000..9c09bafe8f42faaa858fce0dc5d7e6fda3251d37
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-09.html
@@ -0,0 +1,5 @@
+<html><body>Warehouse Keeper Romp:<br>
+I'll place numbers 1-9 on a 3x3 number pad. Then you need to pick 6 numbers out of 1-9. When you have finished making your choices, we count how many horizontal, vertical and diagonal lines were created by your choice of numbers. Is that clear enough? I think you'll understand once you play. <br>
+If your numbers make 3 lines, I'll give you a reward.<br>
+<a action ="bypass -h Quest Q00386_StolenDignity warehouse_keeper_romp_q0386_07.htm">Back</a>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-09a.htm b/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-09a.htm
new file mode 100644
index 0000000000000000000000000000000000000000..13c6bcedac233d3777399efcd0dbe39003c537dd
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-09a.htm
@@ -0,0 +1,4 @@
+<html><body>Warehouse Keeper Romp:<br>
+I'll place numbers 1-9 on a 3x3 numberpad. Then you need to pick 6 numbers out of 1-9. When you have finished making your choices, we count how many horizontal, vertical and diagonal lines were created by your choice of numbers. Is that clear enough? I think you'll understand once you play. <br>
+If your numbers make 3 lines, I'll give you a reward.
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-11.html b/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-11.html
new file mode 100644
index 0000000000000000000000000000000000000000..f4dce8ac5b97afe547f1dd85e874dd5fc73953d3
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-11.html
@@ -0,0 +1,4 @@
+<html><body>Warehouse Keeper Romp:<br>
+Well? It looks like you have only a few Infernium Ores here. Is this all you brought? <br>
+Please go back and collect more before seeing me again.
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-12.html b/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-12.html
new file mode 100644
index 0000000000000000000000000000000000000000..c70269ef8c256c007c04c4378e7c13f7cde07d8a
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-12.html
@@ -0,0 +1,14 @@
+<html><body>Warehouse Keeper Romp:<br>
+I placed numbers ranging from 1-9 on a numberpad. Of course I won't show you what they are!<br>
+But I will take 100 Infernium Ores in advance. If you quit midgame, I won't give them back! Understand?<br>
+Now it's time for you to pick 6 numbers ranging from 1-9. Pick your first number. <br>
+<a action="bypass -h Quest Q00386_StolenDignity 10">1</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 11">2</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 12">3</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 13">4</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 14">5</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 15">6</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 16">7</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 17">8</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 18">9</a>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-13.html b/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-13.html
new file mode 100644
index 0000000000000000000000000000000000000000..e5bb57ce9db8d0b784666874562f2a8fb6907c39
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-13.html
@@ -0,0 +1,30 @@
+<html><body>Warehouse Keeper Romp:<br>
+Now, pick your second number.<br>
+<a action="bypass -h Quest Q00386_StolenDignity 19">1</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 20">2</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 21">3</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 22">4</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 23">5</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 24">6</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 25">7</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 26">8</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 27">9</a><br>
+Current status<br>
+<table border="1" border color="white" width=100>
+	<tr>
+		<td align="center"><?Cell1?></td>
+		<td align="center"><?Cell2?></td>
+		<td align="center"><?Cell3?></td>
+	</tr>
+	<tr>
+		<td align="center"><?Cell4?></td>
+		<td align="center"><?Cell5?></td>
+		<td align="center"><?Cell6?></td>
+	</tr>
+	<tr>
+		<td align="center"><?Cell7?></td>
+		<td align="center"><?Cell8?></td>
+		<td align="center"><?Cell9?></td>
+	</tr>
+</table>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-14.html b/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-14.html
new file mode 100644
index 0000000000000000000000000000000000000000..edda002a78d44749f2e9eff30eae7675a0af70cf
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-14.html
@@ -0,0 +1,30 @@
+<html><body>Warehouse Keeper Romp:<br>
+Ready to pick your third number?<br>
+<a action="bypass -h Quest Q00386_StolenDignity 19">1</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 20">2</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 21">3</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 22">4</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 23">5</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 24">6</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 25">7</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 26">8</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 27">9</a><br>
+Current status<br>
+<table border="1" border color="white" width=100>
+<tr>
+	<td align="center"><?Cell1?></td>
+	<td align="center"><?Cell2?></td>
+	<td align="center"><?Cell3?></td>
+</tr>
+<tr>
+	<td align="center"><?Cell4?></td>
+	<td align="center"><?Cell5?></td>
+	<td align="center"><?Cell6?></td>
+</tr>
+<tr>
+	<td align="center"><?Cell7?></td>
+	<td align="center"><?Cell8?></td>
+	<td align="center"><?Cell9?></td>
+</tr>
+</table>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-15.html b/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-15.html
new file mode 100644
index 0000000000000000000000000000000000000000..c410797c152c3a50a1a416767b552af5aa2f11c6
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-15.html
@@ -0,0 +1,30 @@
+<html><body>Warehouse Keeper Romp:<br>
+That number has been picked already. Pick the second number again.<br>
+<a action="bypass -h Quest Q00386_StolenDignity 19">1</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 20">2</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 21">3</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 22">4</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 23">5</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 24">6</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 25">7</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 26">8</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 27">9</a><br>
+Current status<br>
+<table border="1" border color="white" width=100>
+	<tr>
+		<td align="center"><?Cell1?></td>
+		<td align="center"><?Cell2?></td>
+		<td align="center"><?Cell3?></td>
+	</tr>
+	<tr>
+		<td align="center"><?Cell4?></td>
+		<td align="center"><?Cell5?></td>
+		<td align="center"><?Cell6?></td>
+	</tr>
+	<tr>
+		<td align="center"><?Cell7?></td>
+		<td align="center"><?Cell8?></td>
+		<td align="center"><?Cell9?></td>
+	</tr>
+</table>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-16.html b/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-16.html
new file mode 100644
index 0000000000000000000000000000000000000000..2a38e8c926c0cb260611647ae9d81cd5fda0f60b
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-16.html
@@ -0,0 +1,29 @@
+<html><body>Warehouse Keeper Romp:<br>
+Time for the fourth number. Pick it well...<br>
+<a action="bypass -h Quest Q00386_StolenDignity 19">1</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 20">2</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 21">3</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 22">4</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 23">5</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 24">6</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 25">7</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 26">8</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 27">9</a><br>
+Current status<br><table border="1" border color="white" width=100>
+	<tr>
+		<td align="center"><?Cell1?></td>
+		<td align="center"><?Cell2?></td>
+		<td align="center"><?Cell3?></td>
+	</tr>
+	<tr>
+		<td align="center"><?Cell4?></td>
+		<td align="center"><?Cell5?></td>
+		<td align="center"><?Cell6?></td>
+	</tr>
+	<tr>
+		<td align="center"><?Cell7?></td>
+		<td align="center"><?Cell8?></td>
+		<td align="center"><?Cell9?></td>
+	</tr>
+</table>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-17.html b/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-17.html
new file mode 100644
index 0000000000000000000000000000000000000000..a131d6d829199e1282a63c475869a48ab8753e89
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-17.html
@@ -0,0 +1,30 @@
+<html><body>Warehouse Keeper Romp:<br>
+That number has been picked already. Pick the third number again.<br>
+<a action="bypass -h Quest Q00386_StolenDignity 19">1</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 20">2</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 21">3</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 22">4</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 23">5</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 24">6</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 25">7</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 26">8</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 27">9</a><br>
+Current status<br>
+<table border="1" border color="white" width=100>
+	<tr>
+		<td align="center"><?Cell1?></td>
+		<td align="center"><?Cell2?></td>
+		<td align="center"><?Cell3?></td>
+	</tr>
+	<tr>
+		<td align="center"><?Cell4?></td> 
+		<td align="center"><?Cell5?></td> 
+		<td align="center"><?Cell6?></td> 
+	</tr>
+	<tr>
+		<td align="center"><?Cell7?></td> 
+		<td align="center"><?Cell8?></td>
+		<td align="center"><?Cell9?></td>
+	</tr>
+</table>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-18.html b/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-18.html
new file mode 100644
index 0000000000000000000000000000000000000000..145ae77bb375e131d8b7fa0d7f770f14e3ecc0b1
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-18.html
@@ -0,0 +1,30 @@
+<html><body>Warehouse Keeper Romp:<br>
+You're almost finished. Choose your fifth number carefully.<br>
+<a action="bypass -h Quest Q00386_StolenDignity 19">1</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 20">2</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 21">3</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 22">4</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 23">5</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 24">6</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 25">7</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 26">8</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 27">9</a><br>
+Current status<br>
+<table border="1" border color="white" width=100>
+	<tr>
+		<td align="center"><?Cell1?></td>
+		<td align="center"><?Cell2?></td>
+		<td align="center"><?Cell3?></td>
+	</tr>
+	<tr>
+		<td align="center"><?Cell4?></td>
+		<td align="center"><?Cell5?></td>
+		<td align="center"><?Cell6?></td>
+	</tr>
+	<tr>
+		<td align="center"><?Cell7?></td>
+		<td align="center"><?Cell8?></td>
+		<td align="center"><?Cell9?></td>
+	</tr>
+</table>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-19.html b/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-19.html
new file mode 100644
index 0000000000000000000000000000000000000000..b855c2b081d07377fc426008772b7622ba08d637
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-19.html
@@ -0,0 +1,30 @@
+<html><body>Warehouse Keeper Romp:<br>
+The number you have picked has already been chosen. Pick the fourth number again.<br>
+<a action="bypass -h Quest Q00386_StolenDignity 19">1</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 20">2</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 21">3</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 22">4</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 23">5</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 24">6</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 25">7</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 26">8</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 27">9</a><br>
+Current status<br>
+<table border="1" border color="white" width=100>
+	<tr>
+		<td align="center"><?Cell1?></td>
+		<td align="center"><?Cell2?></td>
+		<td align="center"><?Cell3?></td>
+	</tr>
+	<tr>
+		<td align="center"><?Cell4?></td>
+		<td align="center"><?Cell5?></td>
+		<td align="center"><?Cell6?></td>
+	</tr>
+	<tr>
+		<td align="center"><?Cell7?></td>
+		<td align="center"><?Cell8?></td>
+		<td align="center"><?Cell9?></td>
+	</tr>
+</table>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-20.html b/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-20.html
new file mode 100644
index 0000000000000000000000000000000000000000..31eb8fc752b4eab77c58b2d4cd7334f1cd56106c
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-20.html
@@ -0,0 +1,30 @@
+<html><body>Warehouse Keeper Romp:<br>
+Good! Now, it's time to pick your sixth and final number.<br>
+<a action="bypass -h Quest Q00386_StolenDignity 55">1</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 56">2</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 57">3</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 58">4</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 59">5</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 60">6</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 61">7</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 62">8</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 63">9</a><br>
+Current status<br>
+<table border="1" border color="white" width=100>
+	<tr>
+		<td align="center"><?Cell1?></td>
+		<td align="center"><?Cell2?></td>
+		<td align="center"><?Cell3?></td>
+	</tr>
+	<tr>
+		<td align="center"><?Cell4?></td>
+		<td align="center"><?Cell5?></td>
+		<td align="center"><?Cell6?></td>
+	</tr>
+	<tr>
+		<td align="center"><?Cell7?></td>
+		<td align="center"><?Cell8?></td>
+		<td align="center"><?Cell9?></td>
+	</tr>
+</table>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-21.html b/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-21.html
new file mode 100644
index 0000000000000000000000000000000000000000..48b16361bea3ab62911532a26ae278d06720e7e5
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-21.html
@@ -0,0 +1,30 @@
+<html><body>Warehouse Keeper Romp:<br>
+Are you starting to get a little confused because of all the numbers? You chose one that has already been picked. Pick the fifth number again.<br>
+<a action="bypass -h Quest Q00386_StolenDignity 19">1</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 20">2</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 21">3</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 22">4</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 23">5</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 24">6</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 25">7</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 26">8</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 27">9</a><br>
+Current status<br>
+<table border="1" border color="white" width=100>
+	<tr>
+		<td align="center"><?Cell1?></td>
+		<td align="center"><?Cell2?></td>
+		<td align="center"><?Cell3?></td>
+	</tr>
+	<tr>
+		<td align="center"><?Cell4?></td>
+		<td align="center"><?Cell5?></td>
+		<td align="center"><?Cell6?></td>
+	</tr>
+	<tr>
+		<td align="center"><?Cell7?></td>
+		<td align="center"><?Cell8?></td>
+		<td align="center"><?Cell9?></td>
+	</tr>
+</table>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-22.html b/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-22.html
new file mode 100644
index 0000000000000000000000000000000000000000..dcf7e534489114758d66e76f48686cf2810f379a
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-22.html
@@ -0,0 +1,20 @@
+<html><body>Warehouse Keeper Romp:<br>
+Ah! Congratulations! You can see your choices in red on the bingo pad below. As you can see, you made 3 lines. Well done. As promised, here is your reward.<br>
+<table border="1" border color="white" width=100>
+	<tr>
+		<td align="center"><font color="<?FontColor1?>"><?Cell1?></font></td>
+		<td align="center"><font color="<?FontColor2?>"><?Cell2?></font></td>
+		<td align="center"><font color="<?FontColor3?>"><?Cell3?></font></td>
+	</tr>
+	<tr>
+		<td align="center"><font color="<?FontColor4?>"><?Cell4?></font></td>
+		<td align="center"><font color="<?FontColor5?>"><?Cell5?></font></td>
+		<td align="center"><font color="<?FontColor6?>"><?Cell6?></font></td>
+	</tr>
+	<tr>
+		<td align="center"><font color="<?FontColor7?>"><?Cell7?></font></td>
+		<td align="center"><font color="<?FontColor8?>"><?Cell8?></font></td>
+		<td align="center"><font color="<?FontColor9?>"><?Cell9?></font></td>
+	</tr>
+</table>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-23.html b/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-23.html
new file mode 100644
index 0000000000000000000000000000000000000000..6106c7015e8513412e9a5c4601524a23b7089b9e
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-23.html
@@ -0,0 +1,20 @@
+<html><body>Warehouse Keeper Romp:<br>
+Oh... You can see your choices in red on the bingo pad below. Unfortunately, you didn't end up with 3 lines. Better luck next time!<br>
+<table border="1" border color="white" width=100>
+	<tr>
+		<td align="center"><font color="<?FontColor1?>"><?Cell1?></font></td>
+		<td align="center"><font color="<?FontColor2?>"><?Cell2?></font></td>
+		<td align="center"><font color="<?FontColor3?>"><?Cell3?></font></td>
+	</tr>
+	<tr>
+		<td align="center"><font color="<?FontColor4?>"><?Cell4?></font></td>
+		<td align="center"><font color="<?FontColor5?>"><?Cell5?></font></td>
+		<td align="center"><font color="<?FontColor6?>"><?Cell6?></font></td>
+	</tr>
+	<tr>
+		<td align="center"><font color="<?FontColor7?>"><?Cell7?></font></td>
+		<td align="center"><font color="<?FontColor8?>"><?Cell8?></font></td>
+		<td align="center"><font color="<?FontColor9?>"><?Cell9?></font></td>
+	</tr>
+</table>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-24.html b/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-24.html
new file mode 100644
index 0000000000000000000000000000000000000000..453e6847c55e939c34c37ed28e117a456d27b2c5
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-24.html
@@ -0,0 +1,21 @@
+<html><body>Warehouse Keeper Romp:<br>
+You are a seriously unlucky person! Your choices are in red on the bingo pad below. As you can see, you didn't even make a single line! You know, that's actually harder to do than to complete all 3 lines.<br>Usually, we only reward winners, but I want to do something nice for you to keep your spirits up.<br>
+Here, take this. I hope it helps!<br>
+<table border="1" border color="white" width=100>
+	<tr>
+		<td align="center"><font color="<?FontColor1?>"><?Cell1?></font></td>
+		<td align="center"><font color="<?FontColor2?>"><?Cell2?></font></td>
+		<td align="center"><font color="<?FontColor3?>"><?Cell3?></font></td>
+	</tr>
+	<tr>
+		<td align="center"><font color="<?FontColor4?>"><?Cell4?></font></td>
+		<td align="center"><font color="<?FontColor5?>"><?Cell5?></font></td>
+		<td align="center"><font color="<?FontColor6?>"><?Cell6?></font></td>
+	</tr>
+	<tr>
+		<td align="center"><font color="<?FontColor7?>"><?Cell7?></font></td>
+		<td align="center"><font color="<?FontColor8?>"><?Cell8?></font></td>
+		<td align="center"><font color="<?FontColor9?>"><?Cell9?></font></td>
+	</tr>
+</table>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-25.html b/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-25.html
new file mode 100644
index 0000000000000000000000000000000000000000..5274b7487c9aa7ba834ebb4dba84720bd1faaf6f
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-25.html
@@ -0,0 +1,30 @@
+<html><body>Warehouse Keeper Romp:<br>
+The number you picked has already been chosen. Pick the sixth number again.<br>
+<a action="bypass -h Quest Q00386_StolenDignity 55">1</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 56">2</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 57">3</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 58">4</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 59">5</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 60">6</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 61">7</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 62">8</a>&nbsp;&nbsp;&nbsp;&nbsp;
+<a action="bypass -h Quest Q00386_StolenDignity 63">9</a><br>
+Current status<br>
+<table border="1" border color="white" width=100>
+	<tr>
+		<td align="center"><?Cell1?></td>
+		<td align="center"><?Cell2?></td>
+		<td align="center"><?Cell3?></td>
+	</tr>
+	<tr>
+		<td align="center"><?Cell4?></td>
+		<td align="center"><?Cell5?></td>
+		<td align="center"><?Cell6?></td>
+	</tr>
+	<tr>
+		<td align="center"><?Cell7?></td>
+		<td align="center"><?Cell8?></td>
+		<td align="center"><?Cell9?></td>
+	</tr>
+</table>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00386_StolenDignity/Q00386_StolenDignity.java b/dist/game/data/scripts/quests/Q00386_StolenDignity/Q00386_StolenDignity.java
new file mode 100644
index 0000000000000000000000000000000000000000..f2cd3ed50b7a4a31fec82e885cbd1ae66eca9067
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00386_StolenDignity/Q00386_StolenDignity.java
@@ -0,0 +1,899 @@
+/*
+ * 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 quests.Q00386_StolenDignity;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import com.l2jserver.gameserver.enums.QuestSound;
+import com.l2jserver.gameserver.model.actor.L2Npc;
+import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jserver.gameserver.model.quest.Quest;
+import com.l2jserver.gameserver.model.quest.QuestState;
+import com.l2jserver.gameserver.util.Util;
+
+/**
+ * Stolen Dignity (386)
+ * @author Zealar
+ */
+public final class Q00386_StolenDignity extends Quest
+{
+	// NPCs
+	private static final int WAREHOUSE_KEEPER_ROMP = 30843;
+	
+	// Monsters
+	private static final int CRIMSON_DRAKE = 20670;
+	private static final int KADIOS = 20671;
+	private static final int HUNGRY_CORPSE = 20954;
+	private static final int PAST_KNIGHT = 20956;
+	private static final int BLADE_DEATH = 20958;
+	private static final int DARK_GUARD = 20959;
+	private static final int BLOODY_GHOST = 20960;
+	private static final int BLOODY_LORD = 20963;
+	private static final int PAST_CREATURE = 20967;
+	private static final int GIANT_SHADOW = 20969;
+	private static final int ANCIENTS_SOLDIER = 20970;
+	private static final int ANCIENTS_WARRIOR = 20971;
+	private static final int SPITE_SOUL_LEADER = 20974;
+	private static final int SPITE_SOUL_WIZARD = 20975;
+	private static final int WRECKED_ARCHER = 21001;
+	private static final int FLOAT_OF_GRAVE = 21003;
+	private static final int GRAVE_PREDATOR = 21005;
+	private static final int FALLEN_ORC_SHAMAN = 21020;
+	private static final int SHARP_TALON_TIGER = 21021;
+	private static final int GLOW_WISP = 21108;
+	private static final int MARSH_PREDATOR = 21110;
+	private static final int HAMES_ORC_SNIPER = 21113;
+	private static final int CURSED_GUARDIAN = 21114;
+	private static final int HAMES_ORC_CHIEFTAIN = 21116;
+	private static final int FALLEN_ORC_SHAMAN_TRANS = 21258;
+	private static final int SHARP_TALON_TIGER_TRANS = 21259;
+	// Items
+	private static final int Q_STOLEN_INF_ORE = 6363;
+	// Reward
+	private static final int DRAGON_SLAYER_EDGE = 5529;
+	private static final int METEOR_SHOWER_HEAD = 5532;
+	private static final int ELYSIAN_HEAD = 5533;
+	private static final int SOUL_BOW_SHAFT = 5534;
+	private static final int CARNIUM_BOW_SHAFT = 5535;
+	private static final int BLOODY_ORCHID_HEAD = 5536;
+	private static final int SOUL_SEPARATOR_HEAD = 5537;
+	private static final int DRAGON_GRINDER_EDGE = 5538;
+	private static final int BLOOD_TORNADO_EDGE = 5539;
+	private static final int TALLUM_GLAIVE_EDGE = 5541;
+	private static final int HALBARD_EDGE = 5542;
+	private static final int DASPARIONS_STAFF_HEAD = 5543;
+	private static final int WORLDTREES_BRANCH_HEAD = 5544;
+	private static final int DARK_LEGIONS_EDGE_EDGE = 5545;
+	private static final int SWORD_OF_MIRACLE_EDGE = 5546;
+	private static final int ELEMENTAL_SWORD_EDGE = 5547;
+	private static final int TALLUM_BLADE_EDGE = 5548;
+	private static final int INFERNO_MASTER_BLADE = 8331;
+	private static final int EYE_OF_SOUL_PIECE = 8341;
+	private static final int DRAGON_FLAME_HEAD_PIECE = 8342;
+	private static final int DOOM_CRUSHER_HEAD = 8349;
+	private static final int HAMMER_OF_DESTROYER_PIECE = 8346;
+	private static final int SIRR_BLADE_BLADE = 8712;
+	private static final int SWORD_OF_IPOS_BLADE = 8713;
+	private static final int BARAKIEL_AXE_PIECE = 8714;
+	private static final int TUNING_FORK_OF_BEHEMOTH_PIECE = 8715;
+	private static final int NAGA_STORM_PIECE = 8716;
+	private static final int TIPHON_SPEAR_EDGE = 8717;
+	private static final int SHYID_BOW_SHAFT = 8718;
+	private static final int SOBEKK_HURRICANE_EDGE = 8719;
+	private static final int TONGUE_OF_THEMIS_PIECE = 8720;
+	private static final int HAND_OF_CABRIO_HEAD = 8721;
+	private static final int CRYSTAL_OF_DEAMON_PIECE = 8722;
+	
+	public Q00386_StolenDignity()
+	{
+		super(386, Q00386_StolenDignity.class.getSimpleName(), "Stolen Dignity");
+		addStartNpc(WAREHOUSE_KEEPER_ROMP);
+		addTalkId(WAREHOUSE_KEEPER_ROMP);
+		addKillId(CRIMSON_DRAKE, KADIOS, HUNGRY_CORPSE, PAST_KNIGHT, BLADE_DEATH, DARK_GUARD, BLOODY_GHOST, BLOODY_LORD, PAST_CREATURE, GIANT_SHADOW, ANCIENTS_SOLDIER, ANCIENTS_WARRIOR, SPITE_SOUL_LEADER, SPITE_SOUL_WIZARD, WRECKED_ARCHER, FLOAT_OF_GRAVE, GRAVE_PREDATOR, FALLEN_ORC_SHAMAN, SHARP_TALON_TIGER, GLOW_WISP, MARSH_PREDATOR, HAMES_ORC_SNIPER, CURSED_GUARDIAN, HAMES_ORC_CHIEFTAIN, FALLEN_ORC_SHAMAN_TRANS, SHARP_TALON_TIGER_TRANS);
+	}
+	
+	@Override
+	public String onTalk(L2Npc npc, L2PcInstance player)
+	{
+		final QuestState qs = getQuestState(player, true);
+		String htmltext = getNoQuestMsg(player);
+		if ((qs != null) && (npc.getId() == WAREHOUSE_KEEPER_ROMP))
+		{
+			if (qs.isCreated())
+			{
+				if (player.getLevel() >= 58)
+				{
+					return "30843-01.htm";
+				}
+				return "30843-04.html";
+			}
+			if (qs.getQuestItemsCount(Q_STOLEN_INF_ORE) < 100)
+			{
+				return "30843-06.html";
+			}
+			return "30843-07.html";
+		}
+		return htmltext;
+	}
+	
+	@Override
+	public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
+	{
+		final QuestState qs = getQuestState(player, false);
+		if ((qs != null) && (npc.getId() == WAREHOUSE_KEEPER_ROMP))
+		{
+			if (event.equals("QUEST_ACCEPTED"))
+			{
+				qs.playSound(QuestSound.ITEMSOUND_QUEST_ACCEPT);
+				qs.setMemoState(336);
+				qs.startQuest();
+				qs.showQuestionMark(336);
+				qs.playSound(QuestSound.ITEMSOUND_QUEST_MIDDLE);
+				return "30843-05.htm";
+			}
+			if (event.contains(".html"))
+			{
+				return event;
+			}
+			int ask = Integer.parseInt(event);
+			switch (ask)
+			{
+				case 3:
+					return "30843-09a.html";
+				case 5:
+					return "30843-03.html";
+				case 6:
+				{
+					qs.exitQuest(true);
+					return "30843-08.html";
+				}
+				case 9:
+					return "30843-09.htm";
+				case 8:
+				{
+					if (qs.getQuestItemsCount(Q_STOLEN_INF_ORE) >= 100)
+					{
+						qs.takeItems(Q_STOLEN_INF_ORE, 100);
+						createBingoBoard(qs);
+						return "30843-12.html";
+					}
+					return "30843-11.html";
+				}
+				case 10:
+				case 11:
+				case 12:
+				case 13:
+				case 14:
+				case 15:
+				case 16:
+				case 17:
+				case 18:
+				{
+					selectBingoNumber(qs, (ask - 10) + 1);
+					return fillBoard(player, qs, getHtm(player.getHtmlPrefix(), "30843-13.html"));
+				}
+				case 19:
+				{
+					return takeHtml(player, qs, 1);
+				}
+				case 20:
+				{
+					return takeHtml(player, qs, 2);
+				}
+				case 21:
+				{
+					return takeHtml(player, qs, 3);
+				}
+				case 22:
+				{
+					return takeHtml(player, qs, 4);
+				}
+				case 23:
+				{
+					return takeHtml(player, qs, 5);
+				}
+				case 24:
+				{
+					return takeHtml(player, qs, 6);
+				}
+				case 25:
+				{
+					return takeHtml(player, qs, 7);
+				}
+				case 26:
+				{
+					return takeHtml(player, qs, 8);
+				}
+				case 27:
+				{
+					return takeHtml(player, qs, 9);
+				}
+				case 55:
+				{
+					return beforeReward(player, qs, 1);
+				}
+				case 56:
+				{
+					return beforeReward(player, qs, 2);
+				}
+				case 57:
+				{
+					return beforeReward(player, qs, 3);
+				}
+				case 58:
+				{
+					return beforeReward(player, qs, 4);
+				}
+				case 59:
+				{
+					return beforeReward(player, qs, 5);
+				}
+				case 60:
+				{
+					return beforeReward(player, qs, 6);
+				}
+				case 61:
+				{
+					return beforeReward(player, qs, 7);
+				}
+				case 62:
+				{
+					return beforeReward(player, qs, 8);
+				}
+				case 63:
+				{
+					return beforeReward(player, qs, 9);
+				}
+			}
+		}
+		return super.onAdvEvent(event, npc, player);
+	}
+	
+	private String takeHtml(L2PcInstance player, QuestState qs, int num)
+	{
+		String html = null;
+		int i3;
+		if (!isSelectedBingoNumber(qs, num))
+		{
+			selectBingoNumber(qs, num);
+			i3 = getBingoSelectCount(qs);
+			
+			if (i3 == 2)
+			{
+				html = getHtm(player.getHtmlPrefix(), "30843-14.html");
+			}
+			else if (i3 == 3)
+			{
+				html = getHtm(player.getHtmlPrefix(), "30843-16.html");
+			}
+			else if (i3 == 4)
+			{
+				html = getHtm(player.getHtmlPrefix(), "30843-18.html");
+			}
+			else if (i3 == 5)
+			{
+				html = getHtm(player.getHtmlPrefix(), "30843-20.html");
+			}
+			return fillBoard(player, qs, html);
+		}
+		i3 = getBingoSelectCount(qs);
+		if (i3 == 1)
+		{
+			html = getHtm(player.getHtmlPrefix(), "30843-15.html");
+		}
+		else if (i3 == 2)
+		{
+			html = getHtm(player.getHtmlPrefix(), "30843-17.html");
+		}
+		else if (i3 == 3)
+		{
+			html = getHtm(player.getHtmlPrefix(), "30843-19.html");
+		}
+		else if (i3 == 4)
+		{
+			html = getHtm(player.getHtmlPrefix(), "30843-21.html");
+		}
+		return fillBoard(player, qs, html);
+	}
+	
+	private String fillBoard(L2PcInstance player, QuestState qs, String html)
+	{
+		for (int i0 = 0; i0 < 9; i0 = i0 + 1)
+		{
+			int i1 = getNumberFromBingoBoard(qs, i0);
+			if (isSelectedBingoNumber(qs, i1))
+			{
+				html = html.replace("<?Cell" + (i0 + 1) + "?>", i1 + "");
+			}
+			else
+			{
+				html = html.replace("<?Cell" + (i0 + 1) + "?>", "?");
+			}
+		}
+		return html;
+	}
+	
+	private String colorBoard(L2PcInstance player, QuestState qs, String html)
+	{
+		for (int i0 = 0; i0 < 9; i0 = i0 + 1)
+		{
+			int i1 = getNumberFromBingoBoard(qs, i0);
+			html = html.replace("<?FontColor" + (i0 + 1) + "?>", (isSelectedBingoNumber(qs, i1)) ? "ff0000" : "ffffff");
+			html = html.replace("<?Cell" + (i0 + 1) + "?>", i1 + "");
+		}
+		return html;
+	}
+	
+	private String beforeReward(L2PcInstance player, QuestState qs, int num)
+	{
+		if (!isSelectedBingoNumber(qs, num))
+		{
+			selectBingoNumber(qs, num);
+			int i3 = getMatchedBingoLineCount(qs);
+			String html;
+			if ((i3 == 3) && ((getBingoSelectCount(qs)) == 6))
+			{
+				reward(player, qs, 4);
+				html = getHtm(player.getHtmlPrefix(), "30843-22.html");
+			}
+			else if ((i3 == 0) && (getBingoSelectCount(qs) == 6))
+			{
+				reward(player, qs, 10);
+				html = getHtm(player.getHtmlPrefix(), "30843-24.html");
+			}
+			else
+			{
+				html = getHtm(player.getHtmlPrefix(), "30843-23.html");
+			}
+			return colorBoard(player, qs, html);
+		}
+		return fillBoard(player, qs, getHtm(player.getHtmlPrefix(), "30843-25.html"));
+	}
+	
+	private void reward(L2PcInstance player, QuestState qs, int count)
+	{
+		switch (getRandom(33))
+		{
+			case 0:
+			{
+				qs.giveItems(DRAGON_SLAYER_EDGE, count);
+				break;
+			}
+			case 1:
+			{
+				qs.giveItems(METEOR_SHOWER_HEAD, count);
+				break;
+			}
+			case 2:
+			{
+				qs.giveItems(ELYSIAN_HEAD, count);
+				break;
+			}
+			case 3:
+			{
+				qs.giveItems(SOUL_BOW_SHAFT, count);
+				break;
+			}
+			case 4:
+			{
+				qs.giveItems(CARNIUM_BOW_SHAFT, count);
+				break;
+			}
+			case 5:
+			{
+				qs.giveItems(BLOODY_ORCHID_HEAD, count);
+				break;
+			}
+			case 6:
+			{
+				qs.giveItems(SOUL_SEPARATOR_HEAD, count);
+				break;
+			}
+			case 7:
+			{
+				qs.giveItems(DRAGON_GRINDER_EDGE, count);
+				break;
+			}
+			case 8:
+			{
+				qs.giveItems(BLOOD_TORNADO_EDGE, count);
+				break;
+			}
+			case 9:
+			{
+				qs.giveItems(TALLUM_GLAIVE_EDGE, count);
+				break;
+			}
+			case 10:
+			{
+				qs.giveItems(HALBARD_EDGE, count);
+				break;
+			}
+			case 11:
+			{
+				qs.giveItems(DASPARIONS_STAFF_HEAD, count);
+				break;
+			}
+			case 12:
+			{
+				qs.giveItems(WORLDTREES_BRANCH_HEAD, count);
+				break;
+			}
+			case 13:
+			{
+				qs.giveItems(DARK_LEGIONS_EDGE_EDGE, count);
+				break;
+			}
+			case 14:
+			{
+				qs.giveItems(SWORD_OF_MIRACLE_EDGE, count);
+				break;
+			}
+			case 15:
+			{
+				qs.giveItems(ELEMENTAL_SWORD_EDGE, count);
+				break;
+			}
+			case 16:
+			{
+				qs.giveItems(TALLUM_BLADE_EDGE, count);
+				break;
+			}
+			case 17:
+			{
+				qs.giveItems(INFERNO_MASTER_BLADE, count);
+				break;
+			}
+			case 18:
+			{
+				qs.giveItems(EYE_OF_SOUL_PIECE, count);
+				break;
+			}
+			case 19:
+			{
+				qs.giveItems(DRAGON_FLAME_HEAD_PIECE, count);
+				break;
+			}
+			case 20:
+			{
+				qs.giveItems(DOOM_CRUSHER_HEAD, count);
+				break;
+			}
+			case 21:
+			{
+				qs.giveItems(HAMMER_OF_DESTROYER_PIECE, count);
+				break;
+			}
+			case 22:
+			{
+				qs.giveItems(SIRR_BLADE_BLADE, count);
+				break;
+			}
+			case 23:
+			{
+				qs.giveItems(SWORD_OF_IPOS_BLADE, count);
+				break;
+			}
+			case 24:
+			{
+				qs.giveItems(BARAKIEL_AXE_PIECE, count);
+				break;
+			}
+			case 25:
+			{
+				qs.giveItems(TUNING_FORK_OF_BEHEMOTH_PIECE, count);
+				break;
+			}
+			case 26:
+			{
+				qs.giveItems(NAGA_STORM_PIECE, count);
+				break;
+			}
+			case 27:
+			{
+				qs.giveItems(TIPHON_SPEAR_EDGE, count);
+				break;
+			}
+			case 28:
+			{
+				qs.giveItems(SHYID_BOW_SHAFT, count);
+				break;
+			}
+			case 29:
+			{
+				qs.giveItems(SOBEKK_HURRICANE_EDGE, count);
+				break;
+			}
+			case 30:
+			{
+				qs.giveItems(TONGUE_OF_THEMIS_PIECE, count);
+				break;
+			}
+			case 31:
+			{
+				qs.giveItems(HAND_OF_CABRIO_HEAD, count);
+				break;
+			}
+			case 32:
+			{
+				qs.giveItems(CRYSTAL_OF_DEAMON_PIECE, count);
+				break;
+			}
+		}
+	}
+	
+	/**
+	 * @param qs
+	 */
+	private void createBingoBoard(QuestState qs)
+	{
+		//@formatter:off
+		Integer[] arr = {1,2,3,4,5,6,7,8,9};
+		//@formatter:on
+		Collections.shuffle(Arrays.asList(arr));
+		qs.set("numbers", Arrays.asList(arr).toString().replaceAll("[^\\d ]", ""));
+		qs.set("selected", "? ? ? ? ? ? ? ? ?");
+	}
+	
+	/**
+	 * @param qs
+	 * @return
+	 */
+	private int getMatchedBingoLineCount(QuestState qs)
+	{
+		String[] q = qs.get("selected").split(" ");
+		int found = 0;
+		// Horizontal
+		if ((q[0] + q[1] + q[2]).matches("\\d+"))
+		{
+			found++;
+		}
+		if ((q[3] + q[4] + q[5]).matches("\\d+"))
+		{
+			found++;
+		}
+		if ((q[6] + q[7] + q[8]).matches("\\d+"))
+		{
+			found++;
+		}
+		// Vertical
+		if ((q[0] + q[3] + q[6]).matches("\\d+"))
+		{
+			found++;
+		}
+		if ((q[1] + q[4] + q[7]).matches("\\d+"))
+		{
+			found++;
+		}
+		if ((q[2] + q[5] + q[8]).matches("\\d+"))
+		{
+			found++;
+		}
+		// Diagonal
+		if ((q[0] + q[4] + q[8]).matches("\\d+"))
+		{
+			found++;
+		}
+		if ((q[2] + q[4] + q[6]).matches("\\d+"))
+		{
+			found++;
+		}
+		return found;
+	}
+	
+	/**
+	 * @param qs
+	 * @param num
+	 */
+	private void selectBingoNumber(QuestState qs, int num)
+	{
+		String[] numbers = qs.get("numbers").split(" ");
+		int pos = 0;
+		for (int i = 0; i < numbers.length; i++)
+		{
+			if (Integer.parseInt(numbers[i]) == num)
+			{
+				pos = i;
+				break;
+			}
+		}
+		String[] selected = qs.get("selected").split(" ");
+		for (int i = 0; i < selected.length; i++)
+		{
+			if (i == pos)
+			{
+				selected[i] = num + "";
+				continue;
+			}
+		}
+		String result = selected[0];
+		for (int i = 1; i < selected.length; i++)
+		{
+			result += " " + selected[i];
+		}
+		qs.set("selected", result);
+	}
+	
+	/**
+	 * @param qs
+	 * @param num
+	 * @return
+	 */
+	private boolean isSelectedBingoNumber(QuestState qs, int num)
+	{
+		return qs.get("selected").contains(num + "");
+	}
+	
+	/**
+	 * @param qs
+	 * @param num
+	 * @return
+	 */
+	private int getNumberFromBingoBoard(QuestState qs, int num)
+	{
+		return Integer.parseInt(qs.get("numbers").split(" ")[num]);
+	}
+	
+	/**
+	 * @param qs
+	 * @return
+	 */
+	private int getBingoSelectCount(QuestState qs)
+	{
+		String current = qs.get("selected");
+		return current.replaceAll("\\D", "").length();
+	}
+	
+	@Override
+	public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
+	{
+		final QuestState qs = getRandomPlayerFromParty(killer, npc);
+		if (qs != null)
+		{
+			switch (npc.getId())
+			{
+				case CRIMSON_DRAKE:
+				{
+					if (getRandom(1000) < 20.200001)
+					{
+						giveItemRandomly(qs.getPlayer(), npc, Q_STOLEN_INF_ORE, 1, 0, 1, true);
+					}
+					break;
+				}
+				case KADIOS:
+				{
+					if (getRandom(1000) < 211)
+					{
+						giveItemRandomly(qs.getPlayer(), npc, Q_STOLEN_INF_ORE, 1, 0, 1, true);
+					}
+					break;
+				}
+				case HUNGRY_CORPSE:
+				{
+					if (getRandom(1000) < 184)
+					{
+						giveItemRandomly(qs.getPlayer(), npc, Q_STOLEN_INF_ORE, 1, 0, 1, true);
+					}
+					break;
+				}
+				case PAST_KNIGHT:
+				{
+					if (getRandom(1000) < 216)
+					{
+						giveItemRandomly(qs.getPlayer(), npc, Q_STOLEN_INF_ORE, 1, 0, 1, true);
+					}
+					break;
+				}
+				case BLADE_DEATH:
+				{
+					if (getRandom(100) < 17)
+					{
+						giveItemRandomly(qs.getPlayer(), npc, Q_STOLEN_INF_ORE, 1, 0, 1, true);
+					}
+					break;
+				}
+				case DARK_GUARD:
+				{
+					if (getRandom(1000) < 273)
+					{
+						giveItemRandomly(qs.getPlayer(), npc, Q_STOLEN_INF_ORE, 1, 0, 1, true);
+					}
+					break;
+				}
+				case BLOODY_GHOST:
+				{
+					if (getRandom(1000) < 149)
+					{
+						giveItemRandomly(qs.getPlayer(), npc, Q_STOLEN_INF_ORE, 1, 0, 1, true);
+					}
+					break;
+				}
+				case BLOODY_LORD:
+				{
+					if (getRandom(1000) < 199)
+					{
+						giveItemRandomly(qs.getPlayer(), npc, Q_STOLEN_INF_ORE, 1, 0, 1, true);
+					}
+					break;
+				}
+				case PAST_CREATURE:
+				{
+					if (getRandom(1000) < 257)
+					{
+						giveItemRandomly(qs.getPlayer(), npc, Q_STOLEN_INF_ORE, 1, 0, 1, true);
+					}
+					break;
+				}
+				case GIANT_SHADOW:
+				{
+					if (getRandom(1000) < 205)
+					{
+						giveItemRandomly(qs.getPlayer(), npc, Q_STOLEN_INF_ORE, 1, 0, 1, true);
+					}
+					break;
+				}
+				case ANCIENTS_SOLDIER:
+				{
+					if (getRandom(1000) < 208)
+					{
+						giveItemRandomly(qs.getPlayer(), npc, Q_STOLEN_INF_ORE, 1, 0, 1, true);
+					}
+					break;
+				}
+				case ANCIENTS_WARRIOR:
+				{
+					if (getRandom(1000) < 299)
+					{
+						giveItemRandomly(qs.getPlayer(), npc, Q_STOLEN_INF_ORE, 1, 0, 1, true);
+					}
+					break;
+				}
+				case SPITE_SOUL_LEADER:
+				{
+					if (getRandom(100) < 44)
+					{
+						giveItemRandomly(qs.getPlayer(), npc, Q_STOLEN_INF_ORE, 1, 0, 1, true);
+					}
+					break;
+				}
+				case SPITE_SOUL_WIZARD:
+				{
+					if (getRandom(100) < 39)
+					{
+						giveItemRandomly(qs.getPlayer(), npc, Q_STOLEN_INF_ORE, 1, 0, 1, true);
+					}
+					break;
+				}
+				case WRECKED_ARCHER:
+				{
+					if (getRandom(1000) < 214)
+					{
+						giveItemRandomly(qs.getPlayer(), npc, Q_STOLEN_INF_ORE, 1, 0, 1, true);
+					}
+					break;
+				}
+				case FLOAT_OF_GRAVE:
+				{
+					if (getRandom(1000) < 173)
+					{
+						giveItemRandomly(qs.getPlayer(), npc, Q_STOLEN_INF_ORE, 1, 0, 1, true);
+					}
+					break;
+				}
+				case GRAVE_PREDATOR:
+				{
+					if (getRandom(1000) < 211)
+					{
+						giveItemRandomly(qs.getPlayer(), npc, Q_STOLEN_INF_ORE, 1, 0, 1, true);
+					}
+					break;
+				}
+				case FALLEN_ORC_SHAMAN:
+				{
+					if (getRandom(1000) < 478)
+					{
+						giveItemRandomly(qs.getPlayer(), npc, Q_STOLEN_INF_ORE, 1, 0, 1, true);
+					}
+					break;
+				}
+				case SHARP_TALON_TIGER:
+				{
+					if (getRandom(1000) < 234)
+					{
+						giveItemRandomly(qs.getPlayer(), npc, Q_STOLEN_INF_ORE, 1, 0, 1, true);
+					}
+					break;
+				}
+				case GLOW_WISP:
+				{
+					if (getRandom(1000) < 245)
+					{
+						giveItemRandomly(qs.getPlayer(), npc, Q_STOLEN_INF_ORE, 1, 0, 1, true);
+					}
+					break;
+				}
+				case MARSH_PREDATOR:
+				{
+					if (getRandom(100) < 26)
+					{
+						giveItemRandomly(qs.getPlayer(), npc, Q_STOLEN_INF_ORE, 1, 0, 1, true);
+					}
+					break;
+				}
+				case HAMES_ORC_SNIPER:
+				{
+					if (getRandom(100) < 37)
+					{
+						giveItemRandomly(qs.getPlayer(), npc, Q_STOLEN_INF_ORE, 1, 0, 1, true);
+					}
+					break;
+				}
+				case CURSED_GUARDIAN:
+				{
+					if (getRandom(1000) < 352)
+					{
+						giveItemRandomly(qs.getPlayer(), npc, Q_STOLEN_INF_ORE, 1, 0, 1, true);
+					}
+					break;
+				}
+				case HAMES_ORC_CHIEFTAIN:
+				case FALLEN_ORC_SHAMAN_TRANS:
+				case SHARP_TALON_TIGER_TRANS:
+				{
+					if (getRandom(1000) < 487)
+					{
+						giveItemRandomly(qs.getPlayer(), npc, Q_STOLEN_INF_ORE, 1, 0, 1, true);
+					}
+					break;
+				}
+			}
+			
+		}
+		return super.onKill(npc, killer, isSummon);
+	}
+	
+	private QuestState getRandomPlayerFromParty(L2PcInstance player, L2Npc npc)
+	{
+		QuestState qs = player.getQuestState(getName());
+		final List<QuestState> candidates = new ArrayList<>();
+		
+		if ((qs != null) && qs.isStarted())
+		{
+			candidates.add(qs);
+			candidates.add(qs);
+		}
+		
+		if (player.isInParty())
+		{
+			player.getParty().getMembers().stream().forEach(pm ->
+			{
+				
+				QuestState qss = pm.getQuestState(getName());
+				if ((qss != null) && qss.isStarted() && Util.checkIfInRange(1500, npc, pm, true))
+				{
+					candidates.add(qss);
+				}
+			});
+		}
+		return candidates.isEmpty() ? null : candidates.get(getRandom(candidates.size()));
+	}
+}
diff --git a/dist/game/data/scripts/quests/QuestMasterHandler.java b/dist/game/data/scripts/quests/QuestMasterHandler.java
index 9a08dda80ea1745108fa1b01050bf74041d2c024..7591378a3b42b8de11632a4afd6ad19585af91e4 100644
--- a/dist/game/data/scripts/quests/QuestMasterHandler.java
+++ b/dist/game/data/scripts/quests/QuestMasterHandler.java
@@ -345,6 +345,7 @@ import quests.Q00381_LetsBecomeARoyalMember.Q00381_LetsBecomeARoyalMember;
 import quests.Q00382_KailsMagicCoin.Q00382_KailsMagicCoin;
 import quests.Q00383_TreasureHunt.Q00383_TreasureHunt;
 import quests.Q00385_YokeOfThePast.Q00385_YokeOfThePast;
+import quests.Q00386_StolenDignity.Q00386_StolenDignity;
 import quests.Q00401_PathOfTheWarrior.Q00401_PathOfTheWarrior;
 import quests.Q00402_PathOfTheHumanKnight.Q00402_PathOfTheHumanKnight;
 import quests.Q00403_PathOfTheRogue.Q00403_PathOfTheRogue;
@@ -831,6 +832,7 @@ public class QuestMasterHandler
 		Q00382_KailsMagicCoin.class,
 		Q00383_TreasureHunt.class,
 		Q00385_YokeOfThePast.class,
+		Q00386_StolenDignity.class,
 		Q00401_PathOfTheWarrior.class,
 		Q00402_PathOfTheHumanKnight.class,
 		Q00403_PathOfTheRogue.class,
diff --git a/dist/sql/game/updates/20151128update.sql b/dist/sql/game/updates/20151128update.sql
index aee2f20f60a9b07c377e3dc10bd95209c972cc9b..25249a4169b5a42f76adc3130d262290e4d6bae0 100644
--- a/dist/sql/game/updates/20151128update.sql
+++ b/dist/sql/game/updates/20151128update.sql
@@ -1 +1,2 @@
-UPDATE character_quests SET name='Q00234_FatesWhisper' WHERE name='234_FatesWhisper'; 
\ No newline at end of file
+UPDATE character_quests SET name='Q00234_FatesWhisper' WHERE name='234_FatesWhisper'; 
+UPDATE character_quests SET name='Q00386_StolenDignity' WHERE name='386_StolenDignity'; 
\ No newline at end of file