Explorar el Código

Quest: Test Of Magus (228)
Reviewed by: @Zoey76

ivantotov hace 10 años
padre
commit
f28d1b15f1
Se han modificado 76 ficheros con 789 adiciones y 414 borrados
  1. 0 1
      L2J_DataPack/dist/game/data/scripts.cfg
  2. 0 5
      L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30391-01.htm
  3. 0 5
      L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30391-02.htm
  4. 0 3
      L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30391-03.htm
  5. 0 3
      L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30391-04.htm
  6. 0 3
      L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30391-05.htm
  7. 0 6
      L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30409-01.htm
  8. 0 4
      L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30409-02.htm
  9. 0 3
      L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30409-05.htm
  10. 0 6
      L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30411-01.htm
  11. 0 3
      L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30411-03.htm
  12. 0 5
      L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30412-01.htm
  13. 0 4
      L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30412-02.htm
  14. 0 3
      L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30412-03.htm
  15. 0 3
      L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30412-04.htm
  16. 0 3
      L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30412-05.htm
  17. 0 5
      L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30413-01.htm
  18. 0 3
      L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30413-02.htm
  19. 0 3
      L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30413-03.htm
  20. 0 3
      L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30413-04.htm
  21. 0 5
      L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30612-01.htm
  22. 0 5
      L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30612-02.htm
  23. 0 4
      L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30612-03.htm
  24. 0 3
      L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30612-04.htm
  25. 0 3
      L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30612-05.htm
  26. 0 5
      L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30629-01.htm
  27. 0 6
      L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30629-02.htm
  28. 0 3
      L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30629-06.htm
  29. 0 5
      L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30629-07.htm
  30. 0 4
      L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30629-12.htm
  31. 0 279
      L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/__init__.py
  32. 5 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30391-01.html
  33. 5 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30391-02.html
  34. 3 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30391-03.html
  35. 3 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30391-04.html
  36. 3 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30391-05.html
  37. 6 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30409-01.html
  38. 6 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30409-02.html
  39. 2 2
      L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30409-03.html
  40. 0 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30409-04.html
  41. 3 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30409-05.html
  42. 0 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30409-06.html
  43. 6 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30411-01.html
  44. 1 1
      L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30411-02.html
  45. 3 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30411-03.html
  46. 0 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30411-04.html
  47. 5 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30412-01.html
  48. 4 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30412-02.html
  49. 3 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30412-03.html
  50. 3 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30412-04.html
  51. 3 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30412-05.html
  52. 5 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30413-01.html
  53. 3 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30413-02.html
  54. 3 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30413-03.html
  55. 3 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30413-04.html
  56. 5 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30612-01.html
  57. 5 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30612-02.html
  58. 4 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30612-03.html
  59. 3 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30612-04.html
  60. 3 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30612-05.html
  61. 5 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30629-01.html
  62. 5 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30629-02.html
  63. 2 2
      L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30629-03.htm
  64. 2 2
      L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30629-04.htm
  65. 8 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30629-04a.htm
  66. 0 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30629-05.html
  67. 3 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30629-06.html
  68. 3 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30629-07.html
  69. 2 2
      L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30629-08.html
  70. 2 4
      L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30629-09.html
  71. 4 4
      L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30629-10.html
  72. 1 1
      L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30629-11.html
  73. 4 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30629-12.html
  74. 647 0
      L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/Q00228_TestOfMagus.java
  75. 2 0
      L2J_DataPack/dist/game/data/scripts/quests/QuestMasterHandler.java
  76. 1 0
      L2J_DataPack/dist/sql/game/updates/20141122update.sql

+ 0 - 1
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

+ 0 - 5
L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30391-01.htm

@@ -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>

+ 0 - 5
L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30391-02.htm

@@ -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>

+ 0 - 3
L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30391-03.htm

@@ -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>

+ 0 - 3
L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30391-04.htm

