From f28d1b15f10c232321e5166ef82affd15a92818a Mon Sep 17 00:00:00 2001
From: ivantotov <gmtotov@gmail.com>
Date: Sat, 22 Nov 2014 11:02:03 +0200
Subject: [PATCH] Quest: Test Of Magus (228) Reviewed by: @Zoey76

---
 L2J_DataPack/dist/game/data/scripts.cfg       |   1 -
 .../quests/228_TestOfMagus/30391-01.htm       |   5 -
 .../quests/228_TestOfMagus/30391-02.htm       |   5 -
 .../quests/228_TestOfMagus/30391-03.htm       |   3 -
 .../quests/228_TestOfMagus/30391-04.htm       |   3 -
 .../quests/228_TestOfMagus/30391-05.htm       |   3 -
 .../quests/228_TestOfMagus/30409-01.htm       |   6 -
 .../quests/228_TestOfMagus/30409-02.htm       |   4 -
 .../quests/228_TestOfMagus/30409-05.htm       |   3 -
 .../quests/228_TestOfMagus/30411-01.htm       |   6 -
 .../quests/228_TestOfMagus/30411-03.htm       |   3 -
 .../quests/228_TestOfMagus/30412-01.htm       |   5 -
 .../quests/228_TestOfMagus/30412-02.htm       |   4 -
 .../quests/228_TestOfMagus/30412-03.htm       |   3 -
 .../quests/228_TestOfMagus/30412-04.htm       |   3 -
 .../quests/228_TestOfMagus/30412-05.htm       |   3 -
 .../quests/228_TestOfMagus/30413-01.htm       |   5 -
 .../quests/228_TestOfMagus/30413-02.htm       |   3 -
 .../quests/228_TestOfMagus/30413-03.htm       |   3 -
 .../quests/228_TestOfMagus/30413-04.htm       |   3 -
 .../quests/228_TestOfMagus/30612-01.htm       |   5 -
 .../quests/228_TestOfMagus/30612-02.htm       |   5 -
 .../quests/228_TestOfMagus/30612-03.htm       |   4 -
 .../quests/228_TestOfMagus/30612-04.htm       |   3 -
 .../quests/228_TestOfMagus/30612-05.htm       |   3 -
 .../quests/228_TestOfMagus/30629-01.htm       |   5 -
 .../quests/228_TestOfMagus/30629-02.htm       |   6 -
 .../quests/228_TestOfMagus/30629-06.htm       |   3 -
 .../quests/228_TestOfMagus/30629-07.htm       |   5 -
 .../quests/228_TestOfMagus/30629-12.htm       |   4 -
 .../quests/228_TestOfMagus/__init__.py        | 279 --------
 .../quests/Q00228_TestOfMagus/30391-01.html   |   5 +
 .../quests/Q00228_TestOfMagus/30391-02.html   |   5 +
 .../quests/Q00228_TestOfMagus/30391-03.html   |   3 +
 .../quests/Q00228_TestOfMagus/30391-04.html   |   3 +
 .../quests/Q00228_TestOfMagus/30391-05.html   |   3 +
 .../quests/Q00228_TestOfMagus/30409-01.html   |   6 +
 .../quests/Q00228_TestOfMagus/30409-02.html   |   6 +
 .../30409-03.html}                            |   4 +-
 .../30409-04.html}                            |   0
 .../quests/Q00228_TestOfMagus/30409-05.html   |   3 +
 .../30409-06.html}                            |   0
 .../quests/Q00228_TestOfMagus/30411-01.html   |   6 +
 .../30411-02.html}                            |   2 +-
 .../quests/Q00228_TestOfMagus/30411-03.html   |   3 +
 .../30411-04.html}                            |   0
 .../quests/Q00228_TestOfMagus/30412-01.html   |   5 +
 .../quests/Q00228_TestOfMagus/30412-02.html   |   4 +
 .../quests/Q00228_TestOfMagus/30412-03.html   |   3 +
 .../quests/Q00228_TestOfMagus/30412-04.html   |   3 +
 .../quests/Q00228_TestOfMagus/30412-05.html   |   3 +
 .../quests/Q00228_TestOfMagus/30413-01.html   |   5 +
 .../quests/Q00228_TestOfMagus/30413-02.html   |   3 +
 .../quests/Q00228_TestOfMagus/30413-03.html   |   3 +
 .../quests/Q00228_TestOfMagus/30413-04.html   |   3 +
 .../quests/Q00228_TestOfMagus/30612-01.html   |   5 +
 .../quests/Q00228_TestOfMagus/30612-02.html   |   5 +
 .../quests/Q00228_TestOfMagus/30612-03.html   |   4 +
 .../quests/Q00228_TestOfMagus/30612-04.html   |   3 +
 .../quests/Q00228_TestOfMagus/30612-05.html   |   3 +
 .../quests/Q00228_TestOfMagus/30629-01.html   |   5 +
 .../quests/Q00228_TestOfMagus/30629-02.html   |   5 +
 .../30629-03.htm                              |   4 +-
 .../30629-04.htm                              |   4 +-
 .../quests/Q00228_TestOfMagus/30629-04a.htm   |   8 +
 .../30629-05.html}                            |   0
 .../quests/Q00228_TestOfMagus/30629-06.html   |   3 +
 .../quests/Q00228_TestOfMagus/30629-07.html   |   3 +
 .../30629-08.html}                            |   4 +-
 .../30629-09.html}                            |   6 +-
 .../30629-10.html}                            |   8 +-
 .../30629-11.html}                            |   2 +-
 .../quests/Q00228_TestOfMagus/30629-12.html   |   4 +
 .../Q00228_TestOfMagus.java                   | 647 ++++++++++++++++++
 .../scripts/quests/QuestMasterHandler.java    |   2 +
 .../dist/sql/game/updates/20141122update.sql  |   1 +
 76 files changed, 789 insertions(+), 414 deletions(-)
 delete mode 100644 L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30391-01.htm
 delete mode 100644 L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30391-02.htm
 delete mode 100644 L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30391-03.htm
 delete mode 100644 L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30391-04.htm
 delete mode 100644 L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30391-05.htm
 delete mode 100644 L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30409-01.htm
 delete mode 100644 L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30409-02.htm
 delete mode 100644 L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30409-05.htm
 delete mode 100644 L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30411-01.htm
 delete mode 100644 L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30411-03.htm
 delete mode 100644 L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30412-01.htm
 delete mode 100644 L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30412-02.htm
 delete mode 100644 L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30412-03.htm
 delete mode 100644 L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30412-04.htm
 delete mode 100644 L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30412-05.htm
 delete mode 100644 L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30413-01.htm
 delete mode 100644 L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30413-02.htm
 delete mode 100644 L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30413-03.htm
 delete mode 100644 L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30413-04.htm
 delete mode 100644 L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30612-01.htm
 delete mode 100644 L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30612-02.htm
 delete mode 100644 L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30612-03.htm
 delete mode 100644 L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30612-04.htm
 delete mode 100644 L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30612-05.htm
 delete mode 100644 L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30629-01.htm
 delete mode 100644 L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30629-02.htm
 delete mode 100644 L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30629-06.htm
 delete mode 100644 L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30629-07.htm
 delete mode 100644 L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30629-12.htm
 delete mode 100644 L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/__init__.py
 create mode 100644 L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30391-01.html
 create mode 100644 L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30391-02.html
 create mode 100644 L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30391-03.html
 create mode 100644 L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30391-04.html
 create mode 100644 L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30391-05.html
 create mode 100644 L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30409-01.html
 create mode 100644 L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30409-02.html
 rename L2J_DataPack/dist/game/data/scripts/quests/{228_TestOfMagus/30409-03.htm => Q00228_TestOfMagus/30409-03.html} (70%)
 rename L2J_DataPack/dist/game/data/scripts/quests/{228_TestOfMagus/30409-04.htm => Q00228_TestOfMagus/30409-04.html} (100%)
 create mode 100644 L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30409-05.html
 rename L2J_DataPack/dist/game/data/scripts/quests/{228_TestOfMagus/30409-06.htm => Q00228_TestOfMagus/30409-06.html} (100%)
 create mode 100644 L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30411-01.html
 rename L2J_DataPack/dist/game/data/scripts/quests/{228_TestOfMagus/30411-02.htm => Q00228_TestOfMagus/30411-02.html} (55%)
 create mode 100644 L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30411-03.html
 rename L2J_DataPack/dist/game/data/scripts/quests/{228_TestOfMagus/30411-04.htm => Q00228_TestOfMagus/30411-04.html} (100%)
 create mode 100644 L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30412-01.html
 create mode 100644 L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30412-02.html
 create mode 100644 L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30412-03.html
 create mode 100644 L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30412-04.html
 create mode 100644 L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30412-05.html
 create mode 100644 L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30413-01.html
 create mode 100644 L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30413-02.html
 create mode 100644 L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30413-03.html
 create mode 100644 L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30413-04.html
 create mode 100644 L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30612-01.html
 create mode 100644 L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30612-02.html
 create mode 100644 L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30612-03.html
 create mode 100644 L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30612-04.html
 create mode 100644 L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30612-05.html
 create mode 100644 L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30629-01.html
 create mode 100644 L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30629-02.html
 rename L2J_DataPack/dist/game/data/scripts/quests/{228_TestOfMagus => Q00228_TestOfMagus}/30629-03.htm (57%)
 rename L2J_DataPack/dist/game/data/scripts/quests/{228_TestOfMagus => Q00228_TestOfMagus}/30629-04.htm (59%)
 create mode 100644 L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30629-04a.htm
 rename L2J_DataPack/dist/game/data/scripts/quests/{228_TestOfMagus/30629-05.htm => Q00228_TestOfMagus/30629-05.html} (100%)
 create mode 100644 L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30629-06.html
 create mode 100644 L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30629-07.html
 rename L2J_DataPack/dist/game/data/scripts/quests/{228_TestOfMagus/30629-08.htm => Q00228_TestOfMagus/30629-08.html} (64%)
 rename L2J_DataPack/dist/game/data/scripts/quests/{228_TestOfMagus/30629-09.htm => Q00228_TestOfMagus/30629-09.html} (59%)
 rename L2J_DataPack/dist/game/data/scripts/quests/{228_TestOfMagus/30629-10.htm => Q00228_TestOfMagus/30629-10.html} (51%)
 rename L2J_DataPack/dist/game/data/scripts/quests/{228_TestOfMagus/30629-11.htm => Q00228_TestOfMagus/30629-11.html} (53%)
 create mode 100644 L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30629-12.html
 create mode 100644 L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/Q00228_TestOfMagus.java
 create mode 100644 L2J_DataPack/dist/sql/game/updates/20141122update.sql

diff --git a/L2J_DataPack/dist/game/data/scripts.cfg b/L2J_DataPack/dist/game/data/scripts.cfg
index 11fa7d3949..446e786a11 100644
--- a/L2J_DataPack/dist/game/data/scripts.cfg
+++ b/L2J_DataPack/dist/game/data/scripts.cfg
@@ -222,7 +222,6 @@ quests/185_Nikolas_Cooperation_Consideration/__init__.py
 quests/216_TrialOfGuildsman/__init__.py
 quests/222_TestOfDuelist/__init__.py
 quests/227_TestOfReformer/__init__.py
