From 41d1e73b53f0d2bd61d84cfcfa95f62d05d4c67b Mon Sep 17 00:00:00 2001
From: Zealar <zealar@mail.bg>
Date: Fri, 18 Dec 2015 00:04:47 +0200
Subject: [PATCH] The Wishing Potion to Java (334)

Fix #204
---
 dist/game/data/scripts.cfg                    |    1 -
 .../quests/334_TheWishingPotion/30557-01.htm  |    2 -
 .../quests/334_TheWishingPotion/30738-01.htm  |    3 -
 .../quests/334_TheWishingPotion/30738-02.htm  |    3 -
 .../quests/334_TheWishingPotion/30738-03.htm  |    2 -
 .../quests/334_TheWishingPotion/30738-04.htm  |    2 -
 .../quests/334_TheWishingPotion/30738-05.htm  |    5 -
 .../quests/334_TheWishingPotion/30738-06.htm  |    2 -
 .../quests/334_TheWishingPotion/30738-07.htm  |    2 -
 .../quests/334_TheWishingPotion/30738-08.htm  |    3 -
 .../quests/334_TheWishingPotion/30738-09.htm  |    3 -
 .../quests/334_TheWishingPotion/30738-10.htm  |    3 -
 .../quests/334_TheWishingPotion/30738-11.htm  |    4 -
 .../quests/334_TheWishingPotion/30738-12.htm  |    2 -
 .../quests/334_TheWishingPotion/30738-15.htm  |   14 -
 .../quests/334_TheWishingPotion/30738-16.htm  |    2 -
 .../quests/334_TheWishingPotion/30738-17.htm  |    2 -
 .../quests/334_TheWishingPotion/30738-18.htm  |    2 -
 .../quests/334_TheWishingPotion/30738-19.htm  |    2 -
 .../quests/334_TheWishingPotion/30738-20.htm  |    2 -
 .../quests/334_TheWishingPotion/30738-21.htm  |    3 -
 .../quests/334_TheWishingPotion/30742-01.htm  |    2 -
 .../quests/334_TheWishingPotion/30743-01.htm  |    2 -
 .../quests/334_TheWishingPotion/30743-02.htm  |    2 -
 .../quests/334_TheWishingPotion/30743-03.htm  |    2 -
 .../quests/334_TheWishingPotion/30743-04.htm  |    2 -
 .../quests/334_TheWishingPotion/30743-05.htm  |    2 -
 .../quests/334_TheWishingPotion/30743-06.htm  |    2 -
 .../quests/334_TheWishingPotion/__init__.py   |  360 ------
 .../quests/334_TheWishingPotion/no_quest.htm  |    1 -
 .../Q00334_TheWishingPotion/30557-01.html     |    3 +
 .../Q00334_TheWishingPotion/30738-01.html     |    3 +
 .../Q00334_TheWishingPotion/30738-02.html     |    4 +
 .../Q00334_TheWishingPotion/30738-03.htm      |    4 +
 .../Q00334_TheWishingPotion/30738-04.htm      |    3 +
 .../Q00334_TheWishingPotion/30738-05.html     |    3 +
 .../Q00334_TheWishingPotion/30738-06.html     |    6 +
 .../Q00334_TheWishingPotion/30738-07.html     |    3 +
 .../Q00334_TheWishingPotion/30738-08.html     |    3 +
 .../Q00334_TheWishingPotion/30738-09.html     |    4 +
 .../Q00334_TheWishingPotion/30738-10.html     |    4 +
 .../Q00334_TheWishingPotion/30738-11.html     |    4 +
 .../Q00334_TheWishingPotion/30738-12.html     |    5 +
 .../Q00334_TheWishingPotion/30738-13.html     |   15 +
 .../30738-14.html}                            |    3 +-
 .../Q00334_TheWishingPotion/30738-15.html     |    3 +
 .../30738-15a.html}                           |    3 +-
 .../Q00334_TheWishingPotion/30738-16.html     |    3 +
 .../Q00334_TheWishingPotion/30738-17.html     |    3 +
 .../Q00334_TheWishingPotion/30738-18.html     |    3 +
 .../Q00334_TheWishingPotion/30738-19.html     |    3 +
 .../Q00334_TheWishingPotion/30738-20.html     |    3 +
 .../Q00334_TheWishingPotion/30742-01.html     |    3 +
 .../30742-02.html}                            |    3 +-
 .../Q00334_TheWishingPotion/30743-02.html     |    4 +
 .../Q00334_TheWishingPotion/30743-03.html     |    4 +
 .../Q00334_TheWishingPotion/30743-04.html     |    4 +
 .../Q00334_TheWishingPotion/30743-05.html     |    4 +
 .../Q00334_TheWishingPotion/30743-06.html     |    4 +
 .../Q00334_TheWishingPotion.java              | 1085 +++++++++++++++++
 .../scripts/quests/QuestMasterHandler.java    |    2 +
 dist/sql/game/updates/20151128update.sql      |    5 +-
 62 files changed, 1201 insertions(+), 444 deletions(-)
 delete mode 100644 dist/game/data/scripts/quests/334_TheWishingPotion/30557-01.htm
 delete mode 100644 dist/game/data/scripts/quests/334_TheWishingPotion/30738-01.htm
 delete mode 100644 dist/game/data/scripts/quests/334_TheWishingPotion/30738-02.htm
 delete mode 100644 dist/game/data/scripts/quests/334_TheWishingPotion/30738-03.htm
 delete mode 100644 dist/game/data/scripts/quests/334_TheWishingPotion/30738-04.htm
 delete mode 100644 dist/game/data/scripts/quests/334_TheWishingPotion/30738-05.htm
 delete mode 100644 dist/game/data/scripts/quests/334_TheWishingPotion/30738-06.htm
 delete mode 100644 dist/game/data/scripts/quests/334_TheWishingPotion/30738-07.htm
 delete mode 100644 dist/game/data/scripts/quests/334_TheWishingPotion/30738-08.htm
 delete mode 100644 dist/game/data/scripts/quests/334_TheWishingPotion/30738-09.htm
 delete mode 100644 dist/game/data/scripts/quests/334_TheWishingPotion/30738-10.htm
 delete mode 100644 dist/game/data/scripts/quests/334_TheWishingPotion/30738-11.htm
 delete mode 100644 dist/game/data/scripts/quests/334_TheWishingPotion/30738-12.htm
 delete mode 100644 dist/game/data/scripts/quests/334_TheWishingPotion/30738-15.htm
 delete mode 100644 dist/game/data/scripts/quests/334_TheWishingPotion/30738-16.htm
 delete mode 100644 dist/game/data/scripts/quests/334_TheWishingPotion/30738-17.htm
 delete mode 100644 dist/game/data/scripts/quests/334_TheWishingPotion/30738-18.htm
 delete mode 100644 dist/game/data/scripts/quests/334_TheWishingPotion/30738-19.htm
 delete mode 100644 dist/game/data/scripts/quests/334_TheWishingPotion/30738-20.htm
 delete mode 100644 dist/game/data/scripts/quests/334_TheWishingPotion/30738-21.htm
 delete mode 100644 dist/game/data/scripts/quests/334_TheWishingPotion/30742-01.htm
 delete mode 100644 dist/game/data/scripts/quests/334_TheWishingPotion/30743-01.htm
 delete mode 100644 dist/game/data/scripts/quests/334_TheWishingPotion/30743-02.htm
 delete mode 100644 dist/game/data/scripts/quests/334_TheWishingPotion/30743-03.htm
 delete mode 100644 dist/game/data/scripts/quests/334_TheWishingPotion/30743-04.htm
 delete mode 100644 dist/game/data/scripts/quests/334_TheWishingPotion/30743-05.htm
 delete mode 100644 dist/game/data/scripts/quests/334_TheWishingPotion/30743-06.htm
 delete mode 100644 dist/game/data/scripts/quests/334_TheWishingPotion/__init__.py
 delete mode 100644 dist/game/data/scripts/quests/334_TheWishingPotion/no_quest.htm
 create mode 100644 dist/game/data/scripts/quests/Q00334_TheWishingPotion/30557-01.html
 create mode 100644 dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-01.html
 create mode 100644 dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-02.html
 create mode 100644 dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-03.htm
 create mode 100644 dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-04.htm
 create mode 100644 dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-05.html
 create mode 100644 dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-06.html
 create mode 100644 dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-07.html
 create mode 100644 dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-08.html
 create mode 100644 dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-09.html
 create mode 100644 dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-10.html
 create mode 100644 dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-11.html
 create mode 100644 dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-12.html
 create mode 100644 dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-13.html
 rename dist/game/data/scripts/quests/{334_TheWishingPotion/30738-14.htm => Q00334_TheWishingPotion/30738-14.html} (65%)
 create mode 100644 dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-15.html
 rename dist/game/data/scripts/quests/{334_TheWishingPotion/30738-13.htm => Q00334_TheWishingPotion/30738-15a.html} (68%)
 create mode 100644 dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-16.html
 create mode 100644 dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-17.html
 create mode 100644 dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-18.html
 create mode 100644 dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-19.html
 create mode 100644 dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-20.html
 create mode 100644 dist/game/data/scripts/quests/Q00334_TheWishingPotion/30742-01.html
 rename dist/game/data/scripts/quests/{334_TheWishingPotion/30742-02.htm => Q00334_TheWishingPotion/30742-02.html} (73%)
 create mode 100644 dist/game/data/scripts/quests/Q00334_TheWishingPotion/30743-02.html
 create mode 100644 dist/game/data/scripts/quests/Q00334_TheWishingPotion/30743-03.html
 create mode 100644 dist/game/data/scripts/quests/Q00334_TheWishingPotion/30743-04.html
 create mode 100644 dist/game/data/scripts/quests/Q00334_TheWishingPotion/30743-05.html
 create mode 100644 dist/game/data/scripts/quests/Q00334_TheWishingPotion/30743-06.html
 create mode 100644 dist/game/data/scripts/quests/Q00334_TheWishingPotion/Q00334_TheWishingPotion.java

diff --git a/dist/game/data/scripts.cfg b/dist/game/data/scripts.cfg
index 84dc6def1c..bb10624cc8 100644
--- a/dist/game/data/scripts.cfg
+++ b/dist/game/data/scripts.cfg
@@ -188,7 +188,6 @@ hellbound/HellboundLoader.java
 quests/QuestMasterHandler.java
 quests/TerritoryWarScripts/TerritoryWarSuperClass.java
 quests/255_Tutorial/__init__.py
-quests/334_TheWishingPotion/__init__.py
 quests/335_TheSongOfTheHunter/__init__.py
 quests/348_ArrogantSearch/__init__.py
 quests/384_WarehouseKeepersPastime/__init__.py
