Ver Fonte

Quest Legacy Of Insolence (372) in Java

Patch by: @ivantotov
Zoey76 há 9 anos atrás
pai
commit
390a7fc61f
52 ficheiros alterados com 832 adições e 288 exclusões
  1. 0 1
      dist/game/data/scripts.cfg
  2. 0 4
      dist/game/data/scripts/quests/372_LegacyOfInsolence/30839-1.htm
  3. 0 4
      dist/game/data/scripts/quests/372_LegacyOfInsolence/30839-2.htm
  4. 0 4
      dist/game/data/scripts/quests/372_LegacyOfInsolence/30839-3.htm
  5. 0 8
      dist/game/data/scripts/quests/372_LegacyOfInsolence/30844-1.htm
  6. 0 3
      dist/game/data/scripts/quests/372_LegacyOfInsolence/30844-10.htm
  7. 0 5
      dist/game/data/scripts/quests/372_LegacyOfInsolence/30844-11.htm
  8. 0 4
      dist/game/data/scripts/quests/372_LegacyOfInsolence/30844-12.htm
  9. 0 9
      dist/game/data/scripts/quests/372_LegacyOfInsolence/30844-2.htm
  10. 0 5
      dist/game/data/scripts/quests/372_LegacyOfInsolence/30844-4.htm
  11. 0 4
      dist/game/data/scripts/quests/372_LegacyOfInsolence/30844-5.htm
  12. 0 5
      dist/game/data/scripts/quests/372_LegacyOfInsolence/30844-6.htm
  13. 0 4
      dist/game/data/scripts/quests/372_LegacyOfInsolence/30844-7.htm
  14. 0 6
      dist/game/data/scripts/quests/372_LegacyOfInsolence/30844-8.htm
  15. 0 6
      dist/game/data/scripts/quests/372_LegacyOfInsolence/30844-9.htm
  16. 0 4
      dist/game/data/scripts/quests/372_LegacyOfInsolence/30855-1.htm
  17. 0 4
      dist/game/data/scripts/quests/372_LegacyOfInsolence/30855-2.htm
  18. 0 4
      dist/game/data/scripts/quests/372_LegacyOfInsolence/30855-3.htm
  19. 0 4
      dist/game/data/scripts/quests/372_LegacyOfInsolence/30929-1.htm
  20. 0 4
      dist/game/data/scripts/quests/372_LegacyOfInsolence/30929-2.htm
  21. 0 4
      dist/game/data/scripts/quests/372_LegacyOfInsolence/30929-3.htm
  22. 0 4
      dist/game/data/scripts/quests/372_LegacyOfInsolence/31001-1.htm
  23. 0 4
      dist/game/data/scripts/quests/372_LegacyOfInsolence/31001-2.htm
  24. 0 4
      dist/game/data/scripts/quests/372_LegacyOfInsolence/31001-3.htm
  25. 0 180
      dist/game/data/scripts/quests/372_LegacyOfInsolence/__init__.py
  26. 5 0
      dist/game/data/scripts/quests/Q00372_LegacyOfInsolence/30839-01.html
  27. 4 0
      dist/game/data/scripts/quests/Q00372_LegacyOfInsolence/30839-02.html
  28. 4 0
      dist/game/data/scripts/quests/Q00372_LegacyOfInsolence/30844-01.htm
  29. 5 0
      dist/game/data/scripts/quests/Q00372_LegacyOfInsolence/30844-02.htm
  30. 4 0
      dist/game/data/scripts/quests/Q00372_LegacyOfInsolence/30844-03.htm
  31. 3 0
      dist/game/data/scripts/quests/Q00372_LegacyOfInsolence/30844-04.htm
  32. 8 0
      dist/game/data/scripts/quests/Q00372_LegacyOfInsolence/30844-05.html
  33. 6 0
      dist/game/data/scripts/quests/Q00372_LegacyOfInsolence/30844-05a.html
  34. 6 0
      dist/game/data/scripts/quests/Q00372_LegacyOfInsolence/30844-05b.html
  35. 3 0
      dist/game/data/scripts/quests/Q00372_LegacyOfInsolence/30844-06.html
  36. 7 0
      dist/game/data/scripts/quests/Q00372_LegacyOfInsolence/30844-07.html
  37. 7 0
      dist/game/data/scripts/quests/Q00372_LegacyOfInsolence/30844-07a.html
  38. 7 0
      dist/game/data/scripts/quests/Q00372_LegacyOfInsolence/30844-07b.html
  39. 7 0
      dist/game/data/scripts/quests/Q00372_LegacyOfInsolence/30844-07c.html
  40. 7 0
      dist/game/data/scripts/quests/Q00372_LegacyOfInsolence/30844-07d.html
  41. 4 0
      dist/game/data/scripts/quests/Q00372_LegacyOfInsolence/30844-07e.html
  42. 3 0
      dist/game/data/scripts/quests/Q00372_LegacyOfInsolence/30844-08.html
  43. 3 0
      dist/game/data/scripts/quests/Q00372_LegacyOfInsolence/30844-09.html
  44. 4 0
      dist/game/data/scripts/quests/Q00372_LegacyOfInsolence/30844-11.html
  45. 4 0
      dist/game/data/scripts/quests/Q00372_LegacyOfInsolence/30855-01.html
  46. 4 0
      dist/game/data/scripts/quests/Q00372_LegacyOfInsolence/30855-02.html
  47. 3 0
      dist/game/data/scripts/quests/Q00372_LegacyOfInsolence/30929-01.html
  48. 4 0
      dist/game/data/scripts/quests/Q00372_LegacyOfInsolence/30929-02.html
  49. 3 0
      dist/game/data/scripts/quests/Q00372_LegacyOfInsolence/31001-01.html
  50. 4 0
      dist/game/data/scripts/quests/Q00372_LegacyOfInsolence/31001-02.html
  51. 711 0
      dist/game/data/scripts/quests/Q00372_LegacyOfInsolence/Q00372_LegacyOfInsolence.java
  52. 2 0
      dist/game/data/scripts/quests/QuestMasterHandler.java

+ 0 - 1
dist/game/data/scripts.cfg

@@ -194,7 +194,6 @@ quests/335_TheSongOfTheHunter/__init__.py
 quests/336_CoinOfMagic/__init__.py
 quests/343_UnderTheShadowOfTheIvoryTower/__init__.py
 quests/348_ArrogantSearch/__init__.py
-quests/372_LegacyOfInsolence/__init__.py
 quests/384_WarehouseKeepersPastime/__init__.py
 quests/386_StolenDignity/__init__.py
 quests/419_GetAPet/__init__.py

+ 0 - 4
dist/game/data/scripts/quests/372_LegacyOfInsolence/30839-1.htm

@@ -1,4 +0,0 @@
-<html><body>Trader Holly:<br>
-Did you find the<font color="LEVEL"> Imperial Genealogy</font>? I can give you some<font color="LEVEL"> Dark Crystal</font> recipes for the whole collection.<br>
-<a action="bypass -h Quest 372_LegacyOfInsolence 30839">"I'll give you the five pages of Genealogy"</a>
-</body></html>

+ 0 - 4
dist/game/data/scripts/quests/372_LegacyOfInsolence/30839-2.htm

@@ -1,4 +0,0 @@
-<html><body>Trader Holly:<br>
-You actually found a copy of the Imperial Genealogy! Thank you, take this as a token of my gratitude.<br>
-Come back if you manage to get another complete copy, i could be more generous next time!
-</body></html>

+ 0 - 4
dist/game/data/scripts/quests/372_LegacyOfInsolence/30839-3.htm

@@ -1,4 +0,0 @@
-<html><body>Trader Holly:<br>
-Oh, You didn't find a complete copy of the Imperial Genealogy! What a pity, I'm not interested on spare fragments.<br>
-Come back only if you manage to get a complete copy!
-</body></html>

+ 0 - 8
dist/game/data/scripts/quests/372_LegacyOfInsolence/30844-1.htm

@@ -1,8 +0,0 @@
-<html><body>Warehouse Keeper Walderal:<br>
-Did you find anything? Or perhaps you have a Question?<br>
-<a action="bypass -h Quest 372_LegacyOfInsolence 30844-8.htm">"Tell me more about the contract i signed"</a><br>
-<a action="bypass -h Quest 372_LegacyOfInsolence 30844-9.htm">"I have found many other things besides blueprints..."</a><br>
-<a action="bypass -h Quest 372_LegacyOfInsolence 30844">"I've brought you all the blueprints for 13 floors of the Tower of Insolence."</a><br>
-<a action="bypass -h Quest 372_LegacyOfInsolence 30844-10.htm">"I'll continue to look for more blueprints."</a><br>
-<a action="bypass -h Quest 372_LegacyOfInsolence 30844-7.htm">"I want out of the contract."</a>
-</body></html>

+ 0 - 3
dist/game/data/scripts/quests/372_LegacyOfInsolence/30844-10.htm

@@ -1,3 +0,0 @@
-<html><body>Warehouse Keeper Walderal:<br>
-Fine, Now please, get going.
-</body></html>

+ 0 - 5
dist/game/data/scripts/quests/372_LegacyOfInsolence/30844-11.htm

@@ -1,5 +0,0 @@
-<html><body>Warehouse Keeper Walderal:<br>
-You actually found the 13 blueprints! Thank you, take this as a token of my gratitude.<br>
-Come back if you manage to get another complete set of blueprints, i could be more generous next time!<br>
-<a action="bypass -h Quest 372_LegacyOfInsolence 30844-1.htm">Back</a>
-</body></html>

+ 0 - 4
dist/game/data/scripts/quests/372_LegacyOfInsolence/30844-12.htm

@@ -1,4 +0,0 @@
-<html><body>Warehouse Keeper Walderal:<br>
-Oh, You didn't find all of the 13 Blueprints! What a pity, I'm not interested on spare blueprints but on the whole collection.<br>
-<a action="bypass -h Quest 372_LegacyOfInsolence 30844-1.htm">Back</a>
-</body></html>

+ 0 - 9
dist/game/data/scripts/quests/372_LegacyOfInsolence/30844-2.htm