-quests/228_TestOfMagus/__init__.py
 quests/229_TestOfWitchcraft/__init__.py
 quests/230_TestOfSummoner/__init__.py
 quests/231_TestOfMaestro/__init__.py
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30391-01.htm b/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30391-01.htm
deleted file mode 100644
index c01f96a38e..0000000000
--- a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30391-01.htm
+++ /dev/null
@@ -1,5 +0,0 @@
-<html><body>Parina:<br>
-So you, Rukal, heard the song as well. That's right, I've been hearing those melodies every night, recently. I've heard many songs before but I'm sure this one is no Human's voice.<br>
-It seemed like the song was coming from all different directions. And from somewhere far away... Perhaps the voice belongs to the legendary 'singing flower'...<br>
-<a action="bypass -h Quest 228_TestOfMagus 30391_1">Ask about the singing flower</a>
-</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30391-02.htm b/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30391-02.htm
deleted file mode 100644
index b94db798bd..0000000000
--- a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30391-02.htm
+++ /dev/null
@@ -1,5 +0,0 @@
-<html><body>Parina:<br>
-The singing flower is an legendary malignant spirit which is said to sing in order to bloom flowers. Its appearance is that of a beautiful lady but in fact it is a very horrible creature. They shoot out from a seed called 'the Golden Seed'.<br>
-It is not so romantic as it may sound. For the singing flower is said to seduce people with its beautiful voice, only to feed on the blood of its preys...<br>
-I am also consulting Casian the Wise about this matter at the moment so why don't you go and meet him with my letter. He is in the Wastelands right now.
-</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30391-03.htm b/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30391-03.htm
deleted file mode 100644
index 85edb6278e..0000000000
--- a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30391-03.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-<html><body>Parina:<br>
-You haven't left yet? Go and meet Wiseman Casian now. He is the one who knows most about the singing flower.
-</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30391-04.htm b/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30391-04.htm
deleted file mode 100644
index 84658ff7af..0000000000
--- a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30391-04.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-<html><body>Parina:<br>
-You must not be tempted by the voice of the singing flower. They are evil creatures for sure, creatures that ought to disappear from earth. Find them and kill them. Find the Golden Seed which bears the blood of the innocent. If you find 3 of them, take them to Bard Rukal.
-</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30391-05.htm b/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30391-05.htm
deleted file mode 100644
index ee6ec1d52a..0000000000
--- a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30391-05.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-<html><body>Parina:<br>
-So, I heard that you are looking for the notes of the 4 elements for Rukal? I hope you gather all the notes and complete the total music.
-</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30409-01.htm b/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30409-01.htm
deleted file mode 100644
index af9eea51ae..0000000000
--- a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30409-01.htm
+++ /dev/null
@@ -1,6 +0,0 @@
-<html><body>Earth Snake:<br>
-I am an element of this earth. The truths of the universe within the earth are within me.<br>
-So, you seek the Note of the Earth? What do you expect to do with it...? Do you plan to create absolute music?<br>
-Is that it...? And what then...?<br>
-<a action="bypass -h Quest 228_TestOfMagus 30409_1">"I will use it to bring the thousand year flower into bloom."</a>
-</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30409-02.htm b/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30409-02.htm
deleted file mode 100644
index 2175347c1e..0000000000
--- a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30409-02.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-<html><body>Earth Snake:<br>
-Ahhh, the thousand year flower! I see<br>
-<a action="bypass -h Quest 228_TestOfMagus 30409_2">"Yes!"</a>
-</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30409-05.htm b/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30409-05.htm
deleted file mode 100644
index b70bc36750..0000000000
--- a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30409-05.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-<html><body>Earth Snake:<br>
-1, 2, 3... Yes
-</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30411-01.htm b/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30411-01.htm
deleted file mode 100644
index 515ef20d32..0000000000
--- a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30411-01.htm
+++ /dev/null
@@ -1,6 +0,0 @@
-<html><body>Flame Salamander:<br>
-What is it, my child? Have you no fear of fire?<br>
-...Ah, you seek the Note of Fire... I see...<br>
-Of course I have it, silly! Nothing comes for free, however...<br>
-If you will journey north, near the Ivory Tower, and retrieve 5 Flame Crystals from the ghost fires, I shall take them in exchange for the Note of Fire! But not one less than 5!
-</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30411-03.htm b/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30411-03.htm
deleted file mode 100644
index d9d0094172..0000000000
--- a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30411-03.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-<html><body>Flame Salamander:<br>
-Five flame crystals... Oh how lovely. Here is the Note of Fire. Take it!
-</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30412-01.htm b/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30412-01.htm
deleted file mode 100644
index 8782d9932c..0000000000
--- a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30412-01.htm
+++ /dev/null
@@ -1,5 +0,0 @@
-<html><body>Wind Sylph:<br>
-Nice to meet you, wise man of the magic world who manages the elements. I am the Wind Sylph, messenger of Zephyr, guide of the storms. Did you come to me to get the Tone of Wind, by any chance?<br>
-The wind is an inessential figure, which nobody can get hold of... Do you think you can get a note consisting of such wind? Only I can give you the Tone of Wind So you must make a deal with me.<br>
-<a action="bypass -h Quest 228_TestOfMagus 30412_1"> Accept the proposal for making a deal</a>
-</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30412-02.htm b/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30412-02.htm
deleted file mode 100644
index 0f7cdc9453..0000000000
--- a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30412-02.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-<html><body>Wind Sylph:<br>
-Yes. You are a wise man, indeed. Please find me these things. 20 Harpy Feathers, 10 Wyrm Wingbone, and 10 Windsus Manes... You can get them all from the magic creatures in Giran.<br>
-Do you understand? The harpy which glides with the wind, the wyrm which makes a strong blast while it feathers, and the mane of the windsus blowing in the winds. All these materials are related to the wind, things which I need to control it...
-</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30412-03.htm b/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30412-03.htm
deleted file mode 100644
index 842d669ef4..0000000000
--- a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30412-03.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-<html><body>Wind Sylph:<br>
-Is the wind blowing in your mind also? Are all your memories blown away? 20 Harpy Feathers, 10 Wyrm Wingbone, and 10 Windsus Manes... If you cannot bring these 3 materials, I cannot give you the Tone of Wind either.
-</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30412-04.htm b/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30412-04.htm
deleted file mode 100644
index 3547aa0ead..0000000000
--- a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30412-04.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-<html><body>Wind Sylph:<br>
-...You have gathered all of them! You are a faithful man indeed... Fine. Even the wind keeps its promise. Take the Tone of Wind... Be careful cause it might blow away somewhere...
-</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30412-05.htm b/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30412-05.htm
deleted file mode 100644
index 47de902b27..0000000000
--- a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30412-05.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-<html><body>Wind Sylph:<br>
-Are you taking good care of the Tone of Wind? That thing can be easily blown away, so hold on to it firmly. Once you loose it, you will never be able to hear it's beautiful melody again.
-</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30413-01.htm b/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30413-01.htm
deleted file mode 100644
index d11af12779..0000000000
--- a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30413-01.htm
+++ /dev/null
@@ -1,5 +0,0 @@
-<html><body>Water Undine:<br>
-I am Undine, the guardian of the deep lake, the spirit of the precious water... Did you come for the Tone of Water?<br>
-It is the rhythm which expresses the nature of water among the 4 basic elements which the world consists of... To make one of those, you need 20 Dazzling Drops from the monsters of the marshlands.<br>
-Inpicioes which live in the Cruma Marshlands... And the swamp stakatos have the Dazzling Drops. If you can bring 20 of them, I shall make you the tone. This amulet is a voucher of promise...
-</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30413-02.htm b/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30413-02.htm
deleted file mode 100644
index 2b0e902672..0000000000
--- a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30413-02.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-<html><body>Water Undine:<br>
-We need 20 Dazzling Drops to make the Tone of Water. Hunt the inpicios and swamp stakatos in the Cruma Marshlands and steal it from them. Now, hurry! You promised, didn't you...? 
-</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30413-03.htm b/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30413-03.htm
deleted file mode 100644
index 9eead820bc..0000000000
--- a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30413-03.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-<html><body>Water Undine:<br>
-...18, 19, 20... Good... That is exactly 20. Then. I shall give you the Tone of Water. Here you go.
-</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30413-04.htm b/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30413-04.htm
deleted file mode 100644
index 967fff5ca1..0000000000
--- a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30413-04.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-<html><body>Water Undine:<br>
-I bet you are looking for the Tones of Fire, Wind, Earth as well? They are all my brothers and sisters... Please give them my best regards for me...
-</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30612-01.htm b/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30612-01.htm
deleted file mode 100644
index 1fa0a6cf22..0000000000
--- a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30612-01.htm
+++ /dev/null
@@ -1,5 +0,0 @@
-<html><body>Wiseman Casian<br>
-I am well aware that Perina is suffering because of that monstrous flower ... I have thought over and over about the problem for the past few days... My conclusion is that there is no other way than to find the creature before it harms anyone.<br>
-There is not only one singing flower! There are 3 of them--The nightmare singing flower, the phantom singing flower, and the darkness singing flower. We have to find all 3 of them.<br>
-<a action="bypass -h Quest 228_TestOfMagus 30612_1">Ask the locations of the singing flower</a>
-</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30612-02.htm b/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30612-02.htm
deleted file mode 100644
index e0cfb78e58..0000000000
--- a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30612-02.htm
+++ /dev/null
@@ -1,5 +0,0 @@
-<html><body>Wiseman Casian<br>
-The singing flowers are said to root their golden seed near waterfalls or lakes, and seduce the stunned people with their beautiful voice. Two different kinds of singing flowers would never bloom close to each other.<br>
-Perina, Rukal... and I investigated its location and we managed to agree on a few places. Those places are, the Fellmere Lake in Gludio, the waterfalls near the Ivory Tower of Oren, and somewhere in the southern part of Giran Castle Town.<br>
-Did you get it? The singing flowers are bound to gather around the watery areas by its nature. Therefore, look around the 3 places that I had mentioned, and especially the watersides, lakes... are the places you need to pay good attention to. Take this amulet just in case. The singing flowers all possess small amounts of poison... This will help you.
-</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30612-03.htm b/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30612-03.htm
deleted file mode 100644
index 63c0ff31aa..0000000000
--- a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30612-03.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-<html><body>Wiseman Casian<br>
-You still haven't found all the seeds... What do you think you are doing? Hurry, go and find all 3! Or else give up!<br>
-That were, the Fellmere Lake in Gludio, the waterfalls near the Ivory Tower of Oren, and the southern part of Giran Castle Town! You got it?
-</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30612-04.htm b/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30612-04.htm
deleted file mode 100644
index 80985ffcd9..0000000000
--- a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30612-04.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-<html><body>Wiseman Casian<br>
-It seems that you have found all of them... Good, good...! You may go now. Take it to Bard Rukal.
-</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30612-05.htm b/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30612-05.htm
deleted file mode 100644
index 5dc00b2401..0000000000
--- a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30612-05.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-<html><body>Wiseman Casian<br>
-The note of the element? Even I, a prestigious Wiseman, have never heard of such a thing before... Well, I did hear about their stunning beauty several times, though.
-</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30629-01.htm b/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30629-01.htm
deleted file mode 100644
index a1bd15f54f..0000000000
--- a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30629-01.htm
+++ /dev/null
@@ -1,5 +0,0 @@
-<html><body>Bard Rukal:<br>
-Mages who command the ultimate elemental magic is like a song from heavens. Unlike other magic, Elemental Magic is used by combining the songs of the spirits.<br>
-However not even the element's tone is heard in your ears? Indeed, a symphony of swords and shields or a hymn of prayer and blessings will be easier to hear for you.<br>
-(Quest for Wizards, Elven Wizards and Dark Wizards, level 39 or above.)
-</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30629-02.htm b/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30629-02.htm
deleted file mode 100644
index 4bc8c74f4c..0000000000
--- a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30629-02.htm
+++ /dev/null
@@ -1,6 +0,0 @@
-<html><body>Bard Rukal:<br>
-To see a Mage combining the songs of the spirits while commanding elemental magic is like hearing a song straight from heaven.<br>
-A Mystic must have a thorough understanding of the elements of tone. Come back 
-when you have more experience.<br>
-(Quest for Wizard, Elven Wizard, or Dark Wizard. Level 39 or above.)
-</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30629-06.htm b/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30629-06.htm
deleted file mode 100644
index 1359f006a3..0000000000
--- a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30629-06.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-<html><body>Bard Rukal:<br>
-This is very disturbing. That song was from the legendary evil spirit Singing Flower. As Parina advised you, you should go and meet Wiseman Casian. He will tell you more about Singing Flower.
-</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30629-07.htm b/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30629-07.htm
deleted file mode 100644
index 757196fb97..0000000000
--- a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30629-07.htm
+++ /dev/null
@@ -1,5 +0,0 @@
-<html><body>Bard Rukal:<br>
-The Singing Flowers must be stopped from ever singing that song again. You must 
-find them all and destroy them. You can obtain golden seeds when you destroy them. 
-You must get 3 types of seeds from 3 different types of Singing Flowers.
-</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30629-12.htm b/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30629-12.htm
deleted file mode 100644
index 2e0f75099b..0000000000
--- a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30629-12.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-<html><body>Bard Rukal:<br>
-Congratulations! You have passed the Test of the Magus! Now I can start the time-consuming process of creating Absolute Tone. This would not have been possible without your efforts. I will let you know when the Millennium Flowers bloom. Come to see me then.<br>
-Congratulations again on passing the test! I shall grant you the Mark of the Magus.
-</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/__init__.py b/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/__init__.py
deleted file mode 100644
index 92e391b003..0000000000
--- a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/__init__.py
+++ /dev/null
@@ -1,279 +0,0 @@
-# Made by Mr. Have fun! Version 0.2
-# Shadow Weapon Coupons contributed by BiTi for the Official L2J Datapack Project
-# Visit http://www.l2jdp.com/forum/ for more details
-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
-
-qn = "228_TestOfMagus"
-
-MARK_OF_MAGUS = 2840
-RUKALS_LETTER = 2841
-PARINAS_LETTER = 2842
-LILAC_CHARM = 2843
-GOLDEN_SEED1 = 2844
-GOLDEN_SEED2 = 2845
-GOLDEN_SEED3 = 2846
-SCORE_OF_ELEMENTS = 2847
-TONE_OF_WATER = 2856
-TONE_OF_FIRE = 2857
-TONE_OF_WIND = 2858
-TONE_OF_EARTH = 2859
-UNDINE_CHARM = 2862
-DAZZLING_DROP = 2848
-SALAMANDER_CHARM = 2860
-FLAME_CRYSTAL = 2849
-SYLPH_CHARM = 2861
-HARPYS_FEATHER = 2850
-WYRMS_WINGBONE = 2851
-WINDSUS_MANE = 2852
-SERPENT_CHARM = 2863
-EN_MONSTEREYE_SHELL = 2853
-EN_STONEGOLEM_POWDER = 2854
-EN_IRONGOLEM_SCRAP = 2855
-SHADOW_WEAPON_COUPON_CGRADE = 8870
-
-#This handels all drops from mobs.   npcId:[condition,maxcount,chance,item,part]
-DROPLIST={
-27095:[3,1,100,GOLDEN_SEED1,1],
-27096:[3,1,100,GOLDEN_SEED2,1],
-27097:[3,1,100,GOLDEN_SEED3,1],
-27098:[7,5,50,FLAME_CRYSTAL,2],
-20230:[7,20,30,DAZZLING_DROP,2],
-20231:[7,20,30,DAZZLING_DROP,2],
-20157:[7,20,30,DAZZLING_DROP,2],
-20232:[7,20,40,DAZZLING_DROP,2],
-20234:[7,20,50,DAZZLING_DROP,2],
-20145:[7,20,50,HARPYS_FEATHER,2],
-20176:[7,10,50,WYRMS_WINGBONE,2],
-20553:[7,10,50,WINDSUS_MANE,2],
-20564:[7,10,100,EN_MONSTEREYE_SHELL,2],
-20565:[7,10,100,EN_STONEGOLEM_POWDER,2],
-20566:[7,10,100,EN_IRONGOLEM_SCRAP,2]
-}
-
-
-class Quest (JQuest) :
-
- def __init__(self,id,name,descr):
-     JQuest.__init__(self,id,name,descr)
-     self.questItemIds = range(2841,2864)
-
- def onAdvEvent (self,event,npc, player) :
-    htmltext = event
-    st = player.getQuestState(qn)
-    if not st : return
-    if event == "1" :
-        htmltext = "30629-04.htm"
-        st.set("cond","1")
-        st.setState(State.STARTED)
-        st.playSound("ItemSound.quest_accept")
-        st.giveItems(RUKALS_LETTER,1)
-    elif event == "30629_1" :
-          htmltext = "30629-09.htm"
-    elif event == "30629_2" :
-          htmltext = "30629-10.htm"
-          st.takeItems(LILAC_CHARM,1)
-          st.takeItems(GOLDEN_SEED1,1)
-          st.takeItems(GOLDEN_SEED2,1)
-          st.takeItems(GOLDEN_SEED3,1)
-          st.giveItems(SCORE_OF_ELEMENTS,1)
-          st.playSound("ItemSound.quest_middle")
-          st.set("cond","6")
-    elif event == "30391_1" :
-          htmltext = "30391-02.htm"
-          st.giveItems(PARINAS_LETTER,1)
-          st.takeItems(RUKALS_LETTER,1)
-          st.playSound("ItemSound.quest_middle")
-          st.set("cond","2")
-    elif event == "30612_1" :
-          htmltext = "30612-02.htm"
-          st.giveItems(LILAC_CHARM,1)
-          st.takeItems(PARINAS_LETTER,1)
-          st.playSound("ItemSound.quest_middle")
-          st.set("cond","3")
-    elif event == "30412_1" :
-          htmltext = "30412-02.htm"
-          st.giveItems(SYLPH_CHARM,1)
-          st.playSound("ItemSound.quest_middle")
-          st.set("cond","7")
-    elif event == "30409_1" :
-          htmltext = "30409-02.htm"
-    elif event == "30409_2" :
-          htmltext = "30409-03.htm"
-          st.giveItems(SERPENT_CHARM,1)
-          st.playSound("ItemSound.quest_middle")
-          st.set("cond","7")
-    return htmltext
-
-
- def onTalk (self,npc,player):
-   htmltext = Quest.getNoQuestMsg(player)
-   st = self.getQuestState(player, True)
-   if not st : return htmltext
-
-   npcId = npc.getId()
-   id = st.getState()
-   if npcId != 30629 and id != State.STARTED : return htmltext
-
-   if npcId == 30629 :
-     if st.getInt("cond")==0 and st.getInt("onlyone")==0 :
-          if player.getClassId().getId() in [ 0x0b, 0x1a, 0x27] :
-            if player.getLevel() < 39 :
-              htmltext = "30629-02.htm"
-            else:
-              htmltext = "30629-03.htm"
-          else:
-            htmltext = "30629-01.htm"
-            st.exitQuest(1)
-     elif st.getInt("cond")==0 and st.getInt("onlyone")==1 :
-      htmltext = Quest.getAlreadyCompletedMsg(player)
-
-     elif st.getInt("cond")==1:
-        htmltext = "30629-05.htm"
-     elif st.getInt("cond")==2:
-        htmltext = "30629-06.htm"
-     elif st.getInt("cond")==3:
-        htmltext = "30629-07.htm"
-     elif st.getInt("cond")==5:
-        htmltext = "30629-08.htm"
-     elif st.getInt("cond") and st.getQuestItemsCount(SCORE_OF_ELEMENTS)==1 :
-        if st.getQuestItemsCount(TONE_OF_WATER) and st.getQuestItemsCount(TONE_OF_FIRE) and st.getQuestItemsCount(TONE_OF_WIND) and st.getQuestItemsCount(TONE_OF_EARTH) :
-            st.takeItems(SCORE_OF_ELEMENTS,1)
-            st.takeItems(TONE_OF_WATER,1)
-            st.takeItems(TONE_OF_FIRE,1)
-            st.takeItems(TONE_OF_WIND,1)
-            st.takeItems(TONE_OF_EARTH,1)
-            st.addExpAndSp(2058244,141240)
-            st.giveItems(57,372154)
-            st.giveItems(MARK_OF_MAGUS,1)
-            st.giveItems(SHADOW_WEAPON_COUPON_CGRADE,15)
-            htmltext = "30629-12.htm"
-            st.set("cond","0")
-            st.set("onlyone","1")
-            st.exitQuest(False)
-            st.playSound("ItemSound.quest_finish")
-        else:
-          htmltext = "30629-11.htm"
-   elif npcId == 30391:
-     if st.getInt("cond")==1:
-        htmltext = "30391-01.htm"
-     elif st.getInt("cond")==2:
-        htmltext = "30391-03.htm"
-     elif st.getInt("cond")<6 and st.getInt("cond")>2:
-        htmltext = "30391-04.htm"
-     elif st.getInt("cond")>5 :
-        htmltext = "30391-05.htm"
-   elif npcId == 30612:
-     if st.getInt("cond")==2 :
-        htmltext = "30612-01.htm"
-     elif st.getInt("cond")<5 and st.getInt("cond")>2:
-        htmltext = "30612-03.htm"
-     elif st.getInt("cond")==5:
-        htmltext = "30612-04.htm"
-     elif st.getInt("cond")>5:
-        htmltext = "30612-05.htm"
-   elif npcId == 30413:
-     if st.getInt("cond") and st.getQuestItemsCount(SCORE_OF_ELEMENTS)==1 and st.getQuestItemsCount(TONE_OF_WATER)==0 and st.getQuestItemsCount(UNDINE_CHARM)==0 :
-        htmltext = "30413-01.htm"
-        st.giveItems(UNDINE_CHARM,1)
-        st.set("cond","7")
-     elif st.getInt("cond") and st.getQuestItemsCount(SCORE_OF_ELEMENTS)==1 and st.getQuestItemsCount(UNDINE_CHARM)==1 :
-        if st.getQuestItemsCount(DAZZLING_DROP) < 20 :
-          htmltext = "30413-02.htm"
-        else:
-          htmltext = "30413-03.htm"
-          st.takeItems(DAZZLING_DROP,st.getQuestItemsCount(DAZZLING_DROP))
-          st.takeItems(UNDINE_CHARM,1)
-          st.giveItems(TONE_OF_WATER,1)
-          st.playSound("ItemSound.quest_middle")
-     elif st.getInt("cond") and st.getQuestItemsCount(SCORE_OF_ELEMENTS)==1 and st.getQuestItemsCount(TONE_OF_WATER)==1 and st.getQuestItemsCount(UNDINE_CHARM)==0 :
-        htmltext = "30413-04.htm"
-   elif npcId == 30411 :
-     if st.getInt("cond") and st.getQuestItemsCount(SCORE_OF_ELEMENTS)==1 and st.getQuestItemsCount(TONE_OF_FIRE)==0 and st.getQuestItemsCount(SALAMANDER_CHARM)==0 :
-        htmltext = "30411-01.htm"
-        st.giveItems(SALAMANDER_CHARM,1)
-        st.playSound("ItemSound.quest_middle")
-        st.set("cond","7")
-     elif st.getInt("cond") and st.getQuestItemsCount(SCORE_OF_ELEMENTS)==1 and st.getQuestItemsCount(SALAMANDER_CHARM)==1 :
-        if st.getQuestItemsCount(FLAME_CRYSTAL) < 5 :
-          htmltext = "30411-02.htm"
-        else:
-          htmltext = "30411-03.htm"
-          st.takeItems(FLAME_CRYSTAL,st.getQuestItemsCount(FLAME_CRYSTAL))
-          st.giveItems(TONE_OF_FIRE,1)
-          st.takeItems(SALAMANDER_CHARM,1)
-          st.playSound("ItemSound.quest_middle")
-     elif st.getInt("cond") and st.getQuestItemsCount(SCORE_OF_ELEMENTS)==1 and st.getQuestItemsCount(TONE_OF_FIRE)==1 and st.getQuestItemsCount(SALAMANDER_CHARM)==0 :
-        htmltext = "30411-04.htm"
-   elif npcId == 30412 :
-     if st.getInt("cond") and st.getQuestItemsCount(SCORE_OF_ELEMENTS)==1 and st.getQuestItemsCount(TONE_OF_WIND)==0 and st.getQuestItemsCount(SYLPH_CHARM)==0 :
-        htmltext = "30412-01.htm"
-     elif st.getInt("cond") and st.getQuestItemsCount(SCORE_OF_ELEMENTS)==1 and st.getQuestItemsCount(SYLPH_CHARM)==1 :
-        if st.getQuestItemsCount(HARPYS_FEATHER)+st.getQuestItemsCount(WYRMS_WINGBONE)+st.getQuestItemsCount(WINDSUS_MANE) < 40 :
-          htmltext = "30412-03.htm"
-        else:
-          htmltext = "30412-04.htm"
-          st.takeItems(HARPYS_FEATHER,st.getQuestItemsCount(HARPYS_FEATHER))
-          st.takeItems(WYRMS_WINGBONE,st.getQuestItemsCount(WYRMS_WINGBONE))
-          st.takeItems(WINDSUS_MANE,st.getQuestItemsCount(WINDSUS_MANE))
-          st.giveItems(TONE_OF_WIND,1)
-          st.takeItems(SYLPH_CHARM,1)
-          st.playSound("ItemSound.quest_middle")
-     elif st.getInt("cond") and st.getQuestItemsCount(SCORE_OF_ELEMENTS)==1 and st.getQuestItemsCount(TONE_OF_WIND)==1 and st.getQuestItemsCount(SYLPH_CHARM)==0 :
-        htmltext = "30412-05.htm"
-   elif npcId == 30409 :
-     if st.getInt("cond") and st.getQuestItemsCount(SCORE_OF_ELEMENTS)==1 and st.getQuestItemsCount(TONE_OF_EARTH)==0 and st.getQuestItemsCount(SERPENT_CHARM)==0 :
-        htmltext = "30409-01.htm"
-     elif st.getInt("cond") and st.getQuestItemsCount(SCORE_OF_ELEMENTS)==1 and st.getQuestItemsCount(SERPENT_CHARM)==1 :
-        if st.getQuestItemsCount(EN_MONSTEREYE_SHELL)+st.getQuestItemsCount(EN_STONEGOLEM_POWDER)+st.getQuestItemsCount(EN_IRONGOLEM_SCRAP) < 30 :
-          htmltext = "30409-04.htm"
-        else:
-          htmltext = "30409-05.htm"
-          st.takeItems(EN_MONSTEREYE_SHELL,st.getQuestItemsCount(EN_MONSTEREYE_SHELL))
-          st.takeItems(EN_STONEGOLEM_POWDER,st.getQuestItemsCount(EN_STONEGOLEM_POWDER))
-          st.takeItems(EN_IRONGOLEM_SCRAP,st.getQuestItemsCount(EN_IRONGOLEM_SCRAP))
-          st.giveItems(TONE_OF_EARTH,1)
-          st.takeItems(SERPENT_CHARM,1)
-          st.playSound("ItemSound.quest_middle")
-     elif st.getInt("cond") and st.getQuestItemsCount(SCORE_OF_ELEMENTS)==1 and st.getQuestItemsCount(TONE_OF_EARTH)==1 and st.getQuestItemsCount(SERPENT_CHARM)==0 :
-        htmltext = "30409-06.htm"
-   return htmltext
-                             
- def onKill(self,npc,player,isPet):
-   st = player.getQuestState(qn)
-   if not st : return 
-   if st.getState() != State.STARTED : return 
-   
-   npcId = npc.getId()
-   condition,maxcount,chance,item,part = DROPLIST[npcId]
-   random = self.getRandom(100)
-   itemcount = st.getQuestItemsCount(item)
-   if st.getInt("cond") == condition and itemcount < maxcount and random < chance :
-    if itemcount == maxcount-1:
-     st.giveItems(item,1)
-     st.playSound("ItemSound.quest_middle")
-     if part==1:
-       count=0
-       for items in [GOLDEN_SEED1,GOLDEN_SEED2,GOLDEN_SEED3]:
-        count+=st.getQuestItemsCount(items)
-       if count>2:
-        st.set("cond","5")
-    else:
-     st.giveItems(item,1)
-     st.playSound("ItemSound.quest_itemget")
-   return
-
-
-QUEST       = Quest(228,qn,"Test Of Magus")
-
-QUEST.addStartNpc(30629)
-
-QUEST.addTalkId(30629)
-
-for npcId in [30391,30409,30411,30412,30413,30612]:
-   QUEST.addTalkId(npcId)
-  
-for mobId in [20145,20157,20176,20230,20231,20232,20234,27095,27096,27097,27098,20553,20564,20565,20566]:
-   QUEST.addKillId(mobId)
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30391-01.html b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30391-01.html
new file mode 100644
index 0000000000..009c80483e
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30391-01.html
@@ -0,0 +1,5 @@
+<html><body>Parina:<br>
+So you heard that song as well. Yes, I've been hearing that melody every night recently. I've heard many types of music, and am quite sure this is not a Human voice.<br>
+It seemed to emanate from all directions. Near and far away at the same time... Perhaps it was the voice of the 'singing flower'...<br>
+<a action="bypass -h Quest Q00228_TestOfMagus 30391-02.html">Ask about the singing flower</a>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30391-02.html b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30391-02.html
new file mode 100644
index 0000000000..6426687174
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30391-02.html
@@ -0,0 +1,5 @@
+<html><body>Parina:<br>
+The singing flower is an infamous evil spirit which sings when in bloom. It looks like a beautiful woman but is actually quite a dreadful creature. They sprout from a pod called 'the Golden Seed'.<br>
+The singing flower is said to seduce people with its beautiful voice, only to later feed on their blood...<br>
+I have consulted Elder Casian about this matter, why don't you take this letter and go and meet him. He is in the Wastelands.
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30391-03.html b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30391-03.html
new file mode 100644
index 0000000000..5ef588694d
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30391-03.html
@@ -0,0 +1,3 @@
+<html><body>Parina:<br>
+You are still here? You must go and meet Elder Casian immediately. He knows more than anyone else about the singing flower.
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30391-04.html b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30391-04.html
new file mode 100644
index 0000000000..cc33a61555
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30391-04.html
@@ -0,0 +1,3 @@
+<html><body>Parina:<br>
+You must not be swayed by the voice of the singing flower. They are vile creatures that should be exterminated from the earth. Find them and kill them all. Then you must locate the Golden Seed which bears the blood of the innocent. When you find 3 of them take them to Bard Rukal.
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30391-05.html b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30391-05.html
new file mode 100644
index 0000000000..2f1ab567cc
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30391-05.html
@@ -0,0 +1,3 @@
+<html><body>Parina:<br>
+So, I understand that you seek the notes of the 4 elements for Rukal? I wish you luck in gathering all the notes and completing the absolute tone.
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30409-01.html b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30409-01.html
new file mode 100644
index 0000000000..8e00ebbafa
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30409-01.html
@@ -0,0 +1,6 @@
+<html><body>Earth Snake:<br>
+I am an element of this earth.  The truths of the universe within the earth are within me.<br>
+So, you seek the Note of the Earth? What do you expect to do with it...? Do you plan to create absolute music?<br>
+Is that it...? And what then...?<br>
+<a action="bypass -h Quest Q00228_TestOfMagus 30409-02.html">"I will use it to bring the thousand year flower into bloom."</a>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30409-02.html b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30409-02.html
new file mode 100644
index 0000000000..508fa50318
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30409-02.html
@@ -0,0 +1,6 @@
+<html><body>Earth Snake:<br>
+Ahhh, the thousand year flower! I see... So you seek the golden seed and the 4 elemental notes, then?<br>
+Well, I guess it doesn't matter... Yes, I will give you the Note of the Earth. But you must find out something for me first.<br>
+In that place that the Humans call Oren, near the Ivory Tower, I have seen monsters.  They seem similar to those from the place called Gludio, but much stronger than any that I have ever seen... Why is this happening? I must know!<br>
+<a action="bypass -h Quest Q00228_TestOfMagus 30409-03.html">"Which monsters must I investigate?"</a>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30409-03.htm b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30409-03.html
similarity index 70%
rename from L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30409-03.htm
rename to L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30409-03.html
index e5d1f8304a..98492d00bc 100644
--- a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30409-03.htm
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30409-03.html
@@ -1,5 +1,5 @@
 <html><body>Earth Snake:<br>