diff --git a/dist/game/data/scripts/quests/334_TheWishingPotion/30557-01.htm b/dist/game/data/scripts/quests/334_TheWishingPotion/30557-01.htm
deleted file mode 100644
index 1f19a4ef20..0000000000
--- a/dist/game/data/scripts/quests/334_TheWishingPotion/30557-01.htm
+++ /dev/null
@@ -1,2 +0,0 @@
-<html><body>Torai:<br>
-Oh my! This... is a priceless book. Sell it to me...! I'll give you a high price for it... Heh heh heh...</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/334_TheWishingPotion/30738-01.htm b/dist/game/data/scripts/quests/334_TheWishingPotion/30738-01.htm
deleted file mode 100644
index c69a218ec4..0000000000
--- a/dist/game/data/scripts/quests/334_TheWishingPotion/30738-01.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-<html><body>Alchemist Matild:<br>
-Since I learned herbal medicine when I was young and started to make magic potions 20 years ago, people say that I'm the very best in my field. But I think I've still got a long way to go. There are many mysterious potions passed down only through the ancient lore that I haven't made yet. But hey, just a short time ago I came to know by accident where the secret method for making one of the mysterious potions is stored. There is a clue written inside the book that I have. So it would be good if you would help me...<br>
-<a action="bypass -h Quest 334_TheWishingPotion 30738-02.htm">Ask what you can do to help.</a></body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/334_TheWishingPotion/30738-02.htm b/dist/game/data/scripts/quests/334_TheWishingPotion/30738-02.htm
deleted file mode 100644
index ae20eb372b..0000000000
--- a/dist/game/data/scripts/quests/334_TheWishingPotion/30738-02.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-<html><body>Alchemist Matild:<br>
-This alchemy textbook tells about the place where the book of problems is hidden. I'd like you to refer to this and find the secret book.<br>
-<a action="bypass -h Quest 334_TheWishingPotion 30738-03.htm">Say that you will find the secret book.</a></body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/334_TheWishingPotion/30738-03.htm b/dist/game/data/scripts/quests/334_TheWishingPotion/30738-03.htm
deleted file mode 100644
index 626f6292fe..0000000000
--- a/dist/game/data/scripts/quests/334_TheWishingPotion/30738-03.htm
+++ /dev/null
@@ -1,2 +0,0 @@
-<html><body>Alchemist Matild:<br>
-Thank you. Ah, and take this book. Follow the clues written in this book and bring me the secret book of alchemy that is hidden. OK? Then I will definitely give you a surprising reward.</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/334_TheWishingPotion/30738-04.htm b/dist/game/data/scripts/quests/334_TheWishingPotion/30738-04.htm
deleted file mode 100644
index 30bbbfc44c..0000000000
--- a/dist/game/data/scripts/quests/334_TheWishingPotion/30738-04.htm
+++ /dev/null
@@ -1,2 +0,0 @@
-<html><body>Alchemist Matild:<br>
-Is the work of finding the secret book progressing well? Haven't finished yet? Then hurry, please.</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/334_TheWishingPotion/30738-05.htm b/dist/game/data/scripts/quests/334_TheWishingPotion/30738-05.htm
deleted file mode 100644
index 0a423ed024..0000000000
--- a/dist/game/data/scripts/quests/334_TheWishingPotion/30738-05.htm
+++ /dev/null
@@ -1,5 +0,0 @@
-<html><body>Alchemist Matild:<br>
-You brought the secret book! But...<br>
-Oh, I'm sorry. Actually, while you were away, somebody came with some precious ingredients and I spent my last adena purching them.<br>
-Hmm... What if I do this instead? The method for making wish potion is what's written in the secret book that you brought! I got most of the ingredients with this last purchase but there are still a few things I'm short of. If you'll just bring me those, I'll make wish potion for you that will grant you all of your wishes. How about that? Is that a good deal?<br>
-<a action="bypass -h Quest 334_TheWishingPotion 30738-06.htm">Say that you will bring the ingredients.</a></body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/334_TheWishingPotion/30738-06.htm b/dist/game/data/scripts/quests/334_TheWishingPotion/30738-06.htm
deleted file mode 100644
index 4d8df461e5..0000000000
--- a/dist/game/data/scripts/quests/334_TheWishingPotion/30738-06.htm
+++ /dev/null
@@ -1,2 +0,0 @@
-<html><body>Alchemist Matild:<br>
-Yahoo! Done deal! Thank you for putting up with my unreasonableness. OK, here is the ingredient list. Go get what's written here. Please!</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/334_TheWishingPotion/30738-07.htm b/dist/game/data/scripts/quests/334_TheWishingPotion/30738-07.htm
deleted file mode 100644
index 76e76f2dcb..0000000000
--- a/dist/game/data/scripts/quests/334_TheWishingPotion/30738-07.htm
+++ /dev/null
@@ -1,2 +0,0 @@
-<html><body>Alchemist Matild:<br>
-I'm sorry to say this but... We're still short on ingredients. What should we do? I just really can't start the work until you've gotten all the ingredients.</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/334_TheWishingPotion/30738-08.htm b/dist/game/data/scripts/quests/334_TheWishingPotion/30738-08.htm
deleted file mode 100644
index 57dd2efa0f..0000000000
--- a/dist/game/data/scripts/quests/334_TheWishingPotion/30738-08.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-<html><body>Alchemist Matild:<br>
-Umm... You've collected all the ingredients. You've done a great job. OK, shall we start?<br>
-<a action="bypass -h Quest 334_TheWishingPotion 30738-09.htm">Ask to make wish potion.</a></body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/334_TheWishingPotion/30738-09.htm b/dist/game/data/scripts/quests/334_TheWishingPotion/30738-09.htm
deleted file mode 100644
index db929bc0fc..0000000000
--- a/dist/game/data/scripts/quests/334_TheWishingPotion/30738-09.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-<html><body>Alchemist Matild:<br>
-Then take this herbal sap and apply it gently here! Yeah, if you mix it in well... the color changes, no? OK, next add it to this bottle and mix it... Could you give me that red bottle over there now?<br>
-<a action="bypass -h Quest 334_TheWishingPotion 30738-10.htm">Hand over red bottle.</a></body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/334_TheWishingPotion/30738-10.htm b/dist/game/data/scripts/quests/334_TheWishingPotion/30738-10.htm
deleted file mode 100644
index b1bbe8d1cf..0000000000
--- a/dist/game/data/scripts/quests/334_TheWishingPotion/30738-10.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-<html><body>Alchemist Matild:<br>
-Then carefully add wish scent... OK! It's done. Oh, but talk to me before using the wish potion. That's because there are some things to prepare before getting your wish.<br>
-And take this. It's my proof, but if you bring it I'll make you wish potion again. Of course, you'll have to gather together the ingredients then too. Alright, so this is gratitude enough, don't you think?</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/334_TheWishingPotion/30738-11.htm b/dist/game/data/scripts/quests/334_TheWishingPotion/30738-11.htm
deleted file mode 100644
index 37d32303c4..0000000000
--- a/dist/game/data/scripts/quests/334_TheWishingPotion/30738-11.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-<html><body>Alchemist Matild:<br>
-Ah, you there! Do you remember? You made a promise to me... What's the reason this time...? Are you wanting to take the wish potion? Or are you getting together the ingredients to make more wish potion?<br>
-<a action="bypass -h Quest 334_TheWishingPotion 30738-14.htm">Say that you will take the wish potion.</a><br>
-<a action="bypass -h Quest 334_TheWishingPotion 30738-06.htm">Say that you'll get the ingredients.</a></body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/334_TheWishingPotion/30738-12.htm b/dist/game/data/scripts/quests/334_TheWishingPotion/30738-12.htm
deleted file mode 100644
index bdf5bfee6e..0000000000
--- a/dist/game/data/scripts/quests/334_TheWishingPotion/30738-12.htm
+++ /dev/null
@@ -1,2 +0,0 @@
-<html><body>Alchemist Matild:<br>
-OK, just like you did last time, please gather the ingredients written here. I don't need to give you a long explanation about it, do I?</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/334_TheWishingPotion/30738-15.htm b/dist/game/data/scripts/quests/334_TheWishingPotion/30738-15.htm
deleted file mode 100644
index 930819a5ac..0000000000
--- a/dist/game/data/scripts/quests/334_TheWishingPotion/30738-15.htm
+++ /dev/null
@@ -1,14 +0,0 @@
-<html><body>Alchemist Matild:<br>
-You are allowed one wish after taking the potion. You will choose from one of the four wishes on this card.
-<table>
-<tr>
-<td><img src="icon.Quest_TarotCard_Knowledge_t00" width=64 height=112></td>
-<td><img src="icon.Quest_TarotCard_Love_t00" width=64 height=112></td>
-<td><img src="icon.Quest_TarotCard_Power_t00" width=64 height=112></td>
-<td><img src="icon.Quest_TarotCard_Wealth_t00" width=64 height=112></td>
-</tr>
-</table><br>
-<a action="bypass -h Quest 334_TheWishingPotion 30738-16.htm">"I wish to be a loving person."</a><br>
-<a action="bypass -h Quest 334_TheWishingPotion 30738-17.htm">"I wish for 100 million adena."</a><br>
-<a action="bypass -h Quest 334_TheWishingPotion 30738-18.htm">"I wish to be a king!"</a><br>
-<a action="bypass -h Quest 334_TheWishingPotion 30738-19.htm">"I wish to be the wisest person in the world."</a></body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/334_TheWishingPotion/30738-16.htm b/dist/game/data/scripts/quests/334_TheWishingPotion/30738-16.htm
deleted file mode 100644
index 86771fafca..0000000000
--- a/dist/game/data/scripts/quests/334_TheWishingPotion/30738-16.htm
+++ /dev/null
@@ -1,2 +0,0 @@
-<html><body>Alchemist Matild:<br>
-To begin the ceremony you must first apply the blood of crow to your forehead and then shake the wing of fairy three times...</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/334_TheWishingPotion/30738-17.htm b/dist/game/data/scripts/quests/334_TheWishingPotion/30738-17.htm
deleted file mode 100644
index ff2786d9a3..0000000000
--- a/dist/game/data/scripts/quests/334_TheWishingPotion/30738-17.htm
+++ /dev/null
@@ -1,2 +0,0 @@
-<html><body>Alchemist Matild:<br>
-To start the ceremony you must first apply the blood of crow to your forehead and then shake the leaf of timitran three times...</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/334_TheWishingPotion/30738-18.htm b/dist/game/data/scripts/quests/334_TheWishingPotion/30738-18.htm
deleted file mode 100644
index 85ad28d519..0000000000
--- a/dist/game/data/scripts/quests/334_TheWishingPotion/30738-18.htm
+++ /dev/null
@@ -1,2 +0,0 @@
-<html><body>Alchemist Matild:<br>
-To start the ceremony you must first apply the blood of crow to your forehead and then put the crown of glory on your head...</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/334_TheWishingPotion/30738-19.htm b/dist/game/data/scripts/quests/334_TheWishingPotion/30738-19.htm
deleted file mode 100644
index f40ecc476f..0000000000
--- a/dist/game/data/scripts/quests/334_TheWishingPotion/30738-19.htm
+++ /dev/null
@@ -1,2 +0,0 @@
-<html><body>Alchemist Matild:<br>
-To start the ceremony you must first apply the blood of crow to your forehead and then hit your head three times with a Sage's Staff...</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/334_TheWishingPotion/30738-20.htm b/dist/game/data/scripts/quests/334_TheWishingPotion/30738-20.htm
deleted file mode 100644
index ce648336ae..0000000000
--- a/dist/game/data/scripts/quests/334_TheWishingPotion/30738-20.htm
+++ /dev/null
@@ -1,2 +0,0 @@
-<html><body>Alchemist Matild:<br>
-You must wait, someone else is currently making a wish...</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/334_TheWishingPotion/30738-21.htm b/dist/game/data/scripts/quests/334_TheWishingPotion/30738-21.htm
deleted file mode 100644
index 513ab8611f..0000000000
--- a/dist/game/data/scripts/quests/334_TheWishingPotion/30738-21.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-<html><body>Alchemist Matild:<br>
-Many people have their eyes on the secrets of alchemy. You don't look like you'd be strong enough to protect those secrets from bad folks. I'm sorry but I can't talk to you about alchemy.<br>
-(This is a quest that can only be performed by characters at level 30 and above.)</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/334_TheWishingPotion/30742-01.htm b/dist/game/data/scripts/quests/334_TheWishingPotion/30742-01.htm
deleted file mode 100644
index 3461e842ab..0000000000
--- a/dist/game/data/scripts/quests/334_TheWishingPotion/30742-01.htm
+++ /dev/null
@@ -1,2 +0,0 @@
-<html><body>Fairy of Love Rupina:<br>
-Ah, it's you! Do you seek your true love? I'm sorry, but I am very busy and cannot help you now. Instead, take this pendant. It will help you to find your soul mate.</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/334_TheWishingPotion/30743-01.htm b/dist/game/data/scripts/quests/334_TheWishingPotion/30743-01.htm
deleted file mode 100644
index 899c751165..0000000000
--- a/dist/game/data/scripts/quests/334_TheWishingPotion/30743-01.htm
+++ /dev/null
@@ -1,2 +0,0 @@
-<html><body>Chest of Wisdom:<br>
-(A voice comes out of the chest.) They are magic scrolls that contain the wisdom of sages!</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/334_TheWishingPotion/30743-02.htm b/dist/game/data/scripts/quests/334_TheWishingPotion/30743-02.htm
deleted file mode 100644
index 1f7ea1dc5b..0000000000
--- a/dist/game/data/scripts/quests/334_TheWishingPotion/30743-02.htm
+++ /dev/null
@@ -1,2 +0,0 @@
-<html><body>Chest of Wisdom:<br>
-(A voice comes out of the chest.) I will give you a valuable piece of wisdom that will make you rich. If you find and take the forbidden love scroll and go see Torai, you can make yourself a huge amount of money.</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/334_TheWishingPotion/30743-03.htm b/dist/game/data/scripts/quests/334_TheWishingPotion/30743-03.htm
deleted file mode 100644
index 4f2381199d..0000000000
--- a/dist/game/data/scripts/quests/334_TheWishingPotion/30743-03.htm
+++ /dev/null
@@ -1,2 +0,0 @@
-<html><body>Chest of Wisdom:<br>
-(A voice comes out of the chest.) I will teach you a wise method to increase your wealth. Warehouse Keeper Sorint, Sorceress Page, Researcher Lorain, Warehouse Keeper Hagger, Guard Stan, Blacksmith Dunning, Magic Trader Ralph, Head Blacksmith Ferris, Warehouse Keeper Collob, and Grocer Pano... All these people are crazy about collecting weird coins!</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/334_TheWishingPotion/30743-04.htm b/dist/game/data/scripts/quests/334_TheWishingPotion/30743-04.htm
deleted file mode 100644
index 99bb3a9301..0000000000
--- a/dist/game/data/scripts/quests/334_TheWishingPotion/30743-04.htm
+++ /dev/null
@@ -1,2 +0,0 @@
-<html><body>Chest of Wisdom:<br>
-(A voice comes out of the chest.) I will tell you about the method of using the Wish Potion wisely. If you make a wish to become a ruler, I heard that you will be able to meet the Devil himself...</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/334_TheWishingPotion/30743-05.htm b/dist/game/data/scripts/quests/334_TheWishingPotion/30743-05.htm
deleted file mode 100644
index de41972a93..0000000000
--- a/dist/game/data/scripts/quests/334_TheWishingPotion/30743-05.htm
+++ /dev/null
@@ -1,2 +0,0 @@
-<html><body>Chest of Wisdom:<br>
-(A voice comes out of the chest.) I will tell you about the method of using the Wish Potion wisely. If you make a wish to obtain love, a succubus that will take pleasure in seducing and then giving pain to a man will appear. But why, when it is a woman, will a succubus still show up?</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/334_TheWishingPotion/30743-06.htm b/dist/game/data/scripts/quests/334_TheWishingPotion/30743-06.htm
deleted file mode 100644
index 002141acbb..0000000000
--- a/dist/game/data/scripts/quests/334_TheWishingPotion/30743-06.htm
+++ /dev/null
@@ -1,2 +0,0 @@
-<html><body>Chest of Wisdom:<br>
-(A voice comes out of the chest.) You are the chosen one. I present to you the treasure of knowledge as a gift.</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/334_TheWishingPotion/__init__.py b/dist/game/data/scripts/quests/334_TheWishingPotion/__init__.py
deleted file mode 100644
index 4fb604bace..0000000000
--- a/dist/game/data/scripts/quests/334_TheWishingPotion/__init__.py
+++ /dev/null
@@ -1,360 +0,0 @@
-#
-# Created by DraX on 2005.09.08
-# C4 Update by DrLecter
-#
-
-import sys
-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
-
-qn = "334_TheWishingPotion"
-
-# General Rewards
-ADENA                  =   57
-NECKLACE_OF_GRACE      =  931
-HEART_OF_PAAGRIO       = 3943
-R1=[3081,3076,3075,3074,4917,3077,3080,3079,3078,4928,4931,4932,5013,3067,3064,3061,3062,3058,4206,3065,3060,3063,4208,3057,3059,3066,4911,4918,3092,3039,4922,3091,3093,3431]
-R2=[3430,3429,3073,3941,3071,3069,3072,4200,3068,3070,4912,3100,3101,3098,3094,3102,4913,3095,3096,3097,3099,3085,3086,3082,4907,3088,4207,3087,3084,3083,4929,4933,4919,3045]
-R3=[4923,4201,4914,3942,3090,4909,3089,4930,4934,4920,3041,4924,3114,3105,3110,3104,3113,3103,4204,3108,4926,3112,3107,4205,3109,3111,3106,4925,3117,3115,3118,3116,4927]
-R4=[1979,1980,2952,2953]
-#Quest ingredients and rewards
-WISH_POTION,ANCIENT_CROWN,CERTIFICATE_OF_ROYALTY = range(3467,3470)
-ALCHEMY_TEXT,SECRET_BOOK,POTION_RECIPE_1,POTION_RECIPE_2,MATILDS_ORB,FORBIDDEN_LOVE_SCROLL  = range(3678,3684)
-AMBER_SCALE,WIND_SOULSTONE,GLASS_EYE,HORROR_ECTOPLASM,SILENOS_HORN,ANT_SOLDIER_APHID,TYRANTS_CHITIN,BUGBEAR_BLOOD = range(3684,3692)
-#NPCs
-GRIMA                     = 27135
-SUCCUBUS_OF_SEDUCTION     = 27136
-GREAT_DEMON_KING          = 27138
-SECRET_KEEPER_TREE        = 27139
-SANCHES                   = 27153
-BONAPARTERIUS             = 27154
-RAMSEBALIUS               = 27155
-TORAI                     = 30557
-ALCHEMIST_MATILD          = 30738
-RUPINA                    = 30742
-WISDOM_CHEST              = 30743
-#MOBs
-WHISPERING_WIND           = 20078
-ANT_RECRUIT               = 20087
-ANT_WARRIOR_CAPTAIN       = 20088
-SILENOS                   = 20168
-TYRANT                    = 20192
-TYRANT_KINGPIN            = 20193
-AMBER_BASILISK            = 20199
-HORROR_MIST_RIPPER        = 20227
-TURAK_BUGBEAR             = 20248
-TURAK_BUGBEAR_WARRIOR     = 20249
-GLASS_JAGUAR              = 20250
-#DROPLIST
-DROPLIST={AMBER_BASILISK:[AMBER_SCALE,15],WHISPERING_WIND:[WIND_SOULSTONE,20],GLASS_JAGUAR:[GLASS_EYE,35],HORROR_MIST_RIPPER:[HORROR_ECTOPLASM,15],
-          SILENOS:[SILENOS_HORN,30],ANT_RECRUIT:[ANT_SOLDIER_APHID,40],ANT_WARRIOR_CAPTAIN:[ANT_SOLDIER_APHID,40],TYRANT:[TYRANTS_CHITIN,50],
-          TYRANT_KINGPIN:[TYRANTS_CHITIN,50],TURAK_BUGBEAR:[BUGBEAR_BLOOD,25],TURAK_BUGBEAR_WARRIOR:[BUGBEAR_BLOOD,25]}
-
-# set of random messages
-MESSAGES={SUCCUBUS_OF_SEDUCTION:["Do you wanna be loved?","Do you need love?","Let me love you...","Want to know what love is?","Are you in need of love?","Me love you long time"],
-          GRIMA:["hey hum hum!","boom! boom!","...","Ki ab kya karein hum"],
-          }
-
-def check_ingredients(st,required) :
-    if st.getQuestItemsCount(AMBER_SCALE) != required : return 0
-    if st.getQuestItemsCount(WIND_SOULSTONE) != required : return 0
-    if st.getQuestItemsCount(GLASS_EYE) != required : return 0
-    if st.getQuestItemsCount(HORROR_ECTOPLASM) != required : return 0
-    if st.getQuestItemsCount(SILENOS_HORN) != required : return 0
-    if st.getQuestItemsCount(ANT_SOLDIER_APHID) != required : return 0
-    if st.getQuestItemsCount(TYRANTS_CHITIN) != required : return 0
-    if st.getQuestItemsCount(BUGBEAR_BLOOD) != required : return 0
-    return 1
-
-def autochat(npc,text) :
-    if npc: npc.broadcastPacket(NpcSay(npc.getObjectId(),0,npc.getId(),text))
-    return
-
-class Quest (JQuest) :
-
- def __init__(self,id,name,descr):
-     JQuest.__init__(self,id,name,descr)
-     self.questItemIds = range(3678,3683)+range(3684,3692)
-
- def onAdvEvent (self,event,npc,player):
-   st = self.getQuestState(player, False)
-   if not st: return
-   htmltext = event
-   player=st.getPlayer()
-   if event == "30738-03.htm":
-     st.set("cond","1")
-     st.setState(State.STARTED)
-     st.playSound("ItemSound.quest_accept")
-     if st.getQuestItemsCount(ALCHEMY_TEXT) >= 2: st.takeItems(ALCHEMY_TEXT,-1)
-     if st.getQuestItemsCount(ALCHEMY_TEXT) == 0: st.giveItems(ALCHEMY_TEXT,1)
-     htmltext = "30738-03.htm"
-   if event == "30738-06.htm":
-     if st.getQuestItemsCount(WISH_POTION) :
-       htmltext = "30738-13.htm"
-     else :
-       st.playSound("ItemSound.quest_accept")
-       st.set("cond","3")
-       if st.getQuestItemsCount(ALCHEMY_TEXT) >= 1: st.takeItems(ALCHEMY_TEXT,-1)
-       if st.getQuestItemsCount(SECRET_BOOK) >= 1: st.takeItems(SECRET_BOOK,-1)
-       if st.getQuestItemsCount(POTION_RECIPE_1) >= 2: st.takeItems(POTION_RECIPE_1,-1)
-       if st.getQuestItemsCount(POTION_RECIPE_1) == 0: st.giveItems(POTION_RECIPE_1,1)
-       if st.getQuestItemsCount(POTION_RECIPE_2) >= 2: st.takeItems(POTION_RECIPE_2,-1)
-       if st.getQuestItemsCount(POTION_RECIPE_2) == 0: st.giveItems(POTION_RECIPE_2,1)
-       if st.getQuestItemsCount(MATILDS_ORB) : htmltext = "30738-12.htm"
-   if event == "30738-10.htm":
-     if check_ingredients(st,1) :
-       st.playSound("ItemSound.quest_finish")
-       st.takeItems(ALCHEMY_TEXT,-1)
-       st.takeItems(SECRET_BOOK,-1)
-       st.takeItems(POTION_RECIPE_1,-1)
-       st.takeItems(POTION_RECIPE_2,-1)
-       st.takeItems(AMBER_SCALE,-1)
-       st.takeItems(WIND_SOULSTONE,-1)
-       st.takeItems(GLASS_EYE,-1)
-       st.takeItems(HORROR_ECTOPLASM,-1)
-       st.takeItems(SILENOS_HORN,-1)
-       st.takeItems(ANT_SOLDIER_APHID,-1)
-       st.takeItems(TYRANTS_CHITIN,-1)
-       st.takeItems(BUGBEAR_BLOOD,-1)
-       if not st.getQuestItemsCount(MATILDS_ORB) : st.giveItems(MATILDS_ORB,1)
-       st.giveItems(WISH_POTION,1)
-       st.set("cond","5")
-     else :
-       htmltext="You don't have required items"
-   elif event == "30738-14.htm":
-     # if you dropped or destroyed your wish potion, you are not able to see the wish list
-     if st.getQuestItemsCount(WISH_POTION) :
-       htmltext = "30738-15.htm"
-#### WISH I : Please make me into a loving person.
-   elif event == "30738-16.htm":
-     if st.getQuestItemsCount(WISH_POTION) :
-       st.set("wish","1")
-       st.startQuestTimer("matild_timer1",3000,npc)
-       st.takeItems(WISH_POTION,1)
-       npc.setBusy(True)
-     else:
-       htmltext = "30738-14.htm"
-#### WISH II : I want to become an extremely rich person. How about 100 million adena?! 
-   elif event == "30738-17.htm":
-     if st.getQuestItemsCount(WISH_POTION) :
-       st.set("wish","2")
-       st.startQuestTimer("matild_timer1",3000,npc)
-       st.takeItems(WISH_POTION,1)
-       npc.setBusy(True)
-     else:
-       htmltext = "30738-14.htm"
-#### WISH III : I want to be a king in this world.
-   elif event == "30738-18.htm":
-     if st.getQuestItemsCount(WISH_POTION) :
-       st.set("wish","3")
-       st.startQuestTimer("matild_timer1",3000,npc)
-       st.takeItems(WISH_POTION,1)
-       npc.setBusy(True)
-     else:
-       htmltext = "30738-14.htm"
-#### WISH IV : I'd like to become the wisest person in the world.
-   elif event == "30738-19.htm":
-     if st.getQuestItemsCount(WISH_POTION) >= 1:
-       st.set("wish","4")
-       st.startQuestTimer("matild_timer1",3000,npc)
-       st.takeItems(WISH_POTION,1)
-       npc.setBusy(True)
-     else:
-       htmltext = "30738-14.htm"
-   elif event == "matild_timer1":
-     autochat(npc,"OK, everybody pray fervently!")
-     st.startQuestTimer("matild_timer2",4000,npc)
-     return
-   elif event == "matild_timer2":
-     autochat(npc,"Both hands to heaven, everybody yell together!")
-     st.startQuestTimer("matild_timer3",4000,npc)
-     return
-   elif event == "matild_timer3":
-     autochat(npc,"One! Two! May your dreams come true!")
-     wish = st.getInt("wish")
-     WISH_CHANCE = self.getRandom(100)
-     if wish == 1 :
-       if WISH_CHANCE <= 50:
-         autochat(st.addSpawn(SUCCUBUS_OF_SEDUCTION,200000),MESSAGES[SUCCUBUS_OF_SEDUCTION][self.getRandom(len(MESSAGES))])
-         autochat(st.addSpawn(SUCCUBUS_OF_SEDUCTION,200000),MESSAGES[SUCCUBUS_OF_SEDUCTION][self.getRandom(len(MESSAGES))])
-         autochat(st.addSpawn(SUCCUBUS_OF_SEDUCTION,200000),MESSAGES[SUCCUBUS_OF_SEDUCTION][self.getRandom(len(MESSAGES))])
-       else:
-         autochat(st.addSpawn(RUPINA,120000),"Your love... love!")
-     elif wish == 2 :
-       if WISH_CHANCE <= 33 :
-         autochat(st.addSpawn(GRIMA,200000),MESSAGES[GRIMA][self.getRandom(len(MESSAGES))])
-         autochat(st.addSpawn(GRIMA,200000),MESSAGES[GRIMA][self.getRandom(len(MESSAGES))])
-         autochat(st.addSpawn(GRIMA,200000),MESSAGES[GRIMA][self.getRandom(len(MESSAGES))])
-       else :
-         st.giveItems(ADENA,10000)
-     elif wish == 3 :
-       if WISH_CHANCE <= 33 :
-         st.giveItems(CERTIFICATE_OF_ROYALTY,1)
-       elif WISH_CHANCE >= 66 :
-         st.giveItems(ANCIENT_CROWN,1)
-       else:
-         spawnedNpc=st.addSpawn(SANCHES,player,True,0)
-         autochat(spawnedNpc,"Who dares to call the dark Monarch?!")
-         st.startQuestTimer("sanches_timer1",200000,spawnedNpc)
-     elif wish == 4 :
-       if WISH_CHANCE <= 33:
-         st.giveItems(R1[self.getRandom(len(R1))],1)
-         st.giveItems(R2[self.getRandom(len(R2))],1)
-         st.giveItems(R3[self.getRandom(len(R3))],1)
-         if not self.getRandom(3):
-            st.giveItems(HEART_OF_PAAGRIO,1)
-       else:
-         autochat(st.addSpawn(WISDOM_CHEST,120000),"I contain the wisdom, I am the wisdom box!")
-     npc.setBusy(False)
-     return
-   elif event == "sanches_timer1" :
-     autochat(npc,"Hehehe, i'm just wasting my time here!")
-     npc.deleteMe()
-     return
-   elif event == "bonaparterius_timer1" :
-     autochat(npc,"A worth opponent would be a good thing")
-     npc.deleteMe()
-   elif event == "ramsebalius_timer1" :
-     autochat(npc,"Your time is up!")
-     npc.deleteMe()
-     return
-   elif event == "greatdemon_timer1" :
-     autochat(npc,"Do not interrupt my eternal rest again!")
-     npc.deleteMe()
-     return
-   return htmltext
-
- def onTalk (self,npc,player):
-   htmltext = Quest.getNoQuestMsg(player)
-   st = self.getQuestState(player, True)
-   if not st : return htmltext
-   npcId = npc.getId()
-   cond = st.getInt("cond")
-   id = st.getState()
-   if npcId != ALCHEMIST_MATILD and id == State.CREATED : return htmltext
-   if npcId == TORAI and st.getQuestItemsCount(FORBIDDEN_LOVE_SCROLL) :
-       st.takeItems(FORBIDDEN_LOVE_SCROLL,1)     
-       st.giveItems(ADENA,500000)
-       htmltext = "30557-01.htm"
-   elif npcId == WISDOM_CHEST :
-     st.giveItems(R1[self.getRandom(len(R1))],1)
-     st.giveItems(R2[self.getRandom(len(R2))],1)
-     st.giveItems(R3[self.getRandom(len(R3))],1)
-     if not self.getRandom(3):
-        st.giveItems(HEART_OF_PAAGRIO,1)
-     st.giveItems(4409,1)
-     st.giveItems(4408,1)
-     htmltext = "30743-0"+str(self.getRandom(6)+1)+".htm"
-     npc.deleteMe()
-   elif npcId == RUPINA:
-     if self.getRandom(100) <= 4:
-       st.giveItems(NECKLACE_OF_GRACE,1)
-       htmltext = "30742-01.htm"
-     else:
-       st.giveItems(R4[self.getRandom(len(R4))],1)
-       htmltext = "30742-02.htm"
-     npc.decayMe()
-   elif npcId == ALCHEMIST_MATILD:
-     if npc.isBusy() :
-       htmltext = "30738-20.htm"
-     elif player.getLevel() <= 29 :
-       htmltext = "30738-21.htm"
-       st.exitQuest(1)
-     elif cond == 5 and st.getQuestItemsCount(MATILDS_ORB) :
-       htmltext = "30738-11.htm"
-     elif cond == 4 and check_ingredients(st,1):
-       htmltext = "30738-08.htm"
-     elif cond == 3 and not check_ingredients(st,1):
-       htmltext = "30738-07.htm"       
-     elif cond == 2 or (st.getQuestItemsCount(ALCHEMY_TEXT) and st.getQuestItemsCount(SECRET_BOOK)) :
-       htmltext = "30738-05.htm"
-     elif cond == 1 or (st.getQuestItemsCount(ALCHEMY_TEXT) and not st.getQuestItemsCount(SECRET_BOOK)) :
-       htmltext = "30738-04.htm"
-     else:
-       htmltext = "30738-01.htm"
-   return htmltext
-
- def onKill(self,npc,player,isPet):
-   st = self.getQuestState(player, False)
-   if not st : return
-   id = st.getState()
-   if id == State.CREATED: return
-   if id != State.STARTED: st.setState(State.STARTED)
-   npcId = npc.getId()
-   cond = st.getInt("cond")
-   if npcId == SECRET_KEEPER_TREE and cond == 1 and not st.getQuestItemsCount(SECRET_BOOK):
-      st.set("cond","2")
-      st.giveItems(SECRET_BOOK,1)
-      st.playSound("ItemSound.quest_itemget")
-   elif npcId in DROPLIST.keys() and cond == 3 :
-      item,chance=DROPLIST[npcId]
-      if self.getRandom(100) <= chance and not st.getQuestItemsCount(item) :
-         st.giveItems(item,1)
-         if check_ingredients(st,1):
-            st.playSound("ItemSound.quest_middle")
-            st.set("cond","4")
-         else: st.playSound("ItemSound.quest_itemget")
-   else:
-     if npcId == SUCCUBUS_OF_SEDUCTION:
-       if self.getRandom(100) <= 3 :
-         st.playSound("ItemSound.quest_itemget")
-         st.giveItems(FORBIDDEN_LOVE_SCROLL,1)
-     elif npcId == GRIMA:
-       if self.getRandom(100) < 4 :
-          st.playSound("ItemSound.quest_itemget")
-          if self.getRandom(1000) == 0 :
-             st.giveItems(ADENA,100000000)
-          else:
-             st.giveItems(ADENA,900000)
-     elif npcId == SANCHES :
-       try :
-         if st.getQuestTimer("sanches_timer1") :
-            st.getQuestTimer("sanches_timer1").cancel()
-         if self.getRandom(100) <= 50 :
-            autochat(npc,"It's time to come out my Remless... Bonaparterius!")
-            spawnedNpc=st.addSpawn(BONAPARTERIUS,npc,True,0)
-            autochat(spawnedNpc,"I am the Great Emperor's son!")
-            st.startQuestTimer("bonaparterius_timer1",600000,spawnedNpc)
-         else :
-            st.giveItems(R4[self.getRandom(len(R4))],1)
-       except : pass
-     elif npcId == BONAPARTERIUS:
-       try :
-         if st.getQuestTimer("bonaparterius_timer1") :
-            st.getQuestTimer("bonaparterius_timer1").cancel()
-         autochat(npc,"Only Ramsebalius would be able to avenge me!")
-         if self.getRandom(100) <= 50 :
-           spawnedNpc=st.addSpawn(RAMSEBALIUS,npc,True,0)
-           autochat(spawnedNpc,"Meet the absolute ruler!")
-           st.startQuestTimer("ramsebalius_timer1",600000,spawnedNpc)
-         else :
-           st.giveItems(R4[self.getRandom(len(R4))],1)
-       except : pass
-     elif npcId == RAMSEBALIUS:
-       try :
-         if st.getQuestTimer("ramsebalius_timer1") :
-            st.getQuestTimer("ramsebalius_timer1").cancel()
-         autochat(npc,"You evil piece of...")
-         if self.getRandom(100) <= 50 :
-           spawnedNpc=st.addSpawn(GREAT_DEMON_KING,npc,True,0)
-           autochat(spawnedNpc,"Who dares to kill my fiendly minion?!")
-           st.startQuestTimer("greatdemon_timer1",600000,spawnedNpc)
-         else :
-           st.giveItems(R4[self.getRandom(len(R4))],1)
-       except: pass
-     elif npcId == GREAT_DEMON_KING:
-       try :
-         if st.getQuestTimer("greatdemon_timer1") :
-            st.getQuestTimer("greatdemon_timer1").cancel()
-         st.giveItems(ADENA,1412965)
-         st.playSound("ItemSound.quest_itemget")
-       except: pass
-   return
-
-QUEST = Quest(334, qn, "The Wishing Potion")
-QUEST.addStartNpc(ALCHEMIST_MATILD)
-QUEST.addTalkId([ALCHEMIST_MATILD, TORAI, RUPINA, WISDOM_CHEST])
-QUEST.addKillId(DROPLIST.keys())
-QUEST.addKillId([SECRET_KEEPER_TREE, SUCCUBUS_OF_SEDUCTION, GRIMA, SANCHES, RAMSEBALIUS, BONAPARTERIUS, GREAT_DEMON_KING])
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/334_TheWishingPotion/no_quest.htm b/dist/game/data/scripts/quests/334_TheWishingPotion/no_quest.htm
deleted file mode 100644
index 7aaea0f8b1..0000000000
--- a/dist/game/data/scripts/quests/334_TheWishingPotion/no_quest.htm
+++ /dev/null
@@ -1 +0,0 @@
-<html><body>Conditions are not right to make this quest available.</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30557-01.html b/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30557-01.html
new file mode 100644
index 0000000000..31894e04d7
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30557-01.html
@@ -0,0 +1,3 @@
+<html><body>Torai:<br>
+Oh yes, I would love to purchase that book from you!  How much do you want for it?
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-01.html b/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-01.html
new file mode 100644
index 0000000000..256c0e4c59
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-01.html
@@ -0,0 +1,3 @@
+<html><body>Alchemist Matild:<br>
+Many seek the secrets of Alchemy. You do not appear to be their equal. I won't discuss Alchemy with you further. (This quest may only be performed by characters of level 30 and above.)
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-02.html b/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-02.html
new file mode 100644
index 0000000000..578dd7f8d9
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-02.html
@@ -0,0 +1,4 @@
+<html><body>Alchemist Matild:<br>
+Having studied and practiced herbal medicine for over 20 years I am acknowledged as an expert on the subject.  But there is still much to learn, with many mysterious potions whose formulas were passed down by the ancients still unknown to me. Recently I discovered the location of one such formula. I discovered it while reading a book that I have...<br>
+<a action="bypass -h Quest Q00334_TheWishingPotion 1">"Can I help you?"</a>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-03.htm b/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-03.htm
new file mode 100644
index 0000000000..25a6237880
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-03.htm
@@ -0,0 +1,4 @@
+<html><body>Alchemist Matild:<br>
+This text refers to the location of the secret Book of Problems. Please read it for yourself and then go and find the precious secret book for me.<br>
+<a action="bypass -h Quest Q00334_TheWishingPotion QUEST_ACCEPTED">"I will find the secret book."</a>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-04.htm b/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-04.htm
new file mode 100644
index 0000000000..ff762f578b
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-04.htm
@@ -0,0 +1,3 @@
+<html><body>Alchemist Matild:<br>
+Thank you so much.  Please take this book and use the clues you find within it to find the Book of Problems.  Bring it back to me and I will give you a big surprise!
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-05.html b/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-05.html
new file mode 100644
index 0000000000..5f01597aa7
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-05.html
@@ -0,0 +1,3 @@
+<html><body>Alchemist Matild:<br>
+Have you found the book? No? Please, go and find it!
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-06.html b/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-06.html
new file mode 100644
index 0000000000..8e825d7c7d
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-06.html
@@ -0,0 +1,6 @@
+<html><body>Alchemist Matild:<br>
+You have brought me the secret book! Uhhh...<br>
+Oh, I'm very sorry.  While you were away, you see, someone brought some precious ingredients and I spent my last Adena purchasing them.<br>
+Hmm... How about this? The recipe for making Wish Potion is written in the secret book that you have brought! I obtained most of the ingredients with this last purchase but there are still a few things I will need. If you could bring me those, I'll make Wish Potion for you that will grant all of your wishes! How about it? What a deal, huh? <br>
+<a action="bypass -h Quest Q00334_TheWishingPotion 2">"I will find the ingredients."</a>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-07.html b/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-07.html
new file mode 100644
index 0000000000..3c3ee40652
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-07.html
@@ -0,0 +1,3 @@
+<html><body>Alchemist Matild:<br>
+All right!  Its a deal!  Now, here is the Ingredient List. Please go and find these things... And hurry!
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-08.html b/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-08.html
new file mode 100644
index 0000000000..aab4928813
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-08.html
@@ -0,0 +1,3 @@
+<html><body>Alchemist Matild:<br>
+Oh my, this is not working...  I won't be able to make the Wish Potion until you bring all of the ingredients!
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-09.html b/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-09.html
new file mode 100644
index 0000000000..ce51fb5b13
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-09.html
@@ -0,0 +1,4 @@
+<html><body>Alchemist Matild:<br>
+Ah, I see that you have brought all of the ingredients!  Shall we get started?<br>
+<a action="bypass -h Quest Q00334_TheWishingPotion 3">"Let's get started!"</a>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-10.html b/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-10.html
new file mode 100644
index 0000000000..ba83d46734
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-10.html
@@ -0,0 +1,4 @@
+<html><body>Alchemist Matild:<br>
+You must take this sap and apply it here... Now mix it well... Did you see the color change? OK, now add it to this bottle and mix it... Could you pass me that red bottle?<br>
+<a action="bypass -h Quest Q00334_TheWishingPotion 4">Pass the red bottle.</a>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-11.html b/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-11.html
new file mode 100644
index 0000000000..0f491039a3
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-11.html
@@ -0,0 +1,4 @@
+<html><body>Alchemist Matild:<br>
+Now you must carefully add wish scent... There! It's done. You must check with me before using this potion.<br>
+Take this with you as proof and I will make the potion again if needed. Of course I will need you to collect all the ingredients again. A good deal, no?
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-12.html b/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-12.html
new file mode 100644
index 0000000000..1123162993
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-12.html
@@ -0,0 +1,5 @@
+<html><body>Alchemist Matild:<br>
+Hey, do you remember the promise you made to me? What's your excuse this time? Do you want to take the Wish Potion or are you gathering the ingredients to make more of the potion?<br>
+<a action="bypass -h Quest Q00334_TheWishingPotion 5">"I want to take the Wish Potion."</a><br>
+<a action="bypass -h Quest Q00334_TheWishingPotion 6">"I am gathering the ingredients."</a>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-13.html b/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-13.html
new file mode 100644
index 0000000000..cb83e0d85d
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-13.html
@@ -0,0 +1,15 @@
+<html><body>Alchemist Matild:<br>
+You are allowed one wish after taking the potion. You will choose from one of the four wishes on this card.
+<table>
+<tr>
+	<td><img src="icon.Quest_TarotCard_Knowledge_t00" width=64 height=112></td>
+	<td><img src="icon.Quest_TarotCard_Love_t00" width=64 height=112></td>
+	<td><img src="icon.Quest_TarotCard_Power_t00" width=64 height=112></td>
+	<td><img src="icon.Quest_TarotCard_Wealth_t00" width=64 height=112></td>
+</tr>
+</table><br>
+<a action="bypass -h Quest Q00334_TheWishingPotion 7">"I wish to be a loving person."</a><br>
+<a action="bypass -h Quest Q00334_TheWishingPotion 8">"I wish for 100 million Adena."</a><br>
+<a action="bypass -h Quest Q00334_TheWishingPotion 9">"I wish to be a king!"</a><br>
+<a action="bypass -h Quest Q00334_TheWishingPotion 10">"I wish to be the wisest person in the world."</a>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/334_TheWishingPotion/30738-14.htm b/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-14.html
similarity index 65%
rename from dist/game/data/scripts/quests/334_TheWishingPotion/30738-14.htm
rename to dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-14.html
index 1e98554e18..f54a894f79 100644
--- a/dist/game/data/scripts/quests/334_TheWishingPotion/30738-14.htm
+++ b/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-14.html
@@ -1,2 +1,3 @@
 <html><body>Alchemist Matild:<br>
