Browse Source

Retail-like quest Certified Soul Breaker (65).
Reviewed by: @Zoey76
Thanks to: @Zoey76

ivantotov 10 years ago
parent
commit
b64cafa0a6
90 changed files with 906 additions and 387 deletions
  1. 0 1
      L2J_DataPack/dist/game/data/scripts.cfg
  2. 0 3
      L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/30076-02.htm
  3. 0 3
      L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/30124-02.htm
  4. 0 4
      L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/30879-01.htm
  5. 0 4
      L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/32138-00.htm
  6. 0 4
      L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/32138-08.htm
  7. 0 4
      L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/32138-09.htm
  8. 0 3
      L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/32138-11.htm
  9. 0 3
      L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/32138-12.htm
  10. 0 4
      L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/32139-01.htm
  11. 0 4
      L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/32242-01.htm
  12. 0 294
      L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/__init__.py
  13. 1 1
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/30071-01.html
  14. 0 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/30071-02.html
  15. 0 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/30071-03.html
  16. 3 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/30073-01.html
  17. 3 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/30073-01a.html
  18. 0 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/30073-02.html
  19. 0 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/30073-03.html
  20. 0 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/30074-01.html
  21. 3 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/30074-01a.html
  22. 3 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/30074-02.html
  23. 0 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/30074-03.html
  24. 0 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/30075-01.html
  25. 3 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/30075-01a.html
  26. 4 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/30075-02.html
  27. 0 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/30075-03.html
  28. 3 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/30076-01.html
  29. 3 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/30076-01a.html
  30. 3 2
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/30076-02.html
  31. 3 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/30076-03.html
  32. 4 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/30123-01.html
  33. 0 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/30123-02.html
  34. 0 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/30123-03.html
  35. 0 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/30124-01.html
  36. 4 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/30124-02.html
  37. 3 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/30124-03.html
  38. 5 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/30879-01.html
  39. 1 1
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/30879-02.html
  40. 0 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/30879-03.html
  41. 0 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/30879-04.html
  42. 4 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32138-01.html
  43. 1 1
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32138-02.html
  44. 1 1
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32138-03.html
  45. 0 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32138-04.html
  46. 0 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32138-05.html
  47. 1 1
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32138-06.html
  48. 1 1
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32138-07.html
  49. 1 1
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32138-08.html
  50. 4 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32138-09.html
  51. 4 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32138-10.html
  52. 1 1
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32138-11.html
  53. 3 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32138-12.html
  54. 3 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32138-13.html
  55. 4 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32139-01.html
  56. 1 1
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32139-02.html
  57. 2 2
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32139-03.html
  58. 0 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32139-04.html
  59. 2 2
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32139-05.html
  60. 3 3
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32139-06.html
  61. 4 4
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32139-07.html
  62. 2 2
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32139-08.html
  63. 2 2
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32139-09.html
  64. 4 4
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32199-01.html
  65. 5 5
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32199-02.html
  66. 2 2
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32199-03.html
  67. 2 2
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32199-04.html
  68. 4 4
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32213-01.htm
  69. 3 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32213-02.html
  70. 3 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32213-03.html
  71. 5 5
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32213-04.htm
  72. 2 2
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32213-05.htm
  73. 3 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32213-06.htm
  74. 2 2
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32213-07.html
  75. 2 2
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32213-08.html
  76. 3 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32213-09.html
  77. 0 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32213-10.html
  78. 1 1
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32214-01.html
  79. 0 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32214-02.html
  80. 1 1
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32214-03.html
  81. 0 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32243-01.html
  82. 3 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32243-02.html
  83. 3 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32243-03.html
  84. 3 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32243-04.html
  85. 3 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32243-05.html
  86. 0 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32243-06.html
  87. 0 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32243-07.html
  88. 756 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/Q00065_CertifiedSoulBreaker.java
  89. 2 0
      L2J_DataPack/dist/game/data/scripts/quests/QuestMasterHandler.java
  90. 1 0
      L2J_DataPack/dist/sql/game/updates/20150106update.sql

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

@@ -211,7 +211,6 @@ quests/22_TragedyInVonHellmannForest/__init__.py
 quests/23_LidiasHeart/__init__.py
 quests/25_HidingBehindTheTruth/__init__.py
 quests/60_GoodWorkReward/__init__.py
-quests/65_CertifiedSoulBreaker/__init__.py
 quests/118_ToLeadAndBeLed/__init__.py
 quests/123_TheLeaderAndTheFollower/__init__.py
 quests/178_IconicTrinity/__init__.py

+ 0 - 3
L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/30076-02.htm

@@ -1,3 +0,0 @@
-<html><body>Lian:<br>
-Didn't I already tell you? Someone who fits that description headed toward Giran a little while ago. If you take this road, you'll arrive at the Giran North Gate. Ask Zerome or Vesa when you get there.
-</body></html>

+ 0 - 3
L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/30124-02.htm

@@ -1,3 +0,0 @@
-<html><body>Zerome:<br>
-Hey, we meet again. Did you find that person you were looking for? Well, good luck...
-</body></html>

+ 0 - 4
L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/30879-01.htm

@@ -1,4 +0,0 @@
-<html><body>Wharf Manager Felton:<br>
-Why did you come to me? The cargo has been delayed by a storm. If that's what you're here for, you'll have to wait a little longer. We're not delaying things on purpose, I promise you. <br>You're looking for someone? There are many people moving about this wharf... I'm afraid you'll have to be a little more specific... <br>
-<a action="bypass -h Quest 65_CertifiedSoulBreaker 30879-02.htm">Explain.</a>
-</body></html>

+ 0 - 4
L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/32138-00.htm

@@ -1,4 +0,0 @@
-<html><body>Hierarch Kekropus:<br>
-%playername% Ah, it's you. What brings you here to me?<br>
-<a action="bypass -h Quest 65_CertifiedSoulBreaker 32138-01.htm">I want to walk the path of a Soul Breaker.</a>
-</body></html>

+ 0 - 4
L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/32138-08.htm

@@ -1,4 +0,0 @@
-<html><body>Hierarch Kekropus:<br>
-I se that you have returned with the Worm's hearts. Now we may begin the ceremony. Take a seat here and compose your mind for the trial ahead... <br>
-<a action="bypass -h Quest 65_CertifiedSoulBreaker 32138-09.htm">Take a seat and compose yourself. </a>
-</body></html>

+ 0 - 4
L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/32138-09.htm

@@ -1,4 +0,0 @@
-<html><body>Hierarch Kekropus:<br>
-This will release the magical powers nestled within the Worm's heart. Concentrate and tell me what you feel.<br>
-<a action="bypass -h Quest 65_CertifiedSoulBreaker 32138-10.htm">You feel something sticky.</a>
-</body></html>

+ 0 - 3
L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/32138-11.htm

@@ -1,3 +0,0 @@
-<html><body>Hierarch Kekropus:<br>
-Excellent! You have done well. With your natural skill, I believe you can successfully walk the path of a Soul Breaker. If you apply yourself, your future as a warrior is bright. Take this certificate of acknowledgement to Vitus.
-</body></html>

+ 0 - 3
L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/32138-12.htm

@@ -1,3 +0,0 @@
-<html><body>Hierarch Kekropus:<br>
-Why are you here? You must go to Betoos, who is in the Town of Giran.
-</body></html>

+ 0 - 4
L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/32139-01.htm

@@ -1,4 +0,0 @@
-<html><body>Vice Hierarch Casca:<br>
-Welcome. What brings you here?<br>
-<a action="bypass -h Quest 65_CertifiedSoulBreaker 32139-02.htm">"I have come to test my abilities." </a>
-</body></html>

+ 0 - 4
L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/32242-01.htm

@@ -1,4 +0,0 @@
-<html><body>Katenar:<br>
-Well done! The truth is, my letter was mixed in with the other items in the box.<br>
-When I saw someone pursuing these goods, I decided to follow, but I was a little late getting here. Thankfully, you drove them away and I was able to protect the secret. Thank you for your assistance -- you have done more than you realize. Here, please take this to the Elder.
-</body></html>

+ 0 - 294
L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/__init__.py