-Enchanted Monster Eye, Enchanted Stone Golem, Enchanted Iron Golem... These are the monsters you must slay. You must kill them and bring me what they carry...and plenty of it!<br>
- Ten! Yes! Ten from each will do!<br>
+Enchanted Monster Eye, Enchanted Stone Golem, Enchanted Iron Golem... These are the monsters you must slay. You must kill them and bring me what they carry... and plenty of it!<br>
+Ten! Yes! Ten from each will do!<br>
 Take this totem with you as a reminder of your promise...
 </body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30409-04.htm b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30409-04.html
similarity index 100%
rename from L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30409-04.htm
rename to L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30409-04.html
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30409-05.html b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30409-05.html
new file mode 100644
index 0000000000..b4ab7faa0f
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30409-05.html
@@ -0,0 +1,3 @@
+<html><body>Earth Snake:<br>
+1, 2, 3... Yes... I think you have brought all that I asked for. I shall bestow upon you the Note of the Earth. May you create beautiful music with this and make the thousand year flower bloom...
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30409-06.htm b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30409-06.html
similarity index 100%
rename from L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30409-06.htm
rename to L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30409-06.html
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30411-01.html b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30411-01.html
new file mode 100644
index 0000000000..8656f9821e
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30411-01.html
@@ -0,0 +1,6 @@
+<html><body>Flame Salamander:<br>
+What is it, my child?  Have you no fear of fire?<br>
+...Ah, you seek the Note of Fire... I see...<br>
+Of course I have it, silly!  Nothing comes for free, however...<br>
+If you will journey north, near the Ivory Tower, and retrieve 5 Flame Crystals from the Ghost Fires, I shall take them in exchange for the Note of Fire!  But not one less than 5!
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30411-02.htm b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30411-02.html
similarity index 55%
rename from L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30411-02.htm
rename to L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30411-02.html
index 9fea74daf8..3d5c016396 100644
--- a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30411-02.htm
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30411-02.html
@@ -1,3 +1,3 @@
 <html><body>Flame Salamander:<br>