@@ -1,9 +0,0 @@
-<html><body>Warehouse Keeper Walderal:<br>
-Ok, and assuming you really have all those 13 blueprints, what kind of recipe would you like to get?<br>
-<a action="bypass -h Quest 372_LegacyOfInsolence Wald_DarkCryst">Dark Crystal</a><br>
-<a action="bypass -h Quest 372_LegacyOfInsolence Wald_Tallum">Tallum</a><br>
-<a action="bypass -h Quest 372_LegacyOfInsolence Wald_Nightmare">Nightmare</a><br>
-<a action="bypass -h Quest 372_LegacyOfInsolence Wald_Majestic">Majestic</a><br>
-<a action="bypass -h Quest 372_LegacyOfInsolence 30844-7.htm">"Nevermind, I want to quit"</a><br>
-<a action="bypass -h Quest 372_LegacyOfInsolence 30844-1.htm">Back</a>
-</body></html>

+ 0 - 5
dist/game/data/scripts/quests/372_LegacyOfInsolence/30844-4.htm

@@ -1,5 +0,0 @@
-<html><body>Warehouse Keeper Walderal:<br>
-I'm looking for some experienced adventurer able to bring to me the blueprints of the Tower of Insolence to continue my reesarch. There are 13 of them and many other ancients relics could be found in the way.<br>
-Are you the one i were looking for?<br>
-<a action="bypass -h Quest 372_LegacyOfInsolence 30844-6.htm">"Yes, i am brave enough to help you"</a>
-</body></html>

+ 0 - 4
dist/game/data/scripts/quests/372_LegacyOfInsolence/30844-5.htm

@@ -1,4 +0,0 @@
-<html><body>Warehouse Keeper Walderal:<br>
-I think it is too early for you to help me. Come back after you have gained some more experience.<br>
-<font color="LEVEL">(Quest for characters level 59 and above.)</font>
-</body></html>

+ 0 - 5
dist/game/data/scripts/quests/372_LegacyOfInsolence/30844-6.htm

@@ -1,5 +0,0 @@
-<html><body>Warehouse Keeper Walderal:<br>
-OK, Listen carefully. Bring to me the blueprints of the Tower of Insolence. There are 13 of them.<br>
-Take<font color="LEVEL"> Ancient Papyrs</font> from<font color="LEVEL"> Corrupt Sages, Erin Ediunces, Hallate's Inspectors, Platinum tribe Overlords, Platinum Guardian Prefects and Messenger Angels</font>. You must open those papyrs in order to see their contents. All i want are the blueprints...you can keep anything else you find on them.<br>
-Bring me all of them and I'll give you a recipe for a pair of gloves, shoes or a hat. Is that clear? Now, please, get going.
-</body></html>

+ 0 - 4
dist/game/data/scripts/quests/372_LegacyOfInsolence/30844-7.htm

@@ -1,4 +0,0 @@
-<html><body>Warehouse Keeper Walderal:<br>
-It's too bad, but I guess it can't be helped. I have no choice but to look for another adventurer...<br>
-Well, I wish you happiness in your future.
-</body></html>

+ 0 - 6
dist/game/data/scripts/quests/372_LegacyOfInsolence/30844-8.htm

@@ -1,6 +0,0 @@
-<html><body>Warehouse Keeper Walderal:<br>
-Are you OK? How did you forget so quickly? OK, once more. Listen carefully. Bring to me the blueprints of the Tower of Insolence. There are 13 of them.<br>
-Take from<font color="LEVEL"> Corrupt Sages, Erin Ediunces, Hallate's Inspectors, Platinum tribe overlords, Platinum Guardian Prefects and Messenger Angels.</font> You can keep anything else you find on them. All i want are the blueprints...<br>
-Bring me all of them and I'll give you a recipe for a pair of gloves, shoes or a hat. Is that clear? Now, please, get going.<br>
-<a action="bypass -h Quest 372_LegacyOfInsolence 30844-1.htm">Back</a>
-</body></html>

+ 0 - 6
dist/game/data/scripts/quests/372_LegacyOfInsolence/30844-9.htm

@@ -1,6 +0,0 @@
-<html><body>Warehouse Keeper Walderal:<br>
-So, you've found another things?<br>
-Well, I know of some other people that could be interested in such findings.You should visit<font color="LEVEL"> Magister Desmond, Claudia Athebalt, Antique Dealer Patrin or Trader Holly.</font> All i want are the blueprints...<br>
-Bring me all of them and I'll give you a recipe for a pair of gloves, shoes or a hat. Is that clear? Now, please, get going.<br>
-<a action="bypass -h Quest 372_LegacyOfInsolence 30844-1.htm">Back</a>
-</body></html>

+ 0 - 4
dist/game/data/scripts/quests/372_LegacyOfInsolence/30855-1.htm

@@ -1,4 +0,0 @@
-<html><body>Magister Desmond:<br>
-Did you find the<font color="LEVEL"> Revelations of the Seals</font>? I can give you some<font color="LEVEL"> Majestic</font> recipes for the whole collection.<br>
-<a action="bypass -h Quest 372_LegacyOfInsolence 30855">"I'll give you the seven Revelations"</a>
-</body></html>

+ 0 - 4
dist/game/data/scripts/quests/372_LegacyOfInsolence/30855-2.htm

@@ -1,4 +0,0 @@
-<html><body>Magister Desmond:<br>
-You actually found a copy of the Revelations of the Seals! Thank you, take this as a token of my gratitude.<br>
-Come back if you manage to get another complete copy, i could be more generous next time!
-</body></html>

+ 0 - 4
dist/game/data/scripts/quests/372_LegacyOfInsolence/30855-3.htm

@@ -1,4 +0,0 @@
-<html><body>Magister Desmond:<br>
-Oh, You didn't find a complete copy of the Revelations of the Seals! What a pity, I'm not interested on spare fragments.<br>
-Come back only if you manage to get a complete copy!
-</body></html>

+ 0 - 4
dist/game/data/scripts/quests/372_LegacyOfInsolence/30929-1.htm

@@ -1,4 +0,0 @@
-<html><body>Antique Dealer Patrin:<br>
-Did you find the<font color="LEVEL"> Ancient Epics</font>? I can give you some<font color="LEVEL"> Tallum</font> recipes for the whole collection.<br>
-<a action="bypass -h Quest 372_LegacyOfInsolence 30929">"I'll give you the five Ancient Epics"</a>
-</body></html>

+ 0 - 4
dist/game/data/scripts/quests/372_LegacyOfInsolence/30929-2.htm

@@ -1,4 +0,0 @@
-<html><body>Antique Dealer Patrin:<br>
-You actually found a copy of the Ancient Epics! Thank you, take this as a token of my gratitude.<br>
-Come back if you manage to get another complete copy, i could be more generous next time!
-</body></html>

+ 0 - 4
dist/game/data/scripts/quests/372_LegacyOfInsolence/30929-3.htm

@@ -1,4 +0,0 @@
-<html><body>Antique Dealer Patrin:<br>
-Oh, You didn't find a complete copy of the Ancient Epics! What a pity, I'm not interested on spare fragments.<br>
-Come back only if you manage to get a complete copy!
-</body></html>

+ 0 - 4
dist/game/data/scripts/quests/372_LegacyOfInsolence/31001-1.htm

@@ -1,4 +0,0 @@
-<html><body>Claudia Athebalt:<br>
-Did you find the<font color="LEVEL"> Revelations of the Seals</font>? I can give you some<font color="LEVEL"> Nightmare</font> recipes for the whole collection.<br>
-<a action="bypass -h Quest 372_LegacyOfInsolence 31001">"I'll give you the seven Revelations"</a>
-</body></html>

+ 0 - 4
dist/game/data/scripts/quests/372_LegacyOfInsolence/31001-2.htm

@@ -1,4 +0,0 @@
-<html><body>Claudia Athebalt:<br>
-You actually found a copy of the Revelations of the Seals! Thank you, take this as a token of my gratitude.<br>
-Come back if you manage to get another complete copy, i could be more generous next time!
-</body></html>

+ 0 - 4
dist/game/data/scripts/quests/372_LegacyOfInsolence/31001-3.htm

@@ -1,4 +0,0 @@
-<html><body>Claudia Athebalt:<br>
-Oh, You didn't find a complete copy of the Revelations of the Seals! What a pity, I'm not interested on spare fragments.<br>
-Come back only if you manage to get a complete copy!
-</body></html>

+ 0 - 180
dist/game/data/scripts/quests/372_LegacyOfInsolence/__init__.py