@@ -1,294 +0,0 @@
-# Made by Kerberos v1.0 on 2008/02/03
-# this script is part of the Official L2J Datapack Project.
-# Visit http://www.l2jdp.com/forum/ for more details.
-import sys
-from com.l2jserver.gameserver.ai import CtrlIntention
-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
-from com.l2jserver.gameserver.network.serverpackets import NpcSay
-from com.l2jserver.gameserver.network.serverpackets import SocialAction
-from com.l2jserver.gameserver.network.serverpackets import ActionFailed
-
-qn = "65_CertifiedSoulBreaker"
-
-#NPCs
-Lucas    = 30071
-Jacob    = 30073
-Harlan   = 30074
-Xaber    = 30075
-Liam     = 30076
-Vesa     = 30123
-Zerome   = 30124
-Felton   = 30879
-Kekropus = 32138
-Casca    = 32139
-Holst    = 32199
-Vitus    = 32213
-Meldina  = 32214
-Katenar  = 32242
-CargoBox = 32243
-
-#Mobs
-Wyrm     = 20176
-Angel    = 27332
-
-#Items
-Diamond  = 7562
-Document = 9803
-Heart    = 9804
-Recommend= 9805
-certificate=9806
-
-class Quest (JQuest) :
-    def __init__(self,id,name,descr):
-        JQuest.__init__(self,id,name,descr)
-        self.isAngelSpawned = 0
-        self.isKatenarSpawned = 0
-        self.questItemIds = [Document,Heart,Recommend]
-
-    def onEvent (self,event,st) :
-        htmltext = event
-        player = st.getPlayer()
-        if event == "32213-03.htm" :
-            st.playSound("ItemSound.quest_accept")
-            st.set("cond","1")
-            st.setState(State.STARTED)
-            #st.giveItems(Diamond,47)
-        elif event == "32138-03.htm" :
-            st.set("cond","2")
-            st.playSound("ItemSound.quest_middle")
-        elif event == "32139-02.htm" :
-            st.set("cond","3")
-            st.playSound("ItemSound.quest_middle")
-        elif event == "32139-04.htm" :
-            st.set("cond","4")
-            st.playSound("ItemSound.quest_middle")
-        elif event == "32199-02.htm" :
-            st.set("cond","5")
-            st.playSound("ItemSound.quest_middle")
-        elif event == "30071-02.htm" :
-            st.set("cond","8")
-            st.playSound("ItemSound.quest_middle")
-        elif event == "32214-02.htm" :
-            st.set("cond","11")
-            st.playSound("ItemSound.quest_middle")
-        elif event == "30879-03.htm" :
-            st.set("cond","12")
-            st.set("angel","0")
-            st.playSound("ItemSound.quest_middle")
-        elif event == "angel_cleanup" :
-            self.isAngelSpawned = 0
-            return
-        elif event == "katenar_cleanup" :
-            self.isKatenarSpawned = 0
-            return
-        elif event == "32139-08.htm" :
-            st.set("cond","14")
-            st.takeItems(Document,1)
-            st.playSound("ItemSound.quest_middle")
-        elif event == "32138-06.htm" :
-            st.set("cond","15")
-            st.playSound("ItemSound.quest_middle")
-        elif event == "32138-11.htm" :
-            st.set("cond","17")
-            st.takeItems(Heart,-1)
-            st.giveItems(Recommend,1)
-            st.playSound("ItemSound.quest_middle")
-        return htmltext
-
-    def onFirstTalk (self,npc,player):
-        st = self.getQuestState(player, False)
-        if st :
-            if npc.getId() == Katenar and st.getInt("cond") == 12:
-                st.unset("angel")
-                st.playSound("ItemSound.quest_itemget")
-                st.set("cond","13")
-                self.isAngelSpawned = 0
-                self.isKatenarSpawned = 0
-                st.giveItems(Document,1)
-                return "32242-01.htm"
-        player.sendPacket(ActionFailed.STATIC_PACKET)
-        return None
-
-    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()
-        cond = st.getInt("cond")
-        if id == State.COMPLETED :
-            htmltext = Quest.getAlreadyCompletedMsg(player)
-        elif npcId == Vitus :
-            if player.getClassId().getId() not in [125,126] or player.getLevel() < 39:
-                htmltext = "<html><body>Only Troopers or Warders are allowed to take this quest! Go away before I get angry!<br>You must be level 39 or higher to undertake this quest.</body></html>"
-                st.exitQuest(1)
-            elif id == State.CREATED :
-                htmltext = "32213-01.htm"
-            elif cond >= 1 and cond <= 3 :
-                htmltext = "32213-04.htm"
-            elif cond >= 4 and cond <17 :
-                htmltext = "32213-05.htm"
-            elif cond == 17 and st.getQuestItemsCount(Recommend) == 1 :
-                htmltext = "32213-06.htm"
-                player.sendPacket(SocialAction(player.getObjectId(),3))
-                st.takeItems(Recommend,-1)
-                st.exitQuest(False)
-                st.playSound("ItemSound.quest_finish")
-                st.addExpAndSp(393750,27020)
-                st.giveItems(57,71194)
-                st.giveItems(certificate,1)
-        elif npcId == Kekropus :
-            if cond == 1 :
-                htmltext = "32138-00.htm"
-            elif cond == 2 :
-                htmltext = "32138-04.htm"
-            elif cond == 14 :
-                htmltext = "32138-05.htm"
-            elif cond == 15 :
-                htmltext = "32138-07.htm"
-            elif cond == 16 :
-                htmltext = "32138-08.htm"
-            elif cond == 17 :
-                htmltext = "32138-12.htm"
-        elif npcId == Casca :
-            if cond == 2 :
-                htmltext = "32139-01.htm"
-            elif cond == 3 :
-                htmltext = "32139-03.htm"
-            elif cond == 4 :
-                htmltext = "32139-05.htm"
-            elif cond == 13 :
-                htmltext = "32139-06.htm"
-            elif cond == 14 :
-                htmltext = "32139-09.htm"
-        elif npcId == Holst :
-            if cond == 4 :
-                htmltext = "32199-01.htm"
-            elif cond == 5 :
-                htmltext = "32199-03.htm"
-                st.set("cond","6")
-                st.playSound("ItemSound.quest_middle")
-            elif cond == 6 :
-                htmltext = "32199-04.htm"
-        elif npcId == Harlan :
-            if cond == 6 :
-                htmltext = "30074-01.htm"
-            elif cond == 7 :
-                htmltext = "30074-02.htm"
-        elif npcId == Jacob :
-            if cond == 6 :
-                htmltext = "30073-01.htm"
-                st.set("cond","7")
-                st.playSound("ItemSound.quest_middle")
-            elif cond == 7 :
-                htmltext = "30073-02.htm"
-        elif npcId == Lucas :
-            if cond == 7 :
-                htmltext = "30071-01.htm"
-            elif cond == 8 :
-                htmltext = "30071-03.htm"
-        elif npcId == Xaber :
-            if cond == 8 :
-                htmltext = "30075-01.htm"
-            elif cond == 9 :
-                htmltext = "30075-02.htm"
-        elif npcId == Liam :
-            if cond == 8 :
-                htmltext = "30076-01.htm"
-                st.set("cond","9")
-                st.playSound("ItemSound.quest_middle")
-            elif cond == 9 :
-                htmltext = "30076-02.htm"
-        elif npcId == Zerome :
-            if cond == 9 :
-                htmltext = "30124-01.htm"
-            elif cond == 10 :
-                htmltext = "30124-02.htm"
-        elif npcId == Vesa :
-            if cond == 9 :
-                htmltext = "30123-01.htm"
-                st.set("cond","10")
-                st.playSound("ItemSound.quest_middle")
-            elif cond == 10 :
-                htmltext = "30123-02.htm"
-        elif npcId == Meldina :
-            if cond == 10 :
-                htmltext = "32214-01.htm"
-            elif cond == 11 :
-                htmltext = "32214-03.htm"
-        elif npcId == Felton :
-            if cond == 11 :
-                htmltext = "30879-01.htm"
-            elif cond == 12 :
-                htmltext = "30879-04.htm"
-        elif npcId == CargoBox :
-            if cond == 12 :
-               htmltext = "32243-01.htm"
-               if st.getInt("angel") == 0 and self.isAngelSpawned == 0 :
-                  angel = st.addSpawn(27332,36198,191949,-3728,180000)
-                  angel.broadcastPacket(NpcSay(angel.getObjectId(),0,angel.getId(),player.getName()+"! Step back from the confounded box! I will take it myself!"))
-                  angel.setRunning()
-                  angel.addDamageHate(player,0,999)
-                  angel.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, player)
-                  self.isAngelSpawned = 1
-                  self.startQuestTimer("angel_cleanup",180000,angel,player)
-               elif self.isKatenarSpawned == 0 and st.getInt("angel") == 1:
-                  katenar = st.addSpawn(32242,36110,191921,-3712,60000)
-                  katenar.broadcastPacket(NpcSay(katenar.getObjectId(),0,katenar.getId(),"I am late!"))
-                  self.isKatenarSpawned == 1
-                  self.startQuestTimer("katenar_cleanup",60000,katenar,player)
-                  htmltext = "32243-02.htm"
-            elif cond == 13 :
-                htmltext = "32243-03.htm"
-        return htmltext
-
-    def onKill(self,npc,player,isPet):
-        st = self.getQuestState(player, False)
-        if not st : return
-        if st.getState() != State.STARTED : return
-        npcId = npc.getId()
-        cond = st.getInt("cond")
-        if npcId == Angel and cond == 12:
-            st.set("angel","1")
-            self.isAngelSpawned = 0
-            npc.broadcastPacket(NpcSay(npc.getObjectId(),0,npc.getId(),"Grr. I've been hit..."))
-            if self.isKatenarSpawned == 0 :
-                  katenar = st.addSpawn(32242,36110,191921,-3712,60000)
-                  katenar.broadcastPacket(NpcSay(katenar.getObjectId(),0,katenar.getId(),"I am late!"))
-                  self.isKatenarSpawned == 1
-                  self.startQuestTimer("katenar_cleanup",60000,katenar,player)
-        if npcId == Wyrm and st.getQuestItemsCount(Heart) < 10 and cond == 15 and self.getRandom(100) <= 25:
-            if st.getQuestItemsCount(Heart) == 9 :
-                  st.giveItems(Heart,1)
-                  st.set("cond","16")
-                  st.playSound("ItemSound.quest_middle")
-            else :
-                  st.giveItems(Heart,1)
-                  st.playSound("ItemSound.quest_itemget")
-        return
-
-QUEST       = Quest(65,qn,"Certified Soul Breaker")
-
-QUEST.addStartNpc(Vitus)
-
-QUEST.addTalkId(Vitus)
-QUEST.addTalkId(Kekropus)
-QUEST.addTalkId(Casca)
-QUEST.addTalkId(Holst)
-QUEST.addTalkId(Harlan)
-QUEST.addTalkId(Jacob)
-QUEST.addTalkId(Lucas)
-QUEST.addTalkId(Xaber)
-QUEST.addTalkId(Liam)
-QUEST.addTalkId(Vesa)
-QUEST.addTalkId(Zerome)
-QUEST.addTalkId(Meldina)
-QUEST.addTalkId(Felton)
-QUEST.addTalkId(CargoBox)
-
-QUEST.addFirstTalkId(Katenar)
-
-QUEST.addKillId(Angel)
-QUEST.addKillId(Wyrm)