-Bring me 5 Flame Crystals from the ghost fires. They are in the north... Near the Ivory Tower...
+Bring me 5 Flame Crystals from the Ghost Fires. They are in the north... Near the Ivory Tower...
 </body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30411-03.html b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30411-03.html
new file mode 100644
index 0000000000..4393454a79
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30411-03.html
@@ -0,0 +1,3 @@
+<html><body>Flame Salamander:<br>
+Five Flame Crystals... Oh how lovely. Here is the Note of Fire. Take it!
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30411-04.htm b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30411-04.html
similarity index 100%
rename from L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30411-04.htm
rename to L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30411-04.html
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30412-01.html b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30412-01.html
new file mode 100644
index 0000000000..fb31cd18bc
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30412-01.html
@@ -0,0 +1,5 @@
+<html><body>Wind Sylph:<br>
+Nice to meet you, Elder of the magical world, manager of the elements. I am the Wind Sylph, messenger of Zephyr, guide of the storms. Have you come to me seeking the Tone of Wind, by any chance?<br>
+The wind is an elusive  figure, hard to grasp... Do you believe that you can get a note consisting of this wind? Only I can give the Tone of Wind.  You must make a deal with me.<br>
+<a action="bypass -h Quest Q00228_TestOfMagus 30412-02.html">"I will make a deal with you."</a>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30412-02.html b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30412-02.html
new file mode 100644
index 0000000000..014a295dad
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30412-02.html
@@ -0,0 +1,4 @@
+<html><body>Wind Sylph:<br>
+Ah yes, a wise choice... Bring me 20 Harpy Feathers, 10 Wyrm wingbones, and 10 Windsus Manes... You will find your prey in the Gorgon Flower Garden in Giran and  Death Pass.<br>
+Do you understand? The harpy flies by gliding on the wind, the Wyrm's feathers blast the wind mightily and the mane of the Windsus blows in the wind. As you see, these creatures all have the wind in common, which I must control...
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30412-03.html b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30412-03.html
new file mode 100644
index 0000000000..a2b97beb93
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30412-03.html
@@ -0,0 +1,3 @@
+<html><body>Wind Sylph:<br>
+Is the wind blowing in your mind as well? Are all your memories blown away? 20 Harpy Feathers, 10 Wyrm Wingbone, and 10 Windsus Manes... If you do not bring these 3 materials, I will not give you the Tone of Wind.
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30412-04.html b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30412-04.html
new file mode 100644
index 0000000000..ce6ccbac2f
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30412-04.html
@@ -0,0 +1,3 @@
+<html><body>Wind Sylph:<br>
+...You have gathered all of them! You are faithful indeed...  Even the wind keeps its promises. Take this Tone of Wind... Be careful, because it might blow away...
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30412-05.html b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30412-05.html
new file mode 100644
index 0000000000..300ae4ab03
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30412-05.html
@@ -0,0 +1,3 @@
+<html><body>Wind Sylph:<br>
+Are you taking good care of the Tone of Wind? That thing can be easily swept away, so hold on to it firmly. Once you lose it, you will never hear its beautiful melody again.
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30413-01.html b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30413-01.html
new file mode 100644
index 0000000000..978d8dd915
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30413-01.html
@@ -0,0 +1,5 @@
+<html><body>Water Undine:<br>
+I am Undine, guardian of the deep lake, spirit of the precious water... Have you come for the Tone of Water?<br>
+It is the rhythm which expresses the nature of water among the four basic elements which compose the earth... To create this, you need 20 Dazzling Drops from the monsters of the marshlands.<br>
+Toad lords which live in the Cruma Marshlands... And the swamp stakatos have the Dazzling Drops. If you  bring 20 of them, I shall make you the tone. This amulet is a symbol of my promise...
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30413-02.html b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30413-02.html
new file mode 100644
index 0000000000..3a79f6ae66
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30413-02.html
@@ -0,0 +1,3 @@
+<html><body>Water Undine:<br>
+We need 20 Dazzling Drops to make the Tone of Water. Hunt toad lords and swamp stakatos in the Cruma Marshlands and take it from them. Now, hurry! You promised, didn't you?
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30413-03.html b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30413-03.html
new file mode 100644
index 0000000000..a1617df843
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30413-03.html
@@ -0,0 +1,3 @@
+<html><body>Water Undine:<br>
+...18, 19, 20... Good... You have brought 20. I shall give you the Tone of Water.
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30413-04.html b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30413-04.html
new file mode 100644
index 0000000000..79f1491222
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30413-04.html
@@ -0,0 +1,3 @@
+<html><body>Water Undine:<br>
+I assume that you seek the Tones of Fire, Wind, Earth as well? They are all my brothers and sisters... Please give them my regards...
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30612-01.html b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30612-01.html
new file mode 100644
index 0000000000..fe9075da4e
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30612-01.html
@@ -0,0 +1,5 @@
+<html><body>Elder Casian:<br>
+I have heard of Parina's suffering because of that monstrous flower ... I have thought of nothing else for days... The only solution I can come up with is to hunt down the vicious flower and kill it.<br>
+I have heard that there are actually 3 flowers: The nightmare singing flower, the phantom singing flower and the darkness singing flower. We must find all 3 of them.<br>
+<a action="bypass -h Quest Q00228_TestOfMagus 30612-02.html">"Where are the singing flowers?"</a>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30612-02.html b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30612-02.html
new file mode 100644
index 0000000000..f053b515a8
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30612-02.html
@@ -0,0 +1,5 @@
+<html><body>Elder Casian:<br>
+The singing flowers are said to bloom near waterfalls or lakes, and seduce passersby with their beautiful voice. Different kinds of singing flowers will never bloom close to each other.<br>
+Parina, Rukal and I searched for them and managed to agree on a few places. We are sure the flowers may be found near the Fellmere Lake in Gludio, the waterfalls near the Ivory Tower of Oren, and somewhere in the southern part of the Town of Giran.<br>
+Got that? The flowers bloom near water. You must look in the 3 places I mentioned, especially near water. You must be very careful because the singing flowers all possess small amounts of poison... Take this amulet with you, it will help.
+</body></html>
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30612-03.html b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30612-03.html
new file mode 100644
index 0000000000..ad584f555e
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30612-03.html
@@ -0,0 +1,4 @@
+<html><body>Elder Casian:<br>
+You still haven't found all the seeds... What are you doing? Hurry, go and find all 3! If this mission is too much for you, then give up!<br>
+If you intend to complete the task, you must go to the Fellmere Lake in Gludio, the waterfalls near the Ivory Tower of Oren, and the southern part of the Town of Giran, kill the flowers and bring back the seeds! You got it?
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30612-04.html b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30612-04.html
new file mode 100644
index 0000000000..5d20596e0d
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30612-04.html
@@ -0,0 +1,3 @@
+<html><body>Elder Casian:<br>
+Ah, all the seeds!  Good, good...! You may go now. Take this to Bard Rukal.
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30612-05.html b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30612-05.html
new file mode 100644
index 0000000000..aa87ce6103
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30612-05.html
@@ -0,0 +1,3 @@
+<html><body>Elder Casian:<br>
+The note of the element? Even I, an esteemed Sage, have never heard  such a thing... Well, I must admit that I have heard of their stunning beauty...
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30629-01.html b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30629-01.html
new file mode 100644
index 0000000000..19fa3eebd1
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30629-01.html
@@ -0,0 +1,5 @@
+<html><body>Bard Rukal:<br>
+To see a Mystic command the ultimate elemental magic is somewhat like hearing a song from heaven.   Unlike other magic, Elemental Magic consists of combining the songs of the spirits.<br>
+Your ears are not sophisticated enough to hear the elemental tones?  I suppose a cacophony  of swords and shields or a hymn of prayer and blessings would be easier for you to hear.<br>
+(Quest for Wizards, Elven Wizards and Dark Wizards, level 39 or above.)
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30629-02.html b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30629-02.html
new file mode 100644
index 0000000000..92c94c5892
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30629-02.html
@@ -0,0 +1,5 @@
+<html><body>Bard Rukal:<br>
+To see a Mystic combining the songs of the spirits while commanding elemental magic is like hearing a song straight from heaven.<br>
+A Mystic must have a thorough understanding of the elements of tone. Come back when you have more experience.<br>
+(Quest for Wizard, Elven Wizard, or Dark Wizard. Level 39 or above.) 
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30629-03.htm b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30629-03.htm
similarity index 57%
rename from L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30629-03.htm
rename to L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30629-03.htm
index cdece9a35f..65e960cff2 100644
--- a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30629-03.htm
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30629-03.htm
@@ -1,6 +1,6 @@
 <html><body>Bard Rukal:<br>