-Hey! You don't have any Wish Potion but yet you still want to make a wish...? How very disgraceful!</body></html>
\ No newline at end of file
+Hey! You don't have any Wish Potion but yet you still want to make a wish...? How very disgraceful!
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-15.html b/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-15.html
new file mode 100644
index 0000000000..0fdc5e89c9
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-15.html
@@ -0,0 +1,3 @@
+<html><body>Alchemist Matild:<br>
+All right, just as before you must gather the ingredients on this list... I don't need to explain it to you again, do I?
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/334_TheWishingPotion/30738-13.htm b/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-15a.html
similarity index 68%
rename from dist/game/data/scripts/quests/334_TheWishingPotion/30738-13.htm
rename to dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-15a.html
index 596a7b6c7b..ffbe2bfb29 100644
--- a/dist/game/data/scripts/quests/334_TheWishingPotion/30738-13.htm
+++ b/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-15a.html
@@ -1,2 +1,3 @@
 <html><body>Alchemist Matild:<br>
-Why do you want more Wish Potion when you haven't used what you already have? What a pig...!</body></html>
\ No newline at end of file
+Why do you want more Wish Potion when you haven't used what you already have?  What a pig...!
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-16.html b/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-16.html
new file mode 100644
index 0000000000..44b576fe9a
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-16.html
@@ -0,0 +1,3 @@
+<html><body>Alchemist Matild:<br>
+To begin the ceremony you must first apply the Crow's Blood to your forehead and then shake the wing of fairy three times...
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-17.html b/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-17.html
new file mode 100644
index 0000000000..df2e057caf
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-17.html
@@ -0,0 +1,3 @@
+<html><body>Alchemist Matild:<br>
+To start the ceremony you must first apply the Crow's Blood to your forehead and then shake the Timitran Leaf three times...
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-18.html b/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-18.html
new file mode 100644
index 0000000000..715cae0266
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-18.html
@@ -0,0 +1,3 @@
+<html><body>Alchemist Matild:<br>
+To start the ceremony you must first apply the Crow's Blood to your forehead and then put the crown of glory on your head...
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-19.html b/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-19.html
new file mode 100644
index 0000000000..47eabfaf3f
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-19.html
@@ -0,0 +1,3 @@
+<html><body>Alchemist Matild:<br>
+To start the ceremony you must first apply the Crow's Blood to your forehead and then hit your head three times with a Sage's Staff...
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-20.html b/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-20.html
new file mode 100644
index 0000000000..0615be4194
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30738-20.html
@@ -0,0 +1,3 @@
+<html><body>Alchemist Matild:<br>
+You must wait, someone else is currently making a wish...
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30742-01.html b/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30742-01.html
new file mode 100644
index 0000000000..646d58ae6b
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30742-01.html
@@ -0,0 +1,3 @@
+<html><body>Fairy of Love Rupina:<br>
+Ah, it's you! Do you seek your true love?   I'm sorry, but I am very busy and cannot help you now. Instead, take this pendant. It will help you to find your soul mate.
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/334_TheWishingPotion/30742-02.htm b/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30742-02.html
similarity index 73%
rename from dist/game/data/scripts/quests/334_TheWishingPotion/30742-02.htm
rename to dist/game/data/scripts/quests/Q00334_TheWishingPotion/30742-02.html
index 6bb77c43fd..8ed5d29d3a 100644
--- a/dist/game/data/scripts/quests/334_TheWishingPotion/30742-02.htm
+++ b/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30742-02.html
@@ -1,4 +1,5 @@
 <html><body>Fairy of Love Rupina:<br>
 Love is such a lovely thing.<br>
 Lovers love loving.<br>