+ 1 - 1
L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/30071-01.htm → L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/30071-01.html

@@ -1,4 +1,4 @@
 <html><body>Captain Lucas:<br>
 What brings you to me? A suspicious person, you say? Well, we see a very large number of suspicious-looking people here, so you need to be a little more specific.<br>
-<a action="bypass -h Quest 65_CertifiedSoulBreaker 30071-02.htm">Describe his appearance.</a>
+<a action="bypass -h Quest Q00065_CertifiedSoulBreaker 30071-02.html">Describe his appearance.</a>
 </body></html>

+ 0 - 0
L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/30071-02.htm → L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/30071-02.html


+ 0 - 0
L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/30071-03.htm → L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/30071-03.html


+ 3 - 0
L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/30073-01.html

@@ -0,0 +1,3 @@
+<html><body>Jacob:<br>
+Did I see anyone suspicious? Not that I remember. Go ask Harlan over there.
+</body></html>

+ 3 - 0
L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/30073-01a.html

@@ -0,0 +1,3 @@
+<html><body>Jacob:<br>
+I haven't seen anyone suspicious. Go ask Harlan over there if he has.
+</body></html>

+ 0 - 0
L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/30073-01.htm → L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/30073-02.html


+ 0 - 0
L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/30073-02.htm → L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/30073-03.html


+ 0 - 0
L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/30074-01.htm → L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/30074-01.html


+ 3 - 0
L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/30074-01a.html

@@ -0,0 +1,3 @@
+<html><body>Harlan:<br>
+Well, I didn't see anyone suspicious. Why don't you ask Jacob over there?
+</body></html>

+ 3 - 0
L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/30074-02.html

@@ -0,0 +1,3 @@
+<html><body>Harlan:<br>
+Jacob said he didn't see anyone either, eh? Well, if there is anyone like the person you're describing, I'm sure our chief of security, Lucas, would know as soon as anyone. Why don't you go talk to him? You can find him at the south side castle gate.
+</body></html>

+ 0 - 0
L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/30074-02.htm → L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/30074-03.html


+ 0 - 0
L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/30075-01.htm → L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/30075-01.html


+ 3 - 0
L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/30075-01a.html

@@ -0,0 +1,3 @@
+<html><body>Xaber:<br>
+I haven't seen anyone like that. Ask Listto, who's there next to you. Hey Listto! There's a question here for you.
+</body></html>

+ 4 - 0
L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/30075-02.html

@@ -0,0 +1,4 @@
+<html><body>Xaber:<br>
+What do you want?<br>
+Hmm... Someone who fits that description went by here a little while ago. Looked like he was rushing to get to Giran. He didn't cause any trouble, so we let him pass. If you take this road, you'll arrive at the Giran North Gate. Ask Zerome when you get there.
+</body></html>

+ 0 - 0
L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/30075-02.htm → L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/30075-03.html


+ 3 - 0
L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/30076-01.html

@@ -0,0 +1,3 @@
+<html><body>Listto:<br>
+Hmm... I haven't seen anyone like that. You can try asking Sabuh over there. Hey Sabuh! There's someone here with a question for ya.
+</body></html>

+ 3 - 0
L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/30076-01a.html

@@ -0,0 +1,3 @@
+<html><body>Listto:<br>
+I haven't seen anyone like that. You can try asking Sabuh over there. Hey Sabuh! There's someone here with a question for ya.
+</body></html>

+ 3 - 2
L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/30076-01.htm → L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/30076-02.html

@@ -1,3 +1,4 @@
-<html><body>Lian:<br>What do you want?<br>
-Hmm, someone who fits that description went by here a little while ago. Looked like he was rushing to get to Giran. He didn't cause any trouble, so we let him pass. If you take this road, you'll arrive at the Giran North Gate. Ask Jerome about him when you get there.
+<html><body>Listto:<br>
+What do you want?<br>
+Hmm, someone who fits that description went by here a little while ago. Looked like he was rushing to get to Giran. He didn't cause any trouble, so we let him pass. If you take this road, you'll arrive at the Giran North Gate. Ask Zerome about him when you get there.
 </body></html>

+ 3 - 0
L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/30076-03.html

@@ -0,0 +1,3 @@
+<html><body>Listto:<br>
+Didn't I already tell ya? Someone who fits that description headed toward Giran a little while ago. If you take this road, you'll arrive at the Giran North Gate. There you can ask Zerome or Besa about him.
+</body></html>

+ 4 - 0
L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/30123-01.html

@@ -0,0 +1,4 @@
+<html><body>Vesa:<br>
+What is it? Someone suspicious? Well, I haven't seen anyone like that. Hey! Zerome, I have something to ask you...<br>
+Go ahead and ask Zerome.
+</body></html>

+ 0 - 0
L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/30123-01.htm → L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/30123-02.html


+ 0 - 0
L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/30123-02.htm → L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/30123-03.html


+ 0 - 0
L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/30124-01.htm → L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/30124-01.html


+ 4 - 0
L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/30124-02.html

@@ -0,0 +1,4 @@
+<html><body>Zerome:<br>
+What is it? A suspicious person? Well, I haven't see any.<br>
+Oh, wait! The person that you're describing went into town not long ago. I don't know what's going on, but it hasn't been long -- you might still be able to find him in the town.
+</body></html>

+ 3 - 0
L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/30124-03.html

@@ -0,0 +1,3 @@
+<html><body>Zerome:<br>
+Hey, we meet again. Did you find the person you were looking for? Well, good luck!
+</body></html>

+ 5 - 0
L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/30879-01.html

@@ -0,0 +1,5 @@
+<html><body>Wharf Manager Felton:<br>
+Why did you come to me? The cargo has been delayed by a storm. If that's what you're here for, you'll have to wait a little longer. We're not delaying things on purpose, I promise you.<br>
+You're looking for someone? There are many people moving about this wharf... I'm afraid you'll have to be a little more specific...<br>
+<a action="bypass -h Quest Q00065_CertifiedSoulBreaker 30879-02.html">Explain.</a>
+</body></html>

+ 1 - 1
L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/30879-02.htm → L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/30879-02.html

@@ -1,4 +1,4 @@
 <html><body>Wharf Manager Felton:<br>
 Hmm.. Now that you mention it, I think I did see that person before. Yes! He asked me about the direction of the cargo ship. Then he disappeared after I told him that we were salvaging the goods from the cargo ship that had been shipwrecked near the entrance to Devil's Isle.<br>
-<a action="bypass -h Quest 65_CertifiedSoulBreaker 30879-03.htm">Ask about the location.</a>
+<a action="bypass -h Quest Q00065_CertifiedSoulBreaker 30879-03.html">Ask about the location.</a>
 </body></html>

+ 0 - 0
L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/30879-03.htm → L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/30879-03.html


+ 0 - 0
L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/30879-04.htm → L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/30879-04.html


+ 4 - 0
L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32138-01.html