-Elemental magic is like a song from heaven. Combining the songs of the spirits is fundamental in the use of elememtal magic.<br>
+Elemental magic is like a song from heaven.  Combining the songs of the spirits is fundamental in the use of elemental magic.<br>
 Mystics must have a complete understanding of the elements of tone.<br>
 The Test of the Magus will assess your understanding of the tones of the 4 elements. Those who pass this test will have a chance to advance to the higher level of Elemental Magic..<br>
-<a action="bypass -h Quest 228_TestOfMagus 1">Take the Test of the Magus</a>
+<a action="bypass -h Quest Q00228_TestOfMagus ACCEPT">Take the Test of the Magus</a>
 </body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30629-04.htm b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30629-04.htm
similarity index 59%
rename from L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30629-04.htm
rename to L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30629-04.htm
index 55812817ec..62c9ad1f2b 100644
--- a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30629-04.htm
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30629-04.htm
@@ -1,7 +1,7 @@
 <html><body>Bard Rukal:<br>
 Good. First let me tell you something about myself.<br>
-My nights are sleepless, haunted by the songs of the spirits. This is a condition common to the practitioners of Elemental Magic.<br>
+My nights are sleepless, haunted by the songs of the spirits.  This is a condition common to the practitioners of Elemental Magic.<br>
 This inhuman song is not of this earth, and can make the hair stand up on the back of your neck, and a cold shiver run down your spine.<br>
-You must find the source of this music. I know someone who can help you. I will introduce you to Parina, who is in the temple of Gludin. She has a profound knowledge of Elemental Magic.<br>
+You must find the source of this music. I know someone who can help you.  I will introduce you to Parina, who is in the temple of Gludin. She has a profound knowledge of Elemental Magic.<br>
 She will help you find the source of this unworldly music if you show her this letter.
 </body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30629-04a.htm b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30629-04a.htm
