From e6628cecdcff377284cd634ad61184a67f7ee683 Mon Sep 17 00:00:00 2001
From: Adry_85 <adrya85@hotmail.it>
Date: Sun, 23 Nov 2014 18:08:20 +0100
Subject: [PATCH] Retail-like quest Black Swan (351).

---
 .../dist/game/data/multisell/7897.xml         |  80 +++---
 L2J_DataPack/dist/game/data/scripts.cfg       |   1 -
 .../scripts/quests/351_BlackSwan/30916-00.htm |   4 -
 .../scripts/quests/351_BlackSwan/30916-01.htm |   4 -
 .../scripts/quests/351_BlackSwan/30969-01.htm |   5 -
 .../scripts/quests/351_BlackSwan/30969-02.htm |   4 -
 .../scripts/quests/351_BlackSwan/30969-03.htm |   4 -
 .../scripts/quests/351_BlackSwan/30969-04.htm |   6 -
 .../scripts/quests/351_BlackSwan/__init__.py  | 119 ---------
 .../Q00345_MethodToRaiseTheDead.java          |  12 +-
 .../30897-01.html}                            |   2 +-
 .../30897-02.html}                            |   0
 .../quests/Q00351_BlackSwan/30916-01.htm      |   4 +
 .../30916-02.htm                              |   6 +-
 .../30916-03.htm                              |   4 +-
 .../quests/Q00351_BlackSwan/30916-04.html     |   4 +
 .../30916-05.html}                            |   4 +-
 .../quests/Q00351_BlackSwan/30969-01.html     |   5 +
 .../30969-02.html}                            |   6 +-
 .../quests/Q00351_BlackSwan/30969-03.html     |   6 +
 .../quests/Q00351_BlackSwan/30969-04.html     |   4 +
 .../30969-05.html}                            |   4 +-
 .../quests/Q00351_BlackSwan/30969-06.html     |   5 +
 .../30969-07.html}                            |   6 +-
 .../30969-08.html}                            |   4 +-
 .../30969-09.html}                            |   2 +-
 .../Q00351_BlackSwan/Q00351_BlackSwan.java    | 228 ++++++++++++++++++
 .../scripts/quests/QuestMasterHandler.java    |   2 +
 .../dist/sql/game/updates/20141122update.sql  |   3 +-
 29 files changed, 327 insertions(+), 211 deletions(-)
 delete mode 100644 L2J_DataPack/dist/game/data/scripts/quests/351_BlackSwan/30916-00.htm
 delete mode 100644 L2J_DataPack/dist/game/data/scripts/quests/351_BlackSwan/30916-01.htm
 delete mode 100644 L2J_DataPack/dist/game/data/scripts/quests/351_BlackSwan/30969-01.htm
 delete mode 100644 L2J_DataPack/dist/game/data/scripts/quests/351_BlackSwan/30969-02.htm
 delete mode 100644 L2J_DataPack/dist/game/data/scripts/quests/351_BlackSwan/30969-03.htm
 delete mode 100644 L2J_DataPack/dist/game/data/scripts/quests/351_BlackSwan/30969-04.htm
 delete mode 100644 L2J_DataPack/dist/game/data/scripts/quests/351_BlackSwan/__init__.py
 rename L2J_DataPack/dist/game/data/scripts/quests/{351_BlackSwan/30897-01.htm => Q00351_BlackSwan/30897-01.html} (57%)
 rename L2J_DataPack/dist/game/data/scripts/quests/{351_BlackSwan/30897-02.htm => Q00351_BlackSwan/30897-02.html} (100%)
 create mode 100644 L2J_DataPack/dist/game/data/scripts/quests/Q00351_BlackSwan/30916-01.htm
 rename L2J_DataPack/dist/game/data/scripts/quests/{351_BlackSwan => Q00351_BlackSwan}/30916-02.htm (55%)
 rename L2J_DataPack/dist/game/data/scripts/quests/{351_BlackSwan => Q00351_BlackSwan}/30916-03.htm (61%)
 create mode 100644 L2J_DataPack/dist/game/data/scripts/quests/Q00351_BlackSwan/30916-04.html
 rename L2J_DataPack/dist/game/data/scripts/quests/{351_BlackSwan/30916-04.htm => Q00351_BlackSwan/30916-05.html} (72%)
 create mode 100644 L2J_DataPack/dist/game/data/scripts/quests/Q00351_BlackSwan/30969-01.html
 rename L2J_DataPack/dist/game/data/scripts/quests/{351_BlackSwan/30969-02a.htm => Q00351_BlackSwan/30969-02.html} (69%)
 create mode 100644 L2J_DataPack/dist/game/data/scripts/quests/Q00351_BlackSwan/30969-03.html
 create mode 100644 L2J_DataPack/dist/game/data/scripts/quests/Q00351_BlackSwan/30969-04.html
 rename L2J_DataPack/dist/game/data/scripts/quests/{351_BlackSwan/30969-03a.htm => Q00351_BlackSwan/30969-05.html} (75%)
 create mode 100644 L2J_DataPack/dist/game/data/scripts/quests/Q00351_BlackSwan/30969-06.html
 rename L2J_DataPack/dist/game/data/scripts/quests/{351_BlackSwan/30969-05.htm => Q00351_BlackSwan/30969-07.html} (63%)
 rename L2J_DataPack/dist/game/data/scripts/quests/{351_BlackSwan/30969-06.htm => Q00351_BlackSwan/30969-08.html} (68%)
 rename L2J_DataPack/dist/game/data/scripts/quests/{351_BlackSwan/30969-07.htm => Q00351_BlackSwan/30969-09.html} (90%)
 create mode 100644 L2J_DataPack/dist/game/data/scripts/quests/Q00351_BlackSwan/Q00351_BlackSwan.java

diff --git a/L2J_DataPack/dist/game/data/multisell/7897.xml b/L2J_DataPack/dist/game/data/multisell/7897.xml
index c916c485f6..3123dbe092 100644
--- a/L2J_DataPack/dist/game/data/multisell/7897.xml
+++ b/L2J_DataPack/dist/game/data/multisell/7897.xml
@@ -4,93 +4,93 @@
 		<npc>30897</npc> <!-- Roman (Head Blacksmith) -->
 	</npcs>
 	<item>