@@ -0,0 +1,4 @@
+<html><body>Hierarch Kekropus:<br>
+%name1% Ah, it's you. What brings you here to me?<br>
+<a action="bypass -h Quest Q00065_CertifiedSoulBreaker 32138-02.html">I want to walk the path of a Soul Breaker.</a>
+</body></html>

+ 1 - 1
L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/32138-01.htm → L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32138-02.html

@@ -2,5 +2,5 @@
 Ah, the qualifications to walk the path of a Soul Breaker...<br>
 Yes, Vitus must have sent you. If that is indeed your wish, your path will follow that of Katenar, one of the three heroes you have heard about. I must warn you, it will not be easy. This is not something to be embarked on lightly...<br>
 Do you truly wish this?<br>
-<a action="bypass -h Quest 65_CertifiedSoulBreaker 32138-02.htm">"I'm ready."</a>
+<a action="bypass -h Quest Q00065_CertifiedSoulBreaker 32138-03.html">"I'm ready."</a>
 </body></html>

+ 1 - 1
L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/32138-02.htm → L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32138-03.html

@@ -1,4 +1,4 @@
 <html><body>Hierarch Kekropus:<br>
 Then I must confirm that you have the ability to control magical powers. Other key areas will also be tested. Go to Casca and, if you gain his approval, return here and I will test you. Are you ready?<br>
-<a action="bypass -h Quest 65_CertifiedSoulBreaker 32138-03.htm">"Yes, I am ready." </a>
+<a action="bypass -h Quest Q00065_CertifiedSoulBreaker 32138-04.html">"Yes, I am ready."</a>
 </body></html>

+ 0 - 0
L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/32138-03.htm → L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32138-04.html


+ 0 - 0
L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/32138-04.htm → L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32138-05.html


+ 1 - 1
L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/32138-05.htm → L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32138-06.html

@@ -1,4 +1,4 @@
 <html><body>Hierarch Kekropus:<br>
 If Casca has given you his approval, there's no need for more confirmation. But this is not the end of the process. What Casca has acknowledged is but a fraction of your potential. To be a Soul Breaker, proper magical control is vital. I have prepared a ceremony to ascertain whether you have the requisite ability to manage your magical powers.<br>
-<a action="bypass -h Quest 65_CertifiedSoulBreaker 32138-06.htm">"Magical powers?"</a>
+<a action="bypass -h Quest Q00065_CertifiedSoulBreaker 32138-07.html">"Magical powers?"</a>
 </body></html>

+ 1 - 1
L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/32138-06.htm → L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32138-07.html

@@ -1,3 +1,3 @@
 <html><body>Hierarch Kekropus:<br>
-You must have felt that the magic we use is of a fundamentally different form than the magic used by the other races. Our power is channelled not through songs or gestures, but through a distinct source. To tap into it, you must be able to feel and control the magical power within you -- that is the purpose of this ceremony. We will need a specific ingredient to begin, however. Below Dragon Valley, in the Gorgon's Garden, you will find a Worm who has been weaked by the effects of the Land Dragon Antharas. He still harbors certain magic we need. Bring me 10 of the Worm's hearts.
+You must have felt that the magic we use is of a fundamentally different form than the magic used by the other races. Our power is channelled not through songs or gestures, but through a distinct source. To tap into it, you must be able to feel and control the magical power within you -- that is the purpose of this ceremony. We will need a specific ingredient to begin, however. Below Dragon Valley, in the Gorgon's Garden, you will find a Wyrm who has been weaked by the effects of the Land Dragon Antharas. He still harbors certain magic we need. Bring me 10 of the Wyrm's hearts.
 </body></html>

+ 1 - 1
L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/32138-07.htm → L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32138-08.html

@@ -1,3 +1,3 @@
 <html><body>Hierarch Kekropus:<br>
-Go to the south side of Dragon Valley, kill the Worm you find there and bring back 10 of his hearts.
+Go to the south side of Dragon Valley, kill the Wyrm you find there and bring back 10 of his hearts.
 </body></html>

+ 4 - 0
L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32138-09.html

@@ -0,0 +1,4 @@
+<html><body>Hierarch Kekropus:<br>
+I se that you have returned with the Wyrm's hearts. Now we may begin the ceremony. Take a seat here and compose your mind for the trial ahead...<br>
+<a action="bypass -h Quest Q00065_CertifiedSoulBreaker 32138-10.html">Take a seat and compose yourself.</a>
+</body></html>

+ 4 - 0
L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32138-10.html

@@ -0,0 +1,4 @@
+<html><body>Hierarch Kekropus:<br>
+This will release the magical powers nestled within the Wyrm's heart. Concentrate and tell me what you feel.<br>
+<a action="bypass -h Quest Q00065_CertifiedSoulBreaker 32138-11.html">You feel something sticky.</a>
+</body></html>

+ 1 - 1
L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/32138-10.htm → L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32138-11.html

@@ -1,4 +1,4 @@
 <html><body>Hierarch Kekropus:<br>
 You have just felt the gathering of power around you. Focus your mind and try exerting control over that power.<br>
-<a action="bypass -h Quest 65_CertifiedSoulBreaker 32138-11.htm">Try to control the power.</a>
+<a action="bypass -h Quest Q00065_CertifiedSoulBreaker 32138-12.html">Try to control the power.</a>
 </body></html>

+ 3 - 0
L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32138-12.html

@@ -0,0 +1,3 @@
+<html><body>Hierarch Kekropus:<br>
+Excellent! You have done well. With your natural skill, I believe you can successfully walk the path of a Soul Breaker.   If you apply yourself, your future as a warrior is bright. Take this certificate of acknowledgement to Vitus.
+</body></html>

+ 3 - 0
L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32138-13.html

@@ -0,0 +1,3 @@
+<html><body>Hierarch Kekropus:<br>
+Why are you here? You must go to Vitus, who is in the Town of Giran.
+</body></html>

+ 4 - 0
L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32139-01.html

@@ -0,0 +1,4 @@
+<html><body>Vice Hierarch Casca:<br>
+Welcome. What brings you here?<br>
+<a action="bypass -h Quest Q00065_CertifiedSoulBreaker 32139-02.html">"I have come to test my abilities."</a>
+</body></html>

+ 1 - 1
L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/32139-02.htm → L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32139-02.html

@@ -1,4 +1,4 @@
 <html><body>Vice Hierarch Casca:<br>
-Ah, you wish to be tested. Do you wish to follow the path of the Soul Breaker? Hmm... What task should I assign you... <br>
+Ah, you wish to be tested. Do you wish to follow the path of the Soul Breaker? Hmm... What task should I assign you...<br>
 Well, I have nothing for you right now. I must ponder a proper task for you. Why don't you return here later? I will find a challenge appropriate for you.
 </body></html>

+ 2 - 2
L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/32139-03.htm → L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32139-03.html

@@ -1,4 +1,4 @@
 <html><body>Vice Hierarch Casca:<br>
-It is good to see you. I have a task for you which may not seem dangerous, but will requires prudent judgment. If you resolve this task properly, I will vouch for your character. Will you do it? <br>
-<a action="bypass -h Quest 65_CertifiedSoulBreaker 32139-04.htm">"What kind of task is it?" </a>
+It is good to see you. I have a task for you which may not seem dangerous, but will requires prudent judgment. If you resolve this task properly, I will vouch for your character. Will you do it?<br>
+<a action="bypass -h Quest Q00065_CertifiedSoulBreaker 32139-04.html">"What kind of task is it?"</a>
 </body></html>

+ 0 - 0
L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/32139-04.htm → L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32139-04.html


+ 2 - 2
L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/32139-05.htm → L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32139-05.html

@@ -1,3 +1,3 @@
-<html><body>Vice Hierarch Casca:<br>
-An unidentified man has been asking for information about the cargo from Gludin. He has caused no problems -- yet -- but his behavior is very strange. Track him down and find out who he is, then bring the cargo here securely and safely. I have heard that an unidentified man recently left the Town of Gludio in the direction of the Town of Dion. Visit the Guild in the Town of Dion first.
+<html><body>Vice Hierarch Casca:<br>
+An unidentified man has been asking for information about the cargo from Gludin. He has caused no problems -- yet -- but his behavior is very strange. Track him down and find out who he is, then bring the cargo here securely and safely. I have heard that an unidentified man recently left the Town of Gludio in the direction of the Town of Dion. Visit the Guild in the Town of Dion first.
 </body></html>

+ 3 - 3
L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/32139-06.htm → L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32139-06.html

@@ -1,4 +1,4 @@
-<html><body>Vice Hierarch Casca:<br>
-It has been such a long time since we last met. How is your mission progressing?<br>
-<a action="bypass -h Quest 65_CertifiedSoulBreaker 32139-07.htm"> Hand over the documents.</a>
+<html><body>Vice Hierarch Casca:<br>
+It has been such a long time since we last met. How is your mission progressing?<br>
+<a action="bypass -h Quest Q00065_CertifiedSoulBreaker 32139-07.html">Hand over the documents.</a>
 </body></html>