@@ -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>

+ 0 - 3
L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30391-05.htm

@@ -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>

+ 0 - 6
L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30409-01.htm

@@ -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>

+ 0 - 4
L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30409-02.htm

@@ -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>

+ 0 - 3
L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30409-05.htm

@@ -1,3 +0,0 @@
-<html><body>Earth Snake:<br>
-1, 2, 3... Yes
-</body></html>

+ 0 - 6
L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30411-01.htm

@@ -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>

+ 0 - 3
L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30411-03.htm

@@ -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>

+ 0 - 5
L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30412-01.htm

@@ -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>

+ 0 - 4
L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30412-02.htm

@@ -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>

+ 0 - 3
L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30412-03.htm

@@ -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>

+ 0 - 3
L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30412-04.htm

@@ -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>

+ 0 - 3
L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30412-05.htm

@@ -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>

+ 0 - 5
L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30413-01.htm

@@ -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>

+ 0 - 3
L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30413-02.htm

@@ -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>

+ 0 - 3
L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30413-03.htm

@@ -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>

+ 0 - 3
L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30413-04.htm

@@ -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>

+ 0 - 5
L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30612-01.htm

@@ -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>

+ 0 - 5
L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30612-02.htm

@@ -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>

+ 0 - 4
L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30612-03.htm

@@ -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>

+ 0 - 3
L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30612-04.htm

@@ -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>

+ 0 - 3
L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30612-05.htm

@@ -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>

+ 0 - 5
L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30629-01.htm

@@ -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>

+ 0 - 6
L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30629-02.htm

@@ -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>

+ 0 - 3
L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30629-06.htm

@@ -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>

+ 0 - 5
L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30629-07.htm

@@ -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>

+ 0 - 4
L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30629-12.htm

@@ -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>

+ 0 - 279
L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/__init__.py

@@ -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)

+ 5 - 0
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>

+ 5 - 0
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>

+ 3 - 0
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>

+ 3 - 0
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>

+ 3 - 0
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>

+ 6 - 0
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>

+ 6 - 0
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>

+ 2 - 2
L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30409-03.htm → 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>

+ 0 - 0
L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30409-04.htm → L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30409-04.html


+ 3 - 0
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>

+ 0 - 0
L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30409-06.htm → L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30409-06.html


+ 6 - 0
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>

+ 1 - 1
L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30411-02.htm → 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>

+ 3 - 0
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>

+ 0 - 0
L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30411-04.htm → L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30411-04.html


+ 5 - 0
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>

+ 4 - 0
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>

+ 3 - 0
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>

+ 3 - 0
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>

+ 3 - 0
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>

+ 5 - 0
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>

+ 3 - 0
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>

+ 3 - 0
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>

+ 3 - 0
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>

+ 5 - 0
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>

+ 5 - 0
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>

+ 4 - 0
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>

+ 3 - 0
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>

+ 3 - 0
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>

+ 5 - 0
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>

+ 5 - 0
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>

+ 2 - 2
L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30629-03.htm → 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>

+ 2 - 2
L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30629-04.htm → 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>

+ 8 - 0
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>

+ 0 - 0
L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30629-05.htm → L2J_DataPack/dist/game/data/scripts/quests/Q00228_TestOfMagus/30629-05.html


+ 3 - 0
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>

+ 3 - 0
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>

+ 2 - 2
L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30629-08.htm → 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>

+ 2 - 4
L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30629-09.htm → 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>

+ 4 - 4
L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30629-10.htm → 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>

+ 1 - 1
L2J_DataPack/dist/game/data/scripts/quests/228_TestOfMagus/30629-11.htm → 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>

+ 4 - 0
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>

+ 647 - 0
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;
+	}
+}

+ 2 - 0
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,

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

@@ -0,0 +1 @@
+UPDATE character_quests SET name='Q00228_TestOfMagus' WHERE name='228_TestOfMagus';