-		<!-- Iason Heine's Bill -->
-		<ingredient count="1" id="4310" />
+		<!-- Bill of Iason Heine -->
+		<ingredient count="1" id="4407" />
 		<!-- Adena -->
 		<production count="700" id="57" />
 	</item>
 	<item>
-		<!-- Iason Heine's Bill -->
-		<ingredient count="3" id="4310" />
+		<!-- Bill of Iason Heine -->
+		<ingredient count="3" id="4407" />
 		<!-- Animal Skin -->
 		<production count="20" id="1867" />
 	</item>
 	<item>
-		<!-- Iason Heine's Bill -->
-		<ingredient count="3" id="4310" />
+		<!-- Bill of Iason Heine -->
+		<ingredient count="3" id="4407" />
 		<!-- Animal Bone -->
 		<production count="20" id="1872" />
 	</item>
 	<item>
-		<!-- Iason Heine's Bill -->
-		<ingredient count="2" id="4310" />
+		<!-- Bill of Iason Heine -->
+		<ingredient count="2" id="4407" />
 		<!-- Coal -->
 		<production count="10" id="1870" />
 	</item>
 	<item>
-		<!-- Iason Heine's Bill -->
-		<ingredient count="2" id="4310" />
+		<!-- Bill of Iason Heine -->
+		<ingredient count="2" id="4407" />
 		<!-- Charcoal -->
 		<production count="10" id="1871" />
 	</item>
 	<item>
-		<!-- Iason Heine's Bill -->
-		<ingredient count="9" id="4310" />
-		<!-- Leather -->
-		<production count="10" id="1882" />
-	</item>
-	<item>
-		<!-- Iason Heine's Bill -->
-		<ingredient count="5" id="4310" />
-		<!-- Cokes -->
-		<production count="6" id="1879" />
-	</item>
-	<item>
-		<!-- Iason Heine's Bill -->
-		<ingredient count="5" id="4310" />
-		<!-- Metal Hardener -->
-		<production count="1" id="5220" />
-	</item>
-	<item>
-		<!-- Iason Heine's Bill -->
-		<ingredient count="3" id="4310" />
+		<!-- Bill of Iason Heine -->
+		<ingredient count="3" id="4407" />
 		<!-- Coarse Bone Powder -->
 		<production count="2" id="1881" />
 	</item>
 	<item>
-		<!-- Iason Heine's Bill -->
-		<ingredient count="3" id="4310" />
+		<!-- Bill of Iason Heine -->
+		<ingredient count="3" id="4407" />
 		<!-- Oriharukon Ore -->
 		<production count="1" id="1874" />
 	</item>
 	<item>
-		<!-- Iason Heine's Bill -->
-		<ingredient count="3" id="4310" />
+		<!-- Bill of Iason Heine -->
+		<ingredient count="3" id="4407" />
 		<!-- Stone of Purity -->
 		<production count="1" id="1875" />
 	</item>
 	<item>
-		<!-- Iason Heine's Bill -->
-		<ingredient count="6" id="4310" />
+		<!-- Bill of Iason Heine -->
+		<ingredient count="5" id="4407" />
+		<!-- Metal Hardener -->
+		<production count="1" id="5220" />
+	</item>
+	<item>
+		<!-- Bill of Iason Heine -->
+		<ingredient count="5" id="4407" />
+		<!-- Cokes -->
+		<production count="6" id="1879" />
+	</item>
+	<item>
+		<!-- Bill of Iason Heine -->
+		<ingredient count="6" id="4407" />
 		<!-- Crafted Leather -->
 		<production count="1" id="1894" />
 		<!-- Adena -->
 		<production count="210" id="57" />
 	</item>
 	<item>
-		<!-- Iason Heine's Bill -->
-		<ingredient count="7" id="4310" />
+		<!-- Bill of Iason Heine -->
+		<ingredient count="7" id="4407" />
 		<!-- Synthetic Cokes -->
 		<production count="1" id="1888" />
 		<!-- Adena -->
 		<production count="280" id="57" />
 	</item>
 	<item>
-		<!-- Iason Heine's Bill -->
-		<ingredient count="9" id="4310" />
+		<!-- Bill of Iason Heine -->
+		<ingredient count="9" id="4407" />
 		<!-- Varnish of Purity -->
 		<production count="1" id="1887" />
 		<!-- Adena -->
 		<production count="630" id="57" />
 	</item>
+	<item>
+		<!-- Bill of Iason Heine -->
+		<ingredient count="9" id="4407" />
+		<!-- Leather -->
+		<production count="10" id="1882" />
+	</item>
 </list>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts.cfg b/L2J_DataPack/dist/game/data/scripts.cfg
index 2ad1284539..318d46e038 100644
--- a/L2J_DataPack/dist/game/data/scripts.cfg
+++ b/L2J_DataPack/dist/game/data/scripts.cfg
@@ -237,7 +237,6 @@ quests/337_AudienceWithTheLandDragon/__init__.py
 quests/340_SubjugationOfLizardmen/__init__.py
 quests/343_UnderTheShadowOfTheIvoryTower/__init__.py
 quests/348_ArrogantSearch/__init__.py