+ 4 - 4
L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/32139-07.htm → L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32139-07.html

@@ -1,5 +1,5 @@
-<html><body>Vice Hierarch Casca:<br>
-What's this? What a find!<br>
-Hmm... Can you tell me where you found this?<br>
-<a action="bypass -h Quest 65_CertifiedSoulBreaker 32139-08.htm">Tell him what happened.</a>
+<html><body>Vice Hierarch Casca:<br>
+What's this? What a find!<br>
+Hmm... Can you tell me where you found this?<br>
+<a action="bypass -h Quest Q00065_CertifiedSoulBreaker 32139-08.html">Tell him what happened.</a>
 </body></html>

+ 2 - 2
L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/32139-08.htm → L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32139-08.html

@@ -1,3 +1,3 @@
-<html><body>Vice Hierarch Casca:<br>
-Ah, I see that you met him. This has become more dangerous than I originally anticipated. He was a bit late, but thankfully, the mission was safely completed. Thank you for a job well done. The last person that you met... I am sure you will meet again someday. You have proven your abilities. Return to Hierarch Kekropus.
+<html><body>Vice Hierarch Casca:<br>
+Ah, I see that you met him. This has become more dangerous than I originally anticipated. He was a bit late, but thankfully, the mission was safely completed. Thank you for a job well done. The last person that you met... I am sure you will meet again someday. You have proven your abilities. Return to Hierarch Kekropus.
 </body></html>

+ 2 - 2
L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/32139-09.htm → L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32139-09.html

@@ -1,3 +1,3 @@
-<html><body>Vice Hierarch Casca:<br>
-Your will and strength are impressive. You are indeed well qualified. Return to the Hierarch.
+<html><body>Vice Hierarch Casca:<br>
+Your will and strength are impressive. You are indeed well qualified. Return to the Hierarch.
 </body></html>

+ 4 - 4
L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/32199-01.htm → L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32199-01.html

@@ -1,5 +1,5 @@
-<html><body>Holst:<br>
-Why have you come looking for me?<br>
-Did you see anyone suspicious pass by? I heard what happened in the Town of Gludio, but I haven't seen anyone suspicious here. Why you are asking?<br>
-<a action="bypass -h Quest 65_CertifiedSoulBreaker 32199-02.htm">Explain briefly.</a>
+<html><body>Holst:<br>
+Why have you come looking for me?<br>
+Did you see anyone suspicious pass by? I heard what happened in the Town of Gludio, but I haven't seen anyone suspicious here. Why you are asking?<br>
+<a action="bypass -h Quest Q00065_CertifiedSoulBreaker 32199-02.html">Explain briefly.</a>
 </body></html>

+ 5 - 5
L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/32199-02.htm → L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32199-02.html

@@ -1,6 +1,6 @@
-<html><body>Holst:<br>
-The Hierarch asked me to...suspicious person...don't know what to do...perhaps the man who who receives the freight information...<br>
-Hmm, if someone came from the outside, it should've been very obvious since only we are able to come in here. Perhaps he is one of them? If so, he must have never been seen here in Dion... Wait, how about that man?<br>
-Him!<br>
-Look over there!
+<html><body>Holst:<br>
+The Hierarch asked me to...suspicious person...don't know what to do...perhaps the man who who receives the freight information...<br>
+Hmm, if someone came from the outside, it should've been very obvious since only we are able to come in here. Perhaps he is one of them? If so, he must have never been seen here in Dion... Wait, how about that man?<br>
+Him!<br>
+Look over there!
 </body></html>

+ 2 - 2
L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/32199-03.htm → L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32199-03.html

@@ -1,3 +1,3 @@
-<html><body>Holst:<br>
-He is faster than I thought. Follow him while I go tell the head of the security. It looks as though he is running toward the northwestern side. If he passed the northwestern gate, the gate guards must have seen him. Go ask them.
+<html><body>Holst:<br>
+He is faster than I thought. Follow him while I go tell the head of the security. It looks as though he is running toward the northwestern side. If he passed the northwestern gate, the gate guards must have seen him. Go ask them.
 </body></html>

+ 2 - 2
L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/32199-04.htm → L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32199-04.html

@@ -1,3 +1,3 @@
-<html><body>Holst:<br>
-Have you talked to the guards at the northwestern gate of Dion? Go ask them.
+<html><body>Holst:<br>
+Have you talked to the guards at the northwestern gate of Dion? Go ask them.
 </body></html>

+ 4 - 4
L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/32213-01.htm → L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32213-01.htm

@@ -1,5 +1,5 @@
-<html><body>Grand Master Vitus:<br>
-What prompted you to come here?<br>
-Do you need help? Just say the word and I will do whatever I can.<br>
-<a action="bypass -h Quest 65_CertifiedSoulBreaker 32213-02.htm">I would like to become a Soul Breaker.</a>
+<html><body>Grand Master Vitus:<br>
+What prompted you to come here?<br>
+Do you need help? Just say the word and I will do whatever I can.<br>
+<a action="bypass -h Quest Q00065_CertifiedSoulBreaker 32213-04.htm">I would like to become a Soul Breaker.</a>
 </body></html>

+ 3 - 0
L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32213-02.html

@@ -0,0 +1,3 @@
+<html><body>Grand Master Vitus:<br>
+Why have you come to see me? Please move on if you  do not need my assistance. I am very busy right now! (This quest is only available for Kamael.)
+</body></html>

+ 3 - 0
L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32213-03.html

@@ -0,0 +1,3 @@
+<html><body>Grand Master Vitus:<br>
+Why have you come here? You seem too weak to walk the same path we do. Perhaps one day when you are stronger... (This quest is for characters level 39 and above who have completed the 1st class transfer.)
+</body></html>

+ 5 - 5
L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/32213-02.htm → L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32213-04.htm

@@ -1,6 +1,6 @@
-<html><body>Grand Master Vitus:<br>
-Soul Breaker...<br>
-That is not an easy path. But I see that your will is strong.<br>
-I respect your intention, and I will consider granting your request if you can prove your ability. Will you consent to be tested?<br>
-<a action="bypass -h Quest 65_CertifiedSoulBreaker 32213-03.htm">Agree to the test.</a>
+<html><body>Grand Master Vitus:<br>
+Soul Breaker...<br>
+That is not an easy path. But I see that your will is strong.<br>
+I respect your intention, and I will consider granting your request if you can prove your ability. Will you consent to be tested?<br>
+<a action="bypass -h Quest Q00065_CertifiedSoulBreaker ACCEPT">Agree to the test.</a>
 </body></html>

+ 2 - 2
L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/32213-03.htm → L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32213-05.htm

@@ -1,3 +1,3 @@
-<html><body>Grand Master Vitus:<br>
-Good! Then go to Hierarch Kekropus and obtain his recognition of your qualifications. You can have no better ally in your quest than his approval. He will give you the details of the test. Take this Dimension Diamond; it will prove useful to you during your test. Use it well.
+<html><body>Grand Master Vitus:<br>
+Good! Then go to Hierarch Kekropus and obtain his recognition of your qualifications. You can have no better ally in your quest than his approval. He will give you the details of the test. Take this Dimension Diamond; it will prove useful to you during your test. Use it well.
 </body></html>

+ 3 - 0
L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32213-06.htm

@@ -0,0 +1,3 @@
+<html><body>Grand Master Vitus:<br>
+Good! Then go to Hierarch Kekropus and obtain his recognition of your qualifications. You can have no better ally in your quest than his approval. He will give you the details of the test.
+</body></html>

+ 2 - 2
L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/32213-04.htm → L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32213-07.html

@@ -1,3 +1,3 @@
-<html><body>Grand Master Vitus:<br>
-You must gain Hierarch Kekropus's approval of your qualifications. Seek him out and he will give you further instructions.
+<html><body>Grand Master Vitus:<br>
+You must gain Hierarch Kekropus's approval of your qualifications. Seek him out and he will give you further instructions.
 </body></html>

+ 2 - 2
L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/32213-05.htm → L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32213-08.html

@@ -1,3 +1,3 @@
-<html><body>Grand Master Vitus:<br>
-You must first prove your qualifications. Come back to me when you have done so.
+<html><body>Grand Master Vitus:<br>
+You must first prove your qualifications. Come back to me when you have done so.
 </body></html>

+ 3 - 0
L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32213-09.html

@@ -0,0 +1,3 @@
+<html><body>Grand Master Vitus:<br>
+Since the Hierarch has given you his approval, there is nothing else to say. Welcome to the world of the Soul Breakers. Bear this mark and you will be welcomed by the other grand masters. And take this Dimension Diamond; it will be useful to you on your journeys. Use it well!
+</body></html>

+ 0 - 0
L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/32213-06.htm → L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32213-10.html