@@ -1,180 +0,0 @@
-# Legacy of Insolence 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
-
-qn = "372_LegacyOfInsolence"
-
-# 1- Variables: Maybe you would like to change something here:
-# If a non-zero value is set here, recipes will be 100% instead of 60%
-# (default setting matches retail rewards)
-ALT_RP_100=0
-# Cummulative chances to get: [ "3 recipes", "4000 adena", "2 recipes", max_chance]
-# Default is: 1%,2%,2% (read give_reward method downwards if something isn't clear)
-# In order to make special rewards harder to get, you could set max_chance to 1000, or slt
-REWARD_RATE = [1,3,5,100]
-# 2- Quest info: You prolly won't need to change this
-QUEST_NUMBER,QUEST_NAME,QUEST_DESCRIPTION = 372, "LegacyOfInsolence", "Legacy of Insolence"
-# 3- Quest specific definitions: Don't mess with it unless you know what you're doing
-#Quest items: Papyrus
-RE_PAP,BL_PAP,BK_PAP,WH_PAP=range(5966,5970)
-# Collectibles:
-COLLECTION = {
-"Rev":range(5972,5979), #Revelations of the Seals
-"Anc":range(5979,5984), #Ancient Epics
-"Imp":range(5984,5989), #Imperial Genealogy
-"ToI":range(5989,6002)  #ToI Blueprints
-}
-#name:[boots,gloves,helm],
-REWARD={
-"DarkCryst":[5525,5508,5496],
-"Tallum":   [5526,5509,5497],
-"Nightmare":[5527,5514,5502],
-"Majestic": [5528,5515,5503],
-"Wald_DarkCryst":[5368,5392,5426,5525,5508,5496], # Walderal includes recipes
-"Wald_Tallum":   [5370,5394,5428,5526,5509,5497], # Walderal includes recipes
-"Wald_Nightmare":[5380,5404,5430,5527,5514,5502], # Walderal includes recipes
-"Wald_Majestic": [5382,5406,5432,5528,5515,5503], # Walderal includes recipes
-}
-#Recipes for 100% option
-RECIPES=[5368,5392,5426,5370,5394,5428,5380,5404,5430,5382,5406,5432]
-#NPCs Area
-WALDERAL,DESMOND,CLAUDIA,PATRIN,HOLLY=30844,30855,31001,30929,30839
-#Npc: ("Needed Collectibles","Reward recipes")
-NPC = {
-WALDERAL: ("ToI"),            #Well, this guy is special
-DESMOND:  ("Rev","Majestic"),
-CLAUDIA:  ("Rev","Nightmare"),
-PATRIN:   ("Anc","Tallum"),
-HOLLY:    ("Imp","DarkCryst")
-}
-#Mobs & Drop
-CORRUPT_SAGE,ERIN_EDIUNCE,HALLATE_INSP,PLATINUM_OVL,PLATINUM_PRE,MESSENGER_A1,MESSENGER_A2=20817,20821,20825,20829,21069,21062,21063
-# This drop distribution should match retail.
-MOB = {
-CORRUPT_SAGE:[RE_PAP,35],
-ERIN_EDIUNCE:[RE_PAP,40],
-HALLATE_INSP:[RE_PAP,45],
-PLATINUM_OVL:[BL_PAP,40],
-PLATINUM_PRE:[BK_PAP,25],
-MESSENGER_A1:[WH_PAP,25],
-MESSENGER_A2:[WH_PAP,25]
-}
-#Helpers
-def check_n_take(st,collection) :
-    result = False
-    coll2check = COLLECTION[collection]
-    dec = 2**len(coll2check)
-    for i in range(len(coll2check)) :
-      if st.getQuestItemsCount(coll2check[i]) > 0 :
-         dec = dec >> 1
-    if dec == 1 :
-       for k in range(len(coll2check)) :
-         st.takeItems(coll2check[k], 1) 
-       result = True
-    return result
-
-def give_reward(st,reward) :
-    luck = st.getQuest().getRandom(REWARD_RATE[-1])
-    prize = REWARD[reward]
-    if ALT_RP_100 != 0 :
-       for i in range(len(prize)) :
-           if prize[i] in RECIPES:        # dont want to change keys materials, just recipes
-             prize[i]+=1
-    if luck < REWARD_RATE[0] :            # best reward: all items from collection
-       for j in prize :
-           st.giveItems(j,1)
-    elif luck < REWARD_RATE[1] :          # worst reward: 4000a
-       st.giveItems(57,4000)
-    elif luck < REWARD_RATE[2] :          # quite nice : 2 recipes
-       for k in range(2) :
-          l = st.getQuest().getRandom(len(prize))
-          st.giveItems(prize[l],1)
-          del prize[l]
-    else :                                # ordinary reward: 1 recipe or mat
-       st.giveItems(prize[st.getQuest().getRandom(len(prize))],1)
-
-
-class Quest (JQuest) :
-
- def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
-
- def onEvent (self,event,st) :
-    id = st.getState() 
-    htmltext = event
-    if event == "30844-6.htm":
-       st.set("cond","1")
-       st.setState(State.STARTED)
-       st.playSound("ItemSound.quest_accept")
-    elif event == "30844-7.htm" :
-       st.playSound("ItemSound.quest_finish")
-       st.exitQuest(1)
-    elif event == "30844-9.htm" :
-       st.set("cond","2") 
-    elif len(event) == 5 and int(event) in NPC.keys() :
-       if event == "30844" :
-          htmltext = "30844-2.htm"
-       else :
-          if check_n_take(st,NPC[int(event)][0]) :
-             give_reward(st,NPC[int(event)][1])
-             htmltext = event+"-2.htm"
-          else :
-             htmltext = event+"-3.htm"
-    elif event in REWARD.keys() :
-       if check_n_take(st,"ToI") :
-          give_reward(st,event)
-          htmltext = "30844-11.htm"
-       else :
-          htmltext = "30844-12.htm"
-    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 npcId != WALDERAL and id != State.STARTED : return htmltext
-
-   if id == State.CREATED :
-      st.set("cond","0")
-      htmltext = "30844-4.htm"
-      if player.getLevel() < 59 :
-         st.exitQuest(1)
-         htmltext = "30844-5.htm"
-   elif id == State.STARTED :
-      htmltext = str(npcId)+"-1.htm"
-   return htmltext
-
- def onKill(self,npc,player,isPet) :
-     partyMember = self.getRandomPartyMemberState(player,State.STARTED)
-     if not partyMember : return
-     st = partyMember.getQuestState(qn)
-     
-     npcId = npc.getId()
-     item,chance=MOB[npcId]
-     chance*=Config.RATE_QUEST_DROP
-     chance = int(chance)
-     numItems,chance = divmod(chance,100)
-     if self.getRandom(100) < chance :
-         numItems = numItems + 1
-     if numItems :
-        st.giveItems(item,numItems)
-        st.playSound("ItemSound.quest_itemget")
-     return
-
-# Quest class and state definition
-QUEST       = Quest(QUEST_NUMBER, str(QUEST_NUMBER)+"_"+QUEST_NAME, QUEST_DESCRIPTION)
-
-
-QUEST.addStartNpc(WALDERAL)
-
-for i in NPC.keys() :
-  QUEST.addTalkId(i)
-
-for i in MOB.keys() :
-  QUEST.addKillId(i)

+ 5 - 0
dist/game/data/scripts/quests/Q00372_LegacyOfInsolence/30839-01.html

@@ -0,0 +1,5 @@
+<html><body>Trader Holly:<br>
+How did you know that I'm researching the history of the empire? I'm trying to convince everyone I'm just a pure and naive girl...<br>
+History is my passion! My grandfather was also a researcher studying the history of the Elmoreden empire. I'm currently researching the genealogy of the royal family.<br>
+If you come across any books dealing with that subject, please bring them to me. You wouldn't refuse an innocent and naive girl's request, would you? Well... I wouldn't ask you to do it for free... If bring me all the records of genealogy of the empire, I'll give you a few valuable relics my grandfather left me.
+</body></html>

+ 4 - 0
dist/game/data/scripts/quests/Q00372_LegacyOfInsolence/30839-02.html

@@ -0,0 +1,4 @@
+<html><body>Trader Holly:<br>
+Amazing! Please give it to me. Hmm... I knew it! Baium wasn't the last emperor of the Elmoreden empire! Although his reign was brief, Printes, Baium's son, ruled the empire. He eventually went missing somewhere in the Goddard region...
+<br>Thank you for bringing me the book! I find it so fascinating! Here is your reward. If you find any other books like this, please bring them to me!
+</body></html>

+ 4 - 0
dist/game/data/scripts/quests/Q00372_LegacyOfInsolence/30844-01.htm

@@ -0,0 +1,4 @@
+<html><body>Warehouse Keeper Walderal:<br>
+Recently, some fearless people have gone into the Tower of Insolence. They are frantically searching for ancient, secret treasure. We of the Gray Pillar Guild cannot be left out of what's going on in there. That tower  was built by dwarves! We can't allow outsiders to plunder it! We already have a team in there, are you interested? Well, come to think of it, you don't look very experienced... I wouldn't want to have to haul your cold corpse out of there...<br>
+(This quest may only be undertaken by a character of level 59 or above.)
+</body></html>

+ 5 - 0
dist/game/data/scripts/quests/Q00372_LegacyOfInsolence/30844-02.htm

@@ -0,0 +1,5 @@
+<html><body>Warehouse Keeper Walderal:<br>
+Recently, some fearless people have gone into the Tower of Insolence. They are frantically searching for ancient, secret treasure. We of the Gray Pillar Guild cannot be left out of what's going on in there. That tower  was built by dwarves! We can't allow outsiders to plunder it! We already have a team in there.<br>
+Ah, the mysteries of the Tower... How did our noble ancestors do it? It is said that the original blueprints are located somewhere in the tower. Would you be interested in recovering them for us?<br>
+<a action="bypass -h Quest Q00372_LegacyOfInsolence 30844-03.htm">"I'll do it."</a>
+</body></html>

+ 4 - 0
dist/game/data/scripts/quests/Q00372_LegacyOfInsolence/30844-03.htm

@@ -0,0 +1,4 @@
+<html><body>Warehouse Keeper Walderal:<br>
+Marvelous!  In the middle section of the Tower of Insolence you will find monsters such as <font color="LEVEL">corrupt sages, erin ediunces, Hallate's inspectors, Platinum tribe overlords, Platinum guardian prefects, and messenger angels</font>. It is they who are in possession of the blueprints of the tower. Please recover the blueprints and bring them to me. In return, I will give you a very rare and precious recipe or ingredient. What do you say? Interested?<br>
+<a action="bypass -h Quest Q00372_LegacyOfInsolence 30844-04.htm">"I'll do it."</a>
+</body></html>

+ 3 - 0
dist/game/data/scripts/quests/Q00372_LegacyOfInsolence/30844-04.htm

@@ -0,0 +1,3 @@
+<html><body>Warehouse Keeper Walderal:<br>
+All right! Then, off you go! Make sure to bring me back the blueprints. All I need to do is to complete the blueprint for the entire tower... Although you may find some other stuff, I promise I won't touch it.  The objective of our guild is to obtain the technical knowledge that was used to build the Tower of Insolence!
+</body></html>

+ 8 - 0
dist/game/data/scripts/quests/Q00372_LegacyOfInsolence/30844-05.html

@@ -0,0 +1,8 @@
+<html><body>Warehouse Keeper Walderal:<br>
+Did you find anything? Or perhaps you have a question?<br>
+<a action="bypass -h Quest Q00372_LegacyOfInsolence 30844-05a.html">"Tell me more about the Contract I signed."</a><br>
+<a action="bypass -h Quest Q00372_LegacyOfInsolence 30844-05b.html">"I have found many other things besides blueprints..."</a><br>
+<a action="bypass -h Quest Q00372_LegacyOfInsolence 30844-07.html">"I've brought you all the blueprints for 13 floors of the Tower of Insolence."</a><br>
+<a action="bypass -h Quest Q00372_LegacyOfInsolence 30844-08.html">"I'll continue to look for more blueprints."</a><br>
+<a action="bypass -h Quest Q00372_LegacyOfInsolence 30844-09.html">"I want out of the Contract."</a>
+</body></html>

+ 6 - 0
dist/game/data/scripts/quests/Q00372_LegacyOfInsolence/30844-05a.html