new file mode 100644
index 0000000000..6517094c65
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30629-04a.htm
@@ -0,0 +1,8 @@
+<html><body>Bard Rukal:<br>
+Very well. Listen to my story, youngster.<br>
+Blissful slumber escapes me night after night. In the quiet darkness, I am haunted by a strange melody that reaches my ears, a music that can only be heard by those who have mastered elemental magic.<br>
+Low-pitched and subtle, it nevertheless grates upon my sensitive nerves.  Humans cannot make this kind of otherworldy melody, I am convinced, and it is certainly not a magician's aria.<br>
+Your task is to find the source of this ominous sound. To begin your investigation, visit Parina from the temple in Gludin Town.<br>
+A master of elemental magic, perhaps he knows something about this eerie nighttime melody. I must be able to sleep! Show him this letter and I am sure that he will help you.<br>
+Oh, and take this <font color="LEVEL">Dimension Diamond</font>. You can trade it to the village gatekeeper for something special that may help you on your journey.
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30629-05.htm b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30629-05.html
similarity index 100%
rename from L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30629-05.htm
rename to L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30629-05.html
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30629-06.html b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30629-06.html
new file mode 100644
index 0000000000..23ad06e2f4
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30629-06.html
@@ -0,0 +1,3 @@
+<html><body>Bard Rukal:<br>
+This is very disturbing.  That song was from the legendary evil spirit Singing Flower. As Parina advised you, you should go and meet Elder Casian. He will tell you more about Singing Flower.
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30629-07.html b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30629-07.html
new file mode 100644
index 0000000000..321d735767
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30629-07.html
@@ -0,0 +1,3 @@
+<html><body>Bard Rukal:<br>
+The Singing Flowers must be stopped from ever singing that song again. You must find them all and destroy them. You can obtain golden seeds when you destroy them. You must get 3 types of seeds from 3 different types of Singing Flowers. 
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30629-08.htm b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30629-08.html
similarity index 64%
rename from L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30629-08.htm
rename to L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30629-08.html
index df32304e6a..e232b4d882 100644
--- a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30629-08.htm
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30629-08.html
@@ -1,6 +1,6 @@
 <html><body>Bard Rukal:<br>
 Excellent! The Golden Seeds of the Singing Flower!<br>
-I have experience raising flowers from these seeds. One must be very careful in their cultivation, they can grow into brutal flowers if the seeds taste living human blood. Under normal circumstances they grow into a beautiful flower called 'Millenium Flower.' To grow these you must be able to produce the exquisite 'Absolute Tone'.<br>
+I have experience raising flowers from these seeds. One must be very careful in their cultivation, they can grow into brutal flowers if the seeds taste living human blood. Under normal circumstances they grow into a beautiful flower called 'Millennium Flower.' To grow these you must be able to produce the exquisite 'Absolute Tone'.<br>
 The problem is that I cannot produce absolute tone with my skills... Would you be willing to help me once you start your job?<br>
-<a action="bypass -h Quest 228_TestOfMagus 30629_1">Say you will help</a>
+<a action="bypass -h Quest Q00228_TestOfMagus 30629-09.html">Say you will help</a>
 </body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30629-09.htm b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30629-09.html
similarity index 59%
rename from L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30629-09.htm
rename to L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30629-09.html
index 70d5adf714..fc800c6354 100644
--- a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30629-09.htm
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30629-09.html
@@ -1,9 +1,7 @@
 <html><body>Bard Rukal:<br>
-To make an Absolute Tone we need 4 tones that correspond to 4 elements. As you 
-know, our world is composed of these 4 elements and the 4 tones represent the 
-essence of each element.<br>
+To make an Absolute Tone we need 4 tones that correspond to 4 elements. As you know, our world is composed of these 4 elements and the 4 tones Raffortysent the essence of each element.<br>
 That is, we can only make the Absolute Tone which controls all other tones by 
 collecting 4 notes that correspond to the 4 elements.<br>
 Remember, collecting these 4 tones is a difficult, time-consuming task..<br>
-<a action="bypass -h Quest 228_TestOfMagus 30629_2">Ask about 4 notes</a>
+<a action="bypass -h Quest Q00228_TestOfMagus 30629-10.html">Ask about 4 notes</a>
 </body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30629-10.htm b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30629-10.html
similarity index 51%
rename from L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30629-10.htm
rename to L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30629-10.html
index 0f37e2eaa9..8c7740ed31 100644
--- a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30629-10.htm
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30629-10.html
@@ -1,8 +1,8 @@
 <html><body>Bard Rukal:<br>
 You must collect the 4 tones that correspond to the 4 elements in order to create an Absolute Tone.<br>
-To obtain the Note of Water You must visit the Water Undine, a water spirit who lives in Fellmere Lake... It is located northwest of Gludin, north of the Abandonded Camp.<br>
-To obtain the Note of Fire you must seek the Flame Salamander. Lizard spirits such as this salamander are formed with the power of flame. They can be found in the Ruins of Despair, south of Gludio Castle Town.<br>
+To obtain the Note of Water You must visit the Water Undine, a water spirit who lives in Fellmere Lake... It is located northwest of Gludin, north of the Abandoned Camp.<br>
+To obtain the Note of Fire you must seek the Flame Salamander.  Lizard spirits such as this salamander are formed with the power of flame.  They can be found in the Ruins of Despair, south of the Town of Gludio.<br>
 To locate the Note of Wind you must meet the Wind Sylph. She is on the northwest side of the 3 entrances to the Wastelands of Gludio.<br>
-Last, the Note of Earth can be obtained from the Earth Snake. He is in the Ruins of Agony, on the north side of Gludio Castle Town.<br>
-I will give you a musical book in which to put the 4 notes. When you have found them all return the book to me.
+Last, the Note of Earth can be obtained from the Earth Snake. He is in the Ruins of Agony, on the north side of the Town of Gludio.<br>
+I will give you a musical book in which to put the 4 notes.  When you have found them all return the book to me.
 </body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30629-11.htm b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30629-11.html
similarity index 53%
rename from L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30629-11.htm
rename to L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30629-11.html
index e3889c5662..08182d2651 100644
--- a/L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30629-11.htm
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30629-11.html
@@ -1,3 +1,3 @@
 <html><body>Bard Rukal:<br>
-The Test of the Magus will not be complete until all 4 tones essential for Absolute Tone are collected. Please do your best to get these tones for me.
+The Test of the Magus will not be complete until all 4 tones essential for Absolute Tone are collected.   Please do your best to get these tones for me.
 </body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30629-12.html b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30629-12.html