+ 1 - 1
L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/32214-01.htm → L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32214-01.html

@@ -1,5 +1,5 @@
 <html><body>Grand Master Meldina:<br>
 Why have you come to me?<br>
 Ah, the one you seek has already departed with the information. Why are you looking for him?<br>
-<a action="bypass -h Quest 65_CertifiedSoulBreaker 32214-02.htm">What did you ask?</a>
+<a action="bypass -h Quest Q00065_CertifiedSoulBreaker 32214-02.html">What did you ask?</a>
 </body></html>

+ 0 - 0
L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/32214-02.htm → L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32214-02.html


+ 1 - 1
L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/32214-03.htm → L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32214-03.html

@@ -1,3 +1,3 @@
 <html><body>Meldina:<br>
-The man you asked about said that he is on his way to the pier in Giran. Go there if you want to find him. Ask the wharf manager, Pelton, about the freight itself.
+The man you asked about said that he is on his way to the pier in Giran. Go there if you want to find him. Ask the wharf manager, Felton, about the freight itself.
 </body></html>

+ 0 - 0
L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/32243-01.htm → L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32243-01.html


+ 3 - 0
L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32243-02.html

@@ -0,0 +1,3 @@
+<html><body>Broken Cargo Box:<br>
+Someone is inspecting the box. You mustn't reveal yourself, so wait until the coast is clear.
+</body></html>

+ 3 - 0
L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32243-03.html

@@ -0,0 +1,3 @@
+<html><body>Broken Cargo Box:<br>
+First, get rid of the person who is trying to take the box.
+</body></html>

+ 3 - 0
L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32243-04.html

@@ -0,0 +1,3 @@
+<html><body>Broken Cargo Box:<br>
+Who is that person up ahead? You should speak with them; you can examine the box later.
+</body></html>

+ 3 - 0
L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32243-05.html

@@ -0,0 +1,3 @@
+<html><body>Broken Cargo Box:<br>
+Someone is examining the box. Wait until another member of your race appears.
+</body></html>

+ 0 - 0
L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/32243-02.htm → L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32243-06.html


+ 0 - 0
L2J_DataPack/dist/game/data/scripts/quests/65_CertifiedSoulBreaker/32243-03.htm → L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/32243-07.html


+ 756 - 0
L2J_DataPack/dist/game/data/scripts/quests/Q00065_CertifiedSoulBreaker/Q00065_CertifiedSoulBreaker.java