@@ -0,0 +1,6 @@
+<html><body>Warehouse Keeper Walderal:<br>
+Are you OK? How did you forget so quickly? OK, once more. Listen carefully. Bring to me the blueprints of the Tower of Insolence. There are 13 of them.<br>
+Take them from <font color="LEVEL">corrupt sages, erin ediunces, Hallate's inspectors, Platinum tribe overlords, Platinum guardian prefects and messenger angels</font>. You can keep anything else you find on them. All I want are the blueprints... If you're able to get and bring back the blueprints for all 13 floors, then, I will give you a very rare and precious recipe or ingredient.<br>
+Is that clear? Now, please, get going.<br>
+<a action="bypass -h Quest Q00372_LegacyOfInsolence 30844-05.html">Back</a>
+</body></html>

+ 6 - 0
dist/game/data/scripts/quests/Q00372_LegacyOfInsolence/30844-05b.html

@@ -0,0 +1,6 @@
+<html><body>Warehouse Keeper Walderal:<br>
+Hmm, a book, eh? Well, we're only interested in blueprints...  Wait a minute..., come to think of it, I heard that Madam Claudia Athebaldt is looking for a book titled <font color="LEVEL">"Revelation of the Seals"</font>. It seems that Magister Desmond is searching for the same book. It must be important...<br>
+Trader Holly in the Town of Aden also collects history books. She is especially interested in any documents related to <font color="LEVEL">imperial genealogy</font>.<br>
+Patrin of the Town of Oren, the antiques dealer, is wild about <font color="LEVEL">epics</font>.<br>
+<a action="bypass -h Quest Q00372_LegacyOfInsolence 30844-05.html">Back</a>
+</body></html>

+ 3 - 0
dist/game/data/scripts/quests/Q00372_LegacyOfInsolence/30844-06.html

@@ -0,0 +1,3 @@
+<html><body>Warehouse Keeper Walderal:<br>
+Unfortunately, blueprints for just a couple of floors are of no use to us. We must have the design of the entire structure to truly understand its mysteries. Please bring them all to us.
+</body></html>

+ 7 - 0
dist/game/data/scripts/quests/Q00372_LegacyOfInsolence/30844-07.html

@@ -0,0 +1,7 @@
+<html><body>Warehouse Keeper Walderal:<br>
+Let me see... Ah, the blueprints for all 13 floors! Excellent! Now we shall learn the secrets of the tower! One day the mighty Gray Pillar Guild will construct an even grander building! Thank you for your hard work. You'll be well-rewarded... I just received several different recipes and ingredients from the famous workshop of Maestro Reorin! Which type would you like?<br>
+<a action="bypass -h Quest Q00372_LegacyOfInsolence 30844-07a.html">Dark Crystal</a><br>
+<a action="bypass -h Quest Q00372_LegacyOfInsolence 30844-07b.html">Tallum</a><br>
+<a action="bypass -h Quest Q00372_LegacyOfInsolence 30844-07c.html">Nightmare</a><br>
+<a action="bypass -h Quest Q00372_LegacyOfInsolence 30844-07d.html">Majestic</a>
+</body></html>

+ 7 - 0
dist/game/data/scripts/quests/Q00372_LegacyOfInsolence/30844-07a.html

@@ -0,0 +1,7 @@
+<html><body>Warehouse Keeper Walderal:<br>
+Here it is! This will be helpful if you're thinking of getting any A-Grade dark crystal equipment.<br>
+By the way... I've heard that there are still copies of the blueprints for the Tower of Insolence available! Would you bring me some?<br>
+<a action="bypass -h Quest Q00372_LegacyOfInsolence 30844-11.html">"Here are some more blueprints."</a><br>
+<a action="bypass -h Quest Q00372_LegacyOfInsolence 30844-08.html">"I'll look for more blueprints."</a><br>
+<a action="bypass -h Quest Q00372_LegacyOfInsolence 30844-09.html">"I want to quit."</a>
+</body></html>

+ 7 - 0
dist/game/data/scripts/quests/Q00372_LegacyOfInsolence/30844-07b.html

@@ -0,0 +1,7 @@
+<html><body>Warehouse Keeper Walderal:<br>
+Here it is! This will be helpful if you're thinking of getting any A-Grade tallum equipment.<br>
+By the way... I've heard that there are still copies of the blueprints for the Tower of Insolence available! Would you bring me some?<br>
+<a action="bypass -h Quest Q00372_LegacyOfInsolence 30844-11.html">"Here are some more blueprints."</a><br>
+<a action="bypass -h Quest Q00372_LegacyOfInsolence 30844-08.html">"I'll look for more blueprints."</a><br>
+<a action="bypass -h Quest Q00372_LegacyOfInsolence 30844-09.html">"I want to quit."</a>
+</body></html>

+ 7 - 0
dist/game/data/scripts/quests/Q00372_LegacyOfInsolence/30844-07c.html

@@ -0,0 +1,7 @@
+<html><body>Warehouse Keeper Walderal:<br>
+Here it is! This will be helpful if you're thinking of getting any A-Grade nightmare equipment.<br>
+By the way... I've heard that there are still copies of the blueprints for the Tower of Insolence available! Would you bring me some?<br>
+<a action="bypass -h Quest Q00372_LegacyOfInsolence 30844-11.html">"Here are some more blueprints."</a><br>
+<a action="bypass -h Quest Q00372_LegacyOfInsolence 30844-08.html">"I'll look for more blueprints."</a><br>
+<a action="bypass -h Quest Q00372_LegacyOfInsolence 30844-09.html">"I want to quit."</a>
+</body></html>

+ 7 - 0
dist/game/data/scripts/quests/Q00372_LegacyOfInsolence/30844-07d.html

@@ -0,0 +1,7 @@
+<html><body>Warehouse Keeper Walderal:<br>
+Here it is! This will be helpful if you're thinking of getting any A-Grade majestic equipment.<br>
+By the way... I've heard that there are still copies of the blueprints for the Tower of Insolence available! Would you bring me some?<br>
+<a action="bypass -h Quest Q00372_LegacyOfInsolence 30844-11.html">"Here are some more blueprints."</a><br>
+<a action="bypass -h Quest Q00372_LegacyOfInsolence 30844-08.html">"I'll look for more blueprints."</a><br>
+<a action="bypass -h Quest Q00372_LegacyOfInsolence 30844-09.html">"I want to quit."</a>
+</body></html>

+ 4 - 0
dist/game/data/scripts/quests/Q00372_LegacyOfInsolence/30844-07e.html

@@ -0,0 +1,4 @@
+<html><body>Warehouse Keeper Walderal:<br>
+What...? I thought you said you had more blueprints...?<br>
+No, no... Just one or two floors won't be helpful at all. We must understand the structure of each floor systematically, which means knowing the weight-bearing walls, types of pillars and things like that... I must have blueprints for all 13 floors! Please continue to look for them.
+</body></html>

+ 3 - 0
dist/game/data/scripts/quests/Q00372_LegacyOfInsolence/30844-08.html

@@ -0,0 +1,3 @@
+<html><body>Warehouse Keeper Walderal:<br>
+Wonderful! These blueprints are actually in quite poor condition... I'd appreciate it very much if you could find some more and bring them to me! Get them from <font color="LEVEL">corrupt sages, erin ediunces, Hallate's inspectors, Platinum tribe overlords, Platinum guardian prefects and messenger angels</font>. I'll wait here.
+</body></html>

+ 3 - 0
dist/game/data/scripts/quests/Q00372_LegacyOfInsolence/30844-09.html

@@ -0,0 +1,3 @@
+<html><body>Warehouse Keeper Walderal:<br>
+Oh, really? Well, I can hardly blame you. Thank you for your help.
+</body></html>

+ 4 - 0
dist/game/data/scripts/quests/Q00372_LegacyOfInsolence/30844-11.html

@@ -0,0 +1,4 @@
+<html><body>Warehouse Keeper Walderal:<br>
+Oh, really? Please show it to me!<br>
+<a action="bypass -h Quest Q00372_LegacyOfInsolence 30844-07.html">Show him the blueprint for the Tower of Insolence.</a>
+</body></html>

+ 4 - 0
dist/game/data/scripts/quests/Q00372_LegacyOfInsolence/30855-01.html

@@ -0,0 +1,4 @@
+<html><body>Magister Desmond:<br>
+You're bringing the "Revelation of the Seals", aren't you? Here, let me see.<br>
+What's this? You didn't bring them all! Go get the rest! I'll hold onto these for now. When you bring more, I'll send them to my superior! Then you shall receive your reward.
+</body></html>

+ 4 - 0
dist/game/data/scripts/quests/Q00372_LegacyOfInsolence/30855-02.html

@@ -0,0 +1,4 @@
+<html><body>Magister Desmond:<br>
+Is this the entire set of the "Revelation of the Seals"? Ah, yes! Give them here! Now I am so much closer to discovering the secret of the seven seals! Soon we, the Revolutionaries of Dusk, will rule the world!<br>
+Here is your reward. If you find any more of these kind of books, bring them to me, do you understand?
+</body></html>

+ 3 - 0
dist/game/data/scripts/quests/Q00372_LegacyOfInsolence/30929-01.html

@@ -0,0 +1,3 @@
+<html><body>Antique Dealer Patrin:<br>
+There's a rumor that you've been collecting old scrolls at the Tower of Insolence... Have you come across a scroll of ancient epic, written by a troubadour from the ancient era? If you have such an item, it could be of great value. Artistic value is quite subjective. It may look like someone's doodling to you, but to the trained eye, it could prove to be more valuable than precious stones. If you find such an epic, please bring it to me! I'll pay you very well for it.
+</body></html>

+ 4 - 0
dist/game/data/scripts/quests/Q00372_LegacyOfInsolence/30929-02.html

@@ -0,0 +1,4 @@
+<html><body>Antique Dealer Patrin:<br>
+Wow! Is this an ancient epic? What a find! I'll take it!<br>
+I can pay you this much. If you find any more ancient epics, please bring them all to me. I will appraise them and give you the best possible prices.
+</body></html>

+ 3 - 0
dist/game/data/scripts/quests/Q00372_LegacyOfInsolence/31001-01.html

@@ -0,0 +1,3 @@
+<html><body>Lady Claudia:<br>
+Have you brought "The Revelation of the Seals"? Remember - once you've collect all seven books, bring them straight to me! The Lords of Dawn have very high expectations of you!
+</body></html>

+ 4 - 0
dist/game/data/scripts/quests/Q00372_LegacyOfInsolence/31001-02.html

@@ -0,0 +1,4 @@
+<html><body>Lady Claudia:<br>
+This is "The Revelation of the Seals"! Many wish to possess this book, my husband foremost among them....<br>
+I appreciate your hard work and hope this reward shows you just how grateful I am to you.
+</body></html>