-Love each other!</body></html>
\ No newline at end of file
+Love each other!
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30743-02.html b/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30743-02.html
new file mode 100644
index 0000000000..ea8eb36ad6
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30743-02.html
@@ -0,0 +1,4 @@
+<html><body>Chest of Wisdom:<br>
+[A voice emanates from the chest]<br>
+I will tell you a secret that will bring you great riches. Find the Forbidden Love Scroll and take it to  Torai. You will be amply rewarded.
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30743-03.html b/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30743-03.html
new file mode 100644
index 0000000000..666436f0a7
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30743-03.html
@@ -0,0 +1,4 @@
+<html><body>Chest of Wisdom:<br>
+[A voice emanates from the chest]<br>
+I will tell you a secret that will increase your wealth. Warehouse Keeper Sorint, Magister Paige, Researcher Lorain, Warehouse Keeper Hagger, Guard Stan, Blacksmith Dunning, Trader Ralford, Head Blacksmith Ferris, Warehouse Keeper Collob and Grocer Pano...  All these people are fanatical coin collectors!
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30743-04.html b/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30743-04.html
new file mode 100644
index 0000000000..78295caf8c
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30743-04.html
@@ -0,0 +1,4 @@
+<html><body>Chest of Wisdom:<br>
+[A voice emanates from the chest]<br>
+I will teach you how to use the Wish Potion correctly. If you wish to become a ruler, you will meet the Devil himself...
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30743-05.html b/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30743-05.html
new file mode 100644
index 0000000000..a5f3b25079
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30743-05.html
@@ -0,0 +1,4 @@
+<html><body>Chest of Wisdom:<br>
+[A voice emanates from the chest]<br>
+I will teach you how to use the Wish Potion correctly. If you wish to find love, a succubus will seduce you and then inflict great pain upon your manhood.
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30743-06.html b/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30743-06.html
new file mode 100644
index 0000000000..f2234f7fa9
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00334_TheWishingPotion/30743-06.html
@@ -0,0 +1,4 @@
+<html><body>Chest of Wisdom:<br>
+[A voice emanates from the chest]<br>
+You are the chosen one. I give you the gift of knowledge.
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00334_TheWishingPotion/Q00334_TheWishingPotion.java b/dist/game/data/scripts/quests/Q00334_TheWishingPotion/Q00334_TheWishingPotion.java
new file mode 100644
index 0000000000..76abc43140
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00334_TheWishingPotion/Q00334_TheWishingPotion.java
@@ -0,0 +1,1085 @@
+/*
+ * Copyright (C) 2004-2015 L2J DataPack
+ * 
+ * This file is part of L2J DataPack.
+ * 
+ * L2J DataPack is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * L2J DataPack is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package quests.Q00334_TheWishingPotion;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import com.l2jserver.gameserver.enums.QuestSound;
+import com.l2jserver.gameserver.model.actor.L2Npc;
+import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jserver.gameserver.model.quest.Quest;
+import com.l2jserver.gameserver.model.quest.QuestState;
+import com.l2jserver.gameserver.network.NpcStringId;
+import com.l2jserver.gameserver.util.Util;
+
+/**
+ * The Wishing Potion (334)
+ * @author Zealar
+ */
+public final class Q00334_TheWishingPotion extends Quest
+{
+	// NPCs
+	private static final int TORAI = 30557;
+	private static final int ALCHEMIST_MATILD = 30738;
+	private static final int FAIRY_RUPINA = 30742;
+	private static final int WISDOM_CHEST = 30743;
+	
+	// Monsters
+	private static final int WHISPERING_WIND = 20078;
+	private static final int ANT_SOLDIER = 20087;
+	private static final int ANT_WARRIOR_CAPTAIN = 20088;
+	private static final int SILENOS = 20168;
+	private static final int TYRANT = 20192;
+	private static final int TYRANT_KINGPIN = 20193;
+	private static final int AMBER_BASILISK = 20199;
+	private static final int MIST_HORROR_RIPPER = 20227;
+	private static final int TURAK_BUGBEAR = 20248;
+	private static final int TURAK_BUGBEAR_WARRIOR = 20249;
+	private static final int GRIMA = 27135;
+	private static final int GLASS_JAGUAR = 20250;
+	private static final int SUCCUBUS_OF_SEDUCTION = 27136;
+	private static final int GREAT_DEMON_KING = 27138;
+	private static final int SECRET_KEEPER_TREE = 27139;
+	private static final int DLORD_ALEXANDROSANCHES = 27153;
+	private static final int ABYSSKING_BONAPARTERIUS = 27154;
+	private static final int EVILOVERLORD_RAMSEBALIUS = 27155;
+	
+	// Items
+	private static final int Q_WISH_POTION = 3467;
+	private static final int Q_ANCIENT_CROWN = 3468;
+	private static final int Q_CERTIFICATE_OF_ROYALTY = 3469;
+	private static final int Q_ALCHEMY_TEXT = 3678;
+	private static final int Q_SECRET_BOOK_OF_POTION = 3679;
+	private static final int Q_POTION_RECIPE_1 = 3680;
+	private static final int Q_POTION_RECIPE_2 = 3681;
+	private static final int Q_MATILDS_ORB = 3682;
+	private static final int Q_FOBBIDEN_LOVE_SCROLL = 3683;
+	
+	// Items required for create wish potion
+	private static final int Q_AMBER_SCALE = 3684;
+	private static final int Q_WIND_SOULSTONE = 3685;
+	private static final int Q_GLASS_EYE = 3686;
+	private static final int Q_HORROR_ECTOPLASM = 3687;
+	private static final int Q_SILENOS_HORN = 3688;
+	private static final int Q_ANT_SOLDIER_APHID = 3689;
+	private static final int Q_TYRANTS_CHITIN = 3690;
+	private static final int Q_BUGBEAR_BLOOD = 3691;
+	
+	// Rewards
+	private static final int NECKLACE_OF_GRACE = 931;
+	private static final int DEMONS_TUNIC_FABRIC = 1979;
+	private static final int DEMONS_HOSE_PATTERN = 1980;
+	private static final int DEMONS_BOOTS_FABRIC = 2952;
+	private static final int DEMONS_GLOVES_FABRIC = 2953;
+	private static final int Q_MUSICNOTE_LOVE = 4408;
+	private static final int Q_MUSICNOTE_BATTLE = 4409;
+	private static final int Q_GOLD_CIRCLET = 12766;
+	private static final int Q_SILVER_CIRCLET = 12767;
+	
+	private static final int DEMONS_TUNIC = 441;
+	private static final int DEMONS_HOSE = 472;
+	private static final int DEMONS_BOOTS = 2435;
+	private static final int DEMONS_GLOVES = 2459;
+	
+	// Misc
+	private static final String FLAG = "flag";
+	private static final String I_QUEST0 = "i_quest0";
+	private static final String EXCHANGE = "Exchange";
+	
+	// Reward
+	public Q00334_TheWishingPotion()
+	{
+		super(334, Q00334_TheWishingPotion.class.getSimpleName(), "The Wishing Potion");
+		addStartNpc(ALCHEMIST_MATILD);
+		addTalkId(ALCHEMIST_MATILD, TORAI, FAIRY_RUPINA, WISDOM_CHEST);
+		addKillId(WHISPERING_WIND, ANT_SOLDIER, ANT_WARRIOR_CAPTAIN, SILENOS, TYRANT, TYRANT_KINGPIN, AMBER_BASILISK, MIST_HORROR_RIPPER);
+		addKillId(TURAK_BUGBEAR, TURAK_BUGBEAR_WARRIOR, GRIMA, GLASS_JAGUAR, SUCCUBUS_OF_SEDUCTION, GREAT_DEMON_KING, SECRET_KEEPER_TREE);
+		addKillId(DLORD_ALEXANDROSANCHES, ABYSSKING_BONAPARTERIUS, EVILOVERLORD_RAMSEBALIUS);
+		addSpawnId(GRIMA, SUCCUBUS_OF_SEDUCTION, GREAT_DEMON_KING, DLORD_ALEXANDROSANCHES, ABYSSKING_BONAPARTERIUS, EVILOVERLORD_RAMSEBALIUS, FAIRY_RUPINA);
+		registerQuestItems(Q_SECRET_BOOK_OF_POTION, Q_AMBER_SCALE, Q_GLASS_EYE, Q_HORROR_ECTOPLASM, Q_SILENOS_HORN, Q_ANT_SOLDIER_APHID, Q_TYRANTS_CHITIN, Q_BUGBEAR_BLOOD);
+		registerQuestItems(Q_WISH_POTION, Q_POTION_RECIPE_1, Q_POTION_RECIPE_2, Q_MATILDS_ORB, Q_ALCHEMY_TEXT);
+	}
+	
+	@Override
+	public String onTalk(L2Npc npc, L2PcInstance player)
+	{
+		final QuestState qs = getQuestState(player, true);
+		String htmltext = getNoQuestMsg(player);
+		if (qs != null)
+		{
+			switch (npc.getId())
+			{
+				case TORAI:
+				{
+					if (qs.hasQuestItems(Q_FOBBIDEN_LOVE_SCROLL))
+					{
+						qs.giveAdena(500000, true);
+						qs.takeItems(Q_FOBBIDEN_LOVE_SCROLL, 1);
+						qs.playSound(QuestSound.ITEMSOUND_QUEST_MIDDLE);
+						return "30557-01.html";
+					}
+					break;
+				}
+				case ALCHEMIST_MATILD:
+				{
+					if (qs.isCreated())
+					{
+						if (player.getLevel() < 30)
+						{
+							return "30738-01.htm";
+						}
+						return "30738-02.html";
+					}
+					if (!qs.hasQuestItems(Q_SECRET_BOOK_OF_POTION) && qs.hasQuestItems(Q_ALCHEMY_TEXT))
+					{
+						return "30738-05.html";
+					}
+					if (qs.hasQuestItems(Q_SECRET_BOOK_OF_POTION) && qs.hasQuestItems(Q_ALCHEMY_TEXT))
+					{
+						return "30738-06.html";
+					}
+					if (qs.hasQuestItems(Q_POTION_RECIPE_1, Q_POTION_RECIPE_2) && (!qs.hasQuestItems(Q_AMBER_SCALE) || (qs.hasQuestItems(Q_WIND_SOULSTONE) && !qs.hasQuestItems(Q_GLASS_EYE))
+						|| (!qs.hasQuestItems(Q_HORROR_ECTOPLASM) || !qs.hasQuestItems(Q_SILENOS_HORN) || !qs.hasQuestItems(Q_ANT_SOLDIER_APHID) || !qs.hasQuestItems(Q_TYRANTS_CHITIN) || !qs.hasQuestItems(Q_BUGBEAR_BLOOD))))
+					{
+						return "30738-08.html";
+					}
+					if (qs.hasQuestItems(Q_POTION_RECIPE_1, Q_POTION_RECIPE_2, Q_AMBER_SCALE, Q_WIND_SOULSTONE, Q_WIND_SOULSTONE, Q_GLASS_EYE, Q_GLASS_EYE, Q_HORROR_ECTOPLASM, Q_SILENOS_HORN, Q_ANT_SOLDIER_APHID, Q_TYRANTS_CHITIN, Q_BUGBEAR_BLOOD))
+					{
+						return "30738-09.html";
+					}
+					if (qs.hasQuestItems(Q_MATILDS_ORB) && !qs.hasQuestItems(Q_POTION_RECIPE_1) && !qs.hasQuestItems(Q_POTION_RECIPE_2) && (!qs.hasQuestItems(Q_AMBER_SCALE) || (qs.hasQuestItems(Q_WIND_SOULSTONE) && !qs.hasQuestItems(Q_GLASS_EYE)) || !qs.hasQuestItems(Q_HORROR_ECTOPLASM)
+						|| !qs.hasQuestItems(Q_SILENOS_HORN) || !qs.hasQuestItems(Q_ANT_SOLDIER_APHID) || !qs.hasQuestItems(Q_TYRANTS_CHITIN) || !qs.hasQuestItems(Q_BUGBEAR_BLOOD)))
+					{
+						return "30738-12.html";
+					}
+					break;
+				}
+				case FAIRY_RUPINA:
+				{
+					if (qs.getInt(FLAG) == 1)
+					{
+						String html = null;
+						if ((getRandom(4) < 4))
+						{
+							qs.giveItems(NECKLACE_OF_GRACE, 1);
+							qs.set(FLAG, 0);
+							html = "30742-01.html";
+						}
+						else
+						{
+							switch (getRandom(4))
+							{
+								case 0:
+								{
+									qs.giveItems(DEMONS_TUNIC_FABRIC, 1);
+									break;
+								}
+								case 1:
+								{
+									qs.giveItems(DEMONS_HOSE_PATTERN, 1);
+									break;
+								}
+								case 2:
+								{
+									qs.giveItems(DEMONS_BOOTS_FABRIC, 1);
+									break;
+								}
+								case 3:
+								{
+									qs.giveItems(DEMONS_GLOVES_FABRIC, 1);
+								}
+							}
+							html = "30742-02.html";
+						}
+						qs.set(FLAG, 0);
+						npc.deleteMe();
+						return html;
+					}
+					break;
+				}
+				case WISDOM_CHEST:
+				{
+					if (qs.getInt(FLAG) == 4)
+					{
+						int random = getRandom(100);
+						String html = null;
+						if (random < 10)
+						{
+							qs.giveItems(Q_FOBBIDEN_LOVE_SCROLL, 1);
+							html = "30743-02.html";
+						}
+						else if ((random >= 10) && (random < 50))
+						{
+							switch (getRandom(4))
+							{
+								case 0:
+								{
+									qs.giveItems(DEMONS_TUNIC_FABRIC, 1);
+									break;
+								}
+								case 1:
+								{
+									qs.giveItems(DEMONS_HOSE_PATTERN, 1);
+									break;
+								}
+								case 2:
+								{
+									qs.giveItems(DEMONS_BOOTS_FABRIC, 1);
+									break;
+								}
+								case 3:
+								{
+									qs.giveItems(DEMONS_GLOVES_FABRIC, 1);
+									break;
+								}
+							}
+							html = "30743-03.html";
+						}
+						else if ((random >= 50) && (random < 100))
+						{
+							switch (getRandom(2))
+							{
+								case 0:
+								{
+									qs.giveItems(Q_MUSICNOTE_LOVE, 1);
+									break;
+								}
+								case 1:
+								{
+									qs.giveItems(Q_MUSICNOTE_BATTLE, 1);
+									break;
+								}
+							}
+							html = "30743-04.html";
+						}
+						else if ((random >= 85) && (random < 95))
+						{
+							switch (getRandom(4))
+							{
+								case 0:
+								{
+									qs.giveItems(DEMONS_TUNIC, 1);
+									break;
+								}
+								case 1:
+								{
+									qs.giveItems(DEMONS_HOSE, 1);
+									break;
+								}
+								case 2:
+								{
+									qs.giveItems(DEMONS_BOOTS, 1);
+									break;
+								}
+								case 3:
+								{
+									qs.giveItems(DEMONS_GLOVES, 1);
+									break;
+								}
+							}
+							html = "30743-05.html";
+						}
+						else if (random >= 95)
+						{
+							switch (getRandom(2))
+							{
+								case 0:
+								{
+									qs.giveItems(Q_GOLD_CIRCLET, 1);
+									break;
+								}
+								case 1:
+								{
+									qs.giveItems(Q_SILVER_CIRCLET, 1);
+								}
+							}
+							html = "30743-06.htm";
+						}
+						qs.set(FLAG, 0);
+						npc.deleteMe();
+						return html;
+					}
+					break;
+				}
+			}
+		}
+		return htmltext;
+	}
+	
+	@Override
+	public String onSpawn(L2Npc npc)
+	{
+		switch (npc.getId())
+		{
+			case GRIMA:
+			{
+				startQuestTimer("2336002", 1000 * 200, npc, null);
+				npc.Say(NpcStringId.OH_OH_OH);
+				break;
+			}
+			case SUCCUBUS_OF_SEDUCTION:
+			{
+				startQuestTimer("2336003", 1000 * 200, npc, null);
+				npc.Say(NpcStringId.DO_YOU_WANT_US_TO_LOVE_YOU_OH);
+				break;
+			}
+			case GREAT_DEMON_KING:
+			{
+				startQuestTimer("2336007", 1000 * 600, npc, null);
+				npc.Say(NpcStringId.WHO_KILLED_MY_UNDERLING_DEVIL);
+				break;
+			}
+			case DLORD_ALEXANDROSANCHES:
+			{
+				startQuestTimer("2336004", 1000 * 200, npc, null);
+				npc.Say(NpcStringId.WHO_IS_CALLING_THE_LORD_OF_DARKNESS);
+				break;
+			}
+			case ABYSSKING_BONAPARTERIUS:
+			{
+				startQuestTimer("2336005", 1000 * 200, npc, null);
+				npc.Say(NpcStringId.I_AM_A_GREAT_EMPIRE_BONAPARTERIUS);
+				break;
+			}
+			case EVILOVERLORD_RAMSEBALIUS:
+			{
+				startQuestTimer("2336006", 1000 * 200, npc, null);
+				npc.Say(NpcStringId.LET_YOUR_HEAD_DOWN_BEFORE_THE_LORD);
+				break;
+			}
+			case FAIRY_RUPINA:
+			{
+				startQuestTimer("2336001", 120 * 1000, npc, null);
+				npc.Say(NpcStringId.I_WILL_MAKE_YOUR_LOVE_COME_TRUE_LOVE_LOVE_LOVE);
+				break;
+			}
+			case WISDOM_CHEST:
+			{
+				startQuestTimer("2336007", 120 * 1000, npc, null);
+				npc.Say(NpcStringId.I_HAVE_WISDOM_IN_ME_I_AM_THE_BOX_OF_WISDOM);
+				break;
+			}
+		}
+		return super.onSpawn(npc);
+	}
+	
+	@Override
+	public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
+	{
+		switch (npc.getId())
+		{
+			case FAIRY_RUPINA:
+			case GRIMA:
+			case SUCCUBUS_OF_SEDUCTION:
+			case GREAT_DEMON_KING:
+			{
+				npc.deleteMe();
+				break;
+			}
+			case DLORD_ALEXANDROSANCHES:
+			{
+				npc.Say(NpcStringId.OH_ITS_NOT_AN_OPPONENT_OF_MINE_HA_HA_HA);
+				npc.deleteMe();
+				break;
+			}
+			case ABYSSKING_BONAPARTERIUS:
+			{
+				npc.Say(NpcStringId.OH_ITS_NOT_AN_OPPONENT_OF_MINE_HA_HA_HA);
+				npc.deleteMe();
+				break;
+			}
+			case EVILOVERLORD_RAMSEBALIUS:
+			{
+				npc.Say(NpcStringId.OH_ITS_NOT_AN_OPPONENT_OF_MINE_HA_HA_HA);
+				npc.deleteMe();
+				break;
+			}
+			case WISDOM_CHEST:
+			{
+				npc.Say(NpcStringId.DONT_INTERRUPT_MY_REST_AGAIN);
+				npc.Say(NpcStringId.YOURE_A_GREAT_DEVIL_NOW);
+				npc.deleteMe();
+				break;
+			}
+			case ALCHEMIST_MATILD:
+			{
+				final QuestState qs = getQuestState(player, false);
+				
+				if (event.equals("QUEST_ACCEPTED"))
+				{
+					qs.playSound(QuestSound.ITEMSOUND_QUEST_ACCEPT);
+					qs.startQuest();
+					qs.setMemoState(1);
+					qs.setCond(1);
+					qs.showQuestionMark(334);
+					if (!qs.hasQuestItems(Q_ALCHEMY_TEXT))
+					{
+						qs.giveItems(Q_ALCHEMY_TEXT, 1);
+					}
+					qs.playSound(QuestSound.ITEMSOUND_QUEST_MIDDLE);
+					return "30738-04.htm";
+				}
+				
+				switch (Integer.parseInt(event))
+				{
+					case 1:
+					{
+						return "30738-03.htm";
+					}
+					case 2:
+					{
+						qs.takeItems(Q_SECRET_BOOK_OF_POTION, -1);
+						qs.takeItems(Q_ALCHEMY_TEXT, -1);
+						qs.giveItems(Q_POTION_RECIPE_1, 1);
+						qs.giveItems(Q_POTION_RECIPE_2, 1);
+						qs.setMemoState(2);
+						qs.setCond(3, true);
+						qs.showQuestionMark(334);
+						return "30738-07.html";
+					}
+					case 3:
+					{
+						return "30738-10.html";
+					}
+					case 4:
+					{
+						if (qs.hasQuestItems(Q_AMBER_SCALE, Q_GLASS_EYE, Q_HORROR_ECTOPLASM, Q_SILENOS_HORN, Q_ANT_SOLDIER_APHID, Q_TYRANTS_CHITIN, Q_BUGBEAR_BLOOD, Q_WIND_SOULSTONE, Q_POTION_RECIPE_1, Q_POTION_RECIPE_2))
+						{
+							qs.giveItems(Q_WISH_POTION, 1);
+							if (!qs.hasQuestItems(Q_MATILDS_ORB))
+							{
+								qs.giveItems(Q_MATILDS_ORB, 1);
+							}
+							qs.takeItems(Q_AMBER_SCALE, 1);
+							qs.takeItems(Q_GLASS_EYE, 1);
+							qs.takeItems(Q_HORROR_ECTOPLASM, 1);
+							qs.takeItems(Q_SILENOS_HORN, 1);
+							qs.takeItems(Q_ANT_SOLDIER_APHID, 1);
+							qs.takeItems(Q_TYRANTS_CHITIN, 1);
+							qs.takeItems(Q_BUGBEAR_BLOOD, 1);
+							qs.takeItems(Q_WIND_SOULSTONE, 1);
+							qs.takeItems(Q_POTION_RECIPE_1, -1);
+							qs.takeItems(Q_POTION_RECIPE_2, -1);
+							qs.setMemoState(2);
+							qs.playSound(QuestSound.ITEMSOUND_QUEST_MIDDLE);
+							qs.setCond(5);
+							qs.showQuestionMark(334);
+							return "30738-11.html";
+						}
+						break;
+					}
+					case 5:
+					{
+						if (qs.hasQuestItems(Q_WISH_POTION))
+						{
+							if (qs.getInt(I_QUEST0) != 1)
+							{
+								qs.set(I_QUEST0, 0);
+							}
+							return "30738-13.html";
+						}
+						return "30738-14.html";
+					}
+					case 6:
+					{
+						if (qs.hasQuestItems(Q_WISH_POTION))
+						{
+							return "30738-15a.html";
+						}
+						qs.giveItems(Q_POTION_RECIPE_1, 1);
+						qs.giveItems(Q_POTION_RECIPE_2, 1);
+						return "30738-15.html";
+					}
+					case 7:
+					{
+						if (qs.hasQuestItems(Q_WISH_POTION))
+						{
+							if (qs.getInt(EXCHANGE) == 0)
+							{
+								
+								qs.takeItems(Q_WISH_POTION, 1);
+								qs.set(I_QUEST0, 1);
+								qs.set(FLAG, 1);
+								startQuestTimer("2336008", 3 * 1000, npc, player);
+								return "30738-16.html";
+							}
+							return "30738-20.html";
+						}
+						return "30738-14.html";
+					}
+					case 8:
+					{
+						if (qs.hasQuestItems(Q_WISH_POTION))
+						{
+							if (qs.getInt(EXCHANGE) == 0)
+							{
+								
+								qs.takeItems(Q_WISH_POTION, 1);
+								qs.set(I_QUEST0, 2);
+								qs.set(FLAG, 2);
+								startQuestTimer("2336008", 3 * 1000, npc, player);
+								return "30738-17.html";
+							}
+							return "30738-20.html";
+						}
+						return "30738-14.html";
+					}
+					case 9:
+					{
+						if (qs.hasQuestItems(Q_WISH_POTION))
+						{
+							if (qs.getInt(EXCHANGE) == 0)
+							{
+								
+								qs.takeItems(Q_WISH_POTION, 1);
+								qs.set(I_QUEST0, 3);
+								qs.set(FLAG, 3);
+								startQuestTimer("2336008", 3 * 1000, npc, player);
+								return "30738-18.html";
+							}
+							return "30738-20.html";
+						}
+						return "30738-14.html";
+					}
+					case 10:
+					{
+						if (qs.hasQuestItems(Q_WISH_POTION))
+						{
+							if (qs.getInt(EXCHANGE) == 0)
+							{
+								
+								qs.takeItems(Q_WISH_POTION, 1);
+								qs.set(I_QUEST0, 4);
+								qs.set(FLAG, 4);
+								startQuestTimer("2336008", 3 * 1000, npc, player);
+								return "30738-19.html";
+							}
+							return "30738-20.html";
+						}
+						return "30738-14.html";
+					}
+					case 2336008:
+					{
+						npc.Say(NpcStringId.OK_EVERYBODY_PRAY_FERVENTLY);
+						startQuestTimer("2336009", 4 * 1000, npc, player);
+						break;
+					}
+					case 2336009:
+					{
+						npc.Say(NpcStringId.BOTH_HANDS_TO_HEAVEN_EVERYBODY_YELL_TOGETHER);
+						startQuestTimer("2336010", 4 * 1000, npc, player);
+						break;
+					}
+					case 2336010:
+					{
+						npc.Say(NpcStringId.ONE_TWO_MAY_YOUR_DREAMS_COME_TRUE);
+						int i0 = 0;
+						switch (qs.getInt(I_QUEST0))
+						{
+							case 1:
+								i0 = getRandom(2);
+								break;
+							case 2:
+							case 3:
+							case 4:
+								i0 = getRandom(3);
+								break;
+						}
+						switch (i0)
+						{
+							case 0:
+							{
+								switch (qs.getInt(I_QUEST0))
+								{
+									case 1:
+									{
+										addSpawn(FAIRY_RUPINA, npc, true, 0, false);
+										qs.set("Exchange", 0);
+										break;
+									}
+									case 2:
+									{
+										addSpawn(GRIMA, npc, true, 0, false);
+										addSpawn(GRIMA, npc, true, 0, false);
+										addSpawn(GRIMA, npc, true, 0, false);
+										qs.set("Exchange", 0);
+										break;
+									}
+									case 3:
+									{
+										qs.giveItems(Q_CERTIFICATE_OF_ROYALTY, 1);
+										qs.set("Exchange", 0);
+										break;
+									}
+									case 4:
+									{
+										addSpawn(WISDOM_CHEST, npc, true, 0, false);
+										qs.set("Exchange", 0);
+										break;
+									}
+								}
+								break;
+							}
+							case 1:
+							{
+								switch (qs.getInt(I_QUEST0))
+								{
+									case 1:
+									{
+										addSpawn(SUCCUBUS_OF_SEDUCTION, npc, true, 0, false);
+										addSpawn(SUCCUBUS_OF_SEDUCTION, npc, true, 0, false);
+										addSpawn(SUCCUBUS_OF_SEDUCTION, npc, true, 0, false);
+										addSpawn(SUCCUBUS_OF_SEDUCTION, npc, true, 0, false);
+										qs.set("Exchange", 0);
+										break;
+									}
+									case 2:
+									{
+										qs.giveAdena(10000, true);
+										qs.set("Exchange", 0);
+										break;
+									}
+									case 3:
+									{
+										addSpawn(DLORD_ALEXANDROSANCHES, npc, true, 0, false);
+										qs.set("Exchange", 0);
+										break;
+									}
+									case 4:
+									{
+										addSpawn(WISDOM_CHEST, npc, true, 0, false);
+										qs.set("Exchange", 0);
+										break;
+									}
+								}
+								break;
+							}
+							case 2:
+							{
+								switch (qs.getInt(I_QUEST0))
+								{
+									case 2:
+									{
+										qs.giveAdena(10000, true);
+										qs.set("Exchange", 0);
+										break;
+									}
+									case 3:
+									{
+										qs.giveItems(Q_ANCIENT_CROWN, 1);
+										qs.set("Exchange", 0);
+										break;
+									}
+									case 4:
+									{
+										addSpawn(WISDOM_CHEST, npc, true, 0, false);
+										qs.set("Exchange", 0);
+										break;
+									}
+								}
+								break;
+							}
+						}
+						break;
+					}
+				}
+				break;
+			}
+		}
+		return super.onAdvEvent(event, npc, player);
+	}
+	
+	@Override
+	public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
+	{
+		final QuestState qs = getRandomPlayerFromParty(killer, npc);
+		if (qs != null)
+		{
+			switch (npc.getId())
+			{
+				case WHISPERING_WIND:
+				{
+					if (qs.hasQuestItems(Q_POTION_RECIPE_1, Q_POTION_RECIPE_2) && !qs.hasQuestItems(Q_WIND_SOULSTONE))
+					{
+						if (getRandom(10) == 0)
+						{
+							qs.giveItems(Q_WIND_SOULSTONE, 1);
+							qs.playSound(QuestSound.ITEMSOUND_QUEST_ITEMGET);
+							if (qs.hasQuestItems(Q_AMBER_SCALE, Q_GLASS_EYE, Q_HORROR_ECTOPLASM, Q_SILENOS_HORN, Q_ANT_SOLDIER_APHID, Q_TYRANTS_CHITIN, Q_BUGBEAR_BLOOD))
+							{
+								qs.setCond(4, true);
+								qs.showQuestionMark(334);
+							}
+							else
+							{
+								qs.playSound(QuestSound.ITEMSOUND_QUEST_ITEMGET);
+							}
+						}
+					}
+					break;
+				}
+				case ANT_SOLDIER:
+				case ANT_WARRIOR_CAPTAIN:
+				{
+					if (qs.hasQuestItems(Q_POTION_RECIPE_1, Q_POTION_RECIPE_2) && !qs.hasQuestItems(Q_ANT_SOLDIER_APHID))
+					{
+						if (getRandom(10) == 0)
+						{
+							qs.giveItems(Q_ANT_SOLDIER_APHID, 1);
+							qs.playSound(QuestSound.ITEMSOUND_QUEST_ITEMGET);
+							if (qs.hasQuestItems(Q_AMBER_SCALE, Q_WIND_SOULSTONE, Q_GLASS_EYE, Q_HORROR_ECTOPLASM, Q_SILENOS_HORN, Q_ANT_SOLDIER_APHID, Q_TYRANTS_CHITIN, Q_BUGBEAR_BLOOD))
+							{
+								qs.setCond(4, true);
+								qs.showQuestionMark(334);
+							}
+							else
+							{
+								qs.playSound(QuestSound.ITEMSOUND_QUEST_ITEMGET);
+							}
+						}
+					}
+					break;
+				}
+				case SILENOS:
+				{
+					if (qs.hasQuestItems(Q_POTION_RECIPE_1, Q_POTION_RECIPE_2) && !qs.hasQuestItems(Q_SILENOS_HORN))
+					{
+						if (getRandom(10) == 0)
+						{
+							qs.giveItems(Q_SILENOS_HORN, 1);
+							qs.playSound(QuestSound.ITEMSOUND_QUEST_ITEMGET);
+							if (qs.hasQuestItems(Q_AMBER_SCALE, Q_WIND_SOULSTONE, Q_GLASS_EYE, Q_HORROR_ECTOPLASM, Q_ANT_SOLDIER_APHID, Q_TYRANTS_CHITIN, Q_BUGBEAR_BLOOD))
+							{
+								qs.setCond(4, true);
+								qs.showQuestionMark(334);
+							}
+							else
+							{
+								qs.playSound(QuestSound.ITEMSOUND_QUEST_ITEMGET);
+							}
+						}
+					}
+					break;
+				}
+				case TYRANT:
+				case TYRANT_KINGPIN:
+				{
+					if (qs.hasQuestItems(Q_POTION_RECIPE_1, Q_POTION_RECIPE_2) && !qs.hasQuestItems(Q_TYRANTS_CHITIN))
+					{
+						if (getRandom(10) == 0)
+						{
+							qs.giveItems(Q_TYRANTS_CHITIN, 1);
+							qs.playSound(QuestSound.ITEMSOUND_QUEST_ITEMGET);
+							if (qs.hasQuestItems(Q_AMBER_SCALE, Q_WIND_SOULSTONE, Q_GLASS_EYE, Q_HORROR_ECTOPLASM, Q_SILENOS_HORN, Q_ANT_SOLDIER_APHID, Q_TYRANTS_CHITIN, Q_BUGBEAR_BLOOD))
+							{
+								qs.setCond(4, true);
+								qs.showQuestionMark(334);
+							}
+							else
+							{
+								qs.playSound(QuestSound.ITEMSOUND_QUEST_ITEMGET);
+							}
+						}
+					}
+					break;
+				}
+				case AMBER_BASILISK:
+				{
+					if (qs.hasQuestItems(Q_POTION_RECIPE_1, Q_POTION_RECIPE_2) && !qs.hasQuestItems(Q_AMBER_SCALE))
+					{
+						if (getRandom(10) == 0)
+						{
+							qs.giveItems(Q_AMBER_SCALE, 1);
+							qs.playSound(QuestSound.ITEMSOUND_QUEST_ITEMGET);
+							if (qs.hasQuestItems(Q_WIND_SOULSTONE, Q_GLASS_EYE, Q_HORROR_ECTOPLASM, Q_SILENOS_HORN, Q_ANT_SOLDIER_APHID, Q_TYRANTS_CHITIN, Q_BUGBEAR_BLOOD))
+							{
+								qs.setCond(4, true);
+								qs.showQuestionMark(334);
+							}
+							else
+							{
+								qs.playSound(QuestSound.ITEMSOUND_QUEST_ITEMGET);
+							}
+						}
+					}
+					break;
+				}
+				case MIST_HORROR_RIPPER:
+				{
+					if (qs.hasQuestItems(Q_POTION_RECIPE_1, Q_POTION_RECIPE_2) && !qs.hasQuestItems(Q_HORROR_ECTOPLASM))
+					{
+						if (getRandom(10) == 0)
+						{
+							qs.giveItems(Q_HORROR_ECTOPLASM, 1);
+							qs.playSound(QuestSound.ITEMSOUND_QUEST_ITEMGET);
+							if (qs.hasQuestItems(Q_AMBER_SCALE, Q_WIND_SOULSTONE, Q_GLASS_EYE, Q_HORROR_ECTOPLASM, Q_SILENOS_HORN, Q_ANT_SOLDIER_APHID, Q_TYRANTS_CHITIN, Q_BUGBEAR_BLOOD))
+							{
+								qs.setCond(4, true);
+								qs.showQuestionMark(334);
+							}
+							else
+							{
+								qs.playSound(QuestSound.ITEMSOUND_QUEST_ITEMGET);
+							}
+						}
+					}
+					break;
+				}
+				case TURAK_BUGBEAR:
+				case TURAK_BUGBEAR_WARRIOR:
+				{
+					if (qs.hasQuestItems(Q_POTION_RECIPE_1, Q_POTION_RECIPE_2) && !qs.hasQuestItems(Q_BUGBEAR_BLOOD))
+					{
+						if (getRandom(10) == 0)
+						{
+							qs.giveItems(Q_BUGBEAR_BLOOD, 1);
+							qs.playSound(QuestSound.ITEMSOUND_QUEST_ITEMGET);
+							if (qs.hasQuestItems(Q_AMBER_SCALE, Q_WIND_SOULSTONE, Q_GLASS_EYE, Q_HORROR_ECTOPLASM, Q_SILENOS_HORN, Q_ANT_SOLDIER_APHID, Q_TYRANTS_CHITIN, Q_BUGBEAR_BLOOD))
+							{
+								qs.setCond(4, true);
+								qs.showQuestionMark(334);
+							}
+							else
+							{
+								qs.playSound(QuestSound.ITEMSOUND_QUEST_ITEMGET);
+							}
+						}
+					}
+					break;
+				}
+				case GLASS_JAGUAR:
+				{
+					if (qs.hasQuestItems(Q_POTION_RECIPE_1, Q_POTION_RECIPE_2) && !qs.hasQuestItems(Q_GLASS_EYE))
+					{
+						if (getRandom(10) == 0)
+						{
+							qs.giveItems(Q_GLASS_EYE, 1);
+							qs.playSound(QuestSound.ITEMSOUND_QUEST_ITEMGET);
+							if (qs.hasQuestItems(Q_AMBER_SCALE, Q_WIND_SOULSTONE, Q_GLASS_EYE, Q_HORROR_ECTOPLASM, Q_SILENOS_HORN, Q_ANT_SOLDIER_APHID, Q_TYRANTS_CHITIN, Q_BUGBEAR_BLOOD))
+							{
+								qs.setCond(4, true);
+								qs.showQuestionMark(334);
+							}
+							else
+							{
+								qs.playSound(QuestSound.ITEMSOUND_QUEST_ITEMGET);
+							}
+						}
+					}
+					break;
+				}
+				case GRIMA:
+				{
+					if (qs.isMemoState(2) && (qs.getInt(FLAG) == 2))
+					{
+						if (getRandom(1000) < 33)
+						{
+							if (getRandom(1000) == 0)
+							{
+								qs.giveAdena(100_000_000, true);
+							}
+							else
+							{
+								qs.giveAdena(900_000, true);
+							}
+							qs.playSound(QuestSound.ITEMSOUND_QUEST_ITEMGET);
+							qs.set(FLAG, 0);
+						}
+					}
+					break;
+				}
+				case SUCCUBUS_OF_SEDUCTION:
+				{
+					if (qs.isMemoState(2) && !qs.hasQuestItems(Q_FOBBIDEN_LOVE_SCROLL) && (qs.getInt(FLAG) == 1) && (getRandom(1000) < 28))
+					{
+						qs.giveItems(Q_FOBBIDEN_LOVE_SCROLL, 1);
+						qs.playSound(QuestSound.ITEMSOUND_QUEST_ITEMGET);
+						qs.set(FLAG, 0);
+					}
+					break;
+				}
+				case GREAT_DEMON_KING:
+				{
+					if (qs.isMemoState(2) && (qs.getInt(FLAG) == 3))
+					{
+						qs.giveAdena(1_406_956, true);
+						qs.playSound(QuestSound.ITEMSOUND_QUEST_ITEMGET);
+						qs.set(FLAG, 0);
+					}
+					break;
+				}
+				case SECRET_KEEPER_TREE:
+				{
+					if (qs.isMemoState(1) && !qs.hasQuestItems(Q_SECRET_BOOK_OF_POTION))
+					{
+						qs.giveItems(Q_SECRET_BOOK_OF_POTION, 1);
+						qs.setCond(2, true);
+						qs.showQuestionMark(334);
+						qs.playSound(QuestSound.ITEMSOUND_QUEST_ITEMGET);
+					}
+					break;
+				}
+				case DLORD_ALEXANDROSANCHES:
+				{
+					if (qs.isMemoState(2) && (qs.getInt(FLAG) == 3))
+					{
+						npc.Say(NpcStringId.BONAPARTERIUS_ABYSS_KING_WILL_PUNISH_YOU);
+						if (getRandom(2) == 0)
+						{
+							addSpawn(ABYSSKING_BONAPARTERIUS, npc, true, 0, false);
+						}
+						else
+						{
+							switch (getRandom(4))
+							{
+								case 0:
+								{
+									qs.giveItems(DEMONS_TUNIC_FABRIC, 1);
+									break;
+								}
+								case 1:
+								{
+									qs.giveItems(DEMONS_HOSE_PATTERN, 1);
+									break;
+								}
+								case 2:
+								{
+									qs.giveItems(DEMONS_BOOTS_FABRIC, 1);
+									break;
+								}
+								case 3:
+								{
+									qs.giveItems(DEMONS_GLOVES_FABRIC, 1);
+								}
+							}
+						}
+						break;
+					}
+				}
+				case ABYSSKING_BONAPARTERIUS:
+				{
+					if (qs.isMemoState(2) && (qs.getInt(FLAG) == 3))
+					{
+						npc.Say(NpcStringId.REVENGE_IS_OVERLORD_RAMSEBALIUS_OF_THE_EVIL_WORLD);
+						if (getRandom(2) == 0)
+						{
+							addSpawn(EVILOVERLORD_RAMSEBALIUS, npc, true, 0, false);
+						}
+						else
+						{
+							switch (getRandom(4))
+							{
+								case 0:
+								{
+									qs.giveItems(DEMONS_TUNIC_FABRIC, 1);
+									break;
+								}
+								case 1:
+								{
+									qs.giveItems(DEMONS_HOSE_PATTERN, 1);
+									break;
+								}
+								case 2:
+								{
+									qs.giveItems(DEMONS_BOOTS_FABRIC, 1);
+									break;
+								}
+								case 3:
+								{
+									qs.giveItems(DEMONS_GLOVES_FABRIC, 1);
+									break;
+								}
+							}
+						}
+						break;
+					}
+					break;
+				}
+				case EVILOVERLORD_RAMSEBALIUS:
+				{
+					if (qs.isMemoState(2) && (qs.getInt(FLAG) == 3))
+					{
+						npc.Say(NpcStringId.OH_GREAT_DEMON_KING);
+						if (getRandom(2) == 0)
+						{
+							addSpawn(GREAT_DEMON_KING, npc, true, 0, false);
+						}
+						else
+						{
+							switch (getRandom(4))
+							{
+								case 0:
+								{
+									qs.giveItems(DEMONS_TUNIC_FABRIC, 1);
+									break;
+								}
+								case 1:
+								{
+									qs.giveItems(DEMONS_HOSE_PATTERN, 1);
+									break;
+								}
+								case 2:
+								{
+									qs.giveItems(DEMONS_BOOTS_FABRIC, 1);
+									break;
+								}
+								case 3:
+								{
+									qs.giveItems(DEMONS_GLOVES_FABRIC, 1);
+									break;
+								}
+							}
+						}
+						break;
+					}
+					break;
+				}
+			}
+			
+		}
+		return super.onKill(npc, killer, isSummon);
+	}
+	
+	private QuestState getRandomPlayerFromParty(L2PcInstance player, L2Npc npc)
+	{
+		QuestState qs = player.getQuestState(getName());
+		final List<QuestState> candidates = new ArrayList<>();
+		
+		if ((qs != null) && qs.isStarted())
+		{
+			candidates.add(qs);
+			candidates.add(qs);
+		}
+		
+		if (player.isInParty())
+		{
+			player.getParty().getMembers().stream().forEach(pm ->
+			{
+				
+				QuestState qss = pm.getQuestState(getName());
+				if ((qss != null) && qss.isStarted() && Util.checkIfInRange(1500, npc, pm, true))
+				{
+					candidates.add(qss);
+				}
+			});
+		}
+		return candidates.isEmpty() ? null : candidates.get(getRandom(candidates.size()));
+	}
+}
diff --git a/dist/game/data/scripts/quests/QuestMasterHandler.java b/dist/game/data/scripts/quests/QuestMasterHandler.java
index 7591378a3b..f391b38552 100644
--- a/dist/game/data/scripts/quests/QuestMasterHandler.java
+++ b/dist/game/data/scripts/quests/QuestMasterHandler.java
@@ -305,6 +305,7 @@ import quests.Q00329_CuriosityOfADwarf.Q00329_CuriosityOfADwarf;
 import quests.Q00330_AdeptOfTaste.Q00330_AdeptOfTaste;
 import quests.Q00331_ArrowOfVengeance.Q00331_ArrowOfVengeance;
 import quests.Q00333_HuntOfTheBlackLion.Q00333_HuntOfTheBlackLion;