@@ -0,0 +1,756 @@
+/*
+ * Copyright (C) 2004-2014 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.Q00065_CertifiedSoulBreaker;
+
+import com.l2jserver.gameserver.ai.CtrlIntention;
+import com.l2jserver.gameserver.enums.CategoryType;
+import com.l2jserver.gameserver.enums.Race;
+import com.l2jserver.gameserver.model.Location;
+import com.l2jserver.gameserver.model.actor.L2Npc;
+import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jserver.gameserver.model.quest.Quest;
+import com.l2jserver.gameserver.model.quest.QuestState;
+import com.l2jserver.gameserver.network.NpcStringId;
+import com.l2jserver.gameserver.network.clientpackets.Say2;
+import com.l2jserver.gameserver.network.serverpackets.NpcSay;
+import com.l2jserver.gameserver.network.serverpackets.SocialAction;
+import com.l2jserver.gameserver.util.Util;
+
+/**
+ * Certified Soul Breaker (65)
+ * @author ivantotov
+ */
+public final class Q00065_CertifiedSoulBreaker extends Quest
+{
+	// NPCs
+	private static final int CAPTAIN_LUCAS = 30071;
+	private static final int JACOB = 30073;
+	private static final int GUARD_HARLAN = 30074;
+	private static final int GUARD_XABER = 30075;
+	private static final int GUARD_LIAM = 30076;
+	private static final int GUARD_VESA = 30123;
+	private static final int GUARD_ZEROME = 30124;
+	private static final int WHARF_MANAGER_FELTON = 30879;
+	private static final int KEKROPUS = 32138;
+	private static final int VICE_HIERARCH_CASCA = 32139;
+	private static final int GRAND_MASTER_HOLST = 32199;
+	private static final int GRAND_MASTER_VITUS = 32213;
+	private static final int GRAND_MASTER_MELDINA = 32214;
+	private static final int KATENAR = 32242;
+	private static final int CARGO_BOX = 32243;
+	private static final int SUSPICIOUS_MAN = 32244;
+	// Items
+	private static final int SEALED_DOCUMENT = 9803;
+	private static final int WYRM_HEART = 9804;
+	private static final int KEKROPUS_RECOMMENDATION = 9805;
+	// Reward
+	private static final int DIMENSIONAL_DIAMOND = 7562;
+	private static final int SOUL_BREAKER_CERTIFICATE = 9806;
+	// Monster
+	private static final int WYRM = 20176;
+	// Quest Monster
+	private static final int GUARDIAN_ANGEL = 27332;
+	// Misc
+	private static final int MIN_LEVEL = 39;
+	// Locations
+	private static final Location SUSPICIOUS_SPAWN = new Location(16489, 146249, -3112);
+	private static final Location MOVE_TO = new Location(16490, 145839, -3080);
+	
+	public Q00065_CertifiedSoulBreaker()
+	{
+		super(65, Q00065_CertifiedSoulBreaker.class.getSimpleName(), "Certified Soul Breaker");
+		addStartNpc(GRAND_MASTER_VITUS);
+		addTalkId(GRAND_MASTER_VITUS, CAPTAIN_LUCAS, JACOB, GUARD_HARLAN, GUARD_XABER, GUARD_LIAM, GUARD_VESA, GUARD_ZEROME, WHARF_MANAGER_FELTON, KEKROPUS, VICE_HIERARCH_CASCA, GRAND_MASTER_HOLST, GRAND_MASTER_MELDINA, KATENAR, CARGO_BOX, SUSPICIOUS_MAN);
+		addKillId(WYRM, GUARDIAN_ANGEL);
+		addSpawnId(GUARDIAN_ANGEL, SUSPICIOUS_MAN);
+		registerQuestItems(SEALED_DOCUMENT, WYRM_HEART, KEKROPUS_RECOMMENDATION);
+	}
+	
+	@Override
+	public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
+	{
+		if ("DESPAWN_5".equals(event))
+		{
+			if (npc != null)
+			{
+				npc.deleteMe();
+			}
+			return super.onAdvEvent(event, npc, player);
+		}
+		else if ("DESPAWN_70".equals(event))
+		{
+			final L2Npc npc0 = npc.getVariables().getObject("npc0", L2Npc.class);
+			final L2PcInstance c0 = npc.getVariables().getObject("player0", L2PcInstance.class);
+			if (npc0 != null)
+			{
+				if (npc0.getVariables().getBoolean("SPAWNED"))
+				{
+					npc0.getVariables().set("SPAWNED", false);
+					if (c0 != null)
+					{
+						npc.broadcastPacket(new NpcSay(npc, Say2.NPC_ALL, NpcStringId.S1_I_WILL_BE_BACK_SOON_STAY_THERE_AND_DONT_YOU_DARE_WANDER_OFF).addStringParameter(c0.getAppearance().getVisibleName()));
+					}
+				}
+			}
+			npc.deleteMe();
+			return super.onAdvEvent(event, npc, player);
+		}
+		
+		final QuestState qs = getQuestState(player, false);
+		if (qs == null)
+		{
+			return null;
+		}
+		
+		String htmltext = null;
+		switch (event)
+		{
+			case "ACCEPT":
+			{
+				if (qs.isCreated())
+				{
+					qs.startQuest();
+					qs.setMemoState(1);
+					if (player.getVariables().getInt("2ND_CLASS_DIAMOND_REWARD", 0) == 0)
+					{
+						giveItems(player, DIMENSIONAL_DIAMOND, 47);
+						player.getVariables().set("2ND_CLASS_DIAMOND_REWARD", 1);
+						htmltext = "32213-05.htm";
+					}
+					else
+					{
+						htmltext = "32213-06.htm";
+					}
+				}
+				break;
+			}
+			case "32213-09.html":
+			{
+				htmltext = event;
+				break;
+			}
+			case "32213-04.htm":
+			{
+				if ((player.getLevel() >= MIN_LEVEL) && player.isInCategory(CategoryType.KAMAEL_SECOND_CLASS_GROUP))
+				{
+					htmltext = event;
+				}
+				break;
+			}
+			case "30071-02.html":
+			{
+				if (qs.isMemoState(7))
+				{
+					qs.setMemoState(8);
+					qs.setCond(8, true);
+					htmltext = event;
+				}
+				break;
+			}
+			case "30879-02.html":
+			{
+				if (qs.isMemoState(11))
+				{
+					htmltext = event;
+				}
+				break;
+			}
+			case "30879-03.html":
+			{
+				if (qs.isMemoState(11))
+				{
+					qs.setMemoState(12);
+					qs.setCond(12, true);
+					htmltext = event;
+				}
+				break;
+			}
+			case "32138-02.html":
+			case "32138-03.html":
+			{
+				if (qs.isMemoState(1))
+				{
+					htmltext = event;
+				}
+				break;
+			}
+			case "32138-04.html":
+			{
+				if (qs.isMemoState(1))
+				{
+					qs.setMemoState(2);
+					qs.setCond(2, true);
+					htmltext = event;
+				}
+				break;
+			}
+			case "32138-07.html":
+			{
+				if (qs.isMemoState(21))
+				{
+					qs.setMemoState(22);
+					qs.setCond(15, true);
+					htmltext = event;
+				}
+				break;
+			}
+			case "32138-10.html":
+			case "32138-11.html":
+			{
+				if (qs.isMemoState(23))
+				{
+					htmltext = event;
+				}
+				break;
+			}
+			case "32138-12.html":
+			{
+				if (qs.isMemoState(23))
+				{
+					takeItems(player, WYRM_HEART, -1);
+					giveItems(player, KEKROPUS_RECOMMENDATION, 1);
+					qs.setMemoState(24);
+					qs.setCond(17, true);
+					htmltext = event;
+				}
+				break;
+			}
+			case "32139-02.html":
+			{
+				if (qs.isMemoState(2))
+				{
+					qs.setMemoState(3);
+					qs.setCond(3, true);
+					htmltext = event;
+				}
+				break;
+			}
+			case "32139-04.html":
+			{
+				if (qs.isMemoState(3))
+				{
+					qs.setMemoState(4);
+					qs.setCond(4, true);
+					htmltext = event;
+				}
+				break;
+			}
+			case "32139-07.html":
+			{
+				if (qs.isMemoState(14))
+				{
+					htmltext = event;
+				}
+				break;
+			}
+			case "32139-08.html":
+			{
+				if (qs.isMemoState(14))
+				{
+					takeItems(player, SEALED_DOCUMENT, -1);
+					qs.setMemoState(21);
+					qs.setCond(14, true);
+					htmltext = event;
+				}
+				break;
+			}
+			case "32199-02.html":
+			{
+				if (qs.isMemoState(4))
+				{
+					qs.setMemoState(5);
+					qs.setCond(5, true);
+					addSpawn(npc, SUSPICIOUS_MAN, SUSPICIOUS_SPAWN, false, 0);
+					htmltext = event;
+				}
+				break;
+			}
+			case "32214-02.html":
+			{
+				if (qs.isMemoState(10))
+				{
+					qs.setMemoState(11);
+					qs.setCond(11, true);
+					htmltext = event;
+				}
+				break;
+			}
+		}
+		return htmltext;
+	}
+	
+	@Override
+	public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
+	{
+		final QuestState qs = getQuestState(killer, false);
+		if ((qs != null) && qs.isStarted() && Util.checkIfInRange(1500, npc, killer, true))
+		{
+			switch (npc.getId())
+			{
+				case WYRM:
+				{
+					if (qs.isMemoState(22))
+					{
+						if (giveItemRandomly(killer, npc, WYRM_HEART, 1, 10, 0.20, true))
+						{
+							qs.setMemoState(23);
+							qs.setCond(16, true);
+						}
+					}
+					break;
+				}
+				case GUARDIAN_ANGEL:
+				{
+					final L2PcInstance c0 = npc.getVariables().getObject("player0", L2PcInstance.class);
+					final L2Npc npc0 = npc.getVariables().getObject("npc0", L2Npc.class);
+					if (killer == c0)
+					{
+						if (c0 != null)
+						{
+							if (qs.isMemoState(12))
+							{
+								L2Npc katenar = addSpawn(KATENAR, killer.getX() + 20, killer.getY() + 20, killer.getZ(), 0, false, 0);
+								katenar.getVariables().set("player0", killer);
+								katenar.getVariables().set("npc0", npc);
+								qs.setMemoState(13);
+								npc.broadcastPacket(new NpcSay(npc, Say2.NPC_ALL, NpcStringId.GRR_IVE_BEEN_HIT));
+							}
+						}
+					}
+					else
+					{
+						if (npc0 != null)
+						{
+							if (npc0.getVariables().getBoolean("SPAWNED"))
+							{
+								npc0.getVariables().set("SPAWNED", false);
+							}
+						}
+						npc.broadcastPacket(new NpcSay(npc, Say2.NPC_ALL, NpcStringId.GRR_WHO_ARE_YOU_AND_WHY_HAVE_YOU_STOPPED_ME));
+					}
+				}
+			}
+		}
+		return super.onKill(npc, killer, isSummon);
+	}
+	
+	@Override
+	public String onTalk(L2Npc npc, L2PcInstance player)
+	{
+		final QuestState qs = getQuestState(player, true);
+		final int memoState = qs.getMemoState();
+		String htmltext = getNoQuestMsg(player);
+		if (qs.isCreated())
+		{
+			if (npc.getId() == GRAND_MASTER_VITUS)
+			{
+				if (player.getRace() == Race.KAMAEL)
+				{
+					if ((player.getLevel() >= MIN_LEVEL) && player.isInCategory(CategoryType.KAMAEL_SECOND_CLASS_GROUP))
+					{
+						htmltext = "32213-01.htm";
+					}
+					else
+					{
+						htmltext = "32213-03.html";
+					}
+				}
+				else
+				{
+					htmltext = "32213-02.html";
+				}
+			}
+		}
+		else if (qs.isStarted())
+		{
+			switch (npc.getId())
+			{
+				case GRAND_MASTER_VITUS:
+				{
+					if (memoState == 1)
+					{
+						htmltext = "32213-07.html";
+					}
+					else if ((memoState > 1) && (memoState < 24))
+					{
+						htmltext = "32213-08.html";
+					}
+					else if (memoState == 24)
+					{
+						giveAdena(player, 71194, true);
+						giveItems(player, SOUL_BREAKER_CERTIFICATE, 1);
+						addExpAndSp(player, 393750, 27020);
+						qs.exitQuest(false, true);
+						player.sendPacket(new SocialAction(player.getObjectId(), 3));
+						htmltext = "32213-10.html";
+					}
+					break;
+				}
+				case CAPTAIN_LUCAS:
+				{
+					if (memoState == 7)
+					{
+						htmltext = "30071-01.html";
+					}
+					else if (memoState == 8)
+					{
+						htmltext = "30071-03.html";
+					}
+					break;
+				}
+				case JACOB:
+				{
+					if (memoState == 6)
+					{
+						if (qs.getMemoStateEx(1) == 0)
+						{
+							qs.setMemoStateEx(1, 10);
+							htmltext = "30073-01.html";
+						}
+						else if (qs.getMemoStateEx(1) == 10)
+						{
+							htmltext = "30073-01a.html";
+						}
+						else if (qs.getMemoStateEx(1) == 1)
+						{
+							qs.setMemoState(7);
+							qs.setMemoStateEx(1, 0);
+							qs.setCond(7, true);
+							htmltext = "30073-02.html";
+						}
+					}
+					else if (memoState == 7)
+					{
+						htmltext = "30073-03.html";
+					}
+					break;
+				}
+				case GUARD_HARLAN:
+				{
+					if (memoState == 6)
+					{
+						if (qs.getMemoStateEx(1) == 0)
+						{
+							qs.setMemoStateEx(1, 1);
+							htmltext = "30074-01.html";
+						}
+						else if (qs.getMemoStateEx(1) == 1)
+						{
+							htmltext = "30074-01a.html";
+						}
+						else if (qs.getMemoStateEx(1) == 10)
+						{
+							qs.setMemoState(7);
+							qs.setMemoStateEx(1, 0);
+							qs.setCond(7, true);
+							htmltext = "30074-02.html";
+						}
+					}
+					else if (memoState == 7)
+					{
+						htmltext = "30074-03.html";
+					}
+					break;
+				}
+				case GUARD_XABER:
+				{
+					if (memoState == 8)
+					{
+						if (qs.getMemoStateEx(1) == 0)
+						{
+							qs.setMemoStateEx(1, 1);
+							htmltext = "30075-01.html";
+						}
+						else if (qs.getMemoStateEx(1) == 1)
+						{
+							htmltext = "30075-01a.html";
+						}
+						else if (qs.getMemoStateEx(1) == 10)
+						{
+							qs.setMemoState(9);
+							qs.setMemoStateEx(1, 0);
+							qs.setCond(9, true);
+							htmltext = "30075-02.html";
+						}
+					}
+					else if (memoState == 9)
+					{
+						htmltext = "30075-03.html";
+					}
+					break;
+				}
+				case GUARD_LIAM:
+				{
+					if (memoState == 8)
+					{
+						if (qs.getMemoStateEx(1) == 0)
+						{
+							qs.setMemoStateEx(1, 10);
+							htmltext = "30076-01.html";
+						}
+						else if (qs.getMemoStateEx(1) == 10)
+						{
+							htmltext = "30076-01a.html";
+						}
+						else if (qs.getMemoStateEx(1) == 1)
+						{
+							qs.setMemoState(9);
+							qs.setMemoStateEx(1, 0);
+							qs.setCond(9, true);
+							htmltext = "30076-02.html";
+						}
+					}
+					else if (memoState == 9)
+					{
+						htmltext = "30076-03.html";
+					}
+					break;
+				}
+				case GUARD_VESA:
+				{
+					if (memoState == 9)
+					{
+						if (qs.getMemoStateEx(1) == 0)
+						{
+							qs.setMemoStateEx(1, 10);
+							htmltext = "30123-01.html";
+						}
+						else if (qs.getMemoStateEx(1) == 10)
+						{
+							htmltext = "30123-01.html";
+						}
+						else if (qs.getMemoStateEx(1) == 1)
+						{
+							qs.setMemoState(10);
+							qs.setMemoStateEx(1, 0);
+							qs.setCond(10, true);
+							htmltext = "30123-02.html";
+						}
+					}
+					else if (memoState == 10)
+					{
+						htmltext = "30123-03.html";
+					}
+					break;
+				}
+				case GUARD_ZEROME:
+				{
+					if (memoState == 9)
+					{
+						if (qs.getMemoStateEx(1) == 0)
+						{
+							qs.setMemoStateEx(1, 1);
+							htmltext = "30124-01.html";
+						}
+						else if (qs.getMemoStateEx(1) == 1)
+						{
+							htmltext = "30124-01.html";
+						}
+						else if (qs.getMemoStateEx(1) == 10)
+						{
+							qs.setMemoState(10);
+							qs.setMemoStateEx(1, 0);
+							qs.setCond(10, true);
+							htmltext = "30124-02.html";
+						}
+					}
+					else if (memoState == 10)
+					{
+						htmltext = "30124-03.html";
+					}
+					break;
+				}
+				case WHARF_MANAGER_FELTON:
+				{
+					if (memoState == 11)
+					{
+						htmltext = "30879-01.html";
+					}
+					else if (memoState == 12)
+					{
+						htmltext = "30879-04.html";
+					}
+					break;
+				}
+				case KEKROPUS:
+				{
+					if (memoState == 1)
+					{
+						htmltext = getHtm(player.getHtmlPrefix(), "32138-01.html");
+						htmltext = htmltext.replaceAll("%name1%", player.getName());
+					}
+					else if (memoState == 2)
+					{
+						htmltext = "32138-05.html";
+					}
+					else if (memoState == 21)
+					{
+						htmltext = "32138-06.html";
+					}
+					else if (memoState == 22)
+					{
+						htmltext = "32138-08.html";
+					}
+					else if (memoState == 23)
+					{
+						htmltext = "32138-09.html";
+					}
+					else if (memoState == 24)
+					{
+						htmltext = "32138-13.html";
+					}
+					break;
+				}
+				case VICE_HIERARCH_CASCA:
+				{
+					if (memoState == 2)
+					{
+						htmltext = "32139-01.html";
+					}
+					else if (memoState == 3)
+					{
+						htmltext = "32139-03.html";
+					}
+					else if (memoState == 4)
+					{
+						htmltext = "32139-05.html";
+					}
+					else if (memoState == 14)
+					{
+						htmltext = "32139-06.html";
+					}
+					else if (memoState == 21)
+					{
+						htmltext = "32139-09.html";
+					}
+					break;
+				}
+				case GRAND_MASTER_HOLST:
+				{
+					if (memoState == 4)
+					{
+						htmltext = "32199-01.html";
+					}
+					else if (memoState == 5)
+					{
+						qs.setMemoState(6);
+						qs.setCond(6, true);
+						htmltext = "32199-03.html";
+					}
+					else if (memoState == 6)
+					{
+						htmltext = "32199-04.html";
+					}
+					break;
+				}
+				case GRAND_MASTER_MELDINA:
+				{
+					if (memoState == 10)
+					{
+						htmltext = "32214-01.html";
+					}
+					else if (memoState == 11)
+					{
+						htmltext = "32214-03.html";
+					}
+					break;
+				}
+				case CARGO_BOX:
+				{
+					if (memoState == 12)
+					{
+						if (!npc.getVariables().getBoolean("SPAWNED", false))
+						{
+							npc.getVariables().set("SPAWNED", true);
+							npc.getVariables().set("PLAYER_ID", player.getObjectId());
+							final L2Npc angel = addSpawn(GUARDIAN_ANGEL, 36110, 191921, -3712, 0, true, 0, false);
+							angel.getVariables().set("npc0", npc);
+							angel.getVariables().set("player0", player);
+							addAttackPlayerDesire(angel, player);
+							htmltext = "32243-01.html";
+						}
+						else if (npc.getVariables().getInt("PLAYER_ID") == player.getObjectId())
+						{
+							htmltext = "32243-03.html";
+						}
+						else
+						{
+							htmltext = "32243-02.html";
+						}
+					}
+					else if (memoState == 13)
+					{
+						if (!npc.getVariables().getBoolean("SPAWNED", false))
+						{
+							npc.getVariables().set("SPAWNED", true);
+							npc.getVariables().set("PLAYER_ID", player.getObjectId());
+							final L2Npc katenar = addSpawn(KATENAR, 36110, 191921, -3712, 0, false, 0);
+							katenar.getVariables().set("player0", player);
+							katenar.getVariables().set("npc0", npc);
+							htmltext = "32243-06.html";
+						}
+						else if (npc.getVariables().getInt("PLAYER_ID") == player.getObjectId())
+						{
+							htmltext = "32243-04.html";
+						}
+						else
+						{
+							htmltext = "32243-05.html";
+						}
+					}
+					else if (memoState == 14)
+					{
+						htmltext = "32243-07.html";
+					}
+					break;
+				}
+			}
+		}
+		else if (qs.isCompleted())
+		{
+			if (npc.getId() == GRAND_MASTER_VITUS)
+			{
+				htmltext = getAlreadyCompletedMsg(player);
+			}
+		}
+		return htmltext;
+	}
+	
+	@Override
+	public String onSpawn(L2Npc npc)
+	{
+		if (npc.getId() == SUSPICIOUS_MAN)
+		{
+			startQuestTimer("DESPAWN_5", 5000, npc, null);
+			npc.broadcastPacket(new NpcSay(npc, Say2.NPC_ALL, NpcStringId.DRATS_HOW_COULD_I_BE_SO_WRONG));
+			npc.setIsRunning(true);
+			npc.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, MOVE_TO);
+		}
+		else if (npc.getId() == GUARDIAN_ANGEL)
+		{
+			final L2PcInstance c0 = npc.getVariables().getObject("player0", L2PcInstance.class);
+			startQuestTimer("DESPAWN_70", 70000, npc, null);
+			if (c0 != null)
+			{
+				npc.broadcastPacket(new NpcSay(npc, Say2.NPC_ALL, NpcStringId.S1_STEP_BACK_FROM_THE_CONFOUNDED_BOX_I_WILL_TAKE_IT_MYSELF).addStringParameter(c0.getAppearance().getVisibleName()));
+			}
+		}
+		return super.onSpawn(npc);
+	}
+}

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