+ 711 - 0
dist/game/data/scripts/quests/Q00372_LegacyOfInsolence/Q00372_LegacyOfInsolence.java

@@ -0,0 +1,711 @@
+/*
+ * 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.Q00372_LegacyOfInsolence;
+
+import java.util.HashMap;
+import java.util.Map;
+
+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.holders.QuestItemHolder;
+import com.l2jserver.gameserver.model.quest.Quest;
+import com.l2jserver.gameserver.model.quest.QuestState;
+import com.l2jserver.gameserver.util.Util;
+
+/**
+ * Legacy Of Insolence (372)
+ * @author ivantotov
+ */
+public final class Q00372_LegacyOfInsolence extends Quest
+{
+	// NPCs
+	private static final int TRADER_HOLLY = 30839;
+	private static final int WAREHOUSE_KEEPER_WALDERAL = 30844;
+	private static final int MAGISTER_DESMOND = 30855;
+	private static final int ANTIQUE_DEALER_PATRIN = 30929;
+	private static final int CLAUDIA_ATHEBALDT = 31001;
+	// Items
+	private static final int ANCIENT_RED_PAPYRUS = 5966;
+	private static final int ANCIENT_BLUE_PAPYRUS = 5967;
+	private static final int ANCIENT_BLACK_PAPYRUS = 5968;
+	private static final int ANCIENT_WHITE_PAPYRUS = 5969;
+	private static final int REVELATION_OF_THE_SEALS_CHAPTER_OF_AVARICE = 5972;
+	private static final int REVELATION_OF_THE_SEALS_CHAPTER_OF_GNOSIS = 5973;
+	private static final int REVELATION_OF_THE_SEALS_CHAPTER_OF_STRIFE = 5974;
+	private static final int REVELATION_OF_THE_SEALS_CHAPTER_OF_VENGEANCE = 5975;
+	private static final int REVELATION_OF_THE_SEALS_CHAPTER_OF_AWEKENING = 5976;
+	private static final int REVELATION_OF_THE_SEALS_CHAPTER_OF_CALAMITY = 5977;
+	private static final int REVELATION_OF_THE_SEALS_CHAPTER_OF_DESCENT = 5978;
+	private static final int ANCIENT_EPIC_CHAPTER_1 = 5979;
+	private static final int ANCIENT_EPIC_CHAPTER_2 = 5980;
+	private static final int ANCIENT_EPIC_CHAPTER_3 = 5981;
+	private static final int ANCIENT_EPIC_CHAPTER_4 = 5982;
+	private static final int ANCIENT_EPIC_CHAPTER_5 = 5983;
+	private static final int IMPERIAL_GENEALOGY_1 = 5984;
+	private static final int IMPERIAL_GENEALOGY_2 = 5985;
+	private static final int IMPERIAL_GENEALOGY_3 = 5986;
+	private static final int IMPERIAL_GENEALOGY_4 = 5987;
+	private static final int IMPERIAL_GENEALOGY_5 = 5988;
+	private static final int BLUEPRINT_TOWER_OF_INSOLENCE_1ST_FLOOR = 5989;
+	private static final int BLUEPRINT_TOWER_OF_INSOLENCE_2ND_FLOOR = 5990;
+	private static final int BLUEPRINT_TOWER_OF_INSOLENCE_3RD_FLOOR = 5991;
+	private static final int BLUEPRINT_TOWER_OF_INSOLENCE_4TH_FLOOR = 5992;
+	private static final int BLUEPRINT_TOWER_OF_INSOLENCE_5TH_FLOOR = 5993;
+	private static final int BLUEPRINT_TOWER_OF_INSOLENCE_6TH_FLOOR = 5994;
+	private static final int BLUEPRINT_TOWER_OF_INSOLENCE_7TH_FLOOR = 5995;
+	private static final int BLUEPRINT_TOWER_OF_INSOLENCE_8TH_FLOOR = 5996;
+	private static final int BLUEPRINT_TOWER_OF_INSOLENCE_9TH_FLOOR = 5997;
+	private static final int BLUEPRINT_TOWER_OF_INSOLENCE_10TH_FLOOR = 5998;
+	private static final int BLUEPRINT_TOWER_OF_INSOLENCE_11TH_FLOOR = 5999;
+	private static final int BLUEPRINT_TOWER_OF_INSOLENCE_12TH_FLOOR = 6000;
+	private static final int BLUEPRINT_TOWER_OF_INSOLENCE_13TH_FLOOR = 6001;
+	// Rewards
+	private static final int RECIPE_SEALED_DARK_CRYSTAL_BOOTS_60 = 5368;
+	private static final int RECIPE_SEALED_TALLUM_BOOTS_60 = 5370;
+	private static final int RECIPE_SEALED_BOOTS_OF_NIGHTMARE_60 = 5380;
+	private static final int RECIPE_SEALED_MAJESTIC_BOOTS_60 = 5382;
+	private static final int RECIPE_SEALED_DARK_CRYSTAL_GLOVES_60 = 5392;
+	private static final int RECIPE_SEALED_TALLUM_GLOVES_60 = 5394;
+	private static final int RECIPE_SEALED_GAUNTLETS_OF_NIGHTMARE_60 = 5404;
+	private static final int RECIPE_SEALED_MAJESTIC_GAUNTLETS_60 = 5406;
+	private static final int RECIPE_SEALED_DARK_CRYSTAL_HELMET_60 = 5426;
+	private static final int RECIPE_SEALED_TALLUM_HELMET_60 = 5428;
+	private static final int RECIPE_SEALED_HELM_OF_NIGHTMARE_60 = 5430;
+	private static final int RECIPE_SEALED_MAJESTIC_CIRCLET_60 = 5432;
+	private static final int SEALED_DARK_CRYSTAL_BOOTS_LINING = 5496;
+	private static final int SEALED_TALLUM_BOOTS_LINING = 5497;
+	private static final int SEALED_BOOTS_OF_NIGHTMARE_LINING = 5502;
+	private static final int SEALED_MAJESTIC_BOOTS_LINING = 5503;
+	private static final int SEALED_DARK_CRYSTAL_GLOVES_DESIGN = 5508;
+	private static final int SEALED_TALLUM_GLOVES_DESIGN = 5509;
+	private static final int SEALED_GAUNTLETS_OF_NIGHTMARE_DESIGN = 5514;
+	private static final int SEALED_MAJESTIC_GAUNTLETS_DESIGN = 5515;
+	private static final int SEALED_DARK_CRYSTAL_HELMET_DESIGN = 5525;
+	private static final int SEALED_TALLUM_HELM_DESIGN = 5526;
+	private static final int SEALED_HELM_OF_NIGHTMARE_DESIGN = 5527;
+	private static final int SEALED_MAJESTIC_CIRCLET_DESIGN = 5528;
+	// Monsters
+	private static final int HALLATES_INSPECTOR = 20825;
+	private static final Map<Integer, QuestItemHolder> MONSTER_REWARDS = new HashMap<>();
+	
+	static
+	{
+		MONSTER_REWARDS.put(20817, new QuestItemHolder(ANCIENT_RED_PAPYRUS, 302, 1));
+		MONSTER_REWARDS.put(20821, new QuestItemHolder(ANCIENT_RED_PAPYRUS, 410, 1));
+		MONSTER_REWARDS.put(HALLATES_INSPECTOR, new QuestItemHolder(ANCIENT_RED_PAPYRUS, 1, 447));
+		MONSTER_REWARDS.put(20829, new QuestItemHolder(ANCIENT_BLUE_PAPYRUS, 451, 1));
+		MONSTER_REWARDS.put(21062, new QuestItemHolder(ANCIENT_WHITE_PAPYRUS, 290, 1));
+		MONSTER_REWARDS.put(21069, new QuestItemHolder(ANCIENT_BLACK_PAPYRUS, 280, 1));
+	}
+	
+	// Misc
+	private static final int MIN_LEVEL = 59;
+	
+	public Q00372_LegacyOfInsolence()
+	{
+		super(372, Q00372_LegacyOfInsolence.class.getSimpleName(), "Legacy Of Insolence");
+		addStartNpc(WAREHOUSE_KEEPER_WALDERAL);
+		addTalkId(WAREHOUSE_KEEPER_WALDERAL, TRADER_HOLLY, MAGISTER_DESMOND, ANTIQUE_DEALER_PATRIN, CLAUDIA_ATHEBALDT);
+		addKillId(MONSTER_REWARDS.keySet());
+	}
+	
+	@Override
+	public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
+	{
+		final QuestState qs = getQuestState(player, false);
+		final int chance = getRandom(100);
+		
+		if (qs == null)
+		{
+			return super.onAdvEvent(event, npc, player);
+		}
+		
+		String htmltext = null;
+		switch (event)
+		{
+			case "30844-04.htm":
+			{
+				if (qs.isCreated())
+				{
+					qs.startQuest();
+					htmltext = event;
+				}
+				break;
+			}
+			case "30844-07.html":
+			{
+				if (hasQuestItems(player, BLUEPRINT_TOWER_OF_INSOLENCE_1ST_FLOOR, BLUEPRINT_TOWER_OF_INSOLENCE_2ND_FLOOR, BLUEPRINT_TOWER_OF_INSOLENCE_3RD_FLOOR, //
+				BLUEPRINT_TOWER_OF_INSOLENCE_4TH_FLOOR, BLUEPRINT_TOWER_OF_INSOLENCE_5TH_FLOOR, BLUEPRINT_TOWER_OF_INSOLENCE_6TH_FLOOR, BLUEPRINT_TOWER_OF_INSOLENCE_7TH_FLOOR, //
+				BLUEPRINT_TOWER_OF_INSOLENCE_8TH_FLOOR, BLUEPRINT_TOWER_OF_INSOLENCE_9TH_FLOOR, BLUEPRINT_TOWER_OF_INSOLENCE_10TH_FLOOR, BLUEPRINT_TOWER_OF_INSOLENCE_11TH_FLOOR, //
+				BLUEPRINT_TOWER_OF_INSOLENCE_12TH_FLOOR, BLUEPRINT_TOWER_OF_INSOLENCE_13TH_FLOOR))
+				{
+					htmltext = event;
+				}
+				else
+				{
+					htmltext = "30844-06.html";
+				}
+				break;
+			}
+			case "30844-09.html":
+			{
+				qs.exitQuest(true, true);
+				htmltext = event;
+				break;
+			}
+			case "30844-07a.html":
+			{
+				if (hasQuestItems(player, BLUEPRINT_TOWER_OF_INSOLENCE_1ST_FLOOR, BLUEPRINT_TOWER_OF_INSOLENCE_2ND_FLOOR, BLUEPRINT_TOWER_OF_INSOLENCE_3RD_FLOOR, //
+				BLUEPRINT_TOWER_OF_INSOLENCE_4TH_FLOOR, BLUEPRINT_TOWER_OF_INSOLENCE_5TH_FLOOR, BLUEPRINT_TOWER_OF_INSOLENCE_6TH_FLOOR, BLUEPRINT_TOWER_OF_INSOLENCE_7TH_FLOOR, //
+				BLUEPRINT_TOWER_OF_INSOLENCE_8TH_FLOOR, BLUEPRINT_TOWER_OF_INSOLENCE_9TH_FLOOR, BLUEPRINT_TOWER_OF_INSOLENCE_10TH_FLOOR, BLUEPRINT_TOWER_OF_INSOLENCE_11TH_FLOOR, //
+				BLUEPRINT_TOWER_OF_INSOLENCE_12TH_FLOOR, BLUEPRINT_TOWER_OF_INSOLENCE_13TH_FLOOR))
+				{
+					takeItems(player, BLUEPRINT_TOWER_OF_INSOLENCE_1ST_FLOOR, 1);
+					takeItems(player, BLUEPRINT_TOWER_OF_INSOLENCE_2ND_FLOOR, 1);
+					takeItems(player, BLUEPRINT_TOWER_OF_INSOLENCE_3RD_FLOOR, 1);
+					takeItems(player, BLUEPRINT_TOWER_OF_INSOLENCE_4TH_FLOOR, 1);
+					takeItems(player, BLUEPRINT_TOWER_OF_INSOLENCE_5TH_FLOOR, 1);
+					takeItems(player, BLUEPRINT_TOWER_OF_INSOLENCE_6TH_FLOOR, 1);
+					takeItems(player, BLUEPRINT_TOWER_OF_INSOLENCE_7TH_FLOOR, 1);
+					takeItems(player, BLUEPRINT_TOWER_OF_INSOLENCE_8TH_FLOOR, 1);
+					takeItems(player, BLUEPRINT_TOWER_OF_INSOLENCE_9TH_FLOOR, 1);
+					takeItems(player, BLUEPRINT_TOWER_OF_INSOLENCE_10TH_FLOOR, 1);
+					takeItems(player, BLUEPRINT_TOWER_OF_INSOLENCE_11TH_FLOOR, 1);
+					takeItems(player, BLUEPRINT_TOWER_OF_INSOLENCE_12TH_FLOOR, 1);
+					takeItems(player, BLUEPRINT_TOWER_OF_INSOLENCE_13TH_FLOOR, 1);
+					
+					if (chance < 10)
+					{
+						giveItems(player, SEALED_DARK_CRYSTAL_BOOTS_LINING, 1);
+					}
+					else if (chance < 20)
+					{
+						giveItems(player, SEALED_DARK_CRYSTAL_GLOVES_DESIGN, 1);
+					}
+					else if (chance < 30)
+					{
+						giveItems(player, SEALED_DARK_CRYSTAL_HELMET_DESIGN, 1);
+					}
+					else if (chance < 40)
+					{
+						giveItems(player, SEALED_DARK_CRYSTAL_BOOTS_LINING, 1);
+						giveItems(player, SEALED_DARK_CRYSTAL_GLOVES_DESIGN, 1);
+						giveItems(player, SEALED_DARK_CRYSTAL_HELMET_DESIGN, 1);
+					}
+					else if (chance < 51)
+					{
+						giveItems(player, RECIPE_SEALED_DARK_CRYSTAL_BOOTS_60, 1);
+					}
+					else if (chance < 62)
+					{
+						giveItems(player, RECIPE_SEALED_DARK_CRYSTAL_GLOVES_60, 1);
+					}
+					else if (chance < 79)
+					{
+						giveItems(player, RECIPE_SEALED_DARK_CRYSTAL_HELMET_60, 1);
+					}
+					else if (chance < 100)
+					{
+						giveItems(player, RECIPE_SEALED_DARK_CRYSTAL_BOOTS_60, 1);
+						giveItems(player, RECIPE_SEALED_DARK_CRYSTAL_GLOVES_60, 1);
+						giveItems(player, RECIPE_SEALED_DARK_CRYSTAL_HELMET_60, 1);
+					}
+					htmltext = event;
+				}
+				else
+				{
+					htmltext = "30844-07e.html";
+				}
+				break;
+			}
+			case "30844-07b.html":
+			{
+				if (hasQuestItems(player, BLUEPRINT_TOWER_OF_INSOLENCE_1ST_FLOOR, BLUEPRINT_TOWER_OF_INSOLENCE_2ND_FLOOR, BLUEPRINT_TOWER_OF_INSOLENCE_3RD_FLOOR, //
+				BLUEPRINT_TOWER_OF_INSOLENCE_4TH_FLOOR, BLUEPRINT_TOWER_OF_INSOLENCE_5TH_FLOOR, BLUEPRINT_TOWER_OF_INSOLENCE_6TH_FLOOR, BLUEPRINT_TOWER_OF_INSOLENCE_7TH_FLOOR, //
+				BLUEPRINT_TOWER_OF_INSOLENCE_8TH_FLOOR, BLUEPRINT_TOWER_OF_INSOLENCE_9TH_FLOOR, BLUEPRINT_TOWER_OF_INSOLENCE_10TH_FLOOR, BLUEPRINT_TOWER_OF_INSOLENCE_11TH_FLOOR, //
+				BLUEPRINT_TOWER_OF_INSOLENCE_12TH_FLOOR, BLUEPRINT_TOWER_OF_INSOLENCE_13TH_FLOOR))
+				{
+					takeItems(player, BLUEPRINT_TOWER_OF_INSOLENCE_1ST_FLOOR, 1);
+					takeItems(player, BLUEPRINT_TOWER_OF_INSOLENCE_2ND_FLOOR, 1);
+					takeItems(player, BLUEPRINT_TOWER_OF_INSOLENCE_3RD_FLOOR, 1);
+					takeItems(player, BLUEPRINT_TOWER_OF_INSOLENCE_4TH_FLOOR, 1);
+					takeItems(player, BLUEPRINT_TOWER_OF_INSOLENCE_5TH_FLOOR, 1);
+					takeItems(player, BLUEPRINT_TOWER_OF_INSOLENCE_6TH_FLOOR, 1);
+					takeItems(player, BLUEPRINT_TOWER_OF_INSOLENCE_7TH_FLOOR, 1);
+					takeItems(player, BLUEPRINT_TOWER_OF_INSOLENCE_8TH_FLOOR, 1);
+					takeItems(player, BLUEPRINT_TOWER_OF_INSOLENCE_9TH_FLOOR, 1);
+					takeItems(player, BLUEPRINT_TOWER_OF_INSOLENCE_10TH_FLOOR, 1);
+					takeItems(player, BLUEPRINT_TOWER_OF_INSOLENCE_11TH_FLOOR, 1);
+					takeItems(player, BLUEPRINT_TOWER_OF_INSOLENCE_12TH_FLOOR, 1);
+					takeItems(player, BLUEPRINT_TOWER_OF_INSOLENCE_13TH_FLOOR, 1);
+					
+					if (chance < 10)
+					{
+						giveItems(player, SEALED_TALLUM_BOOTS_LINING, 1);
+					}
+					else if (chance < 20)
+					{
+						giveItems(player, SEALED_TALLUM_GLOVES_DESIGN, 1);
+					}
+					else if (chance < 30)
+					{
+						giveItems(player, SEALED_TALLUM_HELM_DESIGN, 1);
+					}
+					else if (chance < 40)
+					{
+						giveItems(player, SEALED_TALLUM_BOOTS_LINING, 1);
+						giveItems(player, SEALED_TALLUM_GLOVES_DESIGN, 1);
+						giveItems(player, SEALED_TALLUM_HELM_DESIGN, 1);
+					}
+					else if (chance < 51)
+					{
+						giveItems(player, RECIPE_SEALED_TALLUM_BOOTS_60, 1);
+					}
+					else if (chance < 62)
+					{
+						giveItems(player, RECIPE_SEALED_TALLUM_GLOVES_60, 1);
+					}
+					else if (chance < 79)
+					{
+						giveItems(player, RECIPE_SEALED_TALLUM_HELMET_60, 1);
+					}
+					else if (chance < 100)
+					{
+						giveItems(player, RECIPE_SEALED_TALLUM_BOOTS_60, 1);
+						giveItems(player, RECIPE_SEALED_TALLUM_GLOVES_60, 1);
+						giveItems(player, RECIPE_SEALED_TALLUM_HELMET_60, 1);
+					}
+					htmltext = event;
+				}
+				else
+				{
+					htmltext = "30844-07e.html";
+				}
+				break;
+			}
+			case "30844-07c.html":
+			{
+				if (hasQuestItems(player, BLUEPRINT_TOWER_OF_INSOLENCE_1ST_FLOOR, BLUEPRINT_TOWER_OF_INSOLENCE_2ND_FLOOR, BLUEPRINT_TOWER_OF_INSOLENCE_3RD_FLOOR, //
+				BLUEPRINT_TOWER_OF_INSOLENCE_4TH_FLOOR, BLUEPRINT_TOWER_OF_INSOLENCE_5TH_FLOOR, BLUEPRINT_TOWER_OF_INSOLENCE_6TH_FLOOR, BLUEPRINT_TOWER_OF_INSOLENCE_7TH_FLOOR, //
+				BLUEPRINT_TOWER_OF_INSOLENCE_8TH_FLOOR, BLUEPRINT_TOWER_OF_INSOLENCE_9TH_FLOOR, BLUEPRINT_TOWER_OF_INSOLENCE_10TH_FLOOR, BLUEPRINT_TOWER_OF_INSOLENCE_11TH_FLOOR, //
+				BLUEPRINT_TOWER_OF_INSOLENCE_12TH_FLOOR, BLUEPRINT_TOWER_OF_INSOLENCE_13TH_FLOOR))
+				{
+					takeItems(player, BLUEPRINT_TOWER_OF_INSOLENCE_1ST_FLOOR, 1);
+					takeItems(player, BLUEPRINT_TOWER_OF_INSOLENCE_2ND_FLOOR, 1);
+					takeItems(player, BLUEPRINT_TOWER_OF_INSOLENCE_3RD_FLOOR, 1);
+					takeItems(player, BLUEPRINT_TOWER_OF_INSOLENCE_4TH_FLOOR, 1);
+					takeItems(player, BLUEPRINT_TOWER_OF_INSOLENCE_5TH_FLOOR, 1);
+					takeItems(player, BLUEPRINT_TOWER_OF_INSOLENCE_6TH_FLOOR, 1);
+					takeItems(player, BLUEPRINT_TOWER_OF_INSOLENCE_7TH_FLOOR, 1);
+					takeItems(player, BLUEPRINT_TOWER_OF_INSOLENCE_8TH_FLOOR, 1);
+					takeItems(player, BLUEPRINT_TOWER_OF_INSOLENCE_9TH_FLOOR, 1);
+					takeItems(player, BLUEPRINT_TOWER_OF_INSOLENCE_10TH_FLOOR, 1);
+					takeItems(player, BLUEPRINT_TOWER_OF_INSOLENCE_11TH_FLOOR, 1);
+					takeItems(player, BLUEPRINT_TOWER_OF_INSOLENCE_12TH_FLOOR, 1);
+					takeItems(player, BLUEPRINT_TOWER_OF_INSOLENCE_13TH_FLOOR, 1);
+					
+					if (chance < 17)
+					{
+						giveItems(player, SEALED_BOOTS_OF_NIGHTMARE_LINING, 1);
+					}
+					else if (chance < 34)
+					{
+						giveItems(player, SEALED_GAUNTLETS_OF_NIGHTMARE_DESIGN, 1);
+					}
+					else if (chance < 49)
+					{
+						giveItems(player, SEALED_HELM_OF_NIGHTMARE_DESIGN, 1);
+					}
+					else if (chance < 58)
+					{
+						giveItems(player, SEALED_BOOTS_OF_NIGHTMARE_LINING, 1);
+						giveItems(player, SEALED_GAUNTLETS_OF_NIGHTMARE_DESIGN, 1);
+						giveItems(player, SEALED_HELM_OF_NIGHTMARE_DESIGN, 1);
+					}
+					else if (chance < 70)
+					{
+						giveItems(player, RECIPE_SEALED_BOOTS_OF_NIGHTMARE_60, 1);
+					}
+					else if (chance < 82)
+					{
+						giveItems(player, RECIPE_SEALED_GAUNTLETS_OF_NIGHTMARE_60, 1);
+					}
+					else if (chance < 92)
+					{
+						giveItems(player, RECIPE_SEALED_HELM_OF_NIGHTMARE_60, 1);
+					}
+					else if (chance < 100)
+					{
+						giveItems(player, RECIPE_SEALED_BOOTS_OF_NIGHTMARE_60, 1);
+						giveItems(player, RECIPE_SEALED_GAUNTLETS_OF_NIGHTMARE_60, 1);
+						giveItems(player, RECIPE_SEALED_HELM_OF_NIGHTMARE_60, 1);
+					}
+					htmltext = event;
+				}
+				else
+				{
+					htmltext = "30844-07e.html";
+				}
+				break;
+			}
+			case "30844-07d.html":
+			{
+				if (hasQuestItems(player, BLUEPRINT_TOWER_OF_INSOLENCE_1ST_FLOOR, BLUEPRINT_TOWER_OF_INSOLENCE_2ND_FLOOR, BLUEPRINT_TOWER_OF_INSOLENCE_3RD_FLOOR, //
+				BLUEPRINT_TOWER_OF_INSOLENCE_4TH_FLOOR, BLUEPRINT_TOWER_OF_INSOLENCE_5TH_FLOOR, BLUEPRINT_TOWER_OF_INSOLENCE_6TH_FLOOR, BLUEPRINT_TOWER_OF_INSOLENCE_7TH_FLOOR, //
+				BLUEPRINT_TOWER_OF_INSOLENCE_8TH_FLOOR, BLUEPRINT_TOWER_OF_INSOLENCE_9TH_FLOOR, BLUEPRINT_TOWER_OF_INSOLENCE_10TH_FLOOR, BLUEPRINT_TOWER_OF_INSOLENCE_11TH_FLOOR, //
+				BLUEPRINT_TOWER_OF_INSOLENCE_12TH_FLOOR, BLUEPRINT_TOWER_OF_INSOLENCE_13TH_FLOOR))
+				{
+					takeItems(player, BLUEPRINT_TOWER_OF_INSOLENCE_1ST_FLOOR, 1);
+					takeItems(player, BLUEPRINT_TOWER_OF_INSOLENCE_2ND_FLOOR, 1);
+					takeItems(player, BLUEPRINT_TOWER_OF_INSOLENCE_3RD_FLOOR, 1);
+					takeItems(player, BLUEPRINT_TOWER_OF_INSOLENCE_4TH_FLOOR, 1);
+					takeItems(player, BLUEPRINT_TOWER_OF_INSOLENCE_5TH_FLOOR, 1);
+					takeItems(player, BLUEPRINT_TOWER_OF_INSOLENCE_6TH_FLOOR, 1);
+					takeItems(player, BLUEPRINT_TOWER_OF_INSOLENCE_7TH_FLOOR, 1);
+					takeItems(player, BLUEPRINT_TOWER_OF_INSOLENCE_8TH_FLOOR, 1);
+					takeItems(player, BLUEPRINT_TOWER_OF_INSOLENCE_9TH_FLOOR, 1);
+					takeItems(player, BLUEPRINT_TOWER_OF_INSOLENCE_10TH_FLOOR, 1);
+					takeItems(player, BLUEPRINT_TOWER_OF_INSOLENCE_11TH_FLOOR, 1);
+					takeItems(player, BLUEPRINT_TOWER_OF_INSOLENCE_12TH_FLOOR, 1);
+					takeItems(player, BLUEPRINT_TOWER_OF_INSOLENCE_13TH_FLOOR, 1);
+					
+					if (chance < 17)
+					{
+						giveItems(player, SEALED_MAJESTIC_BOOTS_LINING, 1);
+					}
+					else if (chance < 34)
+					{
+						giveItems(player, SEALED_MAJESTIC_GAUNTLETS_DESIGN, 1);
+					}
+					else if (chance < 49)
+					{
+						giveItems(player, SEALED_MAJESTIC_CIRCLET_DESIGN, 1);
+					}
+					else if (chance < 58)
+					{
+						giveItems(player, SEALED_MAJESTIC_BOOTS_LINING, 1);
+						giveItems(player, SEALED_MAJESTIC_GAUNTLETS_DESIGN, 1);
+						giveItems(player, SEALED_MAJESTIC_CIRCLET_DESIGN, 1);
+					}
+					else if (chance < 70)
+					{
+						giveItems(player, RECIPE_SEALED_MAJESTIC_BOOTS_60, 1);
+					}
+					else if (chance < 82)
+					{
+						giveItems(player, RECIPE_SEALED_MAJESTIC_GAUNTLETS_60, 1);
+					}
+					else if (chance < 92)
+					{
+						giveItems(player, RECIPE_SEALED_MAJESTIC_CIRCLET_60, 1);
+					}
+					else if (chance < 100)
+					{
+						giveItems(player, RECIPE_SEALED_MAJESTIC_BOOTS_60, 1);
+						giveItems(player, RECIPE_SEALED_MAJESTIC_GAUNTLETS_60, 1);
+						giveItems(player, RECIPE_SEALED_MAJESTIC_CIRCLET_60, 1);
+					}
+					htmltext = event;
+				}
+				else
+				{
+					htmltext = "30844-07e.html";
+				}
+				break;
+			}
+			case "30844-05b.html":
+			{
+				qs.setCond(2);
+				htmltext = event;
+				break;
+			}
+			case "30844-03.htm":
+			case "30844-05.html":
+			case "30844-05a.html":
+			case "30844-08.html":
+			case "30844-10.html":
+			case "30844-11.html":
+			{
+				htmltext = event;
+				break;
+			}
+		}
+		return htmltext;
+	}
+	
+	@Override
+	public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
+	{
+		final QuestItemHolder item = MONSTER_REWARDS.get(npc.getId());
+		if (npc.getId() == HALLATES_INSPECTOR)
+		{
+			if (getRandom(1000) < item.getChance())
+			{
+				final QuestState qs = getRandomPartyMemberState(killer, -1, 3, npc);
+				if (qs != null)
+				{
+					giveItems(qs.getPlayer(), item.getId(), item.getCount());
+					playSound(qs.getPlayer(), QuestSound.ITEMSOUND_QUEST_ITEMGET);
+				}
+			}
+			return super.onKill(npc, killer, isSummon);
+		}
+		
+		if (Util.checkIfInRange(1500, npc, killer, true) && (getRandom(1000) < item.getChance()))
+		{
+			L2PcInstance rewardedPlayer = null;
+			if (!killer.isInParty())
+			{
+				final QuestState qs = getQuestState(killer, false);
+				if ((qs != null) && qs.isStarted())
+				{
+					rewardedPlayer = killer;
+				}
+			}
+			else
+			{
+				int chance = 0;
+				for (L2PcInstance partyMember : killer.getParty().getMembers())
+				{
+					final QuestState partyMemberQuestState = getQuestState(partyMember, false);
+					if ((partyMemberQuestState != null) && partyMemberQuestState.isStarted())
+					{
+						final int chance2 = getRandom(1000);
+						if (chance < chance2)
+						{
+							chance = chance2;
+							rewardedPlayer = partyMember;
+						}
+					}
+				}
+			}
+			
+			if ((rewardedPlayer != null) && Util.checkIfInRange(1500, npc, rewardedPlayer, true))
+			{
+				giveItems(rewardedPlayer, item.getId(), item.getCount());
+				playSound(rewardedPlayer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
+			}
+		}
+		
+		return super.onKill(npc, killer, isSummon);
+	}
+	
+	@Override
+	public String onTalk(L2Npc npc, L2PcInstance player)
+	{
+		final QuestState qs = getQuestState(player, true);
+		final int chance = getRandom(100);
+		String htmltext = getNoQuestMsg(player);
+		if (qs.isCreated())
+		{
+			if (npc.getId() == WAREHOUSE_KEEPER_WALDERAL)
+			{
+				if (player.getLevel() < MIN_LEVEL)
+				{
+					htmltext = "30844-01.htm";
+				}
+				else
+				{
+					htmltext = "30844-02.htm";
+				}
+			}
+		}
+		else if (qs.isStarted())
+		{
+			switch (npc.getId())
+			{
+				case WAREHOUSE_KEEPER_WALDERAL:
+				{
+					htmltext = "30844-05.html";
+					break;
+				}
+				case TRADER_HOLLY:
+				{
+					if (hasQuestItems(player, IMPERIAL_GENEALOGY_1, IMPERIAL_GENEALOGY_2, IMPERIAL_GENEALOGY_3, IMPERIAL_GENEALOGY_4, IMPERIAL_GENEALOGY_5))
+					{
+						takeItems(player, IMPERIAL_GENEALOGY_1, 1);
+						takeItems(player, IMPERIAL_GENEALOGY_2, 1);
+						takeItems(player, IMPERIAL_GENEALOGY_3, 1);
+						takeItems(player, IMPERIAL_GENEALOGY_4, 1);
+						takeItems(player, IMPERIAL_GENEALOGY_5, 1);
+						
+						if (chance < 30)
+						{
+							giveItems(player, SEALED_DARK_CRYSTAL_BOOTS_LINING, 1);
+						}
+						else if (chance < 60)
+						{
+							giveItems(player, SEALED_DARK_CRYSTAL_GLOVES_DESIGN, 1);
+						}
+						else if (chance < 80)
+						{
+							giveItems(player, SEALED_DARK_CRYSTAL_HELMET_DESIGN, 1);
+						}
+						else if (chance < 90)
+						{
+							giveItems(player, SEALED_DARK_CRYSTAL_BOOTS_LINING, 1);
+							giveItems(player, SEALED_DARK_CRYSTAL_GLOVES_DESIGN, 1);
+							giveItems(player, SEALED_DARK_CRYSTAL_HELMET_DESIGN, 1);
+						}
+						else if (chance < 100)
+						{
+							giveAdena(player, 4000, true);
+						}
+						htmltext = "30839-02.html";
+					}
+					else
+					{
+						htmltext = "30839-01.html";
+					}
+					break;
+				}
+				case MAGISTER_DESMOND:
+				{
+					if (hasQuestItems(player, REVELATION_OF_THE_SEALS_CHAPTER_OF_AVARICE, REVELATION_OF_THE_SEALS_CHAPTER_OF_GNOSIS, REVELATION_OF_THE_SEALS_CHAPTER_OF_STRIFE, //
+					REVELATION_OF_THE_SEALS_CHAPTER_OF_VENGEANCE, REVELATION_OF_THE_SEALS_CHAPTER_OF_AWEKENING, REVELATION_OF_THE_SEALS_CHAPTER_OF_CALAMITY, //
+					REVELATION_OF_THE_SEALS_CHAPTER_OF_DESCENT))
+					{
+						takeItems(player, REVELATION_OF_THE_SEALS_CHAPTER_OF_AVARICE, 1);
+						takeItems(player, REVELATION_OF_THE_SEALS_CHAPTER_OF_GNOSIS, 1);
+						takeItems(player, REVELATION_OF_THE_SEALS_CHAPTER_OF_STRIFE, 1);
+						takeItems(player, REVELATION_OF_THE_SEALS_CHAPTER_OF_VENGEANCE, 1);
+						takeItems(player, REVELATION_OF_THE_SEALS_CHAPTER_OF_AWEKENING, 1);
+						takeItems(player, REVELATION_OF_THE_SEALS_CHAPTER_OF_CALAMITY, 1);
+						takeItems(player, REVELATION_OF_THE_SEALS_CHAPTER_OF_DESCENT, 1);
+						
+						if (chance < 31)
+						{
+							giveItems(player, SEALED_MAJESTIC_BOOTS_LINING, 1);
+						}
+						else if (chance < 62)
+						{
+							giveItems(player, SEALED_MAJESTIC_GAUNTLETS_DESIGN, 1);
+						}
+						else if (chance < 75)
+						{
+							giveItems(player, SEALED_MAJESTIC_CIRCLET_DESIGN, 1);
+						}
+						else if (chance < 83)
+						{
+							giveItems(player, SEALED_MAJESTIC_BOOTS_LINING, 1);
+							giveItems(player, SEALED_MAJESTIC_GAUNTLETS_DESIGN, 1);
+							giveItems(player, SEALED_MAJESTIC_CIRCLET_DESIGN, 1);
+						}
+						else if (chance < 100)
+						{
+							giveAdena(player, 4000, true);
+						}
+						htmltext = "30855-02.html";
+					}
+					else
+					{
+						htmltext = "30855-01.html";
+					}
+					break;
+				}
+				case ANTIQUE_DEALER_PATRIN:
+				{
+					if (hasQuestItems(player, ANCIENT_EPIC_CHAPTER_1, ANCIENT_EPIC_CHAPTER_2, ANCIENT_EPIC_CHAPTER_3, ANCIENT_EPIC_CHAPTER_4, ANCIENT_EPIC_CHAPTER_5))
+					{
+						takeItems(player, ANCIENT_EPIC_CHAPTER_1, 1);
+						takeItems(player, ANCIENT_EPIC_CHAPTER_2, 1);
+						takeItems(player, ANCIENT_EPIC_CHAPTER_3, 1);
+						takeItems(player, ANCIENT_EPIC_CHAPTER_4, 1);
+						takeItems(player, ANCIENT_EPIC_CHAPTER_5, 1);
+						
+						if (chance < 30)
+						{
+							giveItems(player, SEALED_TALLUM_BOOTS_LINING, 1);
+						}
+						else if (chance < 60)
+						{
+							giveItems(player, SEALED_TALLUM_GLOVES_DESIGN, 1);
+						}
+						else if (chance < 80)
+						{
+							giveItems(player, SEALED_TALLUM_HELM_DESIGN, 1);
+						}
+						else if (chance < 90)
+						{
+							giveItems(player, SEALED_TALLUM_BOOTS_LINING, 1);
+							giveItems(player, SEALED_TALLUM_GLOVES_DESIGN, 1);
+							giveItems(player, SEALED_TALLUM_HELM_DESIGN, 1);
+						}
+						else if (chance < 100)
+						{
+							giveAdena(player, 4000, true);
+						}
+						htmltext = "30929-02.html";
+					}
+					else
+					{
+						htmltext = "30929-02.html";
+					}
+					break;
+				}
+				case CLAUDIA_ATHEBALDT:
+				{
+					if (hasQuestItems(player, REVELATION_OF_THE_SEALS_CHAPTER_OF_AVARICE, REVELATION_OF_THE_SEALS_CHAPTER_OF_GNOSIS, REVELATION_OF_THE_SEALS_CHAPTER_OF_STRIFE, //
+					REVELATION_OF_THE_SEALS_CHAPTER_OF_VENGEANCE, REVELATION_OF_THE_SEALS_CHAPTER_OF_AWEKENING, REVELATION_OF_THE_SEALS_CHAPTER_OF_CALAMITY, //
+					REVELATION_OF_THE_SEALS_CHAPTER_OF_DESCENT))
+					{
+						takeItems(player, REVELATION_OF_THE_SEALS_CHAPTER_OF_AVARICE, 1);
+						takeItems(player, REVELATION_OF_THE_SEALS_CHAPTER_OF_GNOSIS, 1);
+						takeItems(player, REVELATION_OF_THE_SEALS_CHAPTER_OF_STRIFE, 1);
+						takeItems(player, REVELATION_OF_THE_SEALS_CHAPTER_OF_VENGEANCE, 1);
+						takeItems(player, REVELATION_OF_THE_SEALS_CHAPTER_OF_AWEKENING, 1);
+						takeItems(player, REVELATION_OF_THE_SEALS_CHAPTER_OF_CALAMITY, 1);
+						takeItems(player, REVELATION_OF_THE_SEALS_CHAPTER_OF_DESCENT, 1);
+						
+						if (chance < 31)
+						{
+							giveItems(player, SEALED_BOOTS_OF_NIGHTMARE_LINING, 1);
+						}
+						else if (chance < 62)
+						{
+							giveItems(player, SEALED_GAUNTLETS_OF_NIGHTMARE_DESIGN, 1);
+						}
+						else if (chance < 75)
+						{
+							giveItems(player, SEALED_HELM_OF_NIGHTMARE_DESIGN, 1);
+						}
+						else if (chance < 83)
+						{
+							giveItems(player, SEALED_BOOTS_OF_NIGHTMARE_LINING, 1);
+							giveItems(player, SEALED_GAUNTLETS_OF_NIGHTMARE_DESIGN, 1);
+							giveItems(player, SEALED_HELM_OF_NIGHTMARE_DESIGN, 1);
+						}
+						else if (chance < 100)
+						{
+							giveAdena(player, 4000, true);
+						}
+						htmltext = "31001-02.html";
+					}
+					else
+					{
+						htmltext = "31001-01.html";
+					}
+					break;
+				}
+			}
+		}
+		return htmltext;
+	}
+}

+ 2 - 0
dist/game/data/scripts/quests/QuestMasterHandler.java

@@ -331,6 +331,7 @@ import quests.Q00368_TrespassingIntoTheHolyGround.Q00368_TrespassingIntoTheHolyG
 import quests.Q00369_CollectorOfJewels.Q00369_CollectorOfJewels;
 import quests.Q00370_AnElderSowsSeeds.Q00370_AnElderSowsSeeds;
 import quests.Q00371_ShrieksOfGhosts.Q00371_ShrieksOfGhosts;
+import quests.Q00372_LegacyOfInsolence.Q00372_LegacyOfInsolence;
 import quests.Q00373_SupplierOfReagents.Q00373_SupplierOfReagents;
 import quests.Q00376_ExplorationOfTheGiantsCavePart1.Q00376_ExplorationOfTheGiantsCavePart1;
 import quests.Q00377_ExplorationOfTheGiantsCavePart2.Q00377_ExplorationOfTheGiantsCavePart2;
@@ -810,6 +811,7 @@ public class QuestMasterHandler
 		Q00369_CollectorOfJewels.class,
 		Q00370_AnElderSowsSeeds.class,
 		Q00371_ShrieksOfGhosts.class,
+		Q00372_LegacyOfInsolence.class,
 		Q00373_SupplierOfReagents.class,
 		Q00376_ExplorationOfTheGiantsCavePart1.class,
 		Q00377_ExplorationOfTheGiantsCavePart2.class,