-quests/351_BlackSwan/__init__.py
 quests/372_LegacyOfInsolence/__init__.py
 quests/373_SupplierOfReagents/__init__.py
 quests/383_SearchingForTreasure/__init__.py
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/351_BlackSwan/30916-00.htm b/L2J_DataPack/dist/game/data/scripts/quests/351_BlackSwan/30916-00.htm
deleted file mode 100644
index 7b2cffa4a2..0000000000
--- a/L2J_DataPack/dist/game/data/scripts/quests/351_BlackSwan/30916-00.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-<html><body>Captain Gosta:<br>
-Don't you relize that the Heine family is the most prominent family in all of Heine? For years they have dominated Innadril's commerce and it is rumored that their personal fortune has swelled to several billion adena. Now word comes that cargo belonging to Iason Heine, the patriarch of the Heine family has been stolen... Why am I telling you this. You can't do anything about it.<br>
-(This is a quest that can only be undertaken by a character of level 32 or higher.)
-</body></html>
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/351_BlackSwan/30916-01.htm b/L2J_DataPack/dist/game/data/scripts/quests/351_BlackSwan/30916-01.htm
deleted file mode 100644
index 4ca6905357..0000000000
--- a/L2J_DataPack/dist/game/data/scripts/quests/351_BlackSwan/30916-01.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-<html><body>Captain Gosta:<br>
-Don't you relize that the Heine family is the most prominent family in all of Heine? For years they have dominated Innadril's commerce and it is rumored that their personal fortune has swelled to several billion adena. Now word comes that cargo belonging to Iason Heine, the patriarch of the Heine family has been stolen... When he heard about the robbery, the Lord decided to use this incident as an excuse to mobilize his army to drive away the<font color="LEVEL"> Tasaba lizardmen</font>. Those filthy reptiles have threatened the safety of travelers for too long...<br>
-<a action="bypass -h Quest 351_BlackSwan 30916-02.htm">"Was he successful?"</a>
-</body></html>
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/351_BlackSwan/30969-01.htm b/L2J_DataPack/dist/game/data/scripts/quests/351_BlackSwan/30969-01.htm
deleted file mode 100644
index 342dec5d87..0000000000
--- a/L2J_DataPack/dist/game/data/scripts/quests/351_BlackSwan/30969-01.htm
+++ /dev/null
@@ -1,5 +0,0 @@
-<html><body>Iason Heine:<br>
-Oh, my! I should have noticed the captain's seal earlier! So you are here to help me... What has become of those filthy<font color="LEVEL"> Tasaba lizardmen</font>? Have you recovered any of the stolen cargo ?<br>
-<a action="bypass -h Quest 351_BlackSwan 30969-02a.htm">"Here are the fangs of the lizardmen."</a><br>
-<a action="bypass -h Quest 351_BlackSwan 30969-03a.htm">"Here is the cargo we recovered."</a>
-</body></html>
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/351_BlackSwan/30969-02.htm b/L2J_DataPack/dist/game/data/scripts/quests/351_BlackSwan/30969-02.htm
deleted file mode 100644
index 0f25dcccee..0000000000
--- a/L2J_DataPack/dist/game/data/scripts/quests/351_BlackSwan/30969-02.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-<html><body>Iason Heine:<br>
-Let's see... We agreed upon 20 adena per fang, correct? Then total is... this. Correct?<br>
-<a action="bypass -h Quest 351_BlackSwan 30969-04.htm">Return</a>
-</body></html>
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/351_BlackSwan/30969-03.htm b/L2J_DataPack/dist/game/data/scripts/quests/351_BlackSwan/30969-03.htm
deleted file mode 100644
index 343df44593..0000000000
--- a/L2J_DataPack/dist/game/data/scripts/quests/351_BlackSwan/30969-03.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-<html><body>Iason Heine:<br>
-Oh yes, that is definetely the cargo that was stolen from our trade guild. But this is not all of it. There is still much to be recovered. Please continue to look for it.<br> Ah, the reward. I only have a small amount of cash on me. I'll tell you what, take this bill to<font color="LEVEL"> Head Blacsmith Roman</font> of Blacksmith guild. He will take care of you.<br>
-<a action="bypass -h Quest 351_BlackSwan 30969-04.htm">Return</a>
-</body></html>
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/351_BlackSwan/30969-04.htm b/L2J_DataPack/dist/game/data/scripts/quests/351_BlackSwan/30969-04.htm
deleted file mode 100644
index 1a795cec19..0000000000
--- a/L2J_DataPack/dist/game/data/scripts/quests/351_BlackSwan/30969-04.htm
+++ /dev/null
@@ -1,6 +0,0 @@
-<html><body>Iason Heine:<br>
-Is there anything else I can do for you? The ranks of Tasaba lizardmen are swelling as we speak. They must be delt with. Please don't quit now/<br>
-<a action="bypass -h Quest 351_BlackSwan 30969-02a.htm">Show the Tasaba lizardmen fangs.</a><br>
-<a action="bypass -h Quest 351_BlackSwan 30969-03a.htm">Show the wooden barrels that belong to the trade guild.</a><br>
-<a action="bypass -h Quest 351_BlackSwan 30969-05.htm">Quit the task.</a>
-</body></html>
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/351_BlackSwan/__init__.py b/L2J_DataPack/dist/game/data/scripts/quests/351_BlackSwan/__init__.py
deleted file mode 100644
index eb1e0bb02d..0000000000
--- a/L2J_DataPack/dist/game/data/scripts/quests/351_BlackSwan/__init__.py
+++ /dev/null
@@ -1,119 +0,0 @@
-# Made by mtrix
-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 = "351_BlackSwan"
-
-ADENA = 57
-ORDER_OF_GOSTA = 4296
-LIZARD_FANG = 4297
-BARREL_OF_LEAGUE = 4298
-BILL_OF_IASON_HEINE = 4310
-CHANCE = 10
-CHANCE2 = 15
-CHANCE_barrel = 0
-class Quest (JQuest) :
-
- def __init__(self,id,name,descr):
-     JQuest.__init__(self,id,name,descr)
-     self.questItemIds = [ORDER_OF_GOSTA, BARREL_OF_LEAGUE, LIZARD_FANG]
-
- def onEvent (self,event,st) :
-     htmltext = event
-     amount = st.getQuestItemsCount(LIZARD_FANG)
-     amount2 = st.getQuestItemsCount(BARREL_OF_LEAGUE)
-     bonus=0
-     if event == "30916-03.htm" :
-         st.setState(State.STARTED)
-         st.set("cond","1")
-         st.giveItems(ORDER_OF_GOSTA,1)
-         st.playSound("ItemSound.quest_accept")
-     elif event == "30969-02a.htm" and amount :
-         if amount > 10 :
-            bonus=3880
-         htmltext = "30969-02.htm"
-         st.giveItems(ADENA,amount*20+bonus)
-         st.takeItems(LIZARD_FANG,-1)
-     elif event == "30969-03a.htm" :
-         if amount2 :
-             htmltext = "30969-03.htm"
-             st.giveItems(ADENA,3880)
-             st.rewardItems(BILL_OF_IASON_HEINE,int(amount2))
-             st.takeItems(BARREL_OF_LEAGUE,-1)
-     elif event == "30969-06.htm" :
-         if not (amount + amount2) :
-            st.exitQuest(1)
-            st.playSound("ItemSound.quest_finish")
-            htmltext="30969-07.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 != 30916 and id != State.STARTED : return htmltext
-  
-     level = player.getLevel()
-     cond = st.getInt("cond")
-     if npcId==30916 :
-         if id == State.CREATED :
-             if level>=32 :
-                 htmltext = "30916-01.htm"
-             else :
-                 htmltext = "30916-00.htm"
-                 st.exitQuest(1)
-         elif cond :
-             htmltext = "30916-04.htm"
-     elif npcId==30969 and cond :
-         htmltext = "30969-01.htm"
-     elif npcId == 30897 :
-         if st.getQuestItemsCount(BILL_OF_IASON_HEINE):
-            htmltext="30897-01.htm"
-         else:
-            htmltext="30897-02.htm"
-     return htmltext
-
- def onKill(self,npc,player,isPet):
-     st = player.getQuestState(qn)
-     if not st : return 
-     if st.getState() != State.STARTED : return 
-     npcId = npc.getId()
-     cond = st.getInt("cond")
-     random = self.getRandom(20)
-     if random<CHANCE :
-         st.giveItems(LIZARD_FANG,1)
-         st.playSound("ItemSound.quest_itemget")
-         if random==CHANCE_barrel :
-              st.giveItems(BARREL_OF_LEAGUE,1)
-              st.set("cond","2")
-     elif random<CHANCE2 :
-         st.giveItems(LIZARD_FANG,2)
-         st.playSound("ItemSound.quest_itemget")
-         if random==CHANCE_barrel :
-             st.giveItems(BARREL_OF_LEAGUE,1)
-             st.set("cond","2")
-     elif self.getRandom(100)<4:
-         st.giveItems(BARREL_OF_LEAGUE,1)
-         st.playSound("ItemSound.quest_itemget")
-         st.set("cond","2")
-     return
-
-QUEST       = Quest(351,qn,"Black Swan")
-
-QUEST.addStartNpc(30916)
-
-QUEST.addTalkId(30916)
-QUEST.addTalkId(30969)
-QUEST.addTalkId(30897)
-
-QUEST.addKillId(20784)
-QUEST.addKillId(20785)
-QUEST.addKillId(21639)
-QUEST.addKillId(21640)
-QUEST.addKillId(21642)
-QUEST.addKillId(21643)
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/Q00345_MethodToRaiseTheDead/Q00345_MethodToRaiseTheDead.java b/L2J_DataPack/dist/game/data/scripts/quests/Q00345_MethodToRaiseTheDead/Q00345_MethodToRaiseTheDead.java
index 36bdbac25b..efe2f245cb 100644
--- a/L2J_DataPack/dist/game/data/scripts/quests/Q00345_MethodToRaiseTheDead/Q00345_MethodToRaiseTheDead.java
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00345_MethodToRaiseTheDead/Q00345_MethodToRaiseTheDead.java
@@ -76,7 +76,6 @@ public final class Q00345_MethodToRaiseTheDead extends Quest
 		{
 			case "30970-02.htm":
 			{
-				qs.setMemoState(0);
 				qs.startQuest();
 				htmltext = event;
 				break;
@@ -105,9 +104,14 @@ public final class Q00345_MethodToRaiseTheDead extends Quest
 			}
 			case "30971-03.html":
 			{
-				giveAdena(player, getQuestItemsCount(player, USELESS_BONE_PIECES) * 104, true);
-				takeItems(player, USELESS_BONE_PIECES, -1);
-				htmltext = event;
+				final long uselessBonePiecesCount = getQuestItemsCount(player, USELESS_BONE_PIECES);
+				
+				if (uselessBonePiecesCount > 0)
+				{
+					giveAdena(player, uselessBonePiecesCount * 104, true);
+					takeItems(player, USELESS_BONE_PIECES, -1);
+					htmltext = event;
+				}
 				break;
 			}
 			case "30973-02.html":
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/351_BlackSwan/30897-01.htm b/L2J_DataPack/dist/game/data/scripts/quests/Q00351_BlackSwan/30897-01.html
similarity index 57%
rename from L2J_DataPack/dist/game/data/scripts/quests/351_BlackSwan/30897-01.htm
rename to L2J_DataPack/dist/game/data/scripts/quests/Q00351_BlackSwan/30897-01.html
index e0cf31a906..0c95e33d2a 100644
--- a/L2J_DataPack/dist/game/data/scripts/quests/351_BlackSwan/30897-01.htm
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00351_BlackSwan/30897-01.html
@@ -1,4 +1,4 @@
 <html><body>Head Blacksmith Roman:<br>
-Hmm... This is definitely the signature of Iason Heine. What would you like to trade for it?<br>
+Hmm... This is definitely the signature of Iason Heine.  What would you like to trade for it?<br>
 <a action="bypass -h npc_%objectId%_multisell 7897">View the Bill Exchange List</a>
 </body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/351_BlackSwan/30897-02.htm b/L2J_DataPack/dist/game/data/scripts/quests/Q00351_BlackSwan/30897-02.html
similarity index 100%
rename from L2J_DataPack/dist/game/data/scripts/quests/351_BlackSwan/30897-02.htm
rename to L2J_DataPack/dist/game/data/scripts/quests/Q00351_BlackSwan/30897-02.html
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/Q00351_BlackSwan/30916-01.htm b/L2J_DataPack/dist/game/data/scripts/quests/Q00351_BlackSwan/30916-01.htm
new file mode 100644
index 0000000000..47bede2535
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00351_BlackSwan/30916-01.htm
@@ -0,0 +1,4 @@
+<html><body>Captain Gosta:<br>
+Don't you realize that the Heine family is the most prominent family in all of Heine? For years they have dominated Innadril's commerce and it is rumored that their personal fortune has swelled to several billion Adena. Now word comes that cargo belonging to Iason Heine, the patriarch of the Heine family has been stolen... When he heard about the robbery, the Lord decided to use this incident as an excuse to mobilize his army to drive away the <font color="LEVEL">Tasaba lizardmen</font>. Those filthy reptiles have threatened the safety of travelers for too long...<br>
+<a action="bypass -h Quest Q00351_BlackSwan 30916-02.htm">"Was he successful?"</a>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/351_BlackSwan/30916-02.htm b/L2J_DataPack/dist/game/data/scripts/quests/Q00351_BlackSwan/30916-02.htm
similarity index 55%
rename from L2J_DataPack/dist/game/data/scripts/quests/351_BlackSwan/30916-02.htm
rename to L2J_DataPack/dist/game/data/scripts/quests/Q00351_BlackSwan/30916-02.htm
index e39dca7f23..5172683710 100644
--- a/L2J_DataPack/dist/game/data/scripts/quests/351_BlackSwan/30916-02.htm
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00351_BlackSwan/30916-02.htm
@@ -1,5 +1,5 @@
 <html><body>Captain Gosta:<br>
 Duke Iason Heine refused the Lord's offer, saying that it was a private matter and he would deal with it. This would be a good time to compliment the Duke on his concern for the public treasury, but, alas, I know him too well.<br>
-Anyway, I'm recruiting volunteers to drive away the Tasaba lizardmen for the Duke. He will personaly give out the rewards when we are successful. If you wish to volunteer, speak up now!<br>
-<a action="bypass -h Quest 351_BlackSwan 30916-03.htm">"I will join your effort against the Tasaba lizardmen."</a>
-</body></html>
+Anyway, I'm recruiting volunteers to drive away the Tasaba lizardmen for the Duke. He will personally give out the rewards when we are successful. If you wish to volunteer, speak up now!<br>
+<a action="bypass -h Quest Q00351_BlackSwan 30916-03.htm">"I will join your effort against the Tasaba lizardmen."</a>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/351_BlackSwan/30916-03.htm b/L2J_DataPack/dist/game/data/scripts/quests/Q00351_BlackSwan/30916-03.htm
similarity index 61%
rename from L2J_DataPack/dist/game/data/scripts/quests/351_BlackSwan/30916-03.htm
rename to L2J_DataPack/dist/game/data/scripts/quests/Q00351_BlackSwan/30916-03.htm
index 49766e1b55..deaaf13e55 100644
--- a/L2J_DataPack/dist/game/data/scripts/quests/351_BlackSwan/30916-03.htm
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00351_BlackSwan/30916-03.htm
@@ -1,3 +1,3 @@
 <html><body>Captain Gosta:<br>
-Regardless of his character,<font color="LEVEL"> Duke Iason Heine</font> has a point. The<font color="LEVEL"> Tasaba lizardmen</font> are definitely a menace to Innadril. It would be one thing if all they did was attack travelers, but now it is said they have something far more sinister planned... Take this order. I wish you luck.
-</body></html>
+Regardless of his character, <font color="LEVEL">Duke Iason Heine</font> has a point. The <font color="LEVEL">Tasaba lizardmen</font> are definitely a menace to Innadril. It would be one thing if all they did was attack travelers, but now it is said they have something far more sinister planned... Take this order. I wish you luck.
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/Q00351_BlackSwan/30916-04.html b/L2J_DataPack/dist/game/data/scripts/quests/Q00351_BlackSwan/30916-04.html
new file mode 100644
index 0000000000..605e8e8c0b
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00351_BlackSwan/30916-04.html
@@ -0,0 +1,4 @@
+<html><body>Captain Gosta:<br>
+Don't you realize that the Heine family is the most prominent family in all of Heine? For years they have dominated Innadril's commerce and it is rumored that their personal fortune has swelled to several billion Adena. Now word comes that cargo belonging to Iason Heine, the patriarch of the Heine family has been stolen... Why am I telling you this. You can't do anything about it...<br>
+(This quest can only be undertaken by a character of level 32 or higher.)
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/351_BlackSwan/30916-04.htm b/L2J_DataPack/dist/game/data/scripts/quests/Q00351_BlackSwan/30916-05.html
similarity index 72%
rename from L2J_DataPack/dist/game/data/scripts/quests/351_BlackSwan/30916-04.htm
rename to L2J_DataPack/dist/game/data/scripts/quests/Q00351_BlackSwan/30916-05.html
index 316798bc2b..077abbf466 100644
--- a/L2J_DataPack/dist/game/data/scripts/quests/351_BlackSwan/30916-04.htm
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00351_BlackSwan/30916-05.html
@@ -1,3 +1,3 @@
 <html><body>Captain Gosta:<br>
-How is your mission coming along? He may have many faults, but one thing you can say about<font color="LEVEL"> Duke Iason Heine</font>, he is not a miser. You will be well-compensated for your efforts. Still, you mustn't believe everything he says...
-</body></html>
+How is your mission coming along? He may have many faults, but one thing you can say about <font color="LEVEL">Duke Iason Heine</font>, he is not a miser. You will be well-compensated for your efforts. Still, you mustn't believe everything he says...
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/Q00351_BlackSwan/30969-01.html b/L2J_DataPack/dist/game/data/scripts/quests/Q00351_BlackSwan/30969-01.html
new file mode 100644
index 0000000000..ce9c115f4f
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00351_BlackSwan/30969-01.html
@@ -0,0 +1,5 @@
+<html><body>Iason Heine:<br>
+Oh, my! I should have noticed the captain's seal earlier! So you are here to help me.... What has become of those filthy <font color="LEVEL">Tasaba lizardmen</font>? Have you recovered any of the stolen cargo?<br>
+<a action="bypass -h Quest Q00351_BlackSwan 30969-02.html">"Here are the fangs of the lizardmen."</a><br>
+<a action="bypass -h Quest Q00351_BlackSwan 30969-05.html">"Here is the cargo we recovered."</a>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/351_BlackSwan/30969-02a.htm b/L2J_DataPack/dist/game/data/scripts/quests/Q00351_BlackSwan/30969-02.html
similarity index 69%
rename from L2J_DataPack/dist/game/data/scripts/quests/351_BlackSwan/30969-02a.htm
rename to L2J_DataPack/dist/game/data/scripts/quests/Q00351_BlackSwan/30969-02.html
index b8a12fb2a4..71b2b282e3 100644
--- a/L2J_DataPack/dist/game/data/scripts/quests/351_BlackSwan/30969-02a.htm
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00351_BlackSwan/30969-02.html
@@ -1,4 +1,4 @@
 <html><body>Iason Heine:<br>
-Unless you present proof that you have killed the lizardmen I will be unable to compensate you. This has nothing to with trust. I believe what you say, I just must have the fangs. I have turned away others who lacked proof. If I were to give you special treatment there would be reprisals against me. Do you understand? Go and get the<font color="LEVEL"> lizardmen fangs</font>.<br>
-<a action="bypass -h Quest 351_BlackSwan 30969-04.htm">Return</a>
-</body></html>
+Unless you present proof that you have killed the lizardmen I will be unable to compensate you. This has nothing to with trust. I believe what you say, I just must have the fangs. I have turned away others who lacked proof. If I were to give you special treatment there would be reprisals against me. Do you understand? Go and get the <font color="LEVEL">lizardmen fangs</font>.<br>
+<a action="bypass -h Quest Q00351_BlackSwan 30969-03.html">Return</a>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/Q00351_BlackSwan/30969-03.html b/L2J_DataPack/dist/game/data/scripts/quests/Q00351_BlackSwan/30969-03.html
new file mode 100644
index 0000000000..992a5bcbb4
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00351_BlackSwan/30969-03.html
@@ -0,0 +1,6 @@
+<html><body>Iason Heine:<br>
+Is there anything else I can do for you? The ranks of the Tasaba lizardmen are swelling as we speak. They must be dealt with. Please don't quit now.<br>
+<a action="bypass -h Quest Q00351_BlackSwan 30969-02.html">Show the Tasaba lizardmen fangs.</a><br>
+<a action="bypass -h Quest Q00351_BlackSwan 30969-05.html">Show the wooden barrels that belong to the trade guild.</a><br>
+<a action="bypass -h Quest Q00351_BlackSwan 30969-07.html">Quit the task.</a>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/Q00351_BlackSwan/30969-04.html b/L2J_DataPack/dist/game/data/scripts/quests/Q00351_BlackSwan/30969-04.html
new file mode 100644
index 0000000000..50eb66c7b1
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00351_BlackSwan/30969-04.html
@@ -0,0 +1,4 @@
+<html><body>Iason Heine:<br>
+Let's see... We agreed upon 20 adena per fang, correct? Then the total is... this. Correct?<br>
+<a action="bypass -h Quest Q00351_BlackSwan 30969-03.html">Return</a>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/351_BlackSwan/30969-03a.htm b/L2J_DataPack/dist/game/data/scripts/quests/Q00351_BlackSwan/30969-05.html
similarity index 75%
rename from L2J_DataPack/dist/game/data/scripts/quests/351_BlackSwan/30969-03a.htm
rename to L2J_DataPack/dist/game/data/scripts/quests/Q00351_BlackSwan/30969-05.html
index 627efb340e..2c41578aa5 100644
--- a/L2J_DataPack/dist/game/data/scripts/quests/351_BlackSwan/30969-03a.htm
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00351_BlackSwan/30969-05.html
@@ -1,4 +1,4 @@
 <html><body>Iason Heine:<br>
 Ah, you have recovered our trade guild's wooden barrel? That is wonderful news! Where is it? Is it in a warehouse? Please bring it to me right away! ... I hope you didn't try to open it! Or send it somewhere else? Ha! Just kidding.<br>
-<a action="bypass -h Quest 351_BlackSwan 30969-04.htm">Return</a>
-</body></html>
+<a action="bypass -h Quest Q00351_BlackSwan 30969-03.html">Return</a>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/Q00351_BlackSwan/30969-06.html b/L2J_DataPack/dist/game/data/scripts/quests/Q00351_BlackSwan/30969-06.html
new file mode 100644
index 0000000000..26d4cbbe62
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00351_BlackSwan/30969-06.html
@@ -0,0 +1,5 @@
+<html><body>Iason Heine:<br>
+Oh yes, that is definitely the cargo that was stolen from our trade guild. But this is not all of it. There is still much to be recovered. Please continue to look for it.<br>
+Ah, the reward. I only have a small amount of cash on me. I'll tell you what, take this bill to <font color="LEVEL">Head Blacksmith Roman</font> of the Blacksmith Guild. He will take care of you.<br>
+<a action="bypass -h Quest Q00351_BlackSwan 30969-03.html">Return</a>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/351_BlackSwan/30969-05.htm b/L2J_DataPack/dist/game/data/scripts/quests/Q00351_BlackSwan/30969-07.html
similarity index 63%
rename from L2J_DataPack/dist/game/data/scripts/quests/351_BlackSwan/30969-05.htm
rename to L2J_DataPack/dist/game/data/scripts/quests/Q00351_BlackSwan/30969-07.html
index 80ce9bde94..d05956b0e5 100644
--- a/L2J_DataPack/dist/game/data/scripts/quests/351_BlackSwan/30969-05.htm
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00351_BlackSwan/30969-07.html
@@ -1,6 +1,6 @@
 <html><body>Iason Heine:<br>
 How can you leave us like this? Most of our stolen cargo has yet to be recovered... and, even more importantly, the Tasaba lizardmen are increasingly threatening our precious Innadril!<br>
 ... Do you know something I don't? Please reconsider your decision!<br>
-<a action="bypass -h Quest 351_BlackSwan 30969-04.htm">Return</a>
-<a action="bypass -h Quest 351_BlackSwan 30969-06.htm">Quit the task.</a>
-</body></html>
+<a action="bypass -h Quest Q00351_BlackSwan 30969-03.html">Return</a><br>
+<a action="bypass -h Quest Q00351_BlackSwan 30969-09.html">"I quit."</a>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/351_BlackSwan/30969-06.htm b/L2J_DataPack/dist/game/data/scripts/quests/Q00351_BlackSwan/30969-08.html
similarity index 68%
rename from L2J_DataPack/dist/game/data/scripts/quests/351_BlackSwan/30969-06.htm
rename to L2J_DataPack/dist/game/data/scripts/quests/Q00351_BlackSwan/30969-08.html
index 2d8ae985f0..df51757aef 100644
--- a/L2J_DataPack/dist/game/data/scripts/quests/351_BlackSwan/30969-06.htm
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00351_BlackSwan/30969-08.html
@@ -1,4 +1,4 @@
 <html><body>Iason Heine:<br>
 OK, look, you can quit any time you want to, but you still need to be paid, right? Let's take care of that and then talk about whether or not you'll quit...<br>
-<a action="bypass -h Quest 351_BlackSwan 30969-04.htm">Return</a>
-</body></html>
+<a action="bypass -h Quest Q00351_BlackSwan 30969-03.html">Return</a>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/351_BlackSwan/30969-07.htm b/L2J_DataPack/dist/game/data/scripts/quests/Q00351_BlackSwan/30969-09.html
similarity index 90%
rename from L2J_DataPack/dist/game/data/scripts/quests/351_BlackSwan/30969-07.htm
rename to L2J_DataPack/dist/game/data/scripts/quests/Q00351_BlackSwan/30969-09.html
index e6916f97be..e3e6bc4d30 100644
--- a/L2J_DataPack/dist/game/data/scripts/quests/351_BlackSwan/30969-07.htm
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00351_BlackSwan/30969-09.html
@@ -1,3 +1,3 @@
 <html><body>Iason Heine:<br>
 You are very hard-headed! Well, as I said, you are free to go. Have a safe trip... and don't forget to come and visit me occasionally.
-</body></html>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/Q00351_BlackSwan/Q00351_BlackSwan.java b/L2J_DataPack/dist/game/data/scripts/quests/Q00351_BlackSwan/Q00351_BlackSwan.java
new file mode 100644
index 0000000000..604f70aa09
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00351_BlackSwan/Q00351_BlackSwan.java
@@ -0,0 +1,228 @@
+/*
+ * 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.Q00351_BlackSwan;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import quests.Q00345_MethodToRaiseTheDead.Q00345_MethodToRaiseTheDead;
+
+import com.l2jserver.gameserver.enums.QuestSound;
+import com.l2jserver.gameserver.model.actor.L2Npc;
+import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jserver.gameserver.model.quest.Quest;
+import com.l2jserver.gameserver.model.quest.QuestState;
+import com.l2jserver.gameserver.util.Util;
+
+/**
+ * Black Swan (351)
+ * @author Adry_85
+ */
+public final class Q00351_BlackSwan extends Quest
+{
+	// NPCs
+	private static final int ROMAN = 30897;
+	private static final int GOSTA = 30916;
+	private static final int IASON_HEINE = 30969;
+	// Items
+	private static final int ORDER_OF_GOSTA = 4296;
+	private static final int LIZARD_FANG = 4297;
+	private static final int BARREL_OF_LEAGUE = 4298;
+	private static final int BILL_OF_IASON_HEINE = 4407;
+	// Misc
+	private static final int MIN_LEVEL = 32;
+	// Monsters
+	private static final int TASABA_LIZARDMAN1 = 20784;
+	private static final int TASABA_LIZARDMAN_SHAMAN1 = 20785;
+	private static final int TASABA_LIZARDMAN2 = 21639;
+	private static final int TASABA_LIZARDMAN_SHAMAN2 = 21640;
+	private static final Map<Integer, Integer> MONSTER_DROP_CHANCES = new HashMap<>();
+	static
+	{
+		MONSTER_DROP_CHANCES.put(TASABA_LIZARDMAN1, 4);
+		MONSTER_DROP_CHANCES.put(TASABA_LIZARDMAN_SHAMAN1, 3);
+		MONSTER_DROP_CHANCES.put(TASABA_LIZARDMAN2, 4);
+		MONSTER_DROP_CHANCES.put(TASABA_LIZARDMAN_SHAMAN2, 3);
+	}
+	
+	public Q00351_BlackSwan()
+	{
+		super(351, Q00351_BlackSwan.class.getSimpleName(), "Black Swan");
+		addStartNpc(GOSTA, ROMAN);
+		addTalkId(GOSTA, IASON_HEINE, ROMAN);
+		addKillId(TASABA_LIZARDMAN1, TASABA_LIZARDMAN_SHAMAN1, TASABA_LIZARDMAN2, TASABA_LIZARDMAN_SHAMAN2);
+		registerQuestItems(ORDER_OF_GOSTA, LIZARD_FANG, BARREL_OF_LEAGUE);
+	}
+	
+	@Override
+	public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
+	{
+		final QuestState qs = getQuestState(player, false);
+		if (qs == null)
+		{
+			return null;
+		}
+		
+		String htmltext = null;
+		switch (event)
+		{
+			case "30916-02.htm":
+			case "30969-03.html":
+			{
+				htmltext = event;
+				break;
+			}
+			case "30916-03.htm":
+			{
+				giveItems(player, ORDER_OF_GOSTA, 1);
+				qs.startQuest();
+				htmltext = event;
+				break;
+			}
+			case "30969-02.html":
+			{
+				final long lizardFangCount = getQuestItemsCount(player, LIZARD_FANG);
+				
+				if (lizardFangCount == 0)
+				{
+					htmltext = event;
+				}
+				else
+				{
+					final long adenaBonus = (lizardFangCount >= 10) ? 3880 : 0;
+					giveAdena(player, adenaBonus + (20 * lizardFangCount), true);
+					takeItems(player, LIZARD_FANG, -1);
+					htmltext = "30969-04.html";
+				}
+				break;
+			}
+			case "30969-05.html":
+			{
+				final long barrelOfLeagueCount = getQuestItemsCount(player, BARREL_OF_LEAGUE);
+				
+				if (barrelOfLeagueCount == 0)
+				{
+					htmltext = event;
+				}
+				else
+				{
+					giveItems(player, BILL_OF_IASON_HEINE, barrelOfLeagueCount);
+					giveAdena(player, 3880, true);
+					takeItems(player, BARREL_OF_LEAGUE, -1);
+					qs.setCond(2);
+					htmltext = "30969-06.html";
+				}
+				break;
+			}
+			case "30969-07.html":
+			{
+				htmltext = (!hasQuestItems(player, BARREL_OF_LEAGUE, LIZARD_FANG)) ? event : "30969-08.html";
+				break;
+			}
+			case "30969-09.html":
+			{
+				htmltext = event;
+				qs.exitQuest(true, true);
+				break;
+			}
+		}
+		return htmltext;
+	}
+	
+	@Override
+	public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
+	{
+		final QuestState qs = getRandomPartyMemberState(killer, -1, 3, npc);
+		
+		if ((qs == null) || !Util.checkIfInRange(1500, npc, killer, true))
+		{
+			return null;
+		}
+		
+		final int random = getRandom(20);
+		if (random < 10)
+		{
+			giveItems(qs.getPlayer(), LIZARD_FANG, 1);
+			playSound(qs.getPlayer(), QuestSound.ITEMSOUND_QUEST_ITEMGET);
+			
+			if (getRandom(20) == 0)
+			{
+				giveItems(qs.getPlayer(), BARREL_OF_LEAGUE, 1);
+			}
+		}
+		else if (random < 15)
+		{
+			giveItems(qs.getPlayer(), LIZARD_FANG, 2);
+			playSound(qs.getPlayer(), QuestSound.ITEMSOUND_QUEST_ITEMGET);
+			
+			if (getRandom(20) == 0)
+			{
+				giveItems(qs.getPlayer(), BARREL_OF_LEAGUE, 1);
+			}
+		}
+		else if (getRandom(100) < MONSTER_DROP_CHANCES.get(npc.getId()))
+		{
+			giveItems(qs.getPlayer(), BARREL_OF_LEAGUE, 1);
+			playSound(qs.getPlayer(), QuestSound.ITEMSOUND_QUEST_ITEMGET);
+		}
+		
+		return super.onKill(npc, killer, isSummon);
+	}
+	
+	@Override
+	public String onTalk(L2Npc npc, L2PcInstance player)
+	{
+		QuestState qs = getQuestState(player, true);
+		QuestState qs2 = player.getQuestState(Q00345_MethodToRaiseTheDead.class.getSimpleName());
+		String htmltext = getNoQuestMsg(player);
+		
+		switch (npc.getId())
+		{
+			case GOSTA:
+			{
+				if (qs.isCreated())
+				{
+					htmltext = (player.getLevel() >= MIN_LEVEL) ? "30916-01.htm" : "30916-04.html";
+				}
+				else if (qs.isStarted())
+				{
+					htmltext = "30916-05.html";
+				}
+				break;
+			}
+			case IASON_HEINE:
+			{
+				if (qs.isStarted())
+				{
+					htmltext = "30969-01.html";
+				}
+				break;
+			}
+			case ROMAN:
+			{
+				if (qs.isStarted() || ((qs2 != null) && qs2.isStarted()))
+				{
+					htmltext = (hasQuestItems(player, BILL_OF_IASON_HEINE)) ? "30897-01.html" : "30897-02.html";
+				}
+				break;
+			}
+		}
+		return htmltext;
+	}
+}
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/QuestMasterHandler.java b/L2J_DataPack/dist/game/data/scripts/quests/QuestMasterHandler.java
index 8e8c020ea4..a1353092af 100644
--- a/L2J_DataPack/dist/game/data/scripts/quests/QuestMasterHandler.java
+++ b/L2J_DataPack/dist/game/data/scripts/quests/QuestMasterHandler.java
@@ -288,6 +288,7 @@ import quests.Q00344_1000YearsTheEndOfLamentation.Q00344_1000YearsTheEndOfLament
 import quests.Q00345_MethodToRaiseTheDead.Q00345_MethodToRaiseTheDead;
 import quests.Q00347_GoGetTheCalculator.Q00347_GoGetTheCalculator;
 import quests.Q00350_EnhanceYourWeapon.Q00350_EnhanceYourWeapon;
+import quests.Q00351_BlackSwan.Q00351_BlackSwan;
 import quests.Q00352_HelpRoodRaiseANewPet.Q00352_HelpRoodRaiseANewPet;
 import quests.Q00354_ConquestOfAlligatorIsland.Q00354_ConquestOfAlligatorIsland;
 import quests.Q00355_FamilyHonor.Q00355_FamilyHonor;
@@ -736,6 +737,7 @@ public class QuestMasterHandler
 		Q00345_MethodToRaiseTheDead.class,
 		Q00347_GoGetTheCalculator.class,
 		Q00350_EnhanceYourWeapon.class,
+		Q00351_BlackSwan.class,
 		Q00352_HelpRoodRaiseANewPet.class,
 		Q00354_ConquestOfAlligatorIsland.class,
 		Q00355_FamilyHonor.class,
diff --git a/L2J_DataPack/dist/sql/game/updates/20141122update.sql b/L2J_DataPack/dist/sql/game/updates/20141122update.sql
index ce43e43de7..a2555dc7ae 100644
--- a/L2J_DataPack/dist/sql/game/updates/20141122update.sql
+++ b/L2J_DataPack/dist/sql/game/updates/20141122update.sql
@@ -1,3 +1,4 @@
 UPDATE character_quests SET name='Q00228_TestOfMagus' WHERE name='228_TestOfMagus'; 
 UPDATE character_quests SET name='Q00229_TestOfWitchcraft' WHERE name='229_TestOfWitchcraft'; 
-UPDATE character_quests SET name='Q00232_TestOfTheLord' WHERE name='232_TestOfLord'; 
\ No newline at end of file
+UPDATE character_quests SET name='Q00232_TestOfTheLord' WHERE name='232_TestOfLord'; 
+UPDATE character_quests SET name='Q00351_BlackSwan' WHERE name='351_BlackSwan';
\ No newline at end of file
-- 
GitLab