@@ -74,6 +74,7 @@ import quests.Q00061_LawEnforcement.Q00061_LawEnforcement;
 import quests.Q00062_PathOfTheTrooper.Q00062_PathOfTheTrooper;
 import quests.Q00063_PathOfTheWarder.Q00063_PathOfTheWarder;
 import quests.Q00064_CertifiedBerserker.Q00064_CertifiedBerserker;
+import quests.Q00065_CertifiedSoulBreaker.Q00065_CertifiedSoulBreaker;
 import quests.Q00066_CertifiedArbalester.Q00066_CertifiedArbalester;
 import quests.Q00067_SagaOfTheDoombringer.Q00067_SagaOfTheDoombringer;
 import quests.Q00068_SagaOfTheSoulHound.Q00068_SagaOfTheSoulHound;
@@ -534,6 +535,7 @@ public class QuestMasterHandler
 		Q00062_PathOfTheTrooper.class,
 		Q00063_PathOfTheWarder.class,
 		Q00064_CertifiedBerserker.class,
+		Q00065_CertifiedSoulBreaker.class,
 		Q00066_CertifiedArbalester.class,
 		Q00067_SagaOfTheDoombringer.class,
 		Q00068_SagaOfTheSoulHound.class,

+ 1 - 0
L2J_DataPack/dist/sql/game/updates/20150106update.sql

@@ -0,0 +1 @@
+UPDATE character_quests SET name='Q00065_CertifiedSoulBreaker' WHERE name='65_CertifiedSoulBreaker';