new file mode 100644
index 0000000000..4bd5565508
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30629-12.html
@@ -0,0 +1,4 @@
+<html><body>Bard Rukal:<br>
+Congratulations!  You have passed the Test of the Magus!  Now I can start the time-consuming process of creating Absolute Tone. This would not have been possible without your efforts.  I will let you know when the Millennium Flowers bloom. Come to see me then.<br>
+Congratulations again on passing the test! I shall grant you the Mark of the Magus. 
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/Q00228_TestOfMagus.java b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/Q00228_TestOfMagus.java
new file mode 100644
index 0000000000..cd79342964
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/Q00228_TestOfMagus.java
@@ -0,0 +1,647 @@
+/*
+ * Copyright (C) 2004-2014 L2J DataPack
+ * 
+ * This file is part of L2J DataPack.
+ * 
+ * L2J DataPack is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * L2J DataPack is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package quests.Q00228_TestOfMagus;
+
+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.base.ClassId;
+import com.l2jserver.gameserver.model.quest.Quest;
+import com.l2jserver.gameserver.model.quest.QuestState;
+import com.l2jserver.gameserver.network.NpcStringId;
+import com.l2jserver.gameserver.network.clientpackets.Say2;
+import com.l2jserver.gameserver.network.serverpackets.NpcSay;
+import com.l2jserver.gameserver.network.serverpackets.SocialAction;
+import com.l2jserver.gameserver.util.Util;
+
+/**
+ * Test Of Magus (228)
+ * @author ivantotov
+ */
+public final class Q00228_TestOfMagus extends Quest
+{
+	// NPCs
+	private static final int PARINA = 30391;
+	private static final int EARTH_SNAKE = 30409;
+	private static final int FLAME_SALAMANDER = 30411;
+	private static final int WIND_SYLPH = 30412;
+	private static final int WATER_UNDINE = 30413;
+	private static final int ELDER_CASIAN = 30612;
+	private static final int BARD_RUKAL = 30629;
+	// Items
+	private static final int RUKALS_LETTER = 2841;
+	private static final int PARINAS_LETTER = 2842;
+	private static final int LILAC_CHARM = 2843;
+	private static final int GOLDEN_SEED_1ST = 2844;
+	private static final int GOLDEN_SEED_2ND = 2845;
+	private static final int GOLDEN_SEED_3RD = 2846;
+	private static final int SCORE_OF_ELEMENTS = 2847;
+	private static final int DAZZLING_DROP = 2848;
+	private static final int FLAME_CRYSTAL = 2849;
+	private static final int HARPYS_FEATHER = 2850;
+	private static final int WYRMS_WINGBONE = 2851;
+	private static final int WINDSUS_MANE = 2852;
+	private static final int ENCHANTED_MONSTER_EYE_SHELL = 2853;
+	private static final int ENCHANTED_GOLEM_POWDER = 2854;
+	private static final int ENCHANTED_IRON_GOLEM_SCRAP = 2855;
+	private static final int TONE_OF_WATER = 2856;
+	private static final int TONE_OF_FIRE = 2857;
+	private static final int TONE_OF_WIND = 2858;
+	private static final int TONE_OF_EARTH = 2859;
+	private static final int SALAMANDER_CHARM = 2860;
+	private static final int SYLPH_CHARM = 2861;
+	private static final int UNDINE_CHARM = 2862;
+	private static final int SERPENT_CHARM = 2863;
+	// Reward
+	private static final int MARK_OF_MAGUS = 2840;
+	private static final int DIMENSIONAL_DIAMOND = 7562;
+	// Monster
+	private static final int HARPY = 20145;
+	private static final int MARSH_STAKATO = 20157;
+	private static final int WYRM = 20176;
+	private static final int MARSH_STAKATO_WORKER = 20230;
+	private static final int TOAD_LORD = 20231;
+	private static final int MARSH_STAKATO_SOLDIER = 20232;
+	private static final int MARSH_STAKATO_DRONE = 20234;
+	private static final int WINDSUS = 20553;
+	private static final int ENCHANTED_MONSTEREYE = 20564;
+	private static final int ENCHANTED_STOLEN_GOLEM = 20565;
+	private static final int ENCHANTED_IRON_GOLEM = 20566;
+	// Quest Monster
+	private static final int SINGING_FLOWER_PHANTASM = 27095;
+	private static final int SINGING_FLOWER_NIGTMATE = 27096;
+	private static final int SINGING_FLOWER_DARKLING = 27097;
+	private static final int GHOST_FIRE = 27098;
+	// Misc
+	private static final int MIN_LVL = 39;
+	
+	public Q00228_TestOfMagus()
+	{
+		super(228, Q00228_TestOfMagus.class.getSimpleName(), "Test Of Magus");
+		addStartNpc(BARD_RUKAL);
+		addTalkId(BARD_RUKAL, PARINA, EARTH_SNAKE, FLAME_SALAMANDER, WIND_SYLPH, WATER_UNDINE, ELDER_CASIAN);
+		addKillId(HARPY, MARSH_STAKATO, WYRM, MARSH_STAKATO_WORKER, TOAD_LORD, MARSH_STAKATO_SOLDIER, MARSH_STAKATO_DRONE, WINDSUS, ENCHANTED_MONSTEREYE, ENCHANTED_STOLEN_GOLEM, ENCHANTED_IRON_GOLEM, SINGING_FLOWER_PHANTASM, SINGING_FLOWER_NIGTMATE, SINGING_FLOWER_DARKLING, GHOST_FIRE);
+		registerQuestItems(RUKALS_LETTER, PARINAS_LETTER, LILAC_CHARM, GOLDEN_SEED_1ST, GOLDEN_SEED_2ND, GOLDEN_SEED_3RD, SCORE_OF_ELEMENTS, DAZZLING_DROP, FLAME_CRYSTAL, HARPYS_FEATHER, WYRMS_WINGBONE, WINDSUS_MANE, ENCHANTED_MONSTER_EYE_SHELL, ENCHANTED_GOLEM_POWDER, ENCHANTED_IRON_GOLEM_SCRAP, TONE_OF_WATER, TONE_OF_FIRE, TONE_OF_WIND, TONE_OF_EARTH, SALAMANDER_CHARM, SYLPH_CHARM, UNDINE_CHARM, SERPENT_CHARM);
+	}
+	
+	@Override
+	public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
+	{
+		final QuestState qs = getQuestState(player, false);
+		if (qs == null)
+		{
+			return null;
+		}
+		
+		String htmltext = null;
+		switch (event)
+		{
+			case "ACCEPT":
+			{
+				if (qs.isCreated())
+				{
+					qs.startQuest();
+					playSound(player, QuestSound.ITEMSOUND_QUEST_MIDDLE);
+					giveItems(player, RUKALS_LETTER, 1);
+					if (player.getVariables().getInt("2ND_CLASS_DIAMOND_REWARD", 0) == 0)
+					{
+						giveItems(player, DIMENSIONAL_DIAMOND, 122);
+						player.getVariables().set("2ND_CLASS_DIAMOND_REWARD", 1);
+						htmltext = "30629-04a.htm";
+					}
+					else
+					{
+						htmltext = "30629-04.htm";
+					}
+				}
+				break;
+			}
+			case "30629-09.html":
+			case "30409-02.html":
+			{
+				htmltext = event;
+				break;
+			}
+			case "30629-10.html":
+			{
+				if (hasQuestItems(player, GOLDEN_SEED_3RD))
+				{
+					takeItems(player, LILAC_CHARM, 1);
+					takeItems(player, GOLDEN_SEED_1ST, 1);
+					takeItems(player, GOLDEN_SEED_2ND, 1);
+					takeItems(player, GOLDEN_SEED_3RD, 1);
+					giveItems(player, SCORE_OF_ELEMENTS, 1);
+					qs.setCond(5, true);
+					htmltext = event;
+				}
+				break;
+			}
+			case "30391-02.html":
+			{
+				if (hasQuestItems(player, RUKALS_LETTER))
+				{
+					takeItems(player, RUKALS_LETTER, 1);
+					giveItems(player, PARINAS_LETTER, 1);
+					qs.setCond(2, true);
+					htmltext = event;
+				}
+				break;
+			}
+			case "30409-03.html":
+			{
+				giveItems(player, SERPENT_CHARM, 1);
+				htmltext = event;
+				break;
+			}
+			case "30412-02.html":
+			{
+				giveItems(player, SYLPH_CHARM, 1);
+				htmltext = event;
+				break;
+			}
+			case "30612-02.html":
+			{
+				takeItems(player, PARINAS_LETTER, 1);
+				giveItems(player, LILAC_CHARM, 1);
+				qs.setCond(3, true);
+				htmltext = event;
+				break;
+			}
+		}
+		return htmltext;
+	}
+	
+	@Override
+	public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
+	{
+		final QuestState qs = getQuestState(killer, false);
+		if ((qs != null) && qs.isStarted() && Util.checkIfInRange(1500, npc, killer, true))
+		{
+			switch (npc.getId())
+			{
+				case HARPY:
+				{
+					if (hasQuestItems(killer, SCORE_OF_ELEMENTS, SYLPH_CHARM) && (getQuestItemsCount(killer, HARPYS_FEATHER) < 20))
+					{
+						giveItems(killer, HARPYS_FEATHER, 1);
+						if (getQuestItemsCount(killer, HARPYS_FEATHER) >= 20)
+						{
+							playSound(killer, QuestSound.ITEMSOUND_QUEST_MIDDLE);
+						}
+						else
+						{
+							playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
+						}
+					}
+					break;
+				}
+				case MARSH_STAKATO:
+				case MARSH_STAKATO_WORKER:
+				case TOAD_LORD:
+				case MARSH_STAKATO_SOLDIER:
+				case MARSH_STAKATO_DRONE:
+				{
+					if (hasQuestItems(killer, SCORE_OF_ELEMENTS, UNDINE_CHARM) && (getQuestItemsCount(killer, DAZZLING_DROP) < 20))
+					{
+						giveItems(killer, DAZZLING_DROP, 1);
+						if (getQuestItemsCount(killer, DAZZLING_DROP) >= 20)
+						{
+							playSound(killer, QuestSound.ITEMSOUND_QUEST_MIDDLE);
+						}
+						else
+						{
+							playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
+						}
+					}
+					break;
+				}
+				case WYRM:
+				{
+					if (hasQuestItems(killer, SCORE_OF_ELEMENTS, SYLPH_CHARM) && (getQuestItemsCount(killer, WYRMS_WINGBONE) < 10))
+					{
+						if (getRandom(100) < 50)
+						{
+							giveItems(killer, WYRMS_WINGBONE, 1);
+							if (getQuestItemsCount(killer, WYRMS_WINGBONE) >= 10)
+							{
+								playSound(killer, QuestSound.ITEMSOUND_QUEST_MIDDLE);
+							}
+							else
+							{
+								playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
+							}
+						}
+					}
+					break;
+				}
+				case WINDSUS:
+				{
+					if (hasQuestItems(killer, SCORE_OF_ELEMENTS, SYLPH_CHARM) && (getQuestItemsCount(killer, WINDSUS_MANE) < 10))
+					{
+						if (getRandom(100) < 50)
+						{
+							giveItems(killer, WINDSUS_MANE, 1);
+							if (getQuestItemsCount(killer, WINDSUS_MANE) >= 10)
+							{
+								playSound(killer, QuestSound.ITEMSOUND_QUEST_MIDDLE);
+							}
+							else
+							{
+								playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
+							}
+						}
+					}
+					break;
+				}
+				case ENCHANTED_MONSTEREYE:
+				{
+					if (hasQuestItems(killer, SCORE_OF_ELEMENTS, SERPENT_CHARM) && (getQuestItemsCount(killer, ENCHANTED_MONSTER_EYE_SHELL) < 10))
+					{
+						giveItems(killer, ENCHANTED_MONSTER_EYE_SHELL, 1);
+						if (getQuestItemsCount(killer, ENCHANTED_MONSTER_EYE_SHELL) >= 10)
+						{
+							playSound(killer, QuestSound.ITEMSOUND_QUEST_MIDDLE);
+						}
+						else
+						{
+							playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
+						}
+					}
+					break;
+				}
+				case ENCHANTED_STOLEN_GOLEM:
+				{
+					if (hasQuestItems(killer, SCORE_OF_ELEMENTS, SERPENT_CHARM) && (getQuestItemsCount(killer, ENCHANTED_GOLEM_POWDER) < 10))
+					{
+						giveItems(killer, ENCHANTED_GOLEM_POWDER, 1);
+						if (getQuestItemsCount(killer, ENCHANTED_GOLEM_POWDER) >= 10)
+						{
+							playSound(killer, QuestSound.ITEMSOUND_QUEST_MIDDLE);
+						}
+						else
+						{
+							playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
+						}
+					}
+					break;
+				}
+				case ENCHANTED_IRON_GOLEM:
+				{
+					if (hasQuestItems(killer, SCORE_OF_ELEMENTS, SERPENT_CHARM) && (getQuestItemsCount(killer, ENCHANTED_IRON_GOLEM_SCRAP) < 10))
+					{
+						giveItems(killer, ENCHANTED_IRON_GOLEM_SCRAP, 1);
+						if (getQuestItemsCount(killer, ENCHANTED_IRON_GOLEM_SCRAP) >= 10)
+						{
+							playSound(killer, QuestSound.ITEMSOUND_QUEST_MIDDLE);
+						}
+						else
+						{
+							playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
+						}
+					}
+					break;
+				}
+				case SINGING_FLOWER_PHANTASM:
+				{
+					if (hasQuestItems(killer, LILAC_CHARM) && !hasQuestItems(killer, GOLDEN_SEED_1ST))
+					{
+						giveItems(killer, GOLDEN_SEED_1ST, 1);
+						npc.broadcastPacket(new NpcSay(npc, Say2.NPC_ALL, NpcStringId.I_AM_A_TREE_OF_NOTHING_A_TREE_THAT_KNOWS_WHERE_TO_RETURN));
+						playSound(killer, QuestSound.ITEMSOUND_QUEST_MIDDLE);
+						if (hasQuestItems(killer, GOLDEN_SEED_2ND, GOLDEN_SEED_3RD))
+						{
+							qs.setCond(4);
+						}
+					}
+					break;
+				}
+				case SINGING_FLOWER_NIGTMATE:
+				{
+					if (hasQuestItems(killer, LILAC_CHARM) && !hasQuestItems(killer, GOLDEN_SEED_2ND))
+					{
+						giveItems(killer, GOLDEN_SEED_2ND, 1);
+						npc.broadcastPacket(new NpcSay(npc, Say2.NPC_ALL, NpcStringId.I_AM_A_CREATURE_THAT_SHOWS_THE_TRUTH_OF_THE_PLACE_DEEP_IN_MY_HEART));
+						playSound(killer, QuestSound.ITEMSOUND_QUEST_MIDDLE);
+						if (hasQuestItems(killer, GOLDEN_SEED_1ST, GOLDEN_SEED_3RD))
+						{
+							qs.setCond(4);
+						}
+					}
+					break;
+				}
+				case SINGING_FLOWER_DARKLING:
+				{
+					if (hasQuestItems(killer, LILAC_CHARM) && !hasQuestItems(killer, GOLDEN_SEED_3RD))
+					{
+						giveItems(killer, GOLDEN_SEED_3RD, 1);
+						npc.broadcastPacket(new NpcSay(npc, Say2.NPC_ALL, NpcStringId.I_AM_A_MIRROR_OF_DARKNESS_A_VIRTUAL_IMAGE_OF_DARKNESS));
+						playSound(killer, QuestSound.ITEMSOUND_QUEST_MIDDLE);
+						if (hasQuestItems(killer, GOLDEN_SEED_1ST, GOLDEN_SEED_2ND))
+						{
+							qs.setCond(4);
+						}
+					}
+					break;
+				}
+				case GHOST_FIRE:
+				{
+					if (hasQuestItems(killer, SCORE_OF_ELEMENTS, SALAMANDER_CHARM) && (getQuestItemsCount(killer, FLAME_CRYSTAL) < 5))
+					{
+						if (getRandom(100) < 50)
+						{
+							giveItems(killer, FLAME_CRYSTAL, 1);
+							if (getQuestItemsCount(killer, FLAME_CRYSTAL) >= 5)
+							{
+								playSound(killer, QuestSound.ITEMSOUND_QUEST_MIDDLE);
+							}
+							else
+							{
+								playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
+							}
+						}
+					}
+					break;
+				}
+			}
+		}
+		return super.onKill(npc, killer, isSummon);
+	}
+	
+	@Override
+	public String onTalk(L2Npc npc, L2PcInstance player)
+	{
+		final QuestState qs = getQuestState(player, true);
+		String htmltext = getNoQuestMsg(player);
+		if (qs.isCreated())
+		{
+			if (npc.getId() == BARD_RUKAL)
+			{
+				if ((player.getClassId() == ClassId.wizard) || (player.getClassId() == ClassId.elvenWizard) || ((player.getClassId() == ClassId.darkWizard)))
+				{
+					if (player.getLevel() < MIN_LVL)
+					{
+						htmltext = "30629-02.html";
+					}
+					else
+					{
+						htmltext = "30629-03.htm";
+					}
+				}
+				else
+				{
+					htmltext = "30629-01.html";
+				}
+			}
+		}
+		else if (qs.isStarted())
+		{
+			switch (npc.getId())
+			{
+				case BARD_RUKAL:
+				{
+					if (hasQuestItems(player, RUKALS_LETTER))
+					{
+						htmltext = "30629-05.html";
+					}
+					else if (hasQuestItems(player, PARINAS_LETTER))
+					{
+						htmltext = "30629-06.html";
+					}
+					else if (hasQuestItems(player, LILAC_CHARM))
+					{
+						if (hasQuestItems(player, GOLDEN_SEED_1ST, GOLDEN_SEED_2ND, GOLDEN_SEED_3RD))
+						{
+							htmltext = "30629-08.html";
+						}
+						else
+						{
+							htmltext = "30629-07.html";
+						}
+					}
+					else if (hasQuestItems(player, SCORE_OF_ELEMENTS))
+					{
+						if (hasQuestItems(player, TONE_OF_WATER, TONE_OF_FIRE, TONE_OF_WIND, TONE_OF_EARTH))
+						{
+							giveAdena(player, 372154, true);
+							giveItems(player, MARK_OF_MAGUS, 1);
+							addExpAndSp(player, 2058244, 141240);
+							qs.exitQuest(false, true);
+							player.sendPacket(new SocialAction(player.getObjectId(), 3));
+							htmltext = "30629-12.html";
+						}
+						else
+						{
+							htmltext = "30629-11.html";
+						}
+					}
+					break;
+				}
+				case PARINA:
+				{
+					if (hasQuestItems(player, RUKALS_LETTER))
+					{
+						htmltext = "30391-01.html";
+					}
+					else if (hasQuestItems(player, PARINAS_LETTER))
+					{
+						htmltext = "30391-03.html";
+					}
+					else if (hasQuestItems(player, LILAC_CHARM))
+					{
+						htmltext = "30391-04.html";
+					}
+					else if (hasQuestItems(player, SCORE_OF_ELEMENTS))
+					{
+						htmltext = "30391-05.html";
+					}
+					break;
+				}
+				case EARTH_SNAKE:
+				{
+					if (hasQuestItems(player, SCORE_OF_ELEMENTS))
+					{
+						if (!hasAtLeastOneQuestItem(player, TONE_OF_EARTH, SERPENT_CHARM))
+						{
+							htmltext = "30409-01.html";
+						}
+						else if (hasQuestItems(player, SERPENT_CHARM))
+						{
+							if ((getQuestItemsCount(player, ENCHANTED_MONSTER_EYE_SHELL) >= 10) && (getQuestItemsCount(player, ENCHANTED_GOLEM_POWDER) >= 10) && (getQuestItemsCount(player, ENCHANTED_IRON_GOLEM_SCRAP) >= 10))
+							{
+								takeItems(player, ENCHANTED_MONSTER_EYE_SHELL, -1);
+								takeItems(player, ENCHANTED_GOLEM_POWDER, -1);
+								takeItems(player, ENCHANTED_IRON_GOLEM_SCRAP, -1);
+								giveItems(player, TONE_OF_EARTH, 1);
+								takeItems(player, SERPENT_CHARM, 1);
+								if (hasQuestItems(player, TONE_OF_FIRE, TONE_OF_WATER, TONE_OF_WIND))
+								{
+									qs.setCond(6, true);
+								}
+								htmltext = "30409-05.html";
+							}
+							else
+							{
+								htmltext = "30409-04.html";
+							}
+						}
+						else if (hasQuestItems(player, TONE_OF_EARTH) && !hasQuestItems(player, SERPENT_CHARM))
+						{
+							htmltext = "30409-06.html";
+						}
+					}
+					break;
+				}
+				case FLAME_SALAMANDER:
+				{
+					if (hasQuestItems(player, SCORE_OF_ELEMENTS))
+					{
+						if (!hasAtLeastOneQuestItem(player, TONE_OF_FIRE, SALAMANDER_CHARM))
+						{
+							htmltext = "30411-01.html";
+							giveItems(player, SALAMANDER_CHARM, 1);
+						}
+						else if (hasQuestItems(player, SALAMANDER_CHARM))
+						{
+							if (getQuestItemsCount(player, FLAME_CRYSTAL) < 5)
+							{
+								htmltext = "30411-02.html";
+							}
+							else
+							{
+								takeItems(player, FLAME_CRYSTAL, -1);
+								giveItems(player, TONE_OF_FIRE, 1);
+								takeItems(player, SALAMANDER_CHARM, 1);
+								if (hasQuestItems(player, TONE_OF_WATER, TONE_OF_WIND, TONE_OF_EARTH))
+								{
+									qs.setCond(6, true);
+								}
+								htmltext = "30411-03.html";
+							}
+						}
+						else if (hasQuestItems(player, TONE_OF_FIRE) && !hasQuestItems(player, SALAMANDER_CHARM))
+						{
+							htmltext = "30411-04.html";
+						}
+					}
+					break;
+				}
+				case WIND_SYLPH:
+				{
+					if (hasQuestItems(player, SCORE_OF_ELEMENTS))
+					{
+						if (!hasAtLeastOneQuestItem(player, TONE_OF_WIND, SYLPH_CHARM))
+						{
+							htmltext = "30412-01.html";
+						}
+						else if (hasQuestItems(player, SYLPH_CHARM))
+						{
+							if ((getQuestItemsCount(player, HARPYS_FEATHER) >= 20) && (getQuestItemsCount(player, WYRMS_WINGBONE) >= 10) && (getQuestItemsCount(player, WINDSUS_MANE) >= 10))
+							{
+								takeItems(player, HARPYS_FEATHER, -1);
+								takeItems(player, WYRMS_WINGBONE, -1);
+								takeItems(player, WINDSUS_MANE, -1);
+								giveItems(player, TONE_OF_WIND, 1);
+								takeItems(player, SYLPH_CHARM, 1);
+								if (hasQuestItems(player, TONE_OF_WATER, TONE_OF_FIRE, TONE_OF_EARTH))
+								{
+									qs.setCond(6, true);
+								}
+								htmltext = "30412-04.html";
+							}
+							else
+							{
+								htmltext = "30412-03.html";
+							}
+						}
+						else if (hasQuestItems(player, TONE_OF_WIND) && !hasQuestItems(player, SYLPH_CHARM))
+						{
+							htmltext = "30412-05.html";
+						}
+					}
+					break;
+				}
+				case WATER_UNDINE:
+				{
+					if (hasQuestItems(player, SCORE_OF_ELEMENTS))
+					{
+						if (!hasAtLeastOneQuestItem(player, TONE_OF_WATER, UNDINE_CHARM))
+						{
+							htmltext = "30413-01.html";
+							giveItems(player, UNDINE_CHARM, 1);
+						}
+						else if (hasQuestItems(player, UNDINE_CHARM))
+						{
+							if (getQuestItemsCount(player, DAZZLING_DROP) < 20)
+							{
+								htmltext = "30413-02.html";
+							}
+							else
+							{
+								takeItems(player, DAZZLING_DROP, -1);
+								giveItems(player, TONE_OF_WATER, 1);
+								takeItems(player, UNDINE_CHARM, 1);
+								if (hasQuestItems(player, TONE_OF_FIRE, TONE_OF_WIND, TONE_OF_EARTH))
+								{
+									qs.setCond(6, true);
+								}
+								htmltext = "30413-03.html";
+							}
+						}
+						else if (hasQuestItems(player, TONE_OF_WATER) && !hasQuestItems(player, UNDINE_CHARM))
+						{
+							htmltext = "30413-04.html";
+						}
+					}
+					break;
+				}
+				case ELDER_CASIAN:
+				{
+					if (hasQuestItems(player, PARINAS_LETTER))
+					{
+						htmltext = "30612-01.html";
+					}
+					else if (hasQuestItems(player, LILAC_CHARM))
+					{
+						if (hasQuestItems(player, GOLDEN_SEED_1ST, GOLDEN_SEED_2ND, GOLDEN_SEED_3RD))
+						{
+							htmltext = "30612-04.html";
+						}
+						else
+						{
+							htmltext = "30612-03.html";
+						}
+					}
+					else if (hasQuestItems(player, SCORE_OF_ELEMENTS))
+					{
+						htmltext = "30612-05.html";
+					}
+					break;
+				}
+			}
+		}
+		else if (qs.isCompleted())
+		{
+			if (npc.getId() == BARD_RUKAL)
+			{
+				htmltext = getAlreadyCompletedMsg(player);
+			}
+		}
+		return htmltext;
+	}
+}
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/QuestMasterHandler.java b/L2J_DataPack/dist/game/data/scripts/quests/QuestMasterHandler.java
index 6bf91bed91..7f4299d584 100644
--- a/L2J_DataPack/dist/game/data/scripts/quests/QuestMasterHandler.java
+++ b/L2J_DataPack/dist/game/data/scripts/quests/QuestMasterHandler.java
@@ -203,6 +203,7 @@ import quests.Q00223_TestOfTheChampion.Q00223_TestOfTheChampion;
 import quests.Q00224_TestOfSagittarius.Q00224_TestOfSagittarius;
 import quests.Q00225_TestOfTheSearcher.Q00225_TestOfTheSearcher;
 import quests.Q00226_TestOfTheHealer.Q00226_TestOfTheHealer;