+import quests.Q00334_TheWishingPotion.Q00334_TheWishingPotion;
 import quests.Q00336_CoinsOfMagic.Q00336_CoinsOfMagic;
 import quests.Q00337_AudienceWithTheLandDragon.Q00337_AudienceWithTheLandDragon;
 import quests.Q00338_AlligatorHunter.Q00338_AlligatorHunter;
@@ -792,6 +793,7 @@ public class QuestMasterHandler
 		Q00330_AdeptOfTaste.class,
 		Q00331_ArrowOfVengeance.class,
 		Q00333_HuntOfTheBlackLion.class,
+		Q00334_TheWishingPotion.class,
 		Q00336_CoinsOfMagic.class,
 		Q00337_AudienceWithTheLandDragon.class,
 		Q00338_AlligatorHunter.class,
diff --git a/dist/sql/game/updates/20151128update.sql b/dist/sql/game/updates/20151128update.sql
index 25249a4169..d02cd5be33 100644
--- a/dist/sql/game/updates/20151128update.sql
+++ b/dist/sql/game/updates/20151128update.sql
@@ -1,2 +1,3 @@
-UPDATE character_quests SET name='Q00234_FatesWhisper' WHERE name='234_FatesWhisper'; 
-UPDATE character_quests SET name='Q00386_StolenDignity' WHERE name='386_StolenDignity'; 
\ No newline at end of file
+UPDATE character_quests SET name='Q00234_FatesWhisper' WHERE name='234_FatesWhisper';
+UPDATE character_quests SET name='Q00334_TheWishingPotion' WHERE name='334_StolenDignity';
+UPDATE character_quests SET name='Q00386_StolenDignity' WHERE name='386_StolenDignity';
\ No newline at end of file
-- 
GitLab