+import quests.Q00228_TestOfMagus.Q00228_TestOfMagus;
 import quests.Q00235_MimirsElixir.Q00235_MimirsElixir;
 import quests.Q00237_WindsOfChange.Q00237_WindsOfChange;
 import quests.Q00238_SuccessFailureOfBusiness.Q00238_SuccessFailureOfBusiness;
@@ -648,6 +649,7 @@ public class QuestMasterHandler
 		Q00224_TestOfSagittarius.class,
 		Q00225_TestOfTheSearcher.class,
 		Q00226_TestOfTheHealer.class,
+		Q00228_TestOfMagus.class,
 		Q00235_MimirsElixir.class,
 		Q00237_WindsOfChange.class,
 		Q00238_SuccessFailureOfBusiness.class,
diff --git a/L2J_DataPack/dist/sql/game/updates/20141122update.sql b/L2J_DataPack/dist/sql/game/updates/20141122update.sql
new file mode 100644
index 0000000000..d7e2f68e6c
--- /dev/null
+++ b/L2J_DataPack/dist/sql/game/updates/20141122update.sql
@@ -0,0 +1 @@
+UPDATE character_quests SET name='Q00228_TestOfMagus' WHERE name='228_TestOfMagus'; 
\ No newline at end of file
-- 
GitLab