From 6de0ed85042bc3eef99e8e5e6dc22477ce283b67 Mon Sep 17 00:00:00 2001
From: Adry85 <adrya85@hotmail.it>
Date: Mon, 14 Aug 2017 18:18:48 +0200
Subject: [PATCH] Retail like quest The Song of the Hunter (335).

Patch by: Zoey76
Reviewed by: Adry_85
---
 dist/game/data/scripts.cfg                    |    1 -
 dist/game/data/scripts/cron/example.py        |    5 -
 .../335_TheSongOfTheHunter/30744-01.htm       |    3 -
 .../335_TheSongOfTheHunter/30744-02.htm       |    3 -
 .../335_TheSongOfTheHunter/30744-03.htm       |    3 -
 .../335_TheSongOfTheHunter/30744-04.htm       |    8 -
 .../335_TheSongOfTheHunter/30744-05.htm       |    3 -
 .../335_TheSongOfTheHunter/30744-06.htm       |    3 -
 .../335_TheSongOfTheHunter/30744-07.htm       |    3 -
 .../335_TheSongOfTheHunter/30744-09.htm       |    3 -
 .../335_TheSongOfTheHunter/30744-10.htm       |    3 -
 .../335_TheSongOfTheHunter/30744-12.htm       |    2 -
 .../335_TheSongOfTheHunter/30744-13.htm       |    5 -
 .../335_TheSongOfTheHunter/30744-14.htm       |    3 -
 .../335_TheSongOfTheHunter/30744-15.htm       |    3 -
 .../335_TheSongOfTheHunter/30744-16.htm       |    5 -
 .../335_TheSongOfTheHunter/30744-17.htm       |    3 -
 .../335_TheSongOfTheHunter/30744-18.htm       |    3 -
 .../335_TheSongOfTheHunter/30744-20.htm       |    8 -
 .../335_TheSongOfTheHunter/30744-21.htm       |    3 -
 .../335_TheSongOfTheHunter/30744-22.htm       |    3 -
 .../335_TheSongOfTheHunter/30744-23.htm       |    3 -
 .../335_TheSongOfTheHunter/30744-25.htm       |    3 -
 .../335_TheSongOfTheHunter/30744-26.htm       |    3 -
 .../335_TheSongOfTheHunter/30744-28.htm       |    4 -
 .../335_TheSongOfTheHunter/30744-29.htm       |    4 -
 .../335_TheSongOfTheHunter/30744-30.htm       |    3 -
 .../335_TheSongOfTheHunter/30744-31.htm       |    4 -
 .../335_TheSongOfTheHunter/30745-06.htm       |    3 -
 .../335_TheSongOfTheHunter/30745-07.htm       |    3 -
 .../335_TheSongOfTheHunter/30745-08.htm       |    4 -
 .../335_TheSongOfTheHunter/30745-10.htm       |    2 -
 .../335_TheSongOfTheHunter/30745-12.htm       |    4 -
 .../335_TheSongOfTheHunter/30745-13.htm       |    4 -
 .../335_TheSongOfTheHunter/30745-15.htm       |    2 -
 .../335_TheSongOfTheHunter/30745-24.htm       |    2 -
 .../335_TheSongOfTheHunter/30745-26.htm       |    2 -
 .../335_TheSongOfTheHunter/30745-27.htm       |    2 -
 .../335_TheSongOfTheHunter/30745-31.htm       |    2 -
 .../335_TheSongOfTheHunter/30745-38.htm       |    2 -
 .../335_TheSongOfTheHunter/30745-41.htm       |    2 -
 .../335_TheSongOfTheHunter/30745-46.htm       |    2 -
 .../335_TheSongOfTheHunter/30745-48.htm       |    2 -
 .../335_TheSongOfTheHunter/30745-49.htm       |    2 -
 .../335_TheSongOfTheHunter/30745-51.htm       |    2 -
 .../335_TheSongOfTheHunter/30745-52.htm       |    2 -
 .../335_TheSongOfTheHunter/30745-57.htm       |    1 -
 .../335_TheSongOfTheHunter/30746-03.htm       |    2 -
 .../335_TheSongOfTheHunter/30746-04.htm       |    2 -
 .../335_TheSongOfTheHunter/30746-05.htm       |    5 -
 .../335_TheSongOfTheHunter/30746-07.htm       |    4 -
 .../335_TheSongOfTheHunter/30746-08.htm       |    4 -
 .../335_TheSongOfTheHunter/30746-09.htm       |    2 -
 .../335_TheSongOfTheHunter/30746-10.htm       |    4 -
 .../335_TheSongOfTheHunter/30746-11.htm       |    4 -
 .../335_TheSongOfTheHunter/30746-12.htm       |    2 -
 .../quests/335_TheSongOfTheHunter/__init__.py |  631 -------
 .../Q00335_TheSongOfTheHunter/30744-01.htm    |    6 +
 .../Q00335_TheSongOfTheHunter/30744-02.htm    |    6 +
 .../Q00335_TheSongOfTheHunter/30744-03.htm    |    6 +
 .../Q00335_TheSongOfTheHunter/30744-04.html   |    9 +
 .../Q00335_TheSongOfTheHunter/30744-04a.html  |    5 +
 .../Q00335_TheSongOfTheHunter/30744-04b.html  |    5 +
 .../Q00335_TheSongOfTheHunter/30744-04c.html  |    4 +
 .../30744-04d.html}                           |    3 +-
 .../Q00335_TheSongOfTheHunter/30744-04e.html  |    5 +
 .../Q00335_TheSongOfTheHunter/30744-04f.html  |    5 +
 .../30744-05.html}                            |    3 +-
 .../Q00335_TheSongOfTheHunter/30744-06.html   |    5 +
 .../Q00335_TheSongOfTheHunter/30744-07.html   |    6 +
 .../Q00335_TheSongOfTheHunter/30744-07a.html  |    5 +
 .../Q00335_TheSongOfTheHunter/30744-07b.html  |    4 +
 .../Q00335_TheSongOfTheHunter/30744-08.html   |    6 +
 .../Q00335_TheSongOfTheHunter/30744-08a.html  |    5 +
 .../Q00335_TheSongOfTheHunter/30744-09.html   |    4 +
 .../30744-09a.html}                           |    3 +-
 .../Q00335_TheSongOfTheHunter/30744-10.html   |    9 +
 .../Q00335_TheSongOfTheHunter/30744-10a.html  |    4 +
 .../Q00335_TheSongOfTheHunter/30744-10b.html  |    4 +
 .../Q00335_TheSongOfTheHunter/30744-10c.html  |    4 +
 .../30744-10d.html}                           |    3 +-
 .../Q00335_TheSongOfTheHunter/30744-10e.html  |    4 +
 .../Q00335_TheSongOfTheHunter/30744-10f.html  |    4 +
 .../30744-11.html}                            |    3 +-
 .../Q00335_TheSongOfTheHunter/30744-12.html   |    5 +
 .../Q00335_TheSongOfTheHunter/30744-14.html   |    5 +
 .../Q00335_TheSongOfTheHunter/30744-14a.html  |    5 +
 .../Q00335_TheSongOfTheHunter/30744-15.html   |    6 +
 .../30744-16.html}                            |    3 +-
 .../30744-17.html}                            |    3 +-
 .../30744-18.html}                            |    3 +-
 .../30745-01a.html}                           |    4 +-
 .../30745-01b.html}                           |    6 +-
 .../30745-02.html}                            |    3 +-
 .../30745-03.html}                            |    3 +-
 .../30745-03a.html}                           |    3 +-
 .../Q00335_TheSongOfTheHunter/30745-03b.html  |    4 +
 .../Q00335_TheSongOfTheHunter/30745-04.html   |    4 +
 .../Q00335_TheSongOfTheHunter/30745-05.html   |    5 +
 .../30745-05a.html}                           |    5 +-
 .../Q00335_TheSongOfTheHunter/30745-05b.html  |    3 +
 .../30745-05c.html}                           |    3 +-
 .../Q00335_TheSongOfTheHunter/30745-06a.html  |    6 +
 .../Q00335_TheSongOfTheHunter/30745-06b.html  |    6 +
 .../30745-09.html}                            |    3 +-
 .../Q00335_TheSongOfTheHunter/30745-10a.html  |    4 +
 .../30745-10b.html}                           |    4 +-
 .../30745-10c.html}                           |    4 +-
 .../30745-10d.html}                           |    4 +-
 .../30745-10e.html}                           |    4 +-
 .../30745-10f.html}                           |    4 +-
 .../30745-10g.html}                           |    4 +-
 .../30745-10h.html}                           |    4 +-
 .../30745-10i.html}                           |    4 +-
 .../Q00335_TheSongOfTheHunter/30745-10j.html  |    4 +
 .../30745-10k.html}                           |    4 +-
 .../Q00335_TheSongOfTheHunter/30745-10l.html  |    4 +
 .../Q00335_TheSongOfTheHunter/30745-11a.html  |    4 +
 .../30745-11b.html}                           |    4 +-
 .../30745-11c.html}                           |    4 +-
 .../30745-11d.html}                           |    4 +-
 .../Q00335_TheSongOfTheHunter/30745-11e.html  |    4 +
 .../30745-11f.html}                           |    4 +-
 .../Q00335_TheSongOfTheHunter/30745-12a.html  |    4 +
 .../30745-12b.html}                           |    4 +-
 .../30745-12c.html}                           |    4 +-
 .../Q00335_TheSongOfTheHunter/30745-13a.html  |    4 +
 .../30745-13b.html}                           |    4 +-
 .../Q00335_TheSongOfTheHunter/30745-13c.html  |    4 +
 .../30745-13d.html}                           |    4 +-
 .../30745-13e.html}                           |    4 +-
 .../Q00335_TheSongOfTheHunter/30745-13f.html  |    4 +
 .../30745-13g.html}                           |    4 +-
 .../30745-13h.html}                           |    4 +-
 .../30745-13i.html}                           |    4 +-
 .../Q00335_TheSongOfTheHunter/30745-13j.html  |    4 +
 .../Q00335_TheSongOfTheHunter/30745-13k.html  |    4 +
 .../30745-13l.html}                           |    4 +-
 .../Q00335_TheSongOfTheHunter/30745-14a.html  |    4 +
 .../Q00335_TheSongOfTheHunter/30745-14b.html  |    4 +
 .../30745-14c.html}                           |    4 +-
 .../Q00335_TheSongOfTheHunter/30745-14d.html  |    4 +
 .../Q00335_TheSongOfTheHunter/30745-14e.html  |    4 +
 .../30745-14f.html}                           |    4 +-
 .../30745-15a.html}                           |    4 +-
 .../30745-15b.html}                           |    4 +-
 .../30745-15c.html}                           |    4 +-
 .../Q00335_TheSongOfTheHunter/30745-16.html   |    3 +
 .../30746-01.html}                            |    3 +-
 .../30746-02.html}                            |    3 +-
 .../Q00335_TheSongOfTheHunter/30746-03.html   |    6 +
 .../Q00335_TheSongOfTheHunter/30746-03a.html  |    5 +
 .../Q00335_TheSongOfTheHunter/30746-04.html   |    6 +
 .../30746-05.html}                            |    5 +-
 .../Q00335_TheSongOfTheHunter/30746-05a.html  |    6 +
 .../Q00335_TheSongOfTheHunter/30746-06.html   |    5 +
 .../Q00335_TheSongOfTheHunter/30746-07.html   |    3 +
 .../Q00335_TheSongOfTheHunter/30746-08.html   |    5 +
 .../Q00335_TheSongOfTheHunter/30746-09.html   |    5 +
 .../Q00335_TheSongOfTheHunter/30746-10.html   |    3 +
 .../Q00335_TheSongOfTheHunter.java            | 1665 +++++++++++++++++
 .../scripts/quests/QuestMasterHandler.java    |    2 +
 .../data/scripts/quests/documentation.txt     |  322 ----
 163 files changed, 2062 insertions(+), 1176 deletions(-)
 delete mode 100644 dist/game/data/scripts/cron/example.py
 delete mode 100644 dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-01.htm
 delete mode 100644 dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-02.htm
 delete mode 100644 dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-03.htm
 delete mode 100644 dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-04.htm
 delete mode 100644 dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-05.htm
 delete mode 100644 dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-06.htm
 delete mode 100644 dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-07.htm
 delete mode 100644 dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-09.htm
 delete mode 100644 dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-10.htm
 delete mode 100644 dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-12.htm
 delete mode 100644 dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-13.htm
 delete mode 100644 dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-14.htm
 delete mode 100644 dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-15.htm
 delete mode 100644 dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-16.htm
 delete mode 100644 dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-17.htm
 delete mode 100644 dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-18.htm
 delete mode 100644 dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-20.htm
 delete mode 100644 dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-21.htm
 delete mode 100644 dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-22.htm
 delete mode 100644 dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-23.htm
 delete mode 100644 dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-25.htm
 delete mode 100644 dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-26.htm
 delete mode 100644 dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-28.htm
 delete mode 100644 dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-29.htm
 delete mode 100644 dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-30.htm
 delete mode 100644 dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-31.htm
 delete mode 100644 dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-06.htm
 delete mode 100644 dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-07.htm
 delete mode 100644 dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-08.htm
 delete mode 100644 dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-10.htm
 delete mode 100644 dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-12.htm
 delete mode 100644 dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-13.htm
 delete mode 100644 dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-15.htm
 delete mode 100644 dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-24.htm
 delete mode 100644 dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-26.htm
 delete mode 100644 dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-27.htm
 delete mode 100644 dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-31.htm
 delete mode 100644 dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-38.htm
 delete mode 100644 dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-41.htm
 delete mode 100644 dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-46.htm
 delete mode 100644 dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-48.htm
 delete mode 100644 dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-49.htm
 delete mode 100644 dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-51.htm
 delete mode 100644 dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-52.htm
 delete mode 100644 dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-57.htm
 delete mode 100644 dist/game/data/scripts/quests/335_TheSongOfTheHunter/30746-03.htm
 delete mode 100644 dist/game/data/scripts/quests/335_TheSongOfTheHunter/30746-04.htm
 delete mode 100644 dist/game/data/scripts/quests/335_TheSongOfTheHunter/30746-05.htm
 delete mode 100644 dist/game/data/scripts/quests/335_TheSongOfTheHunter/30746-07.htm
 delete mode 100644 dist/game/data/scripts/quests/335_TheSongOfTheHunter/30746-08.htm
 delete mode 100644 dist/game/data/scripts/quests/335_TheSongOfTheHunter/30746-09.htm
 delete mode 100644 dist/game/data/scripts/quests/335_TheSongOfTheHunter/30746-10.htm
 delete mode 100644 dist/game/data/scripts/quests/335_TheSongOfTheHunter/30746-11.htm
 delete mode 100644 dist/game/data/scripts/quests/335_TheSongOfTheHunter/30746-12.htm
 delete mode 100644 dist/game/data/scripts/quests/335_TheSongOfTheHunter/__init__.py
 create mode 100644 dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-01.htm
 create mode 100644 dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-02.htm
 create mode 100644 dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-03.htm
 create mode 100644 dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-04.html
 create mode 100644 dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-04a.html
 create mode 100644 dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-04b.html
 create mode 100644 dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-04c.html
 rename dist/game/data/scripts/quests/{335_TheSongOfTheHunter/30744-08.htm => Q00335_TheSongOfTheHunter/30744-04d.html} (79%)
 create mode 100644 dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-04e.html
 create mode 100644 dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-04f.html
 rename dist/game/data/scripts/quests/{335_TheSongOfTheHunter/30744-11.htm => Q00335_TheSongOfTheHunter/30744-05.html} (72%)
 create mode 100644 dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-06.html
 create mode 100644 dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-07.html
 create mode 100644 dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-07a.html
 create mode 100644 dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-07b.html
 create mode 100644 dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-08.html
 create mode 100644 dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-08a.html
 create mode 100644 dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-09.html
 rename dist/game/data/scripts/quests/{335_TheSongOfTheHunter/30744-19.htm => Q00335_TheSongOfTheHunter/30744-09a.html} (81%)
 create mode 100644 dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-10.html
 create mode 100644 dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-10a.html
 create mode 100644 dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-10b.html
 create mode 100644 dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-10c.html
 rename dist/game/data/scripts/quests/{335_TheSongOfTheHunter/30744-24.htm => Q00335_TheSongOfTheHunter/30744-10d.html} (77%)
 create mode 100644 dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-10e.html
 create mode 100644 dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-10f.html
 rename dist/game/data/scripts/quests/{335_TheSongOfTheHunter/30744-27.htm => Q00335_TheSongOfTheHunter/30744-11.html} (64%)
 create mode 100644 dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-12.html
 create mode 100644 dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-14.html
 create mode 100644 dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-14a.html
 create mode 100644 dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-15.html
 rename dist/game/data/scripts/quests/{335_TheSongOfTheHunter/30744-32.htm => Q00335_TheSongOfTheHunter/30744-16.html} (80%)
 rename dist/game/data/scripts/quests/{335_TheSongOfTheHunter/30744-33.htm => Q00335_TheSongOfTheHunter/30744-17.html} (92%)
 rename dist/game/data/scripts/quests/{335_TheSongOfTheHunter/30744-34.htm => Q00335_TheSongOfTheHunter/30744-18.html} (73%)
 rename dist/game/data/scripts/quests/{335_TheSongOfTheHunter/30745-01.htm => Q00335_TheSongOfTheHunter/30745-01a.html} (69%)
 rename dist/game/data/scripts/quests/{335_TheSongOfTheHunter/30745-02.htm => Q00335_TheSongOfTheHunter/30745-01b.html} (58%)
 rename dist/game/data/scripts/quests/{335_TheSongOfTheHunter/30745-03.htm => Q00335_TheSongOfTheHunter/30745-02.html} (79%)
 rename dist/game/data/scripts/quests/{335_TheSongOfTheHunter/30745-04.htm => Q00335_TheSongOfTheHunter/30745-03.html} (80%)
 rename dist/game/data/scripts/quests/{335_TheSongOfTheHunter/30745-05.htm => Q00335_TheSongOfTheHunter/30745-03a.html} (67%)
 create mode 100644 dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-03b.html
 create mode 100644 dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-04.html
 create mode 100644 dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-05.html
 rename dist/game/data/scripts/quests/{335_TheSongOfTheHunter/30745-09.htm => Q00335_TheSongOfTheHunter/30745-05a.html} (52%)
 create mode 100644 dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-05b.html
 rename dist/game/data/scripts/quests/{335_TheSongOfTheHunter/30745-11.htm => Q00335_TheSongOfTheHunter/30745-05c.html} (90%)
 create mode 100644 dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-06a.html
 create mode 100644 dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-06b.html
 rename dist/game/data/scripts/quests/{335_TheSongOfTheHunter/30745-14.htm => Q00335_TheSongOfTheHunter/30745-09.html} (71%)
 create mode 100644 dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-10a.html
 rename dist/game/data/scripts/quests/{335_TheSongOfTheHunter/30745-16.htm => Q00335_TheSongOfTheHunter/30745-10b.html} (76%)
 rename dist/game/data/scripts/quests/{335_TheSongOfTheHunter/30745-17.htm => Q00335_TheSongOfTheHunter/30745-10c.html} (81%)
 rename dist/game/data/scripts/quests/{335_TheSongOfTheHunter/30745-18.htm => Q00335_TheSongOfTheHunter/30745-10d.html} (62%)
 rename dist/game/data/scripts/quests/{335_TheSongOfTheHunter/30745-19.htm => Q00335_TheSongOfTheHunter/30745-10e.html} (72%)
 rename dist/game/data/scripts/quests/{335_TheSongOfTheHunter/30745-20.htm => Q00335_TheSongOfTheHunter/30745-10f.html} (65%)
 rename dist/game/data/scripts/quests/{335_TheSongOfTheHunter/30745-21.htm => Q00335_TheSongOfTheHunter/30745-10g.html} (71%)
 rename dist/game/data/scripts/quests/{335_TheSongOfTheHunter/30745-22.htm => Q00335_TheSongOfTheHunter/30745-10h.html} (71%)
 rename dist/game/data/scripts/quests/{335_TheSongOfTheHunter/30745-23.htm => Q00335_TheSongOfTheHunter/30745-10i.html} (70%)
 create mode 100644 dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-10j.html
 rename dist/game/data/scripts/quests/{335_TheSongOfTheHunter/30745-25.htm => Q00335_TheSongOfTheHunter/30745-10k.html} (52%)
 create mode 100644 dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-10l.html
 create mode 100644 dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-11a.html
 rename dist/game/data/scripts/quests/{335_TheSongOfTheHunter/30745-28.htm => Q00335_TheSongOfTheHunter/30745-11b.html} (66%)
 rename dist/game/data/scripts/quests/{335_TheSongOfTheHunter/30745-29.htm => Q00335_TheSongOfTheHunter/30745-11c.html} (66%)
 rename dist/game/data/scripts/quests/{335_TheSongOfTheHunter/30745-30.htm => Q00335_TheSongOfTheHunter/30745-11d.html} (83%)
 create mode 100644 dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-11e.html
 rename dist/game/data/scripts/quests/{335_TheSongOfTheHunter/30745-32.htm => Q00335_TheSongOfTheHunter/30745-11f.html} (69%)
 create mode 100644 dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-12a.html
 rename dist/game/data/scripts/quests/{335_TheSongOfTheHunter/30745-34.htm => Q00335_TheSongOfTheHunter/30745-12b.html} (88%)
 rename dist/game/data/scripts/quests/{335_TheSongOfTheHunter/30745-35.htm => Q00335_TheSongOfTheHunter/30745-12c.html} (85%)
 create mode 100644 dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-13a.html
 rename dist/game/data/scripts/quests/{335_TheSongOfTheHunter/30745-37.htm => Q00335_TheSongOfTheHunter/30745-13b.html} (68%)
 create mode 100644 dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-13c.html
 rename dist/game/data/scripts/quests/{335_TheSongOfTheHunter/30745-39.htm => Q00335_TheSongOfTheHunter/30745-13d.html} (68%)
 rename dist/game/data/scripts/quests/{335_TheSongOfTheHunter/30745-40.htm => Q00335_TheSongOfTheHunter/30745-13e.html} (64%)
 create mode 100644 dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-13f.html
 rename dist/game/data/scripts/quests/{335_TheSongOfTheHunter/30745-42.htm => Q00335_TheSongOfTheHunter/30745-13g.html} (81%)
 rename dist/game/data/scripts/quests/{335_TheSongOfTheHunter/30745-43.htm => Q00335_TheSongOfTheHunter/30745-13h.html} (71%)
 rename dist/game/data/scripts/quests/{335_TheSongOfTheHunter/30745-44.htm => Q00335_TheSongOfTheHunter/30745-13i.html} (73%)
 create mode 100644 dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-13j.html
 create mode 100644 dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-13k.html
 rename dist/game/data/scripts/quests/{335_TheSongOfTheHunter/30745-47.htm => Q00335_TheSongOfTheHunter/30745-13l.html} (83%)
 create mode 100644 dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-14a.html
 create mode 100644 dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-14b.html
 rename dist/game/data/scripts/quests/{335_TheSongOfTheHunter/30745-50.htm => Q00335_TheSongOfTheHunter/30745-14c.html} (72%)
 create mode 100644 dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-14d.html
 create mode 100644 dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-14e.html
 rename dist/game/data/scripts/quests/{335_TheSongOfTheHunter/30745-53.htm => Q00335_TheSongOfTheHunter/30745-14f.html} (70%)
 rename dist/game/data/scripts/quests/{335_TheSongOfTheHunter/30745-54.htm => Q00335_TheSongOfTheHunter/30745-15a.html} (66%)
 rename dist/game/data/scripts/quests/{335_TheSongOfTheHunter/30745-55.htm => Q00335_TheSongOfTheHunter/30745-15b.html} (56%)
 rename dist/game/data/scripts/quests/{335_TheSongOfTheHunter/30745-56.htm => Q00335_TheSongOfTheHunter/30745-15c.html} (75%)
 create mode 100644 dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-16.html
 rename dist/game/data/scripts/quests/{335_TheSongOfTheHunter/30746-01.htm => Q00335_TheSongOfTheHunter/30746-01.html} (60%)
 rename dist/game/data/scripts/quests/{335_TheSongOfTheHunter/30746-02.htm => Q00335_TheSongOfTheHunter/30746-02.html} (66%)
 create mode 100644 dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30746-03.html
 create mode 100644 dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30746-03a.html
 create mode 100644 dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30746-04.html
 rename dist/game/data/scripts/quests/{335_TheSongOfTheHunter/30746-06.htm => Q00335_TheSongOfTheHunter/30746-05.html} (54%)
 create mode 100644 dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30746-05a.html
 create mode 100644 dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30746-06.html
 create mode 100644 dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30746-07.html
 create mode 100644 dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30746-08.html
 create mode 100644 dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30746-09.html
 create mode 100644 dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30746-10.html
 create mode 100644 dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/Q00335_TheSongOfTheHunter.java
 delete mode 100644 dist/game/data/scripts/quests/documentation.txt

diff --git a/dist/game/data/scripts.cfg b/dist/game/data/scripts.cfg
index 82dc4c9b95..08a553beb8 100644
--- a/dist/game/data/scripts.cfg
+++ b/dist/game/data/scripts.cfg
@@ -199,7 +199,6 @@ hellbound/HellboundLoader.java
 # Quests Section
 quests/QuestMasterHandler.java
 quests/TerritoryWarScripts/TerritoryWarSuperClass.java
-quests/335_TheSongOfTheHunter/__init__.py
 
 # Features
 features/SkillTransfer/SkillTransfer.java
diff --git a/dist/game/data/scripts/cron/example.py b/dist/game/data/scripts/cron/example.py
deleted file mode 100644
index 119dc6ddec..0000000000
--- a/dist/game/data/scripts/cron/example.py
+++ /dev/null
@@ -1,5 +0,0 @@
-##############################################
-### Author: Layane (andrashe@gmail.com)
-##############################################
-
-print "Hi world!"
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-01.htm b/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-01.htm
deleted file mode 100644
index 1ed613e471..0000000000
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-01.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-<html><body>Guild Member Grey:<br>
-Many aspire to join our guild. Many such as you only see the glamorous side of our profession.<br>Becoming a hunter is not an easy task. Only the very best and brightest are selected for membership in the Hunters Guild. A hunting license is only given to those who pass a very severe test.<br>Many give up before a week has passed. Does that sound like you?<br>
-(This quest is only for characters level 35 and above.)</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-02.htm b/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-02.htm
deleted file mode 100644
index 52115df67f..0000000000
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-02.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-<html><body>Guild Member Grey:<br>
-Many aspire to join our guild. Many such as you only see the glamorous side of our profession.<br>Becoming a hunter is not an easy task. Only the very best and brightest are selected for membership in the Hunters Guild.  A hunting license is only given to those who pass a very severe test.<br>Many give up before a week has passed. Does that sound like you?<br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-03.htm">"I wish to take the test for the hunting license."</a></body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-03.htm b/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-03.htm
deleted file mode 100644
index 5f482935cb..0000000000
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-03.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-<html><body>Guild Member Grey:<br>
-Did I hurt your feelings? Do you actually intend to try for the hunting license? If so, you must listen carefully to my words... <br>There are two types of hunters. Most hunters are 1-circle, but very skillful ones can obtain the 2-circle license by passing another test. Of course you must take the <font color="LEVEL">1-circle license test</font> first.<br>To pass this test, you must bring back at least three of the items on this list.<br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-04.htm">View the list</a></body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-04.htm b/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-04.htm
deleted file mode 100644
index 9b69be047c..0000000000
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-04.htm
+++ /dev/null
@@ -1,8 +0,0 @@
-<html><body>Guild Member Grey:<br>
-Next is the 1-circle hunter license test list. To pass the test, you have to bring at least three items from the list. Keep in mind that this is not just a simple treasure hunt but is a test to find out whether you have the nature and disposition of a hunter!<br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-05.htm">40 scales of guardian basilisk</a><br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-06.htm">20 Karut Weeds</a><br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-07.htm">3 heads of raiders with the lord's bounty on their heads</a><br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-08.htm">Skin of Windsus Aleph</a><br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-09.htm">20 light-blue runestones</a><br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-10.htm">30 sea of spores seeds</a></body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-05.htm b/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-05.htm
deleted file mode 100644
index 64cdac4330..0000000000
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-05.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-<html><body>Guild Member Grey:<br>
-You must gather <font color="LEVEL">40 scales of guardian basilisk</font>. They live in the <font color="LEVEL">Death Pass</font>.<br>I really shouldn't tell you  this... Gathering information about the items is a part of the test. Count yourself lucky to have received this valuable one-time hint!<br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-04.htm">Go back</a></body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-06.htm b/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-06.htm
deleted file mode 100644
index fea1d197cf..0000000000
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-06.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-<html><body>Guild Member Grey:<br>
-You must gather <font color="LEVEL">20 Karut Weeds</font>, used in the research of mages. The leto Lizardman mediums carry them. You may find the leto lizardmen in the southern part of Oren.<br>Gathering information about the items is a part of the test. Count yourself lucky to have received this valuable one-time hint!<br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-04.htm">Go back</a></body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-07.htm b/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-07.htm
deleted file mode 100644
index 652bfbf78b..0000000000
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-07.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-<html><body>Guild Member Grey:<br>
-You must kill the three evil outlaw Haka brothers and bring back their heads. They are named <font color="LEVEL">Haka, Jakja and Marka</font>.  They are prefects of the Breka orc tribe. They wantonly attack merchants' carriages, massacre citizens and set fire to their homes. There has been a bounty placed by on their heads by the Lord of Giran, therefore they have been laying low. But with the <font color="LEVEL">Breka Orc Warriors</font> destroyed, they are bound to appear seeking revenge.<br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-04.htm">Go back</a></body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-09.htm b/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-09.htm
deleted file mode 100644
index 3aa96972d0..0000000000
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-09.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-<html><body>Guild Member Grey:<br>
-You must gather <font color="LEVEL">20 light-blue runestones</font>. These runestones are obtained by destroying <font color="LEVEL">manashen gargoyles or enchanted stone golems</font> in the area near the Ivory Tower.  To protect their precious tower from interlopers, the mages apparently have inplanted runestones in the creatures of that area and are controlling them.<br>This is all I will say on this matter. If you are a true hunter, you must gather the information and find the items yourself. Don't expect any more hints!<br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-04.htm">Go back</a></body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-10.htm b/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-10.htm
deleted file mode 100644
index f645923ec2..0000000000
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-10.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-<html><body>Guild Member Grey:<br>
-You must gather <font color="LEVEL">30 Sea of Spores seeds</font>. These can be obtained by going to the Sea of Spores and killing the <font color="LEVEL">giant fungus</font>.<br>Of course, I should let you discover this for yourself, but I'm just an old softie... No more hints!<br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-04.htm">Go back</a></body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-12.htm b/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-12.htm
deleted file mode 100644
index 381360dc27..0000000000
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-12.htm
+++ /dev/null
@@ -1,2 +0,0 @@
-<html><body>Guild Member Grey:<br>
-You have obtained the items from the list! I must admit that I doubted you at first, but I stand corrected! Well, you certainly qualify as a hunter. I hereby bestow on you the 1-circle hunting license.  Welcome to the guild, new hunting brother!<br>Now you are qualified to perform the various tasks that come to our Hunters Guild. Please go and ask <font color="LEVEL">Guild Member Tor</font> over there for details.<br>Sometimes you will be assigned jobs by the guild, other times you'll be hired by individuals. Recently <font color="LEVEL">Cybellin</font> asked me to introduce him to a trustworthy hunter; would you like to meet him?</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-13.htm b/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-13.htm
deleted file mode 100644
index 3a6e29117c..0000000000
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-13.htm
+++ /dev/null
@@ -1,5 +0,0 @@
-<html><body>Guild Member Grey:<br>
-Welcome, my hunter brother. What can I do for you?<br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-14.htm">"Is there any work?"</a><br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-15.htm">"I wish to test for the 2-circle hunter license."</a><br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-31.htm">"I wish to leave the Hunters Guild."</a></body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-14.htm b/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-14.htm
deleted file mode 100644
index 81dd57a23f..0000000000
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-14.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-<html><body>Guild Member Grey:<br>
-We get dozens of hunting requests every day. You should speak to <font color="LEVEL">Guild Member Tor</font> to find out what requests have currently come in. If there is a job that you like, you can accept it.<br>There is also the possibility of being hired by individuals. Recently <font color="LEVEL">Cybellin</font> asked me to introduce him to a trustworthy hunter.  Would you care to meet him?<br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-13.htm">"Go back"</a></body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-15.htm b/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-15.htm
deleted file mode 100644
index 2f1ae8ea7f..0000000000
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-15.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-<html><body>Guild Member Grey:<br>
-You are already applying for the 2-circle hunting license? Nice to see that you don't lack ambition!  But look. You're not ready. You do have some skills but you still need more important practical experience. For the time being, you should develop your talents while carrying out hunting requests.<br>
-(You can apply for the 2-circle license test after reaching level 45.)</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-16.htm b/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-16.htm
deleted file mode 100644
index 9b737a44f6..0000000000
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-16.htm
+++ /dev/null
@@ -1,5 +0,0 @@
-<html><body>Guild Member Grey:<br>
-Welcome, my hunter brother. What can I do for you?<br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-17.htm">"Are there any jobs?"</a><br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-19.htm">"I wish to test for the 2-circle hunting license."</a><br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-31.htm">Leave the Hunters Guild</a></body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-17.htm b/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-17.htm
deleted file mode 100644
index f5cef4026c..0000000000
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-17.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-<html><body>Guild Member Grey:<br>
-We get dozens of hunting requests every day. You should see <font color="LEVEL">Guild Member Tor</font>, he will know  what requests have come in.  If there is a job that you like, you can accept it.<br>Hunters are also hired by individuals, not just through the guild. Recently <font color="LEVEL">Cybellin</font> asked me to introduce him to a trustworthy hunter.  Would you care to meet him?<br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-16.htm">Go back</a></body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-18.htm b/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-18.htm
deleted file mode 100644
index acb115c0fd..0000000000
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-18.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-<html><body>Guild Member Grey:<br>
-So, you wish to take the 2-circle hunting license test? Well I suppose you're up to giving it a try.  As before, in the 2-circle test you must bring back at least three items written on the list. Of course, these items will be harder to obtain than those of the 1-circle test. Maybe you should look at the list first...<br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-20.htm">View list</a></body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-20.htm b/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-20.htm
deleted file mode 100644
index 49f972a0d6..0000000000
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-20.htm
+++ /dev/null
@@ -1,8 +0,0 @@
-<html><body>Guild Member Grey:<br>
-Here is the 2-circle hunting license test list. You must bring <br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-21.htm">20 Timak Orc Totems</a><br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-22.htm">20 skeins of trisalim cobweb</a><br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-23.htm">30 Ambrosius Fruits</a><br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-24.htm">20 Balefire Crystals</a><br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-25.htm">20 Imperial Arrowheads</a><br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-26.htm">The heads of 5 outlaw raiders</a></body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-21.htm b/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-21.htm
deleted file mode 100644
index 8baad891ae..0000000000
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-21.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-<html><body>Guild Member Grey:<br>
-You must gather <br><font color="LEVEL">20 Timak Orc Totems</font>. To obtain them you must kill Timak Orc Warriors. You should have no trouble with this. Now go!<br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-20.htm">Go back</a></body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-22.htm b/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-22.htm
deleted file mode 100644
index 4733488079..0000000000
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-22.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-<html><body>Guild Member Grey:<br>
-You must gather<font color="LEVEL">20 trisalim cobwebs</font>. This should be no problem for you. Quickly now!  Get them and come back to me!<br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-20.htm">Go back</a></body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-23.htm b/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-23.htm
deleted file mode 100644
index 94398ac9f8..0000000000
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-23.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-<html><body>Guild Member Grey:<br>
-You must gather <font color="LEVEL">30 Ambrosius Fruits</font>. You are familiar with ambrosius, aren't you?  It's a fruit somewhat like an apple that grows on valley treants in Enchanted Valley. This should be easy for you!<br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-20.htm">Go back</a></body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-25.htm b/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-25.htm
deleted file mode 100644
index 33a46d62cb..0000000000
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-25.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-<html><body>Guild Member Grey:<br>
-You must gather <font color="LEVEL">20 Imperial Arrowheads</font>. This should be easy for you.  If you go to the <font color="LEVEL">National Cemetery</font> and kill the undead archers, you can obtain arrowheads made during the Elmoreden era. Are you up for it?<br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-20.htm">Go back</a></body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-26.htm b/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-26.htm
deleted file mode 100644
index e64d74cb69..0000000000
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-26.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-<html><body>Guild Member Grey:<br>
-You must kill five tarlk bugbear raiders and bring back their heads. Their names are Athu, Triska, Motura and Lanka, and they are led by one called Kalath. These <font color="LEVEL">tarlk bugbear warriors</font> have been attacking and pillaging merchant carriages. I'm sure you would deal with these outlaws even if it weren't a requirement of the test, wouldn't you?<br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-20.htm">Go back</a></body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-28.htm b/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-28.htm
deleted file mode 100644
index 2d5ce962ae..0000000000
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-28.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-<html>
-
-<body>
-Guild Member Grey:<br>Good work! I knew that you would complete the test without much trouble. Now you are a respectable 2-circle hunter. Congratulations!<br>Now you are qualified for more dangerous hunts. Go see Guild Member Tor.<br>Or perhaps you should visit Cybellin. He is still looking for a good hunter...</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-29.htm b/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-29.htm
deleted file mode 100644
index 49bc4c0d1f..0000000000
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-29.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-<html><body>Guild Member Grey:<br>
-Hello, hunter brother. What can I do for you?<br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-30.htm">"Are there any jobs?"</a><br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-31.htm">"I wish to leave the Hunters Guild."</a></body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-30.htm b/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-30.htm
deleted file mode 100644
index be68311117..0000000000
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-30.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-<html><body>Guild Member Grey:<br>
-We get dozens of hunting requests every day. You should go to <font color="LEVEL">Guild Member Tor</font> to find out what requests have currently come in. If there is an assignment that appeals to you, you can accept it.<br>There are also individuals who wish to hire hunters. Recently <font color="LEVEL">Cybellin</font> asked me if I knew of a trustworthy hunter. Would you like to meet her?<br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-29.htm">Go back</a></body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-31.htm b/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-31.htm
deleted file mode 100644
index 221dab72c5..0000000000
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-31.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-<html><body>Guild Member Grey:<br>
-You wish to leave the guild?  Certainly you know that is impossible.  Once you join this brotherhood you are in for life... Didn't you know that?... You should reconsider your decision...<br>... The fear in your eyes makes it impossible for me to keep a straight face! I'm joking, you idiot! Of course you can leave if that is what you really want... You must have a good reason... <br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-32.htm">Leave</a><br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-34.htm">Cancel</a></body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-06.htm b/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-06.htm
deleted file mode 100644
index c6e252fc1a..0000000000
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-06.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-<html><body>Guild Member Tor:<br>
-Pleased to meet you, brother! Is there anything I can help you with?<br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30745-07.htm">"I would like to take on a request."</a></body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-07.htm b/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-07.htm
deleted file mode 100644
index 3477e020f3..0000000000
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-07.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-<html><body>Guild Member Tor:<br>
-Examine the list and choose a request you would like to work on. The requests are divided into 3 classes according to their degree of difficulty and amount  of reward. Class C is the most common, of moderate difficulty and reward. Class B is more difficult but with a better reward. We rarely receive Class A requests. They are the most difficult and offer the greatest rewards.<br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter Tor_list_2">Examine the request list</a></body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-08.htm b/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-08.htm
deleted file mode 100644
index 0e72f7315f..0000000000
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-08.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-<html><body>Guild Member Tor:<br>
-Nice to meet you, brother! Is there anything I can help you with?<br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30745-09.htm">Discontinue mission</a><br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30745-11.htm">Continue mission</a></body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-10.htm b/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-10.htm
deleted file mode 100644
index f2c6d978ad..0000000000
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-10.htm
+++ /dev/null
@@ -1,2 +0,0 @@
-<html><body>
-Guild Member Tor:<br>Well, it seems you have your mind made up, I won't try to change it. I will confiscate all of your Laurel Leaf Pins. I hope in the future you will learn to fulfill your obligations.</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-12.htm b/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-12.htm
deleted file mode 100644
index 31534e6c15..0000000000
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-12.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-<html><body>Guild Member Tor:<br>
-Good work! Here is your reward. Also, please accept this Laurel Leaf Pin that recognizes the successful fulfillment of a request. The more pins you possess, the better chance you will receive class A and B requests.<br>Do you wish to undertake a new request?<br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30745-03.htm">"I would like to receive a new request."</a><br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30745-14.htm">"I need a break."</a></body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-13.htm b/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-13.htm
deleted file mode 100644
index b56e8fbc34..0000000000
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-13.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-<html><body>Guild Member Tor:<br>
-Good work! Here is your reward. Also, please accept this Laurel Leaf Pin that recognizes the successful fulfillment of a request. The more pins you possess, the better the chance you will receive class A and B  requests.<br>Do you wish to undertake a new request?<br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30745-07.htm">"I would like to receive a new request."</a><br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30745-14.htm">"I need a break."</a></body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-15.htm b/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-15.htm
deleted file mode 100644
index 3c010eb8cb..0000000000
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-15.htm
+++ /dev/null
@@ -1,2 +0,0 @@
-<html><body>Guild Member Tor:<br>
-Details of the Request: Obtain 40 charms of Kadesh. The charm bears the image of Kadesh, the evil spirit worshiped by leto lizardmen.  It is known that leto Lizardman archers and soldiers carry the charm as an amulet to invoke magical power.<br>Request Class: C</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-24.htm b/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-24.htm
deleted file mode 100644
index fcd74f33f0..0000000000
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-24.htm
+++ /dev/null
@@ -1,2 +0,0 @@
-<html><body>Guild Member Tor:<br>
-Details of the Request: Collect and bring back 50 Taik Obsidian Amulets.  You must defeat an archer or warrior of the Taik orc tribe to obtain this amulet.<br>Request Class: C</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-26.htm b/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-26.htm
deleted file mode 100644
index f0910b672a..0000000000
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-26.htm
+++ /dev/null
@@ -1,2 +0,0 @@
-<html><body>Guild Member Tor:<br>
-Details of the Request: Collect 40 Tamlin Ivory Charms.  This charm is obtained by killing a tamlin orc.<br>Request Class: C</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-27.htm b/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-27.htm
deleted file mode 100644
index 45a4f718aa..0000000000
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-27.htm
+++ /dev/null
@@ -1,2 +0,0 @@
-<html><body>Guild Member Tor:<br>
-Details of the Request: Bring me the head of Elder Narak of the leto lizardmen. The overlords of that vile tribe will lead you to him.  <br>Request Class: B</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-31.htm b/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-31.htm
deleted file mode 100644
index 776891b3f3..0000000000
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-31.htm
+++ /dev/null
@@ -1,2 +0,0 @@
-<html><body>Guild Member Tor:<br>
-Details of the Request: Bring me the head of Kaikee, captain of the Timak orc raiders. Start killing Timak Orc Warriors and eventually Kaikee will make his appearance.<br>Request Class: B</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-38.htm b/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-38.htm
deleted file mode 100644
index fc9fee291e..0000000000
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-38.htm
+++ /dev/null
@@ -1,2 +0,0 @@
-<html><body>Guild Member Tor:<br>
-Details of the Request: Collect and bring back 50 Taik Orc Totems. This totem can be obtained by slaying Taik orc shamans or captains. <br>Request Class: C</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-41.htm b/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-41.htm
deleted file mode 100644
index c559b3602e..0000000000
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-41.htm
+++ /dev/null
@@ -1,2 +0,0 @@
-<html><body>Guild Member Tor:<br>
-Details of the Request: Kill 30 farcrans and bring back their skins. It is a monstrous beast that inhabits the area near the Plains of Fierce Battle.<br>Request Class: C</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-46.htm b/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-46.htm
deleted file mode 100644
index 621ae4abc2..0000000000
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-46.htm
+++ /dev/null
@@ -1,2 +0,0 @@
-<html><body>Guild Member Tor:<br>
-Details of the Request: Collect and bring back 30 Shillien Manes. To obtain them you must kill grunts, scouts or warriors of the vanor silenos tribe that have been running amok in the north of Aden.<br>Request Class: C</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-48.htm b/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-48.htm
deleted file mode 100644
index 16e2093969..0000000000
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-48.htm
+++ /dev/null
@@ -1,2 +0,0 @@
-<html><body>Guild Member Tor:<br>
-Details of the Request: Bring me the head of Okun, the timak orc overlord. He is notorious for being an abominably cruel marauder. If you kill timak orc overlords one by one, Okun will show up to take his revenge.<br>Request Class: B</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-49.htm b/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-49.htm
deleted file mode 100644
index 24c4c196d9..0000000000
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-49.htm
+++ /dev/null
@@ -1,2 +0,0 @@
-<html><body>Guild Member Tor:<br>
-Details of the Request: Bring me the head of Kakran, taik orc overlord. If you start killing taik orc captains one by one, Kakran will show up crying out for revenge.<br>Request Class: B</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-51.htm b/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-51.htm
deleted file mode 100644
index 5e94d5f386..0000000000
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-51.htm
+++ /dev/null
@@ -1,2 +0,0 @@
-<html><body>Guild Member Tor:<br>
-Details of the Request: Collect and bring back 20 Deprive Eyes. These evil spirits are hovering around the Plains of Fierce Battle.<br>Request Class: B</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-52.htm b/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-52.htm
deleted file mode 100644
index ad9a91dfd8..0000000000
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-52.htm
+++ /dev/null
@@ -1,2 +0,0 @@
-<html><body>Guild Member Tor:<br>
-Details of the Request: Collect and bring back 20 horns of unicorn. They are found in the Enchanted Valley.<br>Request Class: B</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-57.htm b/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-57.htm
deleted file mode 100644
index d2ecb91136..0000000000
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-57.htm
+++ /dev/null
@@ -1 +0,0 @@
-<html><body>Guild Member Tor:<br><?reply1?><?reply2?><?reply3?><?reply4?><?reply5?></body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30746-03.htm b/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30746-03.htm
deleted file mode 100644
index f66e5770c4..0000000000
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30746-03.htm
+++ /dev/null
@@ -1,2 +0,0 @@
-<html><body>Cybellin:<br>
-Excellent! Take this <font color="LEVEL">Blood Crystal</font> and dagger. Use the dagger to kill the evil <font color="LEVEL">leto lizardmen</font> and <font color="LEVEL">harit lizardmen</font> and the crystal to absorb their blood.  This will raise the purity of the crystal above its current level of 1. Although this may seem quite simple, the process is not without risks. In addition to the danger posed by the lizardmen, there is a chance each time that the crystal will shatter, that is, the crystal will either increase in purity or be destroyed.<br>If you successfully raise the purity of the crystal and bring it to me, you shall receive a reward.  The higher the level of purity, the greater your reward will be. <br>There are different theories as to why the crystal reacts like this to the blood of the lizardmen, possibly it is because these evil lizards are descended from dragons!  You will find that certain grades of blood are very effective and others have no effect at all. This can only be determined by trial and error...<br> I have written down this task for you.</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30746-04.htm b/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30746-04.htm
deleted file mode 100644
index 7c7cf897b0..0000000000
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30746-04.htm
+++ /dev/null
@@ -1,2 +0,0 @@
-<html><body>Cybellin:<br>
-After you kill the <font color="LEVEL">leto lizardmen</font> and <font color="LEVEL">harit lizardmen</font> with that dagger, you must use the Blood Crystal to absorb their blood.  <br>When you raise the purity of the crystal and return it to me, I shall give you a reward. The higher the level of purity, the greater your reward will be.  There is an element of risk, however, as each time it is possible that the crystal will be destroyed.<br>You will find that certain grades of blood are useful and some grades have no effect at all on the Blood Crystal. This can only be determined by trial and error...</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30746-05.htm b/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30746-05.htm
deleted file mode 100644
index b9b0b15995..0000000000
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30746-05.htm
+++ /dev/null
@@ -1,5 +0,0 @@
-<html><body>Cybellin:<br>
-The purity of the crystal is still at level 1! Have you decided not to carry out my request?<br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30746-04.htm">"How can I raise the purity of the crystal?"</a><br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30746-03.htm">Continue</a><br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30746-12.htm">Quit</a></body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30746-07.htm b/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30746-07.htm
deleted file mode 100644
index 32c0c6e3a6..0000000000
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30746-07.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-<html><body>Cybellin:<br>
-You have successfully created a Blood Crystal of level 10 purity! Oh my Shilen! That's awesome! As I promised, I will pay you the reward money. Thank you so very much!<br>Well, may I ask you to do me another favor?<br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30746-03.htm">Tell her that you will take up the task.</a><br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30746-12.htm">Quit.</a></body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30746-08.htm b/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30746-08.htm
deleted file mode 100644
index 5e8c2b7700..0000000000
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30746-08.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-<html><body>Cybellin:<br>
-Excellent!  You shall receive your reward based on the level of purity of the Blood Crystal.  Good job! Could I ask you another favor?<br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30746-03.htm">"I will do another favor for you."</a><br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30746-12.htm">"No, just give me the reward and I'll be on my way."</a></body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30746-09.htm b/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30746-09.htm
deleted file mode 100644
index 70584a919e..0000000000
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30746-09.htm
+++ /dev/null
@@ -1,2 +0,0 @@
-<html><body>Cybellin:<br>
-Fine, I will explain my request. You must increase the purity of a Blood Crystal and bring it to me. This is accomplished by dipping the crystal in the blood of <font color="LEVEL">leto lizardmen</font> and <font color="LEVEL">harit lizardmen</font> after you kill them with the dagger I gave you.  If you are able to increase the crystal's purity to a level of 10 without destroying it, I will use my entire fortune to procure your reward!</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30746-10.htm b/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30746-10.htm
deleted file mode 100644
index eac68bc755..0000000000
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30746-10.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-<html><body>Cybellin:<br>
-Hunter, will you continue to help me?<br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30746-03.htm">"Yes."</a><br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30746-12.htm">"No."</a></body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30746-11.htm b/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30746-11.htm
deleted file mode 100644
index 0728d34b69..0000000000
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30746-11.htm
+++ /dev/null
@@ -1,4 +0,0 @@
-<html><body>Cybellin:<br>
-Ah, yes... Shattered...  The crystal's structure was unstable and it failed. Don't be discouraged. Here is another crystal, will you please try again?<br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30746-03.htm">"Yes."</a><br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30746-12.htm">"No."</a></body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30746-12.htm b/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30746-12.htm
deleted file mode 100644
index 0804e99113..0000000000
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30746-12.htm
+++ /dev/null
@@ -1,2 +0,0 @@
-<html><body>Cybellin:<br>
-Thank you for your help. May Shilen protect you...</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/__init__.py b/dist/game/data/scripts/quests/335_TheSongOfTheHunter/__init__.py
deleted file mode 100644
index c7643fbf99..0000000000
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/__init__.py
+++ /dev/null
@@ -1,631 +0,0 @@
-#Made by Emperorc
-import sys
-from com.l2jserver.gameserver.enums.audio import Sound
-from com.l2jserver.gameserver.model.quest import State
-from com.l2jserver.gameserver.model.quest import QuestState
-from com.l2jserver.gameserver.model.quest import Quest as JQuest
-from com.l2jserver.util import Rnd
-from com.l2jserver.gameserver.network.serverpackets import NpcSay
-
-qn = "335_TheSongOfTheHunter"
-
-#NPCS
-Grey = 30744
-Tor = 30745
-Cybellin = 30746
-
-#Items
-Cyb_Dagger = 3471
-License_1 = 3692
-License_2 = 3693
-Leaf_Pin = 3694
-Test_Instructions_1 = 3695
-Test_Instructions_2 = 3696
-Cyb_Req = 3697
-
-#Mobs
-Breka_Orc_Warrior = 20271
-Windsus = 20553
-Tarlk_Bugbear_Warrior = 20571
-Gremlin_Filcher = 27149
-Mobs = [Breka_Orc_Warrior, Windsus, Tarlk_Bugbear_Warrior, Gremlin_Filcher]
-Lizardmen = [20578,20579,20581,20582,20641,20642,20643]
-
-#Droplist Format- npcId:[itemId,itemAmount,chance]
-Level_1 = {
-    20550 : [3709,40,75], #Gaurdian Basilisk
-    20581 : [3710,20,50], #Leto Lizardman Shaman
-    27140 : [3711,1,100], #Breka Overlord Haka
-    27141 : [3712,1,100], #Breka Overlord Jaka
-    27142 : [3713,1,100], #Breka Overlord Marka
-    27143 : [3714,1,100], #Windsus Aleph
-    20563 : [3715,20,50], #Manashen Gargoyle
-    20565 : [3715,20,50], #Enchanted Stone Golemn
-    20555 : [3716,30,70], #Giant Fungus
-    }
-Level_2 = {
-    20586 : [3717,20,50],   #Timak Orc Warrior
-    20560 : [3718,20,50],   #Trisalim Spider
-    20561 : [3718,20,50],   #Trisalim Tarantula
-    20591 : [3719,30,100],  #Valley Treant
-    20597 : [3719,30,100],  #Valley Treant Elder
-    20675 : [3720,20,50],   #Tairim
-    20660 : [3721,20,50],   #Archer of Greed
-    27144 : [3722,1,100],   #Tarlk Raider Athu
-    27145 : [3723,1,100],   #Tarlk Raider Lanka
-    27146 : [3724,1,100],   #Tarlk Raider Triska
-    27147 : [3725,1,100],   #Tarlk Raider Motura
-    27148 : [3726,1,100],   #Tarlk Raider Kalath
-    }
-
-Grey_Advance = [
-    #level 1
-    [[3709],40],
-    [[3710],20],
-    [[3711,3712,3713],1],
-    [[3714],1],
-    [[3715],20],
-    [[3716],30],
-    #level 2
-    [[3717],20],
-    [[3718],20],
-    [[3719],30],
-    [[3720],20],
-    [[3721],20],
-    [[3722,3723,3724,3725,3726],1]
-    ]
-
-#Droplist Format- npcId : [itemRequired,itemGive,itemToGiveAmount,itemAmount,chance]
-Tor_requests_1 = {
-    20578 : [3727,3769,'1',40,80],  #Leto Lizardman Archer
-    20579 : [3727,3769,'1',40,83],  #Leto Lizardman Soldier
-    20586 : [3728,3770,'1',50,89],  #Timak Orc Warrior
-    20588 : [3728,3770,'1',50,100], #Timak Orc Overlord
-    20565 : [3729,3771,'1',50,100], #Enchanted Stone Golem
-    20556 : [3730,3772,'1',30,50],  #Giant Monster Eye
-    20557 : [3731,3773,'1',40,80],  #Dire Wyrm
-    20550 : [3732,3774,'Rnd.get(2) + 1',100,100], #Guardian Basilisk
-    20552 : [3733,3775,'1',50,100], #Fettered Soul
-    20553 : [3734,3776,'1',30,50],  #Windsus
-    20554 : [3735,3777,'2',100,100],#Grandis
-    20631 : [3736,3778,'1',50,100], #Taik Orc Archer
-    20632 : [3736,3778,'1',50,93],  #Taik Orc Warrior
-    20600 : [3737,3779,'1',30,50],  #Karul Bugbear
-    20601 : [3738,3780,'1',40,62],  #Tamlin Orc
-    20602 : [3738,3780,'1',40,80],  #Tamlin Orc Archer
-    27157 : [3739,3781,'1',1,100],  #Leto Chief Narak
-    20567 : [3740,3782,'1',50,50],  #Enchanted Gargoyle
-    20269 : [3741,3783,'1',50,93],  #Breka Orc Shaman
-    20271 : [3741,3783,'1',50,100], #Breka Orc Warrior
-    27156 : [3742,3784,'1',1,100],  #Leto Shaman Ketz
-    27158 : [3743,3785,'1',1,100],  #Timak Raider Kaikee
-    20603 : [3744,3786,'1',30,50],  #Kronbe Spider
-    27160 : [3746,3788,'1',1,100],  #Gok Magok
-    27164 : [3747,3789,'1',1,100]   #Karul Chief Orooto
-    }
-
-#Droplist Format- npcId : [itemRequired,itemGive,itemAmount,chance]
-Tor_requests_2 = {
-    20560 : [3749,3791,40,66],  #Trisalim Spider
-    20561 : [3749,3791,40,75],  #Trisalim Tarantula
-    20633 : [3750,3792,50,53],  #Taik Orc Shaman
-    20634 : [3750,3792,50,99],  #Taik Orc Captain
-    20641 : [3751,3793,40,88],  #Harit Lizardman Grunt
-    20642 : [3751,3793,40,88],  #Harit Lizardman Archer
-    20643 : [3751,3793,40,91],  #Harit Lizardman Warrior
-    20661 : [3752,3794,20,50],  #Hatar Ratman Thief
-    20662 : [3752,3794,20,52],  #Hatar Ratman Boss
-    20667 : [3753,3795,30,90],  #Farcran
-    20589 : [3754,3796,40,49],  #Fline
-    20590 : [3755,3797,40,51],  #Liele
-    20592 : [3756,3798,40,80],  #Satyr
-    20598 : [3756,3798,40,100], #Satyr Elder
-    20682 : [3758,3800,30,70],  #Vanor Silenos Grunt
-    20683 : [3758,3800,30,85],  #Vanor Silenos Scout
-    20684 : [3758,3800,30,90],  #Vanor Silenos Warrior
-    20571 : [3759,3801,30,63],  #Tarlk Bugbear Warrior
-    27159 : [3760,3802,1,100],  #Timak Overlord Okun
-    27161 : [3761,3803,1,100],  #Taik Overlord Kakran
-    20639 : [3762,3804,40,86],  #Mirror
-    20664 : [3763,3805,20,77],  #Deprive
-    20593 : [3764,3806,20,68],  #Unicorn
-    20599 : [3764,3806,20,86],  #Unicorn Elder
-    27163 : [3765,3807,1,100],  #Vanor Elder Kerunos
-    20659 : [3766,3808,20,73],  #Grave Wanderer
-    27162 : [3767,3809,1,100],  #Hatar Chieftain Kubel
-    20676 : [3768,3810,10,64]   #Judge of Marsh
-    }
-#FilcherDropList Format- reqId : [item,amount,bonus]
-Filcher = {
-    3752 : [3794,20,3],
-    3754 : [3796,40,5],
-    3755 : [3797,40,5],
-    3762 : [3804,40,5]
-    }
-
-#SpawnList Format- npcId : [item1,item2,npcToSpawn]
-Tor_requests_tospawn = {
-    20582 : [3739,3781,27157],  #Leto Lizardman Overlord
-    20581 : [3742,3784,27156],  #Leto Lizardman Shaman
-    20586 : [3743,3785,27158],  #Timak Orc Warrior
-    20554 : [3746,3788,27160],  #Grandis
-#level 2
-    20588 : [3760,3802,27159],   #Timak Orc Overlord
-    20634 : [3761,3803,27161],   #Tiak Orc Captain
-    20686 : [3765,3807,27163],   #Vanor Silenos Chieftan
-    20662 : [3767,3809,27162]    #Hatar Ratman Boss
-    }
-
-#RewardsList Format- requestId : [item,quantity,rewardAmount]
-Tor_Rewards_1 = {
-    3727 : [3769,40,2090],
-    3728 : [3770,50,6340],
-    3729 : [3771,50,9480],
-    3730 : [3772,30,9110],
-    3731 : [3773,40,8690],
-    3732 : [3774,100,9480],
-    3733 : [3775,50,11280],
-    3734 : [3776,30,9640],
-    3735 : [3777,100,9180],
-    3736 : [3778,50,5160],
-    3737 : [3779,30,3140],
-    3738 : [3780,40,3160],
-    3739 : [3781,1,6370],
-    3740 : [3782,50,19080],
-    3741 : [3783,50,17730],
-    3742 : [3784,1,5790],
-    3743 : [3785,1,8560],
-    3744 : [3786,30,8320],
-    3746 : [3788,1,27540],
-    3747 : [3789,1,20560],
-    }
-
-Tor_Rewards_2 = {
-    3749 : [3791,40,7250],
-    3750 : [3792,50,7160],
-    3751 : [3793,40,6580],
-    3752 : [3794,20,10100],
-    3753 : [3795,30,13000],
-    3754 : [3796,40,7660],
-    3755 : [3797,40,7660],
-    3756 : [3798,40,11260],
-    3758 : [3800,30,8810],
-    3759 : [3801,30,7350],
-    3760 : [3802,1,8760],
-    3761 : [3803,1,9380],
-    3762 : [3804,40,17820],
-    3763 : [3805,20,17540],
-    3764 : [3806,20,14160],
-    3765 : [3807,1,15960],
-    3766 : [3808,20,39100],
-    3767 : [3809,1,39550],
-    3768 : [3810,10,41200]
-    }
-
-#Format item : adenaAmount
-Cyb_Rewards = {
-    3699 : 3400,
-    3700 : 6800,
-    3701 : 13600,
-    3702 : 27200,
-    3703 : 54400,
-    3704 : 108800,
-    3705 : 217600,
-    3706 : 435200,
-    3707 : 870400
-    }
-
-Tor_menu = [
-    "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3727\">C: Obtain 40 charms of Kadesh</a><br>",
-    "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3728\">C: Collect 50 Timak Jade Necklaces</a><br>",
-    "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3729\">C: Gather 50 Enchanted Golem Shards</a><br>",
-    "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3730\">C: Collect and bring back 30 pieces of Giant Monster Eye Meat</a><br>",
-    "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3731\">C: Collect and bring back 40 Dire Wyrm Eggs</a><br>",
-    "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3732\">C: Collect and bring back 100 guardian basilisk talons</a><br>",
-    "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3733\">C: Collect and bring back 50 revenants chains</a><br>",
-    "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3734\">C: Collect and bring back 30 Windsus Tusks</a><br>",
-    "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3735\">C: Collect and bring back 100 Grandis Skulls</a><br>",
-    "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3736\">C: Collect and bring back 50 Taik Obsidian Amulets</a><br>",
-    "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3737\">C: Bring me 30 heads of karul bugbears</a><br>",
-    "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3738\">C: Collect 40 Tamlin Ivory Charms</a><br>",
-    "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3739\">B: Bring me the head of Elder Narak of the leto lizardmen</a><br>",
-    "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3740\">B: Collect and bring back 50 Enchanted Gargoyle Horns</a><br>",
-    "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3741\">B: Collect and bring back 50 Coiled Serpent Totems</a><br>",
-    "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3742\">B: Bring me the totem of the Serpent Demon Kadesh</a><br>",
-    "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3743\">B: Bring me the head of Kaikis</a><br>",
-    "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3744\">B: Collect and bring back 30 Kronbe Venom Sacs</a><br>",
-    "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3746\">A: Recover the precious stone tablet that was stolen from a Dwarven cargo wagon by grandis</a><br>",
-    "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3747\">A: Recover the precious Book of Shunaiman</a><br>",
-    "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3749\">C: Collect and bring back 40 Trisalim Venom Sacs</a><br>",
-    "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3750\">C: Collect and bring back 50 Taik Orc Totems</a><br>",
-    "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3751\">C: Collect and bring back 40 Harit Lizardman barbed necklaces</a><br>",
-    "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3752\">C: Collect and bring back 20 coins of the old empire</a><br>",
-    "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3753\">C: Kill 30 farcrans and bring back their skins</a><br>",
-    "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3754\">C: Collect and bring back 40 Tempest Shards</a><br>",
-    "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3755\">C: Collect and bring back 40 Tsunami Shards</a><br>",
-    "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3756\">C: Collect and bring back 40 Satyr Manes</a><br>",
-    "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3758\">C: Collect and bring back 30 Shillien Manes</a><br>",
-    "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3759\">C: Collect and bring back 30 tarlk bugbear totems</a><br>",
-    "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3760\">B: Bring me the head of Okun</a><br>",
-    "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3761\">B: Bring me the head of Kakran</a><br>",
-    "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3762\">B: Collect and bring back 40 narcissus soulstones</a><br>",
-    "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3763\">B: Collect and bring back 20 Deprive Eyes</a><br>",
-    "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3764\">B: Collect and bring back 20 horns of summon unicorn</a><br>",
-    "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3765\">B: Bring me the golden mane of Kerunos</a><br>",
-    "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3766\">A: Bring back 20 skulls of undead executed criminals</a><br>",
-    "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3767\">A: Recover the stolen bust of the late King Travis</a><br>",
-    "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3768\">A: Recover 10 swords of Cadmus</a><br>"
-    ]
-
-
-def HasItems(st,check) :
-    count = 0
-    for list in Grey_Advance :
-        count2 = 0
-        for item in list[0] :
-            if not st.getQuestItemsCount(item) >= list[1] :
-                break
-            count2 += 1
-        if count2 == len(list[0]) :
-            count += 1
-    if count >= check :
-        return 1
-    return 0
-
-def AutoChat(npc,text) :
-    chars = npc.getKnownList().getKnownPlayers().values().toArray()
-    if chars != None:
-       for pc in chars :
-          sm = NpcSay(npc.getObjectId(), 0, npc.getId(), text)
-          pc.sendPacket(sm)
-
-def HasRequestCompleted(st,level) :
-    rewards = Tor_Rewards_1
-    if level == 2 :
-        rewards = Tor_Rewards_2
-    for req in rewards.keys() :
-        if st.getQuestItemsCount(req) :
-            if st.getQuestItemsCount(rewards[req][0]) >= rewards[req][1] :
-                return req
-    return 0    
-
-class Quest (JQuest) :
-
-    def __init__(self,id,name,descr):
-        JQuest.__init__(self,id,name,descr)
-        self.questItemIds = range(3692,3811) + [3471]
-
-    def onAdvEvent (self,event,npc,player):
-        st = self.getQuestState(player, False)
-        if not st: return
-        htmltext = event
-        if event == "30744-03.htm" :
-            st.setState(State.STARTED)
-            st.playSound(Sound.ITEMSOUND_QUEST_ACCEPT)
-            st.giveItems(Test_Instructions_1,1)
-            st.set("cond","1")
-            #set Memo = 0
-        elif event == "30744-32.htm" :
-            st.playSound(Sound.ITEMSOUND_QUEST_FINISH)
-            if st.getQuestItemsCount(Leaf_Pin) >= 20 :
-                htmltext = "30744-33.htm"
-                st.giveItems(57,20000)
-            st.exitQuest(1)
-        elif event == "30744-19.htm" :
-            if not HasItems(st,1) :
-                st.giveItems(Test_Instructions_2,1)
-                htmltext = "30744-18.htm"
-        elif event == "30745-03.htm" :
-            if st.getQuestItemsCount(Test_Instructions_2) :
-                htmltext = "30745-04.htm"
-        elif event == "Tor_list_1" :
-            if not st.getInt("hasTask") :
-                htmltext = "<html><body>Guild Member Tor:<br>"
-                pins = st.getQuestItemsCount(Leaf_Pin)
-                reply_0 = Rnd.get(12)
-                reply_1 = Rnd.get(12)
-                reply_2 = Rnd.get(12)
-                reply_3 = Rnd.get(12)
-                reply_4 = Rnd.get(12)
-                if Rnd.get(100) < 20 :
-                    if pins < 4 and pins :
-                        reply_0 = Rnd.get(6) + 12
-                        reply_2 = Rnd.get(6)
-                        reply_3 = Rnd.get(6) + 6
-                    elif pins >= 4 :
-                        reply_0 = Rnd.get(6) + 6
-                        if not Rnd.get(20) :
-                            reply_1 = Rnd.get(2) + 18
-                        reply_2 = Rnd.get(6)
-                        reply_3 = Rnd.get(6) + 6
-                elif pins >= 4 :
-                    if not Rnd.get(20) :
-                        reply_1 = Rnd.get(2) + 18
-                    reply_2 = Rnd.get(6)
-                    reply_3 = Rnd.get(6) + 6
-                htmltext += Tor_menu[reply_0] + Tor_menu[reply_1] + Tor_menu[reply_2] + Tor_menu[reply_3] + Tor_menu[reply_4]
-                htmltext += "</body></html>"
-        elif event == "Tor_list_2" :
-            if not st.getInt("hasTask") :
-                htmltext = "<html><body>Guild Member Tor:<br>"
-                pins = st.getQuestItemsCount(Leaf_Pin)
-                reply_0 = Rnd.get(10)
-                reply_1 = Rnd.get(10)
-                reply_2 = Rnd.get(5)
-                reply_3 = Rnd.get(5) + 5
-                reply_4 = Rnd.get(10)
-                if Rnd.get(100) < 20 :
-                    if pins < 4 and pins:
-                        reply_0 = Rnd.get(6) + 10
-                    elif pins >= 4 :
-                        reply_0 = Rnd.get(6) + 10
-                        if not Rnd.get(20):
-                            reply_1 = Rnd.get(3) + 16
-                elif pins >= 4 :
-                    if not Rnd.get(20) :
-                        reply_1 = Rnd.get(3) + 16
-                htmltext += Tor_menu[reply_0 + 20] + Tor_menu[reply_1 + 20] + Tor_menu[reply_2 + 20] + Tor_menu[reply_3 + 20] + Tor_menu[reply_4 + 20]
-                htmltext += "</body></html>"
-        elif event == "30745-10.htm" :
-            st.takeItems(Leaf_Pin,1)
-            for item in range(3727,3811) :
-                st.takeItems(item,-1)
-            st.set("hasTask","0")
-        elif event == "30746-03.htm" :
-            if not st.getQuestItemsCount(Cyb_Req) :
-                st.giveItems(Cyb_Req,1)
-            if not st.getQuestItemsCount(3471) :
-                st.giveItems(3471,1)
-            if not st.getQuestItemsCount(3698) :
-                st.giveItems(3698,1)
-            st.takeItems(6708,-1)
-        elif event == "30746-08.htm" :
-            for item in Cyb_Rewards.keys() :
-                if st.getQuestItemsCount(item) :
-                    st.takeItems(item,-1)
-                    st.giveItems(57,Cyb_Rewards[item])
-                    break
-        elif event == "30746-12.htm" :
-            st.takeItems(3698,-1)
-            st.takeItems(3697,-1)
-            st.takeItems(3471,-1)
-        elif event.isdigit() :
-            event = int(event)
-            st.giveItems(event,1)
-            st.set("hasTask","1")
-            event = event - 3712
-            htmltext = "30745-" + str(event) + ".htm"
-        return htmltext
-
-    def onTalk (self,npc,player):
-        htmltext = Quest.getNoQuestMsg(player)
-        st = self.getQuestState(player, True)
-        if not st : return htmltext
-        npcId = npc.getId()
-        cond = st.getInt("cond")
-        id = st.getState()
-        level = player.getLevel()
-        bracelet_1 = st.getQuestItemsCount(License_1)
-        bracelet_2 = st.getQuestItemsCount(License_2)
-        if npcId == Grey :
-            if id == State.CREATED :
-                if level >= 35 :
-                    htmltext = "02"
-                else :
-                    htmltext = "01"
-            elif cond == 1 :
-                if HasItems(st,3) :
-                    htmltext = "12"
-                    st.set("cond","2")
-                    for item in range(3709,3717) :
-                        st.takeItems(item,-1)
-                    st.takeItems(Test_Instructions_1,-1)
-                    st.giveItems(License_1,1)
-                else :
-                    htmltext = "11"
-            elif cond == 2 :
-                instructions = st.getQuestItemsCount(Test_Instructions_2)
-                if level < 45 and bracelet_1 :
-                    htmltext = "13"
-                elif level >= 45 and bracelet_1 and not instructions :
-                    htmltext = "16"
-                elif instructions :
-                    if HasItems(st,3) :
-                        htmltext = "28"
-                        st.set("cond","3")
-                        for item in range(3718,3727) :
-                            st.takeItems(item,-1)
-                        st.takeItems(Test_Instructions_2,-1)
-                        st.takeItems(License_1,-1)
-                        st.giveItems(License_2,1)
-                    else :
-                        htmltext = "27"
-            elif cond == 3 :
-                htmltext = "29"
-        elif npcId == Tor :
-            if not bracelet_1 and not bracelet_2 :
-                htmltext = "01"
-            elif bracelet_1 :
-                req = HasRequestCompleted(st,1)
-                if not st.getInt("hasTask") :
-                    if level >= 45 :
-                        if st.getQuestItemsCount(Test_Instructions_2) :
-                            htmltext = "04"
-                        else :
-                            htmltext = "05"
-                    else :
-                        htmltext = "02"
-                elif req :
-                    htmltext = "12"
-                    item,quantity,reward = Tor_Rewards_1[req]
-                    st.giveItems(Leaf_Pin,1)
-                    st.giveItems(57,reward)
-                    st.playSound(Sound.ITEMSOUND_QUEST_MIDDLE)
-                    st.set("hasTask","0")
-                    st.takeItems(req,-1)
-                    st.takeItems(item,-1)
-                else :
-                    htmltext = "08"
-            elif bracelet_2 :
-                req = HasRequestCompleted(st,2)
-                if not st.getInt("hasTask") :
-                    htmltext = "06"
-                elif req :
-                    htmltext = "13"
-                    item,quantity,reward = Tor_Rewards_2[req]
-                    st.giveItems(Leaf_Pin,1)
-                    st.giveItems(57,reward)
-                    st.playSound(Sound.ITEMSOUND_QUEST_MIDDLE)
-                    st.set("hasTask","0")
-                    st.takeItems(req,-1)
-                    st.takeItems(item,-1)
-                else :
-                    htmltext = "08"
-        elif npcId == Cybellin :
-            if not bracelet_1 and not bracelet_2 :
-                htmltext = "01"
-            elif bracelet_1 or bracelet_2 :
-                if not st.getQuestItemsCount(Cyb_Req) :
-                    htmltext = "02"
-                elif st.getQuestItemsCount(3698) :
-                    htmltext = "05"
-                elif st.getQuestItemsCount(3707) :
-                    htmltext = "07"
-                    st.takeItems(3707,-1)
-                    st.giveItems(57,Cyb_Rewards[3707])
-                elif st.getQuestItemsCount(3708) :
-                    htmltext = "11"
-                    st.takeItems(3708,-1)
-                elif st.getQuestItemsCount(3699) or st.getQuestItemsCount(3700) or st.getQuestItemsCount(3701) or st.getQuestItemsCount(3702) or \
-                     st.getQuestItemsCount(3703) or st.getQuestItemsCount(3704) or st.getQuestItemsCount(3705) or st.getQuestItemsCount(3706) :
-                    htmltext = "06"
-                else :
-                    htmltext = "10"
-        if htmltext.isdigit() :
-            htmltext = str(npcId) + "-" + htmltext + ".htm"
-        return htmltext
-
-    def onKill(self,npc,player,isPet):
-        st = self.getQuestState(player, False)
-        if not st : return
-        npcId = npc.getId()
-        cond = st.getInt("cond")
-        rand = Rnd.get(100)
-        instructions_1 = st.getQuestItemsCount(Test_Instructions_1)
-        instructions_2 = st.getQuestItemsCount(Test_Instructions_2)
-        if cond == 1 and instructions_1 :
-            if npcId in Level_1.keys() :
-                item,amount,chance = Level_1[npcId]
-                if rand < chance and st.getQuestItemsCount(item) < amount :
-                    st.giveItems(item,1)
-                    if st.getQuestItemsCount(item) >= amount :
-                        st.playSound(Sound.ITEMSOUND_QUEST_MIDDLE)
-                    else :
-                        st.playSound(Sound.ITEMSOUND_QUEST_ITEMGET)
-            elif npcId == Breka_Orc_Warrior and rand < 10 :
-                if st.getQuestItemsCount(3711) == 0 :
-                    st.addSpawn(27140,300000)
-                elif st.getQuestItemsCount(3712) == 0 :
-                    st.addSpawn(27141,300000)
-                elif st.getQuestItemsCount(3713) == 0 :
-                    st.addSpawn(27142,300000)
-            elif npcId == Windsus and not st.getQuestItemsCount(3714) and rand < 10 :
-                st.addSpawn(27143,300000)
-        elif cond == 2 :
-            if instructions_2 :
-                if npcId in Level_2.keys() :
-                    item,amount,chance = Level_2[npcId]
-                    if rand < chance and st.getQuestItemsCount(item) < amount :
-                        st.giveItems(item,1)
-                        if st.getQuestItemsCount(item) >= amount :
-                            st.playSound(Sound.ITEMSOUND_QUEST_MIDDLE)
-                        else :
-                            st.playSound(Sound.ITEMSOUND_QUEST_ITEMGET)
-                elif npcId == Tarlk_Bugbear_Warrior and rand < 10 :
-                    if st.getQuestItemsCount(3722) == 0 :
-                        st.addSpawn(27144,300000)
-                    elif st.getQuestItemsCount(3723) == 0 :
-                        st.addSpawn(27145,300000)
-                    elif st.getQuestItemsCount(3724) == 0 :
-                        st.addSpawn(27146,300000)
-                    elif st.getQuestItemsCount(3725) == 0 :
-                        st.addSpawn(27147,300000)
-                    elif st.getQuestItemsCount(3726) == 0 :
-                        st.addSpawn(27148,300000)
-            elif npcId in Tor_requests_1.keys() :
-                req,give,giveAmount,amount,chance = Tor_requests_1[npcId]
-                if rand < chance and st.getQuestItemsCount(req) and st.getQuestItemsCount(give) < amount :
-                    st.giveItems(give,eval(giveAmount))
-                    if st.getQuestItemsCount(give) >= amount :
-                        st.playSound(Sound.ITEMSOUND_QUEST_MIDDLE)
-                    else :
-                        st.playSound(Sound.ITEMSOUND_QUEST_ITEMGET)
-                    if npcId in [27160,27164] and Rnd.get(2) :
-                        st.addSpawn(27150,300000)
-                        st.addSpawn(27150,300000)
-                        AutoChat(npc,"We will destroy the legacy of the ancient empire!")
-        elif cond == 3 :
-            if npcId in Tor_requests_2.keys() :
-                req,give,amount,chance = Tor_requests_2[npcId]
-                if st.getQuestItemsCount(req) and st.getQuestItemsCount(give) < amount :
-                    if rand < chance :
-                        st.giveItems(give,1)
-                        if st.getQuestItemsCount(give) >= amount :
-                            st.playSound(Sound.ITEMSOUND_QUEST_MIDDLE)
-                        else :
-                            st.playSound(Sound.ITEMSOUND_QUEST_ITEMGET)
-                        if npcId == 27162 and Rnd.get(2) :
-                            st.addSpawn(27150,300000)
-                            st.addSpawn(27150,300000)
-                            AutoChat(npc,"We will destroy the legacy of the ancient empire!")
-                    if npcId in [20661,20662,20589,20590,20639] and not Rnd.get(20) :
-                        st.addSpawn(Gremlin_Filcher,300000)
-                        AutoChat(npc,"Get out! The jewels are mine!")
-            elif npcId == Gremlin_Filcher :
-                req = 0
-                for item in Filcher.keys() :
-                    if st.getQuestItemsCount(item) :
-                        req = item
-                        break
-                if req :
-                    item,amount,bonus = Filcher[req]
-                    if st.getQuestItemsCount(item) < amount :
-                        st.giveItems(item,bonus)
-                        if st.getQuestItemsCount(item) >= amount :
-                            st.playSound(Sound.ITEMSOUND_QUEST_MIDDLE)
-                        else :
-                            st.playSound(Sound.ITEMSOUND_QUEST_ITEMGET)
-                        AutoChat(npc,"What!")
-        if npcId in Tor_requests_tospawn.keys() and rand < 10:
-            it1,it2,id = Tor_requests_tospawn[npcId]
-            if st.getQuestItemsCount(it1) and not st.getQuestItemsCount(it2) :
-                st.addSpawn(id,300000)
-        if npcId in Lizardmen and player.getActiveWeaponItem() and player.getActiveWeaponItem().getId() == Cyb_Dagger and st.getQuestItemsCount(Cyb_Req) and not st.getQuestItemsCount(3708):
-            if Rnd.get(2) :
-                if cond == 2 or cond == 3 :
-                    for item in range(3698,3707) :
-                        if st.getQuestItemsCount(item) :
-                            st.giveItems(item+1,1)
-                            st.takeItems(item,-1)
-                            if item >= 3703 :
-                                st.playSound(Sound.ITEMSOUND_QUEST_JACKPOT)
-                            break
-            else :
-                for item in range(3698,3707) :
-                    st.takeItems(item,-1)
-                st.giveItems(3708,1)
-        return
-
-QUEST = Quest(335,qn,"The Song of the Hunter")
-
-QUEST.addStartNpc(Grey)
-QUEST.addTalkId(Grey)
-QUEST.addTalkId(Tor)
-QUEST.addTalkId(Cybellin)
-
-npcs = []
-for npc in Level_1.keys() + Level_2.keys() + Tor_requests_1.keys() + Tor_requests_2.keys() + Tor_requests_tospawn.keys() + Mobs :
-    if npc not in npcs :
-        QUEST.addKillId(npc)
-        npcs.append(npc)
-del npcs
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-01.htm b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-01.htm
new file mode 100644
index 0000000000..651644caac
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-01.htm
@@ -0,0 +1,6 @@
+<html><body>Guild Member Grey:<br>
+Many aspire to join our guild. Many such as you only see the glamorous side of our profession.<br>
+Becoming a hunter is not an easy task. Only the very best and brightest are selected for membership in the Hunters Guild. A hunting license is only given to those who pass a very severe test.<br>
+Many give up before a week has passed. Does that sound like you?<br>
+(This quest is only for characters level 35 and above.)
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-02.htm b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-02.htm
new file mode 100644
index 0000000000..d35084fe42
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-02.htm
@@ -0,0 +1,6 @@
+<html><body>Guild Member Grey:<br>
+Many aspire to join our guild. Many such as you only see the glamorous side of our profession.<br>
+Becoming a hunter is not an easy task. Only the very best and brightest are selected for membership in the Hunters Guild. A hunting license is only given to those who pass a very severe test.<br>
+Many give up before a week has passed. Does that sound like you?<br>
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30744-03.htm">"I wish to take the test for the hunting license."</a>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-03.htm b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-03.htm
new file mode 100644
index 0000000000..1e4caa9e63
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-03.htm
@@ -0,0 +1,6 @@
+<html><body>Guild Member Grey:<br>
+Did I hurt your feelings? Do you actually intend to try for the hunting license? If so, you must listen carefully to my words...<br>
+There are two types of hunters. Most hunters are 1-circle, but very skillful ones can obtain the 2-circle license by passing another test. Of course you must take the <font color="LEVEL">1-circle license test</font> first.<br>
+To pass this test, you must bring back at least three of the items on this list.<br>
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30744-04.html">View the list</a>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-04.html b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-04.html
new file mode 100644
index 0000000000..01ee7889d3
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-04.html
@@ -0,0 +1,9 @@
+<html><body>Hunters Guild Member Grey:<br>
+Next is the 1-circle hunter license test list. To pass the test, you have to bring at least three items from the list. Keep in mind that this is not just a simple treasure hunt but is a test to find out whether you have the nature and disposition of a hunter!<br>
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30744-04a.html">40 scales of guardian basilisk</a><br>
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30744-04b.html">20 Karut Weeds</a><br>
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30744-04c.html">3 heads of raiders with the lord's bounty on their heads</a><br>
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30744-04d.html">Skin of Windsus Aleph</a><br>
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30744-04e.html">20 light-blue Spirit Ore</a><br>
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30744-04f.html">30 sea of spores seeds</a>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-04a.html b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-04a.html
new file mode 100644
index 0000000000..80f6538244
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-04a.html
@@ -0,0 +1,5 @@
+<html><body>Guild Member Grey:<br>
+You must gather <font color="LEVEL">40 scales of guardian basilisk</font>. They live in the <font color="LEVEL">Death Pass</font>.<br>
+I really shouldn't tell you this... Gathering information about the items is a part of the test. Count yourself lucky to have received this valuable one-time hint!<br>
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30744-04.html">Go back</a>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-04b.html b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-04b.html
new file mode 100644
index 0000000000..4d864723a3
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-04b.html
@@ -0,0 +1,5 @@
+<html><body>Guild Member Grey:<br>
+You must gather <font color="LEVEL">20 Karut Weeds</font>, used in the research of mages. The leto Lizardman mediums carry them. You may find the Leto Lizardmen in the southern part of Oren.<br>
+Gathering information about the items is a part of the test. Count yourself lucky to have received this valuable one-time hint!<br>
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30744-04.html">Go back</a>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-04c.html b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-04c.html
new file mode 100644
index 0000000000..2587bf0cc2
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-04c.html
@@ -0,0 +1,4 @@
+<html><body>Guild Member Grey:<br>
+You must kill the three evil outlaw Haka brothers and bring back their heads. They are named <font color="LEVEL">Haka, Jakja and Marka</font>. They are prefects of the Breka Orc tribe. They wantonly attack merchants' carriages, massacre citizens and set fire to their homes. There has been a bounty placed by on their heads by the Lord of Giran, therefore they have been laying low. But with the <font color="LEVEL">Breka Orc Warriors</font> destroyed, they are bound to appear seeking revenge.<br>
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30744-04.html">Go back</a>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-08.htm b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-04d.html
similarity index 79%
rename from dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-08.htm
rename to dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-04d.html
index 0cb779479e..2bf585da4e 100644
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-08.htm
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-04d.html
@@ -1,3 +1,4 @@
 <html><body>Guild Member Grey:<br>
 You must bring the skin of the <font color="LEVEL">Windsus Aleph</font>. It is a particularly strong and vicious black boar, native to the Giran region. To find him you must go to the <font color="LEVEL">Death Pass</font> and hunt windsuses, eventually you will come across the Windsus Aleph. Your arrow must fly the moment you see its face!<br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-04.htm">Go back</a></body></html>
\ No newline at end of file
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30744-04.html">Go back</a>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-04e.html b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-04e.html
new file mode 100644
index 0000000000..5b19bcb94e
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-04e.html
@@ -0,0 +1,5 @@
+<html><body>Guild Member Grey:<br>
+You must gather <font color="LEVEL">20 light-blue Spirit Ore</font>. These Spirit Ore are obtained by destroying <font color="LEVEL">manashen gargoyles or enchanted stone golems</font> in the area near the Ivory Tower. To protect their precious tower from interlopers, the mages apparently have inplanted Spirit Ore in the creatures of that area and are controlling them.<br>
+This is all I will say on this matter. If you are a true hunter, you must gather the information and find the items yourself. Don't expect any more hints!<br>
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30744-04.html">Go back</a>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-04f.html b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-04f.html
new file mode 100644
index 0000000000..cf9373e455
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-04f.html
@@ -0,0 +1,5 @@
+<html><body>Guild Member Grey:<br>
+You must gather <font color="LEVEL">30 Sea of Spores seeds</font>. These can be obtained by going to the Sea of Spores and killing the <font color="LEVEL">giant fungus</font>.<br>
+Of course, I should let you discover this for yourself, but I'm just an old softie... No more hints!<br>
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30744-04.html">Go back</a>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-11.htm b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-05.html
similarity index 72%
rename from dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-11.htm
rename to dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-05.html
index 87c05df562..5a963ae6c8 100644
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-11.htm
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-05.html
@@ -1,3 +1,4 @@
 <html><body>Guild Member Grey:<br>
 You must obtain at least three items from the list in order to obtain the 1-circle hunting license. Keep in mind that this is not merely a treasure hunt but is a test to find out if you have what it takes to be a hunter!<br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-04.htm">View list</a></body></html>
\ No newline at end of file
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30744-04.html">View list</a>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-06.html b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-06.html
new file mode 100644
index 0000000000..ab4ccd2bd2
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-06.html
@@ -0,0 +1,5 @@
+<html><body>Guild Member Grey:<br>
+You have obtained the items from the list! I must admit that I doubted you at first, but I stand corrected! Well, you certainly qualify as a hunter. I hereby bestow on you the 1-circle hunting license. Welcome to the guild, new hunting brother!<br>
+Now you are qualified to perform the various tasks that come to our Hunters Guild. Please go and ask <font color="LEVEL">Guild Member Tor</font> over there for details.<br>
+Sometimes you will be assigned jobs by the guild, other times you'll be hired by individuals. Recently <font color="LEVEL">Cybellin</font> asked me to introduce him to a trustworthy hunter; would you like to meet him?
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-07.html b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-07.html
new file mode 100644
index 0000000000..1053d597c2
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-07.html
@@ -0,0 +1,6 @@
+<html><body>Guild Member Grey:<br>
+Welcome, my hunter brother. What can I do for you?<br>
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30744-07a.html">"Is there any work?"</a><br>
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30744-07b.html">"I wish to test for the 2-circle hunter license."</a><br>
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30744-15.html">"I wish to leave the Hunters Guild."</a>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-07a.html b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-07a.html
new file mode 100644
index 0000000000..9501fa12ee
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-07a.html
@@ -0,0 +1,5 @@
+<html><body>Guild Member Grey:<br>
+We get dozens of hunting requests every day. You should speak to <font color="LEVEL">Guild Member Tor</font> to find out what requests have currently come in. If there is a job that you like, you can accept it.<br>
+There is also the possibility of being hired by individuals. Recently <font color="LEVEL">Cybellin</font> asked me to introduce him to a trustworthy hunter. Would you care to meet him?<br>
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30744-07.html">"Go back"</a>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-07b.html b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-07b.html
new file mode 100644
index 0000000000..a43eef6306
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-07b.html
@@ -0,0 +1,4 @@
+<html><body>Guild Member Grey:<br>
+You are already applying for the 2-circle hunting license? Nice to see that you don't lack ambition! But look. You're not ready. You do have some skills but you still need more important practical experience. For the time being, you should develop your talents while carrying out hunting requests.<br>
+(You can apply for the 2-circle license test after reaching level 45.)
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-08.html b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-08.html
new file mode 100644
index 0000000000..03bd97b5cd
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-08.html
@@ -0,0 +1,6 @@
+<html><body>Guild Member Grey:<br>
+Welcome, my hunter brother. What can I do for you?<br>
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30744-08a.html">"Are there any jobs?"</a><br>
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30744-09.html">"I wish to test for the 2-circle hunting license."</a><br>
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30744-15.html">Leave the Hunters Guild</a>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-08a.html b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-08a.html
new file mode 100644
index 0000000000..2148411975
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-08a.html
@@ -0,0 +1,5 @@
+<html><body>Guild Member Grey:<br>
+We get dozens of hunting requests every day. You should see <font color="LEVEL">Guild Member Tor</font>, he will know what requests have come in. If there is a job that you like, you can accept it.<br>
+Hunters are also hired by individuals, not just through the guild. Recently <font color="LEVEL">Cybellin</font> asked me to introduce him to a trustworthy hunter. Would you care to meet him?<br>
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30744-08.html">Go back</a>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-09.html b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-09.html
new file mode 100644
index 0000000000..54188b36c4
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-09.html
@@ -0,0 +1,4 @@
+<html><body>Guild Member Grey:<br>
+So, you wish to take the 2-circle hunting license test? Well I suppose you're up to giving it a try. As before, in the 2-circle test you must bring back at least three items written on the list. Of course, these items will be harder to obtain than those of the 1-circle test. Maybe you should look at the list first...<br>
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30744-10.html">View list</a>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-19.htm b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-09a.html
similarity index 81%
rename from dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-19.htm
rename to dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-09a.html
index b67614d9b5..e90cac646e 100644
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-19.htm
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-09a.html
@@ -1,2 +1,3 @@
 <html><body>Guild Member Grey:<br>
-Still taking the test, are you? Come and see me when you've finished.</body></html>
\ No newline at end of file
+Still taking the test, are you? Come and see me when you've finished.
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-10.html b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-10.html
new file mode 100644
index 0000000000..9206745bea
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-10.html
@@ -0,0 +1,9 @@
+<html><body>Guild Member Grey:<br>
+Here is the 2-circle hunting license test list. You must bring<br>
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30744-10a.html">20 Timak Orc Totems</a><br>
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30744-10b.html">20 skeins of trisalim cobweb</a><br>
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30744-10c.html">30 Ambrosius Fruits</a><br>
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30744-10d.html">20 Balefire Crystals</a><br>
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30744-10e.html">20 Imperial Arrowheads</a><br>
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30744-10f.html">The heads of 5 outlaw raiders</a>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-10a.html b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-10a.html
new file mode 100644
index 0000000000..954311dc35
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-10a.html
@@ -0,0 +1,4 @@
+<html><body>Guild Member Grey:<br>
+You must gather <font color="LEVEL">20 Timak Orc Totems</font>. To obtain them you must kill Timak Orc Warriors. You should have no trouble with this. Now go!<br>
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30744-10.html">Go back</a>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-10b.html b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-10b.html
new file mode 100644
index 0000000000..188bdd23b5
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-10b.html
@@ -0,0 +1,4 @@
+<html><body>Guild Member Grey:<br>
+You must gather <font color="LEVEL">20 trisalim cobwebs</font>. This should be no problem for you. Quickly now! Get them and come back to me!<br>
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30744-10.html">Go back</a>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-10c.html b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-10c.html
new file mode 100644
index 0000000000..70107889c2
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-10c.html
@@ -0,0 +1,4 @@
+<html><body>Guild Member Grey:<br>
+You must gather <font color="LEVEL">30 Ambrosius Fruits</font>. You are familiar with ambrosius, aren't you? It's a fruit somewhat like an apple that grows on valley treants in Enchanted Valley. This should be easy for you!<br>
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30744-10.html">Go back</a>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-24.htm b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-10d.html
similarity index 77%
rename from dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-24.htm
rename to dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-10d.html
index cb0f2a03de..a20213b3d3 100644
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-24.htm
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-10d.html
@@ -1,3 +1,4 @@
 <html><body>Guild Member Grey:<br>
 You must gather <font color="LEVEL">twenty Balefire Crystals</font>. Actually, I didn't know what this was so I asked the sorcerers about it. They said it could be obtained if you kill a <font color="LEVEL">tairim</font> in the Cemetery. This hint should be of great value to you.<br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-20.htm">Go back</a></body></html>
\ No newline at end of file
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30744-10.html">Back</a>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-10e.html b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-10e.html
new file mode 100644
index 0000000000..9d6ae2da2f
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-10e.html
@@ -0,0 +1,4 @@
+<html><body>Guild Member Grey:<br>
+You must gather <font color="LEVEL">20 Imperial Arrowheads</font>. This should be easy for you. If you go to the <font color="LEVEL">National Cemetery</font> and kill the undead archers, you can obtain arrowheads made during the Elmoreden era. Are you up for it?<br>
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30744-10.html">Go back</a>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-10f.html b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-10f.html
new file mode 100644
index 0000000000..ddc1bf1463
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-10f.html
@@ -0,0 +1,4 @@
+<html><body>Guild Member Grey:<br>
+You must kill five talk bugbear raiders and bring back their heads. Their names are Athu, Triska, Motura and Lanka, and they are led by one called Kalath. These <font color="LEVEL">talk bugbear warriors</font> have been attacking and pillaging merchant carriages. I'm sure you would deal with these outlaws even if it weren't a requirement of the test, wouldn't you?<br>
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30744-10.html">Go back</a>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-27.htm b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-11.html
similarity index 64%
rename from dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-27.htm
rename to dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-11.html
index 0e57c79584..2ecf6f40c5 100644
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-27.htm
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-11.html
@@ -1,3 +1,4 @@
 <html><body>Guild Member Grey:<br>
 How is the hunt going? Once again, you must bring at least three items from the list. This should be well within your abilities. Good luck!<br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-20.htm">View list</a></body></html>
\ No newline at end of file
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30744-10.html">View list</a>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-12.html b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-12.html
new file mode 100644
index 0000000000..855af03309
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-12.html
@@ -0,0 +1,5 @@
+<html><body>Guild Member Grey:<br>
+Good work! I knew that you would complete the test without much trouble. Now you are a respectable 2-circle hunter. Congratulations!<br>
+Now you are qualified for more dangerous hunts. Go see Guild Member Tor.<br>
+Or perhaps you should visit Cybellin. He is still looking for a good hunter...
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-14.html b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-14.html
new file mode 100644
index 0000000000..a82026be81
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-14.html
@@ -0,0 +1,5 @@
+<html><body>Guild Member Grey:<br>
+Hello, hunter brother. What can I do for you?<br>
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30744-14a.html">"Are there any jobs?"</a><br>
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30744-15.html">"I wish to leave the Hunters Guild."</a>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-14a.html b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-14a.html
new file mode 100644
index 0000000000..d241205bc6
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-14a.html
@@ -0,0 +1,5 @@
+<html><body>Guild Member Grey:<br>
+We get dozens of hunting requests every day. You should go to <font color="LEVEL">Guild Member Tor</font> to find out what requests have currently come in. If there is an assignment that appeals to you, you can accept it.<br>
+There are also individuals who wish to hire hunters. Recently <font color="LEVEL">Cybellin</font> asked me if I knew of a trustworthy hunter. Would you like to meet her?<br>
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30744-14.html">Go back</a>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-15.html b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-15.html
new file mode 100644
index 0000000000..1b2e93896f
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-15.html
@@ -0,0 +1,6 @@
+<html><body>Guild Member Grey:<br>
+You wish to leave the guild? Certainly you know that is impossible. Once you join this brotherhood you are in for life... Didn't you know that?... You should reconsider your decision...<br>
+... The fear in your eyes makes it impossible for me to keep a straight face! I'm joking, you idiot! Of course you can leave if that is what you really want... You must have a good reason...<br>
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30744-16.html">Leave</a><br>
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30744-18.html">Cancel</a>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-32.htm b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-16.html
similarity index 80%
rename from dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-32.htm
rename to dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-16.html
index 2cedbadee3..fb7fd60b6d 100644
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-32.htm
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-16.html
@@ -1,2 +1,3 @@
 <html><body>Guild Member Grey:<br>
-Oh, too bad. There are not enough youngsters like you around these days... But if you have your heart set on leaving, then I won't stop you... May all of your wishes come true... May the divine protection of the gods be with you...</body></html>
\ No newline at end of file
+Oh, too bad. There are not enough youngsters like you around these days... But if you have your heart set on leaving, then I won't stop you... May all of your wishes come true... May the divine protection of the gods be with you...
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-33.htm b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-17.html
similarity index 92%
rename from dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-33.htm
rename to dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-17.html
index 39f215f600..9e67dffed0 100644
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-33.htm
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-17.html
@@ -1,2 +1,3 @@
 <html><body>Guild Member Grey:<br>
-Oh, too bad. There aren't enough youngsters like you around these days... But if you have your mind made up, then I won't stop you... May all your wishes come true... Here is a small bonus for your work for the guild. You can use it for travel expenses. OK, well, this is goodbye. May the divine protection of the gods be with you...</body></html>
\ No newline at end of file
+Oh, too bad. There aren't enough youngsters like you around these days... But if you have your mind made up, then I won't stop you... May all your wishes come true... Here is a small bonus for your work for the guild. You can use it for travel expenses. OK, well, this is goodbye. May the divine protection of the gods be with you...
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-34.htm b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-18.html
similarity index 73%
rename from dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-34.htm
rename to dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-18.html
index 08802d42b0..7560c84e9c 100644
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30744-34.htm
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30744-18.html
@@ -1,2 +1,3 @@
 <html><body>Guild Member Grey:<br>
-Ah, an excellent decision! The life of a hunter is full of romance and adventure each day... There is truly nothing like it in the kingdom! Please keep up the good work!</body></html>
\ No newline at end of file
+Ah, an excellent decision! The life of a hunter is full of romance and adventure each day... There is truly nothing like it in the kingdom! Please keep up the good work!
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-01.htm b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-01a.html
similarity index 69%
rename from dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-01.htm
rename to dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-01a.html
index 775b3e8ea8..8fcc14157b 100644
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-01.htm
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-01a.html
@@ -1,2 +1,4 @@
 <html><body>Guild Member Tor:<br>
-Everyday our guild receives dozens of requests from people of all walks of life. From a village matron seeking to recover her dearly departed grandmother's brooch, to aristocrats seeking to plunder  the treasure of ancient empires, they all come to us.<br>If you wish to accept a request, you must first obtain a hunting license. Guild member Grey can tell you more!</body></html>
\ No newline at end of file
+Everyday our guild receives dozens of requests from people of all walks of life. From a village matron seeking to recover her dearly departed grandmother's brooch, to aristocrats seeking to plunder the treasure of ancient empires, they all come to us.<br>
+If you wish to accept a request, you must first obtain a hunting license. Guild member Grey can tell you more!
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-02.htm b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-01b.html
similarity index 58%
rename from dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-02.htm
rename to dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-01b.html
index 5d64cae155..82c01e2ce5 100644
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-02.htm
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-01b.html
@@ -1,3 +1,5 @@
 <html><body>Guild Member Tor:<br>
-Everyday our guild receives dozens of requests from people of all walks of life. From a village matron seeking to recover her dearly departed grandmother's brooch, to aristocrats seeking to plunder  the treasure of ancient empires, they all come to us.<br>Would you consider taking a request?<br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30745-03.htm">"I would like to take on a request."</a></body></html>
\ No newline at end of file
+Everyday our guild receives dozens of requests from people of all walks of life. From a village matron seeking to recover her dearly departed grandmother's brooch, to aristocrats seeking to plunder the treasure of ancient empires, they all come to us.<br>
+Would you consider taking a request?<br>
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30745-02.html">"I would like to take on a request."</a>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-03.htm b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-02.html
similarity index 79%
rename from dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-03.htm
rename to dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-02.html
index 20f5aa53c6..fd8c9a58ad 100644
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-03.htm
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-02.html
@@ -1,3 +1,4 @@
 <html><body>Guild Member Tor:<br>
 Examine the list and choose a request you would like to work on. The requests are divided into 3 classes according to their degree of difficulty and amount of reward. Class C is the most common, of moderate difficulty and reward. Class B is more difficult but with a better reward. We rarely receive Class A requests. They are the most difficult and offer the greatest rewards.<br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter Tor_list_1">Examine the request list</a></body></html>
\ No newline at end of file
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter LIST_1">Examine the request list</a>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-04.htm b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-03.html
similarity index 80%
rename from dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-04.htm
rename to dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-03.html
index c291de84de..ac5abc90ae 100644
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-04.htm
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-03.html
@@ -1,3 +1,4 @@
 <html><body>Guild Member Tor:<br>
 Oh I see that you are taking the test to obtain a hunting license. I'm sure you will make an excellent circle 2 hunter!<br>
-<font color="LEVEL">Our policy states that those who are currently taking the hunting license test cannot accept a request</font>. Good luck on the test! Come back when you pass it.</body></html>
\ No newline at end of file
+<font color="LEVEL">Our policy states that those who are currently taking the hunting license test cannot accept a request</font>. Good luck on the test! Come back when you pass it.
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-05.htm b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-03a.html
similarity index 67%
rename from dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-05.htm
rename to dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-03a.html
index 73f8079726..887b368115 100644
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-05.htm
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-03a.html
@@ -1,3 +1,4 @@
 <html><body>Guild Member Tor:<br>
 Are you aware of the separate request list just for circle 2 hunters? Considering your skills and experience, I recommend that you take the test to obtain the circle 2 hunting license. You should visit Guild Member Gray.<br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30745-03.htm">"I would like to take on a request."</a></body></html>
\ No newline at end of file
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30745-02.html">"I would like to take on a request."</a>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-03b.html b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-03b.html
new file mode 100644
index 0000000000..5fe65b0a80
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-03b.html
@@ -0,0 +1,4 @@
+<html><body>Guild Member Tor:<br>
+Pleased to meet you, brother! Is there anything I can help you with?<br>
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30745-04.html">"I would like to take on a request."</a>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-04.html b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-04.html
new file mode 100644
index 0000000000..959a70a355
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-04.html
@@ -0,0 +1,4 @@
+<html><body>Guild Member Tor:<br>
+Examine the list and choose a request you would like to work on. The requests are divided into 3 classes according to their degree of difficulty and amount of reward. Class C is the most common, of moderate difficulty and reward. Class B is more difficult but with a better reward. We rarely receive Class A requests. They are the most difficult and offer the greatest rewards.<br>
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter LIST_2">Examine the request list</a>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-05.html b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-05.html
new file mode 100644
index 0000000000..2bdc2e2253
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-05.html
@@ -0,0 +1,5 @@
+<html><body>Guild Member Tor:<br>
+Nice to meet you, brother! Is there anything I can help you with?<br>
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30745-05a.html">Discontinue mission</a><br>
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30745-05c.html">Continue mission</a>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-09.htm b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-05a.html
similarity index 52%
rename from dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-09.htm
rename to dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-05a.html
index 9eb5b52eaa..d5a5e824ba 100644
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-09.htm
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-05a.html
@@ -1,4 +1,5 @@
 <html><body>Guild Member Tor:<br>
 Canceling an assigned request before completion incurs a penalty of all your Laurel Leaf Pins. A small price for violating the trust of the guild, wouldn't you say? Do you still wish to give up on your assigned request?<br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30745-10.htm">Give up assigned request</a><br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30745-11.htm">Continue working on assigned request</a></body></html>
\ No newline at end of file
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30745-05b.html">Give up assigned request</a><br>
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30745-05c.html">Continue working on assigned request</a>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-05b.html b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-05b.html
new file mode 100644
index 0000000000..5a6c80b3ba
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-05b.html
@@ -0,0 +1,3 @@
+<html><body>Guild Member Tor:<br>
+Well, it seems you have your mind made up, I won't try to change it. I will confiscate all of your Laurel Leaf Pins. I hope in the future you will learn to fulfill your obligations.
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-11.htm b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-05c.html
similarity index 90%
rename from dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-11.htm
rename to dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-05c.html
index 890dce6008..e2596581a4 100644
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-11.htm
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-05c.html
@@ -1,2 +1,3 @@
 <html><body>Guild Member Tor:<br>
-Do you know the importance of fulfilling your obligations? Do you know the meanings of integrity, diligence and reliability? Those are the cornerstones of our guild! Well, good luck with your hunting!</body></html>
\ No newline at end of file
+Do you know the importance of fulfilling your obligations? Do you know the meanings of integrity, diligence and reliability? Those are the cornerstones of our guild! Well, good luck with your hunting!
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-06a.html b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-06a.html
new file mode 100644
index 0000000000..4f7f808a28
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-06a.html
@@ -0,0 +1,6 @@
+<html><body>Guild Member Tor:<br>
+Good work! Here is your reward. Also, please accept this Laurel Leaf Pin that recognizes the successful fulfillment of a request. The more pins you possess, the better chance you will receive class A and B requests.<br>
+Do you wish to undertake a new request?<br>
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30745-02.html">"I would like to receive a new request."</a><br>
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30745-09.html">"I need a break."</a>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-06b.html b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-06b.html
new file mode 100644
index 0000000000..4fe1858f2f
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-06b.html
@@ -0,0 +1,6 @@
+<html><body>Guild Member Tor:<br>
+Good work! Here is your reward. Also, please accept this Laurel Leaf Pin that recognizes the successful fulfillment of a request. The more pins you possess, the better the chance you will receive class A and B requests.<br>
+Do you wish to undertake a new request?<br>
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30745-04.html">"I would like to receive a new request."</a><br>
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30745-09.html">"I need a break."</a>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-14.htm b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-09.html
similarity index 71%
rename from dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-14.htm
rename to dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-09.html
index 736907f985..3be113d606 100644
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-14.htm
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-09.html
@@ -1,2 +1,3 @@
 <html><body>Guild Member Tor:<br>
-Alright then, have a good rest. Come back when you would like to choose a new request.</body></html>
\ No newline at end of file
+Alright then, have a good rest. Come back when you would like to choose a new request.
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-10a.html b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-10a.html
new file mode 100644
index 0000000000..96cb65ae1f
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-10a.html
@@ -0,0 +1,4 @@
+<html><body>Guild Member Tor:<br>
+Details of the Request: Obtain 40 charms of Kadesh. The charm bears the image of Kadesh, the evil spirit worshiped by Leto Lizardmen. It is known that leto Lizardman archers and soldiers carry the charm as an amulet to invoke magical power.<br>
+Request Class: C
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-16.htm b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-10b.html
similarity index 76%
rename from dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-16.htm
rename to dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-10b.html
index 85cbca1b64..0c1199aeb1 100644
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-16.htm
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-10b.html
@@ -1,2 +1,4 @@
 <html><body>Guild Member Tor:<br>
-Details of the Request: Collect 50 Timak Jade Necklaces. This necklace is worn by Timak Orc Warriors and overlords to invoke magical power.<br>Request Class: C</body></html>
\ No newline at end of file
+Details of the Request: Collect 50 Timak Jade Necklaces. This necklace is worn by Timak Orc Warriors and overlords to invoke magical power.<br>
+Request Class: C
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-17.htm b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-10c.html
similarity index 81%
rename from dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-17.htm
rename to dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-10c.html
index b7455d7ff2..18ccc4050c 100644
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-17.htm
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-10c.html
@@ -1,2 +1,4 @@
 <html><body>Guild Member Tor:<br>
-Details of the Request: Demolish the broken enchanted stone golem, gather 50 Enchanted Golem Shards and bring them back to me.<br> Request Class: C</body></html>
\ No newline at end of file
+Details of the Request: Demolish the broken enchanted stone golem, gather 50 Enchanted Golem Shards and bring them back to me.<br>
+ Request Class: C
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-18.htm b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-10d.html
similarity index 62%
rename from dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-18.htm
rename to dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-10d.html
index c026008272..31d894f8da 100644
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-18.htm
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-10d.html
@@ -1,2 +1,4 @@
 <html><body>Guild Member Tor:<br>
-Details of the Request: Collect and bring back 30 pieces of Giant Monster Eye Meat.<br>Request Class: C</body></html>
\ No newline at end of file
+Details of the Request: Collect and bring back 30 pieces of Giant Monster Eye Meat.<br>
+Request Class: C
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-19.htm b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-10e.html
similarity index 72%
rename from dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-19.htm
rename to dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-10e.html
index 269ff08e0f..7991031631 100644
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-19.htm
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-10e.html
@@ -1,2 +1,4 @@
 <html><body>Hunters Guild Member Tor:<br>
-Details of the Request: Collect and bring back 40 Dire Wyrm Eggs.<br>Request Class: C</body></html>
\ No newline at end of file
+Details of the Request: Collect and bring back 40 Dire Wyrm Eggs.<br>
+Request Class: C
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-20.htm b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-10f.html
similarity index 65%
rename from dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-20.htm
rename to dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-10f.html
index 45725d19f6..cbfb22451f 100644
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-20.htm
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-10f.html
@@ -1,2 +1,4 @@
 <html><body>Guild Member Tor:<br>
-Details of the Request: Collect and bring back 100 guardian basilisk talons.<br>Request Class: C</body></html>
\ No newline at end of file
+Details of the Request: Collect and bring back 100 guardian basilisk talons.<br>
+Request Class: C
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-21.htm b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-10g.html
similarity index 71%
rename from dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-21.htm
rename to dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-10g.html
index ce068a58b0..bdd14055fb 100644
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-21.htm
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-10g.html
@@ -1,2 +1,4 @@
 <html><body>Guild Member Tor:<br>
-Details of the Request: Collect and bring back 50 revenants chains. This Steel chain reeking of dark magic is only obtained by defeating a fettered soul.<br>Request Class: C</body></html>
\ No newline at end of file
+Details of the Request: Collect and bring back 50 revenants chains. This Steel chain reeking of dark magic is only obtained by defeating a fettered soul.<br>
+Request Class: C
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-22.htm b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-10h.html
similarity index 71%
rename from dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-22.htm
rename to dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-10h.html
index 6025625a73..33c95c9334 100644
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-22.htm
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-10h.html
@@ -1,2 +1,4 @@
 <html><body>Guild Member Tor:<br>
-Details of the Request: Collect and bring back 30 Windsus Tusks.<br>Request Class: C</body></html>
\ No newline at end of file
+Details of the Request: Collect and bring back 30 Windsus Tusks.<br>
+Request Class: C
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-23.htm b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-10i.html
similarity index 70%
rename from dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-23.htm
rename to dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-10i.html
index 65bd345d49..2957c0300f 100644
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-23.htm
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-10i.html
@@ -1,2 +1,4 @@
 <html><body>Guild Member Tor:<br>
-Details of the Request: Collect and bring back 100 Grandis Skulls.<br>Request Class: C</body></html>
\ No newline at end of file
+Details of the Request: Collect and bring back 100 Grandis Skulls.<br>
+Request Class: C
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-10j.html b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-10j.html
new file mode 100644
index 0000000000..955b0a2e2c
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-10j.html
@@ -0,0 +1,4 @@
+<html><body>Guild Member Tor:<br>
+Details of the Request: Collect and bring back 50 Taik Obsidian Amulets. You must defeat an archer or warrior of the Taik Orc tribe to obtain this amulet.<br>
+Request Class: C
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-25.htm b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-10k.html
similarity index 52%
rename from dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-25.htm
rename to dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-10k.html
index a596fc8dec..047616bca9 100644
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-25.htm
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-10k.html
@@ -1,2 +1,4 @@
 <html><body>Guild Member Tor:<br>
-Details of the Request: Kill the karul bugbears that are terrorizing the south of Aden and bring back their heads.<br>Request Class: C</body></html>
\ No newline at end of file
+Details of the Request: Kill the karul bugbears that are terrorizing the south of Aden and bring back their heads.<br>
+Request Class: C
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-10l.html b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-10l.html
new file mode 100644
index 0000000000..573fa6be10
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-10l.html
@@ -0,0 +1,4 @@
+<html><body>Guild Member Tor:<br>
+Details of the Request: Collect 40 Tamlin Ivory Charms. This charm is obtained by killing a tamlin Orc.<br>
+Request Class: C
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-11a.html b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-11a.html
new file mode 100644
index 0000000000..3e0e570173
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-11a.html
@@ -0,0 +1,4 @@
+<html><body>Guild Member Tor:<br>
+Details of the Request: Bring me the head of Elder Narak of the Leto Lizardmen. The overlords of that vile tribe will lead you to him. <br>
+Request Class: B
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-28.htm b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-11b.html
similarity index 66%
rename from dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-28.htm
rename to dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-11b.html
index 10fba87e78..c0b2e1b0e3 100644
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-28.htm
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-11b.html
@@ -1,2 +1,4 @@
 <html><body>Guild Member Tor:<br>
-Details of the Request: Collect and bring back 50 Enchanted Gargoyle Horns.<br>Request Class: B</body></html>
\ No newline at end of file
+Details of the Request: Collect and bring back 50 Enchanted Gargoyle Horns.<br>
+Request Class: B
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-29.htm b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-11c.html
similarity index 66%
rename from dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-29.htm
rename to dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-11c.html
index a98b5f35d4..0dc8350b4d 100644
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-29.htm
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-11c.html
@@ -1,2 +1,4 @@
 <html><body>Guild Member Tor:<br>
-Details of the Request: Collect and bring back 50 Coiled Serpent Totems. This totem, sacred to the breka orcs, can be obtained by defeating a breka Orc Warrior or shaman.<br>Request Class: B</body></html>
\ No newline at end of file
+Details of the Request: Collect and bring back 50 Coiled Serpent Totems. This totem, sacred to the breka orcs, can be obtained by defeating a breka Orc Warrior or shaman.<br>
+Request Class: B
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-30.htm b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-11d.html
similarity index 83%
rename from dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-30.htm
rename to dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-11d.html
index 418a220f79..6f91458096 100644
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-30.htm
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-11d.html
@@ -1,2 +1,4 @@
 <html><body>Guild Member Tor:<br>
-Details of the Request: Bring me the totem of the Serpent Demon Kadesh. It is in the possession of leto Lizardman shaman Kets. If you follow the shamans of that vile tribe they will lead you to Kets.<br>Request Class: B</body></html>
\ No newline at end of file
+Details of the Request: Bring me the totem of the Serpent Demon Kadesh. It is in the possession of leto Lizardman shaman Kets. If you follow the shamans of that vile tribe they will lead you to Kets.<br>
+Request Class: B
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-11e.html b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-11e.html
new file mode 100644
index 0000000000..dc841fe1f6
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-11e.html
@@ -0,0 +1,4 @@
+<html><body>Guild Member Tor:<br>
+Details of the Request: Bring me the head of Kaikis, captain of the Timak Orc raiders. Start killing Timak Orc Warriors and eventually Kaiki will make his appearance.<br>
+Request Class: B
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-32.htm b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-11f.html
similarity index 69%
rename from dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-32.htm
rename to dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-11f.html
index 57f3fa8e91..77cca046f0 100644
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-32.htm
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-11f.html
@@ -1,2 +1,4 @@
 <html><body>Guild Member Tor:<br>
-Details of the Request: Collect and bring back 30 Kronbe Venom Sacs.<br>Request Class: B</body></html>
\ No newline at end of file
+Details of the Request: Collect and bring back 30 Kronbe Venom Sacs.<br>
+Request Class: B
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-12a.html b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-12a.html
new file mode 100644
index 0000000000..4cb744f674
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-12a.html
@@ -0,0 +1,4 @@
+<html><body>Guild Member Tor:<br>
+Details of the Request: Collect and bring back 30 charms of Eva. These charms may be obtained by slaying spore zombies, the undead souls of Elven warriors killed in battle at the Sea of Spores.<br>
+Request Class: A
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-34.htm b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-12b.html
similarity index 88%
rename from dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-34.htm
rename to dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-12b.html
index c558076888..b42fdb5c5b 100644
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-34.htm
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-12b.html
@@ -1,2 +1,4 @@
 <html><body>Guild Member Tor:<br>
-Details of the Request: Recover the precious stone tablet that was stolen from a Dwarven cargo wagon by grandis. It is currently in the possession of grandis brigand leader Gok Magok. If you slay the grandis one by one, eventually you will find Gok Magok.<br>Request Class: A</body></html>
\ No newline at end of file
+Details of the Request: Recover the precious stone tablet that was stolen from a Dwarven cargo wagon by grandis. It is currently in the possession of grandis brigand leader Gok Magok. If you slay the grandis one by one, eventually you will find Gok Magok.<br>
+Request Class: A
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-35.htm b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-12c.html
similarity index 85%
rename from dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-35.htm
rename to dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-12c.html
index 487bc0d550..9c9b41fafc 100644
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-35.htm
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-12c.html
@@ -1,2 +1,4 @@
 <html><body>Guild Member Tor:<br>
-Details of the Request: Recover the precious Book of Shunaiman that was stolen from pilgrims to the grand temple of Einhasad. It is in the possession of Orooto, chief of the karul bugbears. To find him you will need to kill the karul bugbears one by one, Orooto will eventually make his appearance. Kill him and recover the Book of Shunaiman.<br>Request Class: A</body></html>
\ No newline at end of file
+Details of the Request: Recover the precious Book of Shunaiman that was stolen from pilgrims to the grand temple of Einhasad. It is in the possession of Orooto, chief of the karul bugbears. To find him you will need to kill the karul bugbears one by one, Orooto will eventually make his appearance. Kill him and recover the Book of Shunaiman.<br>
+Request Class: A
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-13a.html b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-13a.html
new file mode 100644
index 0000000000..3345c605d5
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-13a.html
@@ -0,0 +1,4 @@
+<html><body>Guild Member Tor:<br>
+Details of the Request: Collect and bring back 40 Rotting Tree Spores from the Sea of Spores.<br>
+Request Class: C
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-37.htm b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-13b.html
similarity index 68%
rename from dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-37.htm
rename to dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-13b.html
index 0e218483c9..2424a91b7e 100644
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-37.htm
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-13b.html
@@ -1,2 +1,4 @@
 <html><body>Guild Member Tor:<br>
-Details of the Request: Collect and bring back 40 Trisalim Venom Sacs.<br>Request Class: C</body></html>
\ No newline at end of file
+Details of the Request: Collect and bring back 40 Trisalim Venom Sacs.<br>
+Request Class: C
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-13c.html b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-13c.html
new file mode 100644
index 0000000000..aaf96d2d87
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-13c.html
@@ -0,0 +1,4 @@
+<html><body>Guild Member Tor:<br>
+Details of the Request: Collect and bring back 50 Taik Orc Totems. This totem can be obtained by slaying Taik Orc shamans or warriors. <br>
+Request Class: C
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-39.htm b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-13d.html
similarity index 68%
rename from dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-39.htm
rename to dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-13d.html
index 7997717279..e9695d5a5f 100644
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-39.htm
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-13d.html
@@ -1,2 +1,4 @@
 <html><body>Guild Member Tor:<br>
-Details of the Request: Collect and bring back 40 harit Lizardman barbed necklaces. These can be obtained by killing harit Lizardman grunts, archers or warriors.<br>Request Class: C</body></html>
\ No newline at end of file
+Details of the Request: Collect and bring back 40 harit Lizardman barbed necklaces. These can be obtained by killing harit Lizardman soldiers, archers or warriors.<br>
+Request Class: C
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-40.htm b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-13e.html
similarity index 64%
rename from dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-40.htm
rename to dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-13e.html
index 0cbcfb0c10..8491446ddc 100644
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-40.htm
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-13e.html
@@ -1,2 +1,4 @@
 <html><body>Guild Member Tor:<br>
-Details of the Request: Collect and bring back 20 coins of the old empire. You may obtain these coins by killing hatar ratman bandits of the Plains of Fierce Battle and their leaders.<br>Request Class: C</body></html>
\ No newline at end of file
+Details of the Request: Collect and bring back 20 coins of the old empire. You may obtain these coins by killing hatar ratman bandits of the War-Torn Plains and their leaders.<br>
+Request Class: C
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-13f.html b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-13f.html
new file mode 100644
index 0000000000..6e8d9e7067
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-13f.html
@@ -0,0 +1,4 @@
+<html><body>Guild Member Tor:<br>
+Details of the Request: Kill 30 farcrans and bring back their skins. It is a monstrous beast that inhabits the area near the War-Torn Plains.<br>
+Request Class: C
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-42.htm b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-13g.html
similarity index 81%
rename from dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-42.htm
rename to dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-13g.html
index 11f2720329..c58f823616 100644
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-42.htm
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-13g.html
@@ -1,2 +1,4 @@
 <html><body>Guild Member Tor:<br>
-Details of the Request: Collect and bring back 40 Tempest Shards. To obtain these shards you must kill flines, spirits of wind.<br>Request Class: C</body></html>
\ No newline at end of file
+Details of the Request: Collect and bring back 40 Tempest Shards. To obtain these shards you must kill flines, spirits of wind.<br>
+Request Class: C
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-43.htm b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-13h.html
similarity index 71%
rename from dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-43.htm
rename to dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-13h.html
index 76f3bc2e71..7ce7576e23 100644
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-43.htm
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-13h.html
@@ -1,2 +1,4 @@
 <html><body>Guild Member Tor:<br>
-Details of the Request: Collect and bring back 40 Tsunami Shards. To obtain them you must kill lieles, spirits of water, who live in the Enchanted Forest.<br>Request Class: C</body></html>
\ No newline at end of file
+Details of the Request: Collect and bring back 40 Tsunami Shards. To obtain them you must kill lieles, spirits of water, who live in the Enchanted Forest.<br>
+Request Class: C
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-44.htm b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-13i.html
similarity index 73%
rename from dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-44.htm
rename to dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-13i.html
index a02aaabdcb..62d79a97d6 100644
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-44.htm
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-13i.html
@@ -1,2 +1,4 @@
 <html><body>Guild Member Tor:<br>
-Details of the Request: Collect and bring back 40 Satyr Manes. To obtain them you must kill satyrs or satyr elders who live in the Enchanted Valley.<br>Request Class: C</body></html>
\ No newline at end of file
+Details of the Request: Collect and bring back 40 Satyr Manes. To obtain them you must kill satyrs or satyr elders who live in the Enchanted Valley.<br>
+Request Class: C
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-13j.html b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-13j.html
new file mode 100644
index 0000000000..7dd32c9829
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-13j.html
@@ -0,0 +1,4 @@
+<html><body>Guild Member Tor:<br>
+Details of the Request: Collect and bring back 40 Hamadryad Shards. To obtain them you must kill forest runners and spirits of trees who live in the Enchanted Forest.<br>
+Request Class: C
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-13k.html b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-13k.html
new file mode 100644
index 0000000000..9d23584b88
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-13k.html
@@ -0,0 +1,4 @@
+<html><body>Guild Member Tor:<br>
+Details of the Request: Collect and bring back 30 Shillien Manes. To obtain them you must kill soldiers, scouts or warriors of the vanor silenos tribe that have been running amok in the north of Aden.<br>
+Request Class: C
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-47.htm b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-13l.html
similarity index 83%
rename from dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-47.htm
rename to dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-13l.html
index 0df9d69684..043aa668ad 100644
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-47.htm
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-13l.html
@@ -1,2 +1,4 @@
 <html><body>Guild Member Tor:<br>
-Details of the Request: Collect and bring back 30 tarlk bugbear totems. To obtain them you must kill tarlk bugbear warriors that are encamped in the den of the mountain bandits in the north of Oren.<br>Request Class: C</body></html>
\ No newline at end of file
+Details of the Request: Collect and bring back 30 tarlk bugbear totems. To obtain them you must kill tarlk bugbear warriors that are encamped in the den of the mountain bandits in the north of Oren.<br>
+Request Class: C
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-14a.html b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-14a.html
new file mode 100644
index 0000000000..e9bb904f5f
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-14a.html
@@ -0,0 +1,4 @@
+<html><body>Guild Member Tor:<br>
+Details of the Request: Bring me the head of Okun, the timak Orc overlord. He is notorious for being an abominably cruel marauder. If you kill timak Orc overlords one by one, Okun will show up to take his revenge.<br>
+Request Class: B
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-14b.html b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-14b.html
new file mode 100644
index 0000000000..b42d60bfec
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-14b.html
@@ -0,0 +1,4 @@
+<html><body>Guild Member Tor:<br>
+Details of the Request: Bring me the head of Kakran, taik Orc overlord. If you start killing taik Orc captains one by one, Kakran will show up crying out for revenge.<br>
+Request Class: B
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-50.htm b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-14c.html
similarity index 72%
rename from dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-50.htm
rename to dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-14c.html
index 1b0491a91c..bcb35390d6 100644
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-50.htm
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-14c.html
@@ -1,2 +1,4 @@
 <html><body>Guild Member Tor:<br>
-Details of the Request: Collect and bring back 40 narcissus soulstones. These rare soulstones are obtained by breaking the mirrors in the Forest of Mirrors.<br>Request: B</body></html>
\ No newline at end of file
+Details of the Request: Collect and bring back 40 narcissus soulstones. These rare soulstones are obtained by breaking the mirrors in the Forest of Mirrors.<br>
+Request: B
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-14d.html b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-14d.html
new file mode 100644
index 0000000000..43eeb283cc
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-14d.html
@@ -0,0 +1,4 @@
+<html><body>Guild Member Tor:<br>
+Details of the Request: Collect and bring back 20 Deprived Eyes. These evil spirits are hovering around the War-Torn Plains.<br>
+Request Class: B
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-14e.html b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-14e.html
new file mode 100644
index 0000000000..9ea02e6a2d
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-14e.html
@@ -0,0 +1,4 @@
+<html><body>Guild Member Tor:<br>
+Details of the Request: Collect and bring back 20 horns of summon unicorn. They are found in the Enchanted Valley.<br>
+Request Class: B
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-53.htm b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-14f.html
similarity index 70%
rename from dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-53.htm
rename to dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-14f.html
index 0303208f8d..d258571bd9 100644
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-53.htm
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-14f.html
@@ -1,2 +1,4 @@
 <html><body>Guild Member Tor:<br>
-Details of the Request: Bring me the golden mane of Kerunos, chief of the vanor silenos tribe. If you start killing vanor silenos chiefs, Kerunos will appear.<br>Request Class: B</body></html>
\ No newline at end of file
+Details of the Request: Bring me the golden mane of Kerunos, chief of the vanor silenos tribe. If you start killing vanor silenos chiefs, Kerunos will appear.<br>
+Request Class: B
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-54.htm b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-15a.html
similarity index 66%
rename from dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-54.htm
rename to dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-15a.html
index 1e673dce7c..05a9ac350f 100644
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-54.htm
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-15a.html
@@ -1,2 +1,4 @@
 <html><body>Guild Member Tor:<br>
-Details of the Request: Bring back 20 skulls of undead executed criminals. These vagrant spirits have wandered aimlessly about the Cemetery of Kings since ancient times.<br>Request Class: A</body></html>
\ No newline at end of file
+Details of the Request: Bring back 20 skulls of undead executed criminals. These vagrant spirits have wandered aimlessly about the Cemetery of Kings since ancient times.<br>
+Request Class: A
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-55.htm b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-15b.html
similarity index 56%
rename from dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-55.htm
rename to dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-15b.html
index 3072b41a1b..63f6a96f4f 100644
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-55.htm
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-15b.html
@@ -1,2 +1,4 @@
 <html><body>Guild Member Tor:<br>
-Details of the Request: Recover the stolen bust of the late King Travis. It is said to be in the possession of Chief Kuber of the hatar ratmen. If you slay hatar ratman bosses one by one, Kuber will appear.<br>Request Class: A</body></html>
\ No newline at end of file
+Details of the Request: Recover the stolen bust of the late King Travis. It is said to be in the possession of Chief Kuber of the hatar ratmen. If you slay hatar ratman Brigand Leaders one by one, Kuber will appear.<br>
+Request Class: A
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-56.htm b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-15c.html
similarity index 75%
rename from dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-56.htm
rename to dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-15c.html
index 722cb0707b..55d4edbe44 100644
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30745-56.htm
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-15c.html
@@ -1,2 +1,4 @@
 <html><body>Guild Member Tor:<br>
-Details of the Request: Recover 10 swords of Cadmus from the Blazing Swamp. These swords are in the possession of the undead called judges of the marsh. These creatures are the souls of heroic bodyguards who died defending their king during the Elmoreden war. You must kill them to retrieve the swords of Cadmus.<br>Request Class: A</body></html>
\ No newline at end of file
+Details of the Request: Recover 10 swords of Cadmus from the Blazing Swamp. These swords are in the possession of the undead called judges of the marsh. These creatures are the souls of heroic bodyguards who died defending their king during the Elmoreden war. You must kill them to retrieve the swords of Cadmus.<br>
+Request Class: A
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-16.html b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-16.html
new file mode 100644
index 0000000000..4f9997221c
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30745-16.html
@@ -0,0 +1,3 @@
+<html><body>Guild Member Tor:<br>
+<?reply1?><?reply2?><?reply3?><?reply4?><?reply5?>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30746-01.htm b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30746-01.html
similarity index 60%
rename from dist/game/data/scripts/quests/335_TheSongOfTheHunter/30746-01.htm
rename to dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30746-01.html
index db10f59539..1e6a97c13f 100644
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30746-01.htm
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30746-01.html
@@ -1,2 +1,3 @@
 <html><body>Cybellin:<br>
-Are you a hunter? Oh yes, of course. Just an aspirant. That's too bad. I need a favor from a real hunter.</body></html>
\ No newline at end of file
+Are you a hunter? Oh yes, of course. Just an aspirant. That's too bad. I need a favor from a real hunter.
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30746-02.htm b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30746-02.html
similarity index 66%
rename from dist/game/data/scripts/quests/335_TheSongOfTheHunter/30746-02.htm
rename to dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30746-02.html
index 35747cc4ae..3fef13505c 100644
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30746-02.htm
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30746-02.html
@@ -1,3 +1,4 @@
 <html><body>Cybellin:<br>
 Ah, a hunter! Oh, how marvelous! I need to ask you a favor. It's related to some very important research I've been performing recently... How about it? Will you assist me?<br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30746-03.htm">"I will help."</a></body></html>
\ No newline at end of file
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30746-03.html">"I will help."</a>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30746-03.html b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30746-03.html
new file mode 100644
index 0000000000..47c6981004
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30746-03.html
@@ -0,0 +1,6 @@
+<html><body>Cybellin:<br>
+Excellent! Take this <font color="LEVEL">Blood Crystal</font> and dagger. Use the dagger to kill the evil <font color="LEVEL">Leto Lizardmen</font> and <font color="LEVEL">Harit Lizardmen</font> and the crystal to absorb their blood. This will raise the purity of the crystal above its current level of 1. Although this may seem quite simple, the process is not without risks. In addition to the danger posed by the lizardmen, there is a chance each time that the crystal will shatter, that is, the crystal will either increase in purity or be destroyed.<br>
+If you successfully raise the purity of the crystal and bring it to me, you shall receive a reward. The higher the level of purity, the greater your reward will be.<br>
+There are different theories as to why the crystal reacts like this to the blood of the lizardmen, possibly it is because these evil lizards are descended from dragons! You will find that certain grades of blood are very effective and others have no effect at all. This can only be determined by trial and error...<br>
+I have written down this task for you.
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30746-03a.html b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30746-03a.html
new file mode 100644
index 0000000000..776e732dfe
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30746-03a.html
@@ -0,0 +1,5 @@
+<html><body>Cybellin:<br>
+After you kill the <font color="LEVEL">Leto Lizardmen</font> and <font color="LEVEL">Harit Lizardmen</font> with that dagger, you must use the Blood Crystal to absorb their blood.<br>
+When you raise the purity of the crystal and return it to me, I shall give you a reward. The higher the level of purity, the greater your reward will be. There is an element of risk, however, as each time it is possible that the crystal will be destroyed.<br>
+You will find that certain grades of blood are useful and some grades have no effect at all on the Blood Crystal. This can only be determined by trial and error...
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30746-04.html b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30746-04.html
new file mode 100644
index 0000000000..3007d146c7
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30746-04.html
@@ -0,0 +1,6 @@
+<html><body>Cybellin:<br>
+The purity of the crystal is still at level 1! Have you decided not to carry out my request?<br>
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30746-03a.html">"How can I raise the purity of the crystal?"</a><br>
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30746-03.html">Continue</a><br>
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30746-10.html">Quit</a>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30746-06.htm b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30746-05.html
similarity index 54%
rename from dist/game/data/scripts/quests/335_TheSongOfTheHunter/30746-06.htm
rename to dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30746-05.html
index 4f4b86e45b..0aa5fdd6cb 100644
--- a/dist/game/data/scripts/quests/335_TheSongOfTheHunter/30746-06.htm
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30746-05.html
@@ -1,4 +1,5 @@
 <html><body>Cybellin:<br>
 You have raised the purity of the Blood Crystal! Would you like to try increasing it some more or do you wish to give it to me at its current level? It doesn't matter to me, but you should remember that the higher level of crystal that you bring me, the greater your reward will be.<br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30746-08.htm">"Take the jewel at its current level."</a><br>
-<a action="bypass -h Quest 335_TheSongOfTheHunter 30746-09.htm">"I will attempt to raise the level of the crystal."</a></body></html>
\ No newline at end of file
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30746-06.html">"Take the jewel at its current level."</a><br>
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30746-07.html">"I will attempt to raise the level of the crystal."</a>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30746-05a.html b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30746-05a.html
new file mode 100644
index 0000000000..7da7cea344
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30746-05a.html
@@ -0,0 +1,6 @@
+<html><body>Cybellin:<br>
+You have successfully created a Blood Crystal of level 10 purity! Oh my Shilen! That's awesome! As I promised, I will pay you the reward money. Thank you so very much!<br>
+Well, may I ask you to do me another favor?<br>
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30746-03.html">Tell her that you will take up the task.</a><br>
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30746-10.html">Quit.</a>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30746-06.html b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30746-06.html
new file mode 100644
index 0000000000..6345ff9cae
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30746-06.html
@@ -0,0 +1,5 @@
+<html><body>Cybellin:<br>
+Excellent! You shall receive your reward based on the level of purity of the Blood Crystal. Good job! Could I ask you another favor?<br>
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30746-03.html">"I will do another favor for you."</a><br>
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30746-10.html">"No, just give me the reward and I'll be on my way."</a>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30746-07.html b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30746-07.html
new file mode 100644
index 0000000000..253f2c8331
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30746-07.html
@@ -0,0 +1,3 @@
+<html><body>Cybellin:<br>
+Fine, I will explain my request. You must increase the purity of a Blood Crystal and bring it to me. This is accomplished by dipping the crystal in the blood of <font color="LEVEL">Leto Lizardmen</font> and <font color="LEVEL">Harit Lizardmen</font> after you kill them with the dagger I gave you. If you are able to increase the crystal's purity to a level of 10 without destroying it, I will use my entire fortune to procure your reward!
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30746-08.html b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30746-08.html
new file mode 100644
index 0000000000..51822d9291
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30746-08.html
@@ -0,0 +1,5 @@
+<html><body>Cybellin:<br>
+Hunter, will you continue to help me?<br>
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30746-03.html">"Yes."</a><br>
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30746-10.html">"No."</a>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30746-09.html b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30746-09.html
new file mode 100644
index 0000000000..469d3de9ea
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30746-09.html
@@ -0,0 +1,5 @@
+<html><body>Cybellin:<br>
+Ah, yes... Shattered... The crystal's structure was unstable and it failed. Don't be discouraged. Here is another crystal, will you please try again?<br>
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30746-03.html">"Yes."</a><br>
+<a action="bypass -h Quest Q00335_TheSongOfTheHunter 30746-10.html">"No."</a>
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30746-10.html b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30746-10.html
new file mode 100644
index 0000000000..0c3e599dfb
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/30746-10.html
@@ -0,0 +1,3 @@
+<html><body>Cybellin:<br>
+Thank you for your help. May Shilen protect you...
+</body></html>
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/Q00335_TheSongOfTheHunter.java b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/Q00335_TheSongOfTheHunter.java
new file mode 100644
index 0000000000..486e025be4
--- /dev/null
+++ b/dist/game/data/scripts/quests/Q00335_TheSongOfTheHunter/Q00335_TheSongOfTheHunter.java
@@ -0,0 +1,1665 @@
+/*
+ * Copyright (C) 2004-2017 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.Q00335_TheSongOfTheHunter;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
+
+import com.l2jserver.gameserver.enums.audio.Sound;
+import com.l2jserver.gameserver.model.actor.L2Npc;
+import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jserver.gameserver.model.items.L2Weapon;
+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.CreatureSay;
+
+/**
+ * The Song of the Hunter (335)
+ * @author Zoey76
+ * @since 2.6.0.0
+ */
+public class Q00335_TheSongOfTheHunter extends Quest
+{
+	// NPCs
+	private static final int GREY = 30744;
+	private static final int TOR = 30745;
+	private static final int CYBELLIN = 30746;
+	// Monsters
+	private static final int BREKA_ORC_SHAMAN = 20269;
+	private static final int BREKA_ORC_WARRIOR = 20271;
+	private static final int GUARDIAN_BASILISK = 20550;
+	private static final int FETTERED_SOUL = 20552;
+	private static final int WINDSUS = 20553;
+	private static final int GRANDIS = 20554;
+	private static final int GIANT_FUNGUS = 20555;
+	private static final int GIANT_MONSTEREYE = 20556;
+	private static final int DIRE_WYRM = 20557;
+	private static final int ROTTING_TREE = 20558;
+	private static final int TRISALIM_SPIDER = 20560;
+	private static final int TRISALIM_TARANTULA = 20561;
+	private static final int SPORE_ZOMBIE = 20562;
+	private static final int MANASHEN_GARGOYLE = 20563;
+	private static final int ENCHANTED_STONE_GOLEM = 20565;
+	private static final int ENCHANTED_GARGOYLE = 20567;
+	private static final int TARLK_BUGBEAR_WARRIOR = 20571;
+	private static final int LETO_LIZARDMAN_ARCHER = 20578;
+	private static final int LETO_LIZARDMAN_SOLDIER = 20579;
+	private static final int LETO_LIZARDMAN_SHAMAN = 20581;
+	private static final int LETO_LIZARDMAN_OVERLORD = 20582;
+	private static final int TIMAK_ORC_WARRIOR = 20586;
+	private static final int TIMAK_ORC_OVERLORD = 20588;
+	private static final int FLINE = 20589;
+	private static final int LIELE = 20590;
+	private static final int VALLEY_TREANT = 20591;
+	private static final int SATYR = 20592;
+	private static final int UNICORN = 20593;
+	private static final int FOREST_RUNNER = 20594;
+	private static final int VALLEY_TREANT_ELDER = 20597;
+	private static final int SATYR_ELDER = 20598;
+	private static final int UNICORN_ELDER = 20599;
+	private static final int KARUL_BUGBEAR = 20600;
+	private static final int TAMLIN_ORC = 20601;
+	private static final int TAMLIN_ORC_ARCHER = 20602;
+	private static final int KRONBE_SPIDER = 20603;
+	private static final int TAIK_ORC_ARCHER = 20631;
+	private static final int TAIK_ORC_WARRIOR = 20632;
+	private static final int TAIK_ORC_SHAMAN = 20633;
+	private static final int TAIK_ORC_CAPTAIN = 20634;
+	private static final int MIRROR = 20639;
+	private static final int HARIT_LIZARDMAN_GRUNT = 20641;
+	private static final int HARIT_LIZARDMAN_ARCHER = 20642;
+	private static final int HARIT_LIZARDMAN_WARRIOR = 20643;
+	private static final int GRAVE_WANDERER = 20659;
+	private static final int ARCHER_OF_GREED = 20660;
+	private static final int HATAR_RATMAN_THIEF = 20661;
+	private static final int HATAR_RATMAN_BOSS = 20662;
+	private static final int DEPRIVE = 20664;
+	private static final int FARCRAN = 20667;
+	private static final int TAIRIM = 20675;
+	private static final int JUDGE_OF_MARSH = 20676;
+	private static final int VANOR_SILENOS_GRUNT = 20682;
+	private static final int VANOR_SILENOS_SCOUT = 20683;
+	private static final int VANOR_SILENOS_WARRIOR = 20684;
+	private static final int VANOR_SILENOS_CHIEFTAIN = 20686;
+	private static final int BREKA_OVERLORD_HAKA = 27140;
+	private static final int BREKA_OVERLORD_JAKA = 27141;
+	private static final int BREKA_OVERLORD_MARKA = 27142;
+	private static final int WINDSUS_ALEPH = 27143;
+	private static final int TARLK_RAIDER_ATHU = 27144;
+	private static final int TARLK_RAIDER_LANKA = 27145;
+	private static final int TARLK_RAIDER_TRISKA = 27146;
+	private static final int TARLK_RAIDER_MOTURA = 27147;
+	private static final int TARLK_RAIDER_KALATH = 27148;
+	private static final int GREMLIN_FILCHER = 27149;
+	private static final int BLACK_LEGION_STORMTROOPER = 27150;
+	private static final int LETO_SHAMAN_KETZ = 27156;
+	private static final int LETO_CHIEF_NARAK = 27157;
+	private static final int TIMAK_RAIDER_KAIKEE = 27158;
+	private static final int TIMAK_OVERLORD_OKUN = 27159;
+	private static final int GOK_MAGOK = 27160;
+	private static final int TAIK_OVERLORD_KAKRAN = 27161;
+	private static final int HATAR_CHIEFTAIN_KUBEL = 27162;
+	private static final int VANOR_ELDER_KERUNOS = 27163;
+	private static final int KARUL_CHIEF_OROOTO = 27164;
+	// Misc
+	private static final int MIN_LEVEL = 35;
+	private static final int MAX_LEVEL = 45;
+	private static final int CYBELLINS_DAGGER = 3471;
+	private static final int FIRST_CIRCLE_HUNTER_LICENSE = 3692;
+	private static final int SECOND_CIRCLE_HUNTER_LICENSE = 3693;
+	private static final int LAUREL_LEAF_PIN = 3694;
+	private static final int TEST_INSTRUCTIONS_1 = 3695;
+	private static final int TEST_INSTRUCTIONS_2 = 3696;
+	private static final int CYBELLINS_REQUEST = 3697;
+	private static final int BLOOD_CRYSTAL_PURITY_1 = 3698;
+	private static final int BLOOD_CRYSTAL_PURITY_2 = 3699;
+	private static final int BLOOD_CRYSTAL_PURITY_3 = 3700;
+	private static final int BLOOD_CRYSTAL_PURITY_4 = 3701;
+	private static final int BLOOD_CRYSTAL_PURITY_5 = 3702;
+	private static final int BLOOD_CRYSTAL_PURITY_6 = 3703;
+	private static final int BLOOD_CRYSTAL_PURITY_7 = 3704;
+	private static final int BLOOD_CRYSTAL_PURITY_8 = 3705;
+	private static final int BLOOD_CRYSTAL_PURITY_9 = 3706;
+	private static final int BLOOD_CRYSTAL_PURITY_10 = 3707;
+	private static final int BROKEN_BLOOD_CRYSTAL = 3708;
+	private static final int GUARDIAN_BASILISK_SCALE = 3709;
+	private static final int KARUT_WEED = 3710;
+	private static final int HAKAS_HEAD = 3711;
+	private static final int JAKAS_HEAD = 3712;
+	private static final int MARKAS_HEAD = 3713;
+	private static final int WINDSUS_ALEPH_SKIN = 3714;
+	private static final int INDIGO_SPIRIT_ORE = 3715;
+	private static final int SPORESEA_SEED = 3716;
+	private static final int TIMAK_ORC_TOTEM = 3717;
+	private static final int TRISALIM_SILK = 3718;
+	private static final int AMBROSIUS_FRUIT = 3719;
+	private static final int BALEFIRE_CRYSTAL = 3720;
+	private static final int IMPERIAL_ARROWHEAD = 3721;
+	private static final int ATHUS_HEAD = 3722;
+	private static final int LANKAS_HEAD = 3723;
+	private static final int TRISKAS_HEAD = 3724;
+	private static final int MOTURAS_HEAD = 3725;
+	private static final int KALATHS_HEAD = 3726;
+	private static final int FIRST_CIRCLE_REQUEST_1C = 3727;
+	private static final int FIRST_CIRCLE_REQUEST_2C = 3728;
+	private static final int FIRST_CIRCLE_REQUEST_3C = 3729;
+	private static final int FIRST_CIRCLE_REQUEST_4C = 3730;
+	private static final int FIRST_CIRCLE_REQUEST_5C = 3731;
+	private static final int FIRST_CIRCLE_REQUEST_6C = 3732;
+	private static final int FIRST_CIRCLE_REQUEST_7C = 3733;
+	private static final int FIRST_CIRCLE_REQUEST_8C = 3734;
+	private static final int FIRST_CIRCLE_REQUEST_9C = 3735;
+	private static final int FIRST_CIRCLE_REQUEST_10C = 3736;
+	private static final int FIRST_CIRCLE_REQUEST_11C = 3737;
+	private static final int FIRST_CIRCLE_REQUEST_12C = 3738;
+	private static final int FIRST_CIRCLE_REQUEST_1B = 3739;
+	private static final int FIRST_CIRCLE_REQUEST_2B = 3740;
+	private static final int FIRST_CIRCLE_REQUEST_3B = 3741;
+	private static final int FIRST_CIRCLE_REQUEST_4B = 3742;
+	private static final int FIRST_CIRCLE_REQUEST_5B = 3743;
+	private static final int FIRST_CIRCLE_REQUEST_6B = 3744;
+	private static final int FIRST_CIRCLE_REQUEST_1A = 3745;
+	private static final int FIRST_CIRCLE_REQUEST_2A = 3746;
+	private static final int FIRST_CIRCLE_REQUEST_3A = 3747;
+	private static final int SECOND_CIRCLE_REQUEST_1C = 3748;
+	private static final int SECOND_CIRCLE_REQUEST_2C = 3749;
+	private static final int SECOND_CIRCLE_REQUEST_3C = 3750;
+	private static final int SECOND_CIRCLE_REQUEST_4C = 3751;
+	private static final int SECOND_CIRCLE_REQUEST_5C = 3752;
+	private static final int SECOND_CIRCLE_REQUEST_6C = 3753;
+	private static final int SECOND_CIRCLE_REQUEST_7C = 3754;
+	private static final int SECOND_CIRCLE_REQUEST_8C = 3755;
+	private static final int SECOND_CIRCLE_REQUEST_9C = 3756;
+	private static final int SECOND_CIRCLE_REQUEST_10C = 3757;
+	private static final int SECOND_CIRCLE_REQUEST_11C = 3758;
+	private static final int SECOND_CIRCLE_REQUEST_12C = 3759;
+	private static final int SECOND_CIRCLE_REQUEST_1B = 3760;
+	private static final int SECOND_CIRCLE_REQUEST_2B = 3761;
+	private static final int SECOND_CIRCLE_REQUEST_3B = 3762;
+	private static final int SECOND_CIRCLE_REQUEST_4B = 3763;
+	private static final int SECOND_CIRCLE_REQUEST_5B = 3764;
+	private static final int SECOND_CIRCLE_REQUEST_6B = 3765;
+	private static final int SECOND_CIRCLE_REQUEST_1A = 3766;
+	private static final int SECOND_CIRCLE_REQUEST_2A = 3767;
+	private static final int SECOND_CIRCLE_REQUEST_3A = 3768;
+	private static final int CHARM_OF_KADESH = 3769;
+	private static final int TIMAK_JADE_NECKLACE = 3770;
+	private static final int ENCHANTED_GOLEM_SHARD = 3771;
+	private static final int GIANT_MONSTER_EYE_MEAT = 3772;
+	private static final int DIRE_WYRM_EGG = 3773;
+	private static final int GUARDIAN_BASILISK_TALON = 3774;
+	private static final int REVENANTS_CHAINS = 3775;
+	private static final int WINDSUS_TUSK = 3776;
+	private static final int GRANDISS_SKULL = 3777;
+	private static final int TAIK_OBSIDIAN_AMULET = 3778;
+	private static final int KARUL_BUGBEAR_HEAD = 3779;
+	private static final int TAMLIN_IVORY_CHARM = 3780;
+	private static final int FANG_OF_NARAK = 3781;
+	private static final int ENCHANTED_GARGOYLES_HORN = 3782;
+	private static final int COILED_SERPENT_TOTEM = 3783;
+	private static final int TOTEM_OF_KADESH = 3784;
+	private static final int KAIKIS_HEAD = 3785;
+	private static final int KRONBE_VENOM_SAC = 3786;
+	private static final int EVAS_CHARM = 3787;
+	private static final int TITANS_TABLET = 3788;
+	private static final int BOOK_OF_SHUNAIMAN = 3789;
+	private static final int ROTTING_TREE_SPORES = 3790;
+	private static final int TRISALIM_VENOM_SAC = 3791;
+	private static final int TAIK_ORC_TOTEM = 3792;
+	private static final int HARIT_BARBED_NECKLACE = 3793;
+	private static final int COIN_OF_OLD_EMPIRE = 3794;
+	private static final int SKIN_OF_FARCRAN = 3795;
+	private static final int TEMPEST_SHARD = 3796;
+	private static final int TSUNAMI_SHARD = 3797;
+	private static final int SATYR_MANE = 3798;
+	private static final int HAMADRYAD_SHARD = 3799;
+	private static final int VANOR_SILENOS_MANE = 3800;
+	private static final int TALK_BUGBEAR_TOTEM = 3801;
+	private static final int OKUNS_HEAD = 3802;
+	private static final int KAKRANS_HEAD = 3803;
+	private static final int NARCISSUSS_SOULSTONE = 3804;
+	private static final int DEPRIVE_EYE = 3805;
+	private static final int UNICORNS_HORN = 3806;
+	private static final int KERUNOSS_GOLD_MANE = 3807;
+	private static final int SKULL_OF_EXECUTED = 3808;
+	private static final int BUST_OF_TRAVIS = 3809;
+	private static final int SWORD_OF_CADMUS = 3810;
+	
+	// Rewards
+	// @formatter:off
+	private static final int[][] REWARDS = {
+		{ FIRST_CIRCLE_REQUEST_1C, CHARM_OF_KADESH, 40, 2090 },
+		{ FIRST_CIRCLE_REQUEST_3C, ENCHANTED_GOLEM_SHARD, 50, 9480 },
+		{ FIRST_CIRCLE_REQUEST_4C, GIANT_MONSTER_EYE_MEAT, 30, 9110 },
+		{ FIRST_CIRCLE_REQUEST_5C, DIRE_WYRM_EGG, 40, 8690 },
+		{ FIRST_CIRCLE_REQUEST_6C, GUARDIAN_BASILISK_TALON, 100, 9480 },
+		{ FIRST_CIRCLE_REQUEST_7C, REVENANTS_CHAINS, 50, 11280 },
+		{ FIRST_CIRCLE_REQUEST_8C, WINDSUS_TUSK, 30, 9640 },
+		{ FIRST_CIRCLE_REQUEST_9C, GRANDISS_SKULL, 100, 9180 },
+		{ FIRST_CIRCLE_REQUEST_10C, TAIK_OBSIDIAN_AMULET, 50, 5160 },
+		{ FIRST_CIRCLE_REQUEST_11C, KARUL_BUGBEAR_HEAD, 30, 3140 },
+		{ FIRST_CIRCLE_REQUEST_12C, TAMLIN_IVORY_CHARM, 40, 3160 },
+		{ FIRST_CIRCLE_REQUEST_1B, FANG_OF_NARAK, 1, 6370 },
+		{ FIRST_CIRCLE_REQUEST_2B, ENCHANTED_GARGOYLES_HORN, 50, 19080 },
+		{ FIRST_CIRCLE_REQUEST_3B, COILED_SERPENT_TOTEM, 50, 19080 },
+		{ FIRST_CIRCLE_REQUEST_4B, TOTEM_OF_KADESH, 1, 5790 },
+		{ FIRST_CIRCLE_REQUEST_5B, KAIKIS_HEAD, 1, 8560 },
+		{ FIRST_CIRCLE_REQUEST_6B, KRONBE_VENOM_SAC, 30, 8320 },
+		{ FIRST_CIRCLE_REQUEST_1A, EVAS_CHARM, 30, 30310 },
+		{ FIRST_CIRCLE_REQUEST_2A, TITANS_TABLET, 1, 27540 },
+		{ FIRST_CIRCLE_REQUEST_3A, BOOK_OF_SHUNAIMAN, 1, 20560 },
+		{ SECOND_CIRCLE_REQUEST_1C, ROTTING_TREE_SPORES, 40, 6850 },
+		{ SECOND_CIRCLE_REQUEST_2C, TRISALIM_VENOM_SAC, 40, 7250 },
+		{ SECOND_CIRCLE_REQUEST_3C, TAIK_ORC_TOTEM, 50, 7160 },
+		{ SECOND_CIRCLE_REQUEST_4C, HARIT_BARBED_NECKLACE, 40, 6580 },
+		{ SECOND_CIRCLE_REQUEST_5C, COIN_OF_OLD_EMPIRE, 20, 10100 },
+		{ SECOND_CIRCLE_REQUEST_6C, SKIN_OF_FARCRAN, 30, 13000 },
+		{ SECOND_CIRCLE_REQUEST_7C, TEMPEST_SHARD, 40, 7660 },
+		{ SECOND_CIRCLE_REQUEST_8C, TSUNAMI_SHARD, 40, 7660 },
+		{ SECOND_CIRCLE_REQUEST_9C, SATYR_MANE, 40, 11260 },
+		{ SECOND_CIRCLE_REQUEST_10C, HAMADRYAD_SHARD, 40, 7660 },
+		{ SECOND_CIRCLE_REQUEST_11C, VANOR_SILENOS_MANE, 30, 8810 },
+		{ SECOND_CIRCLE_REQUEST_12C, TALK_BUGBEAR_TOTEM, 30, 7350 },
+		{ SECOND_CIRCLE_REQUEST_1B, OKUNS_HEAD, 1, 8760 },
+		{ SECOND_CIRCLE_REQUEST_2B, KAKRANS_HEAD, 1, 9380 },
+		{ SECOND_CIRCLE_REQUEST_3B, NARCISSUSS_SOULSTONE, 40, 17820 },
+		{ SECOND_CIRCLE_REQUEST_4B, DEPRIVE_EYE, 20, 17540 },
+		{ SECOND_CIRCLE_REQUEST_5B, UNICORNS_HORN, 20, 14160 },
+		{ SECOND_CIRCLE_REQUEST_6B, KERUNOSS_GOLD_MANE, 1, 15960 },
+		{ SECOND_CIRCLE_REQUEST_1A, SKULL_OF_EXECUTED, 20, 39100 },
+		{ SECOND_CIRCLE_REQUEST_2A, BUST_OF_TRAVIS, 1, 39550 },
+		{ SECOND_CIRCLE_REQUEST_3A, SWORD_OF_CADMUS, 10, 41200 }
+	};
+	// @formatter:on
+	
+	// Monsters drop
+	// @formatter:off
+	private static final int[][] DROPLIST = {
+		{ BREKA_ORC_SHAMAN, FIRST_CIRCLE_REQUEST_3B, COILED_SERPENT_TOTEM, 1, 50, 93 },
+		{ BREKA_ORC_WARRIOR, FIRST_CIRCLE_REQUEST_3B, COILED_SERPENT_TOTEM, 1, 50, 100 },
+		{ GUARDIAN_BASILISK, TEST_INSTRUCTIONS_1, GUARDIAN_BASILISK_SCALE, 1, 40, 90 },
+		{ GUARDIAN_BASILISK, FIRST_CIRCLE_REQUEST_6C, GUARDIAN_BASILISK_TALON, (getRandom(100) < 60) ? 2 : 1, 100, 100 },
+		{ FETTERED_SOUL, FIRST_CIRCLE_REQUEST_7C, REVENANTS_CHAINS, 1, 50, 100 },
+		{ WINDSUS, FIRST_CIRCLE_REQUEST_8C, WINDSUS_TUSK, 1, 30, 63 },
+		{ GRANDIS, FIRST_CIRCLE_REQUEST_9C, GRANDISS_SKULL, 2, 100, 100 },
+		{ GIANT_FUNGUS, TEST_INSTRUCTIONS_1, SPORESEA_SEED, 1, 30, 84 },
+		{ GIANT_MONSTEREYE, FIRST_CIRCLE_REQUEST_4C, GIANT_MONSTER_EYE_MEAT, 1, 30, 60 },
+		{ DIRE_WYRM, FIRST_CIRCLE_REQUEST_5C, DIRE_WYRM_EGG, 1, 40, 90 },
+		{ ROTTING_TREE, SECOND_CIRCLE_REQUEST_1C, ROTTING_TREE_SPORES, 1, 40, 77 },
+		{ TRISALIM_SPIDER, TEST_INSTRUCTIONS_2, TRISALIM_SILK, 1, 20, 60 },
+		{ TRISALIM_SPIDER, SECOND_CIRCLE_REQUEST_2C, TRISALIM_VENOM_SAC, 1, 40, 76 },
+		{ TRISALIM_TARANTULA, TEST_INSTRUCTIONS_2, TRISALIM_SILK, 1, 20, 60 },
+		{ TRISALIM_TARANTULA, SECOND_CIRCLE_REQUEST_2C, TRISALIM_VENOM_SAC, 1, 40, 85 },
+		{ SPORE_ZOMBIE, SECOND_CIRCLE_REQUEST_2C, TRISALIM_VENOM_SAC, 1, 30, 60 },
+		{ MANASHEN_GARGOYLE, TEST_INSTRUCTIONS_1, INDIGO_SPIRIT_ORE, 1, 20, 60 },
+		{ ENCHANTED_STONE_GOLEM, FIRST_CIRCLE_REQUEST_3C, ENCHANTED_GOLEM_SHARD, 1, 50, 100 },
+		{ ENCHANTED_STONE_GOLEM, TEST_INSTRUCTIONS_1, INDIGO_SPIRIT_ORE, 1, 20, 62 },
+		{ ENCHANTED_GARGOYLE, FIRST_CIRCLE_REQUEST_2B, ENCHANTED_GARGOYLES_HORN, 1, 50, 60 },
+		{ TARLK_BUGBEAR_WARRIOR, SECOND_CIRCLE_REQUEST_12C, TALK_BUGBEAR_TOTEM, 1, 30, 73 },
+		{ LETO_LIZARDMAN_ARCHER, FIRST_CIRCLE_REQUEST_1C, CHARM_OF_KADESH, 1, 40, 90 },
+		{ LETO_LIZARDMAN_SOLDIER, FIRST_CIRCLE_REQUEST_1C, CHARM_OF_KADESH, 1, 40, 93 },
+		{ LETO_LIZARDMAN_SHAMAN, TEST_INSTRUCTIONS_1, KARUT_WEED, 1, 20, 60 },
+		{ LETO_LIZARDMAN_OVERLORD, TEST_INSTRUCTIONS_1, KARUT_WEED, 1, 20, 60 },
+		{ TIMAK_ORC_WARRIOR, FIRST_CIRCLE_REQUEST_2C, TIMAK_JADE_NECKLACE, 1, 50, 95 },
+		{ TIMAK_ORC_WARRIOR, TEST_INSTRUCTIONS_2, TIMAK_ORC_TOTEM, 1, 20, 60 },
+		{ TIMAK_ORC_OVERLORD, FIRST_CIRCLE_REQUEST_2C, TIMAK_JADE_NECKLACE, 1, 50, 100 },
+		{ FLINE, SECOND_CIRCLE_REQUEST_7C, TEMPEST_SHARD, 1, 40, 59 },
+		{ LIELE, SECOND_CIRCLE_REQUEST_8C, TSUNAMI_SHARD, 1, 40, 61 },
+		{ VALLEY_TREANT, TEST_INSTRUCTIONS_2, AMBROSIUS_FRUIT, 1, 30, 85 },
+		{ SATYR, SECOND_CIRCLE_REQUEST_9C, SATYR_MANE, 1, 40, 90 },
+		{ UNICORN, SECOND_CIRCLE_REQUEST_5B, UNICORNS_HORN, 1, 20, 78 },
+		{ FOREST_RUNNER, SECOND_CIRCLE_REQUEST_10C, HAMADRYAD_SHARD, 1, 40, 74 },
+		{ VALLEY_TREANT_ELDER, TEST_INSTRUCTIONS_2, AMBROSIUS_FRUIT, 1, 30, 85 },
+		{ SATYR_ELDER, SECOND_CIRCLE_REQUEST_9C, SATYR_MANE, 1, 40, 100 },
+		{ UNICORN_ELDER, SECOND_CIRCLE_REQUEST_5B, UNICORNS_HORN, 1, 20, 96 },
+		{ KARUL_BUGBEAR, FIRST_CIRCLE_REQUEST_11C, KARUL_BUGBEAR_HEAD, 1, 30, 60 },
+		{ TAMLIN_ORC, FIRST_CIRCLE_REQUEST_12C, TAMLIN_IVORY_CHARM, 1, 40, 72 },
+		{ TAMLIN_ORC_ARCHER, FIRST_CIRCLE_REQUEST_12C, TAMLIN_IVORY_CHARM, 1, 40, 90 },
+		{ KRONBE_SPIDER, FIRST_CIRCLE_REQUEST_6B, KRONBE_VENOM_SAC, 1, 30, 60 },
+		{ TAIK_ORC_ARCHER, FIRST_CIRCLE_REQUEST_10C, TAIK_OBSIDIAN_AMULET, 1, 50, 100 },
+		{ TAIK_ORC_WARRIOR, FIRST_CIRCLE_REQUEST_10C, TAIK_OBSIDIAN_AMULET, 1, 50, 93 },
+		{ TAIK_ORC_SHAMAN, SECOND_CIRCLE_REQUEST_3C, TAIK_ORC_TOTEM, 1, 50, 63 },
+		{ TAIK_ORC_CAPTAIN, SECOND_CIRCLE_REQUEST_3C, TAIK_ORC_TOTEM, 1, 50, 99 },
+		{ MIRROR, SECOND_CIRCLE_REQUEST_3B, NARCISSUSS_SOULSTONE, 1, 40, 96 },
+		{ HARIT_LIZARDMAN_GRUNT, SECOND_CIRCLE_REQUEST_4C, HARIT_BARBED_NECKLACE, 1, 40, 98 },
+		{ HARIT_LIZARDMAN_ARCHER, SECOND_CIRCLE_REQUEST_4C, HARIT_BARBED_NECKLACE, 1, 40, 98 },
+		{ HARIT_LIZARDMAN_WARRIOR, SECOND_CIRCLE_REQUEST_4C, HARIT_BARBED_NECKLACE, 1, 40, 100 },
+		{ GRAVE_WANDERER, SECOND_CIRCLE_REQUEST_1A, SKULL_OF_EXECUTED, 1, 20, 83 },
+		{ ARCHER_OF_GREED, TEST_INSTRUCTIONS_2, IMPERIAL_ARROWHEAD, 1, 20, 60 },
+		{ HATAR_RATMAN_THIEF, SECOND_CIRCLE_REQUEST_5C, COIN_OF_OLD_EMPIRE, 1, 20, 60 },
+		{ HATAR_RATMAN_BOSS, SECOND_CIRCLE_REQUEST_5C, COIN_OF_OLD_EMPIRE, 1, 20, 62 },
+		{ DEPRIVE, SECOND_CIRCLE_REQUEST_4B, DEPRIVE_EYE, 1, 20, 87 },
+		{ FARCRAN, SECOND_CIRCLE_REQUEST_6C, SKIN_OF_FARCRAN, 1, 30, 100 },
+		{ TAIRIM, TEST_INSTRUCTIONS_2, BALEFIRE_CRYSTAL, 1, 20, 60 },
+		{ JUDGE_OF_MARSH, SECOND_CIRCLE_REQUEST_3A, SWORD_OF_CADMUS, 1, 10, 74 },
+		{ VANOR_SILENOS_GRUNT, SECOND_CIRCLE_REQUEST_11C, VANOR_SILENOS_MANE, 1, 30, 80 },
+		{ VANOR_SILENOS_SCOUT, SECOND_CIRCLE_REQUEST_11C, VANOR_SILENOS_MANE, 1, 30, 95 },
+		{ VANOR_SILENOS_WARRIOR, SECOND_CIRCLE_REQUEST_11C, VANOR_SILENOS_MANE, 1, 30, 100 },
+		{ BREKA_OVERLORD_HAKA, TEST_INSTRUCTIONS_1, HAKAS_HEAD, 1, 1, 100 },
+		{ BREKA_OVERLORD_JAKA, TEST_INSTRUCTIONS_1, JAKAS_HEAD, 1, 1, 100 },
+		{ BREKA_OVERLORD_MARKA, TEST_INSTRUCTIONS_1, MARKAS_HEAD, 1, 1, 100 },
+		{ WINDSUS_ALEPH, TEST_INSTRUCTIONS_1, WINDSUS_ALEPH_SKIN, 1, 1, 100 },
+		{ TARLK_RAIDER_ATHU, TEST_INSTRUCTIONS_2, ATHUS_HEAD, 1, 1, 100 },
+		{ TARLK_RAIDER_LANKA, TEST_INSTRUCTIONS_2, LANKAS_HEAD, 1, 1, 100 },
+		{ TARLK_RAIDER_TRISKA, TEST_INSTRUCTIONS_2, TRISKAS_HEAD, 1, 1, 100 },
+		{ TARLK_RAIDER_MOTURA, TEST_INSTRUCTIONS_2, MOTURAS_HEAD, 1, 1, 100 },
+		{ TARLK_RAIDER_KALATH, TEST_INSTRUCTIONS_2, KALATHS_HEAD, 1, 1, 100 },
+		{ LETO_SHAMAN_KETZ, FIRST_CIRCLE_REQUEST_4B, TOTEM_OF_KADESH, 1, 1, 100 },
+		{ LETO_CHIEF_NARAK, FIRST_CIRCLE_REQUEST_1B, FANG_OF_NARAK, 1, 1, 100 },
+		{ TIMAK_RAIDER_KAIKEE, FIRST_CIRCLE_REQUEST_5B, KAIKIS_HEAD, 1, 1, 100 },
+		{ TIMAK_OVERLORD_OKUN, SECOND_CIRCLE_REQUEST_1B, OKUNS_HEAD, 1, 1, 100 },
+		{ GOK_MAGOK, FIRST_CIRCLE_REQUEST_2A, TITANS_TABLET, 1, 1, 100 },
+		{ TAIK_OVERLORD_KAKRAN, SECOND_CIRCLE_REQUEST_2B, KAKRANS_HEAD, 1, 1, 100 },
+		{ HATAR_CHIEFTAIN_KUBEL, SECOND_CIRCLE_REQUEST_2A, BUST_OF_TRAVIS, 1, 1, 100 },
+		{ VANOR_ELDER_KERUNOS, SECOND_CIRCLE_REQUEST_6B, KERUNOSS_GOLD_MANE, 1, 1, 100 },
+		{ KARUL_CHIEF_OROOTO, FIRST_CIRCLE_REQUEST_3A, BOOK_OF_SHUNAIMAN, 1, 1, 100 }
+	};
+	// @formatter:on
+	
+	// Links
+	private static final Map<Integer, String> LINKS = new HashMap<>();
+	static
+	{
+		LINKS.put(33520, "<a action=\"bypass -h Quest Q00335_TheSongOfTheHunter 30745-10a.html\">C: 40 Totems of Kadesh</a><br>");
+		LINKS.put(33521, "<a action=\"bypass -h Quest Q00335_TheSongOfTheHunter 30745-10b.html\">C: 50 Jade Necklaces of Timak</a><br>");
+		LINKS.put(33522, "<a action=\"bypass -h Quest Q00335_TheSongOfTheHunter 30745-10c.html\">C: 50 Enchanted Golem Shards</a><br>");
+		LINKS.put(33523, "<a action=\"bypass -h Quest Q00335_TheSongOfTheHunter 30745-10d.html\">C: 30 Pieces Monster Eye Meat</a><br>");
+		LINKS.put(33524, "<a action=\"bypass -h Quest Q00335_TheSongOfTheHunter 30745-10e.html\">C: 40 Eggs of Dire Wyrm</a><br>");
+		LINKS.put(33525, "<a action=\"bypass -h Quest Q00335_TheSongOfTheHunter 30745-10f.html\">C: 100 Claws of Guardian Basilisk</a><br>");
+		LINKS.put(33526, "<a action=\"bypass -h Quest Q00335_TheSongOfTheHunter 30745-10g.html\">C: 50 Revenant Chains </a><br>");
+		LINKS.put(33527, "<a action=\"bypass -h Quest Q00335_TheSongOfTheHunter 30745-10h.html\">C: 30 Windsus Tusks</a><br>");
+		LINKS.put(33528, "<a action=\"bypass -h Quest Q00335_TheSongOfTheHunter 30745-10i.html\">C: 100 Skulls of Grandis</a><br>");
+		LINKS.put(33529, "<a action=\"bypass -h Quest Q00335_TheSongOfTheHunter 30745-10j.html\">C: 50 Taik Obsidian Amulets</a><br>");
+		LINKS.put(33530, "<a action=\"bypass -h Quest Q00335_TheSongOfTheHunter 30745-10k.html\">C: 30 Heads of Karul Bugbear</a><br>");
+		LINKS.put(33531, "<a action=\"bypass -h Quest Q00335_TheSongOfTheHunter 30745-10l.html\">C: 40 Ivory Charms of Tamlin</a><br>");
+		LINKS.put(33532, "<a action=\"bypass -h Quest Q00335_TheSongOfTheHunter 30745-11a.html\">B: Situation Preparation - Leto Chief</a><br>");
+		LINKS.put(33533, "<a action=\"bypass -h Quest Q00335_TheSongOfTheHunter 30745-11b.html\">B: 50 Enchanted Gargoyle Horns</a><br>");
+		LINKS.put(33534, "<a action=\"bypass -h Quest Q00335_TheSongOfTheHunter 30745-11c.html\">B: 50 Coiled Serpent Totems</a><br>");
+		LINKS.put(33535, "<a action=\"bypass -h Quest Q00335_TheSongOfTheHunter 30745-11d.html\">B: Situation Preparation - Sorcerer Catch of Leto</a><br>");
+		LINKS.put(33536, "<a action=\"bypass -h Quest Q00335_TheSongOfTheHunter 30745-11e.html\">B: Situation Preparation - Timak Raider Kaikee</a><br>");
+		LINKS.put(33537, "<a action=\"bypass -h Quest Q00335_TheSongOfTheHunter 30745-11f.html\">B: 30 Kronbe Venom Sacs</a><br>");
+		LINKS.put(33538, "<a action=\"bypass -h Quest Q00335_TheSongOfTheHunter 30745-12a.html\">A: 30 Charms of Eva</a><br>");
+		LINKS.put(33539, "<a action=\"bypass -h Quest Q00335_TheSongOfTheHunter 30745-12b.html\">A: Titan's Tablet</a><br>");
+		LINKS.put(33540, "<a action=\"bypass -h Quest Q00335_TheSongOfTheHunter 30745-12c.html\">A: Book of Shunaiman</a><br>");
+		LINKS.put(33541, "<a action=\"bypass -h Quest Q00335_TheSongOfTheHunter 30745-13a.html\">C: 40 Rotted Tree Spores</a><br>");
+		LINKS.put(33542, "<a action=\"bypass -h Quest Q00335_TheSongOfTheHunter 30745-13b.html\">C: 40 Trisalim Venom Sacs</a><br>");
+		LINKS.put(33543, "<a action=\"bypass -h Quest Q00335_TheSongOfTheHunter 30745-13c.html\">C: 50 Totems of Taik Orc</a><br>");
+		LINKS.put(33544, "<a action=\"bypass -h Quest Q00335_TheSongOfTheHunter 30745-13d.html\">C: 40 Harit Barbed Necklaces</a><br>");
+		LINKS.put(33545, "<a action=\"bypass -h Quest Q00335_TheSongOfTheHunter 30745-13e.html\">C: 20 Coins of Ancient Empire</a><br>");
+		LINKS.put(33546, "<a action=\"bypass -h Quest Q00335_TheSongOfTheHunter 30745-13f.html\">C: 30 Skins of Farkran</a><br>");
+		LINKS.put(33547, "<a action=\"bypass -h Quest Q00335_TheSongOfTheHunter 30745-13g.html\">C: 40 Tempest Shards</a><br>");
+		LINKS.put(33548, "<a action=\"bypass -h Quest Q00335_TheSongOfTheHunter 30745-13k.html\">C: 30 Vanor Silenos Manes</a><br>");
+		LINKS.put(33549, "<a action=\"bypass -h Quest Q00335_TheSongOfTheHunter 30745-13i.html\">C: 40 Manes of Pan Ruem</a><br>");
+		LINKS.put(33550, "<a action=\"bypass -h Quest Q00335_TheSongOfTheHunter 30745-13j.html\">C: hamadryad shards</a><br>");
+		LINKS.put(33551, "<a action=\"bypass -h Quest Q00335_TheSongOfTheHunter 30745-13k.html\">C: 30 Manes of Vanor Silenos</a><br>");
+		LINKS.put(33552, "<a action=\"bypass -h Quest Q00335_TheSongOfTheHunter 30745-13l.html\">C: 30 Totems of Talk Bugbears</a><br>");
+		LINKS.put(33553, "<a action=\"bypass -h Quest Q00335_TheSongOfTheHunter 30745-14a.html\">B: Situation Preparation - Overlord Okun of Timak</a><br>");
+		LINKS.put(33554, "<a action=\"bypass -h Quest Q00335_TheSongOfTheHunter 30745-14b.html\">B: Situation Preparation - Overlord Kakran of Taik</a><br>");
+		LINKS.put(33555, "<a action=\"bypass -h Quest Q00335_TheSongOfTheHunter 30745-14c.html\">B: 40 Narcissus Soulstones</a><br>");
+		LINKS.put(33556, "<a action=\"bypass -h Quest Q00335_TheSongOfTheHunter 30745-14d.html\">B: 20 Eyes of Deprived</a><br>");
+		LINKS.put(33557, "<a action=\"bypass -h Quest Q00335_TheSongOfTheHunter 30745-14e.html\">B: 20 Unicorn Horns</a><br>");
+		LINKS.put(33558, "<a action=\"bypass -h Quest Q00335_TheSongOfTheHunter 30745-14f.html\">B: Kerunos's Gold Mane</a><br>");
+	}
+	
+	public Q00335_TheSongOfTheHunter()
+	{
+		super(335, Q00335_TheSongOfTheHunter.class.getSimpleName(), "The Song of the Hunter");
+		addStartNpc(GREY);
+		addTalkId(GREY, TOR, CYBELLIN);
+		addKillId(BREKA_ORC_SHAMAN, BREKA_ORC_WARRIOR, GUARDIAN_BASILISK, FETTERED_SOUL, WINDSUS, GRANDIS, GIANT_FUNGUS, GIANT_MONSTEREYE, DIRE_WYRM, ROTTING_TREE, TRISALIM_SPIDER, TRISALIM_TARANTULA, SPORE_ZOMBIE, MANASHEN_GARGOYLE, ENCHANTED_STONE_GOLEM, ENCHANTED_GARGOYLE, TARLK_BUGBEAR_WARRIOR, LETO_LIZARDMAN_ARCHER, LETO_LIZARDMAN_SOLDIER, LETO_LIZARDMAN_SHAMAN, LETO_LIZARDMAN_OVERLORD, TIMAK_ORC_WARRIOR, TIMAK_ORC_OVERLORD, FLINE, LIELE, VALLEY_TREANT, SATYR, UNICORN, FOREST_RUNNER, VALLEY_TREANT_ELDER, SATYR_ELDER, UNICORN_ELDER, KARUL_BUGBEAR, TAMLIN_ORC, TAMLIN_ORC_ARCHER, KRONBE_SPIDER, TAIK_ORC_ARCHER, TAIK_ORC_WARRIOR, TAIK_ORC_SHAMAN, TAIK_ORC_CAPTAIN, MIRROR, HARIT_LIZARDMAN_GRUNT, HARIT_LIZARDMAN_ARCHER, HARIT_LIZARDMAN_WARRIOR, GRAVE_WANDERER, ARCHER_OF_GREED, HATAR_RATMAN_THIEF, HATAR_RATMAN_BOSS, DEPRIVE, FARCRAN, TAIRIM, JUDGE_OF_MARSH, VANOR_SILENOS_GRUNT, VANOR_SILENOS_SCOUT, VANOR_SILENOS_WARRIOR, BREKA_OVERLORD_HAKA, BREKA_OVERLORD_JAKA, BREKA_OVERLORD_MARKA, WINDSUS_ALEPH, TARLK_RAIDER_ATHU, TARLK_RAIDER_LANKA, TARLK_RAIDER_TRISKA, TARLK_RAIDER_MOTURA, TARLK_RAIDER_KALATH, GREMLIN_FILCHER, LETO_SHAMAN_KETZ, LETO_CHIEF_NARAK, TIMAK_RAIDER_KAIKEE, TIMAK_OVERLORD_OKUN, GOK_MAGOK, TAIK_OVERLORD_KAKRAN, HATAR_CHIEFTAIN_KUBEL, VANOR_ELDER_KERUNOS, KARUL_CHIEF_OROOTO, VANOR_SILENOS_CHIEFTAIN);
+		registerQuestItems(CYBELLINS_DAGGER, FIRST_CIRCLE_HUNTER_LICENSE, SECOND_CIRCLE_HUNTER_LICENSE, LAUREL_LEAF_PIN, TEST_INSTRUCTIONS_1, TEST_INSTRUCTIONS_2, CYBELLINS_REQUEST, BLOOD_CRYSTAL_PURITY_1, BLOOD_CRYSTAL_PURITY_2, BLOOD_CRYSTAL_PURITY_3, BLOOD_CRYSTAL_PURITY_4, BLOOD_CRYSTAL_PURITY_5, BLOOD_CRYSTAL_PURITY_6, BLOOD_CRYSTAL_PURITY_7, BLOOD_CRYSTAL_PURITY_8, BLOOD_CRYSTAL_PURITY_9, BLOOD_CRYSTAL_PURITY_10, BROKEN_BLOOD_CRYSTAL, GUARDIAN_BASILISK_SCALE, KARUT_WEED, HAKAS_HEAD, JAKAS_HEAD, MARKAS_HEAD, WINDSUS_ALEPH_SKIN, INDIGO_SPIRIT_ORE, SPORESEA_SEED, TIMAK_ORC_TOTEM, TRISALIM_SILK, AMBROSIUS_FRUIT, BALEFIRE_CRYSTAL, IMPERIAL_ARROWHEAD, ATHUS_HEAD, LANKAS_HEAD, TRISKAS_HEAD, MOTURAS_HEAD, KALATHS_HEAD, FIRST_CIRCLE_REQUEST_1C, FIRST_CIRCLE_REQUEST_2C, FIRST_CIRCLE_REQUEST_3C, FIRST_CIRCLE_REQUEST_4C, FIRST_CIRCLE_REQUEST_5C, FIRST_CIRCLE_REQUEST_6C, FIRST_CIRCLE_REQUEST_7C, FIRST_CIRCLE_REQUEST_8C, FIRST_CIRCLE_REQUEST_9C, FIRST_CIRCLE_REQUEST_10C, FIRST_CIRCLE_REQUEST_11C, FIRST_CIRCLE_REQUEST_12C, FIRST_CIRCLE_REQUEST_1B, FIRST_CIRCLE_REQUEST_2B, FIRST_CIRCLE_REQUEST_3B, FIRST_CIRCLE_REQUEST_4B, FIRST_CIRCLE_REQUEST_5B, FIRST_CIRCLE_REQUEST_6B, FIRST_CIRCLE_REQUEST_1A, FIRST_CIRCLE_REQUEST_2A, FIRST_CIRCLE_REQUEST_3A, SECOND_CIRCLE_REQUEST_1C, SECOND_CIRCLE_REQUEST_2C, SECOND_CIRCLE_REQUEST_3C, SECOND_CIRCLE_REQUEST_4C, SECOND_CIRCLE_REQUEST_5C, SECOND_CIRCLE_REQUEST_6C, SECOND_CIRCLE_REQUEST_7C, SECOND_CIRCLE_REQUEST_8C, SECOND_CIRCLE_REQUEST_9C, SECOND_CIRCLE_REQUEST_10C, SECOND_CIRCLE_REQUEST_11C, SECOND_CIRCLE_REQUEST_12C, SECOND_CIRCLE_REQUEST_1B, SECOND_CIRCLE_REQUEST_2B, SECOND_CIRCLE_REQUEST_3B, SECOND_CIRCLE_REQUEST_4B, SECOND_CIRCLE_REQUEST_5B, SECOND_CIRCLE_REQUEST_6B, SECOND_CIRCLE_REQUEST_1A, SECOND_CIRCLE_REQUEST_2A, SECOND_CIRCLE_REQUEST_3A, CHARM_OF_KADESH, TIMAK_JADE_NECKLACE, ENCHANTED_GOLEM_SHARD, GIANT_MONSTER_EYE_MEAT, DIRE_WYRM_EGG, GUARDIAN_BASILISK_TALON, REVENANTS_CHAINS, WINDSUS_TUSK, GRANDISS_SKULL, TAIK_OBSIDIAN_AMULET, KARUL_BUGBEAR_HEAD, TAMLIN_IVORY_CHARM, FANG_OF_NARAK, ENCHANTED_GARGOYLES_HORN, COILED_SERPENT_TOTEM, TOTEM_OF_KADESH, KAIKIS_HEAD, KRONBE_VENOM_SAC, EVAS_CHARM, TITANS_TABLET, BOOK_OF_SHUNAIMAN, ROTTING_TREE_SPORES, TRISALIM_VENOM_SAC, TAIK_ORC_TOTEM, HARIT_BARBED_NECKLACE, COIN_OF_OLD_EMPIRE, SKIN_OF_FARCRAN, TEMPEST_SHARD, TSUNAMI_SHARD, SATYR_MANE, HAMADRYAD_SHARD, VANOR_SILENOS_MANE, TALK_BUGBEAR_TOTEM, OKUNS_HEAD, KAKRANS_HEAD, NARCISSUSS_SOULSTONE, DEPRIVE_EYE, UNICORNS_HORN, KERUNOSS_GOLD_MANE, SKULL_OF_EXECUTED, BUST_OF_TRAVIS, SWORD_OF_CADMUS);
+	}
+	
+	@Override
+	public String onTalk(L2Npc npc, L2PcInstance player)
+	{
+		final QuestState qs = getQuestState(player, true);
+		String htmltext = getNoQuestMsg(player);
+		if (qs.isCreated())
+		{
+			htmltext = player.getLevel() < MIN_LEVEL ? "30744-01.htm" : "30744-02.htm";
+		}
+		else if (qs.isStarted())
+		{
+			switch (npc.getId())
+			{
+				case GREY:
+				{
+					if (hasQuestItems(player, TEST_INSTRUCTIONS_1))
+					{
+						final long count = Arrays.asList(getQuestItemsCount(player, GUARDIAN_BASILISK_SCALE) >= 40, getQuestItemsCount(player, KARUT_WEED) >= 20, (getQuestItemsCount(player, HAKAS_HEAD) + getQuestItemsCount(player, JAKAS_HEAD)
+							+ getQuestItemsCount(player, MARKAS_HEAD)) >= 3, hasQuestItems(player, WINDSUS_ALEPH_SKIN), getQuestItemsCount(player, INDIGO_SPIRIT_ORE) >= 20, getQuestItemsCount(player, SPORESEA_SEED) >= 30).stream().filter(b -> b).count();
+						if (count < 3)
+						{
+							htmltext = "30744-05.html";
+						}
+						else
+						{
+							qs.setCond(2, true);
+							giveItems(player, FIRST_CIRCLE_HUNTER_LICENSE, 1);
+							takeItems(player, GUARDIAN_BASILISK_SCALE, -1);
+							takeItems(player, KARUT_WEED, -1);
+							takeItems(player, HAKAS_HEAD, -1);
+							takeItems(player, JAKAS_HEAD, -1);
+							takeItems(player, MARKAS_HEAD, -1);
+							takeItems(player, WINDSUS_ALEPH_SKIN, -1);
+							takeItems(player, INDIGO_SPIRIT_ORE, -1);
+							takeItems(player, SPORESEA_SEED, -1);
+							takeItems(player, TEST_INSTRUCTIONS_1, -1);
+							htmltext = "30744-06.html";
+						}
+					}
+					
+					if (hasQuestItems(player, FIRST_CIRCLE_HUNTER_LICENSE))
+					{
+						if (player.getLevel() < MAX_LEVEL)
+						{
+							htmltext = "30744-07.html";
+						}
+						else if (!hasQuestItems(player, TEST_INSTRUCTIONS_2))
+						{
+							htmltext = "30744-08.html";
+						}
+					}
+					
+					if (hasQuestItems(player, TEST_INSTRUCTIONS_2))
+					{
+						final long count = Arrays.asList(getQuestItemsCount(player, TIMAK_ORC_TOTEM) >= 20, getQuestItemsCount(player, TRISALIM_SILK) >= 20, getQuestItemsCount(player, AMBROSIUS_FRUIT) >= 30, getQuestItemsCount(player, BALEFIRE_CRYSTAL) >= 20, getQuestItemsCount(player, IMPERIAL_ARROWHEAD) >= 20, ((getQuestItemsCount(player, ATHUS_HEAD)
+							+ getQuestItemsCount(player, LANKAS_HEAD) + getQuestItemsCount(player, TRISKAS_HEAD) + getQuestItemsCount(player, MOTURAS_HEAD) + getQuestItemsCount(player, KALATHS_HEAD)) >= 5)).stream().filter(b -> b).count();
+						if (count < 3)
+						{
+							htmltext = "30744-11.html";
+						}
+						else
+						{
+							qs.setCond(3, true);
+							giveItems(player, SECOND_CIRCLE_HUNTER_LICENSE, 1);
+							takeItems(player, TRISALIM_SILK, -1);
+							takeItems(player, TIMAK_ORC_TOTEM, -1);
+							takeItems(player, AMBROSIUS_FRUIT, -1);
+							takeItems(player, BALEFIRE_CRYSTAL, -1);
+							takeItems(player, IMPERIAL_ARROWHEAD, -1);
+							takeItems(player, ATHUS_HEAD, -1);
+							takeItems(player, LANKAS_HEAD, -1);
+							takeItems(player, TRISKAS_HEAD, -1);
+							takeItems(player, MOTURAS_HEAD, -1);
+							takeItems(player, KALATHS_HEAD, -1);
+							takeItems(player, TEST_INSTRUCTIONS_2, -1);
+							takeItems(player, FIRST_CIRCLE_HUNTER_LICENSE, -1);
+							htmltext = "30744-12.html";
+						}
+					}
+					
+					if (hasQuestItems(player, SECOND_CIRCLE_HUNTER_LICENSE))
+					{
+						htmltext = "30744-14.html";
+					}
+					break;
+				}
+				case CYBELLIN:
+				{
+					if (!hasQuestItems(player, SECOND_CIRCLE_HUNTER_LICENSE) && !hasQuestItems(player, FIRST_CIRCLE_HUNTER_LICENSE))
+					{
+						htmltext = "30746-01.html";
+					}
+					else if (!hasQuestItems(player, CYBELLINS_REQUEST))
+					{
+						htmltext = "30746-02.html";
+					}
+					else if (hasQuestItems(player, BLOOD_CRYSTAL_PURITY_1))
+					{
+						htmltext = "30746-04.html";
+					}
+					else if (hasQuestItems(player, BLOOD_CRYSTAL_PURITY_2) || hasQuestItems(player, BLOOD_CRYSTAL_PURITY_3) || hasQuestItems(player, BLOOD_CRYSTAL_PURITY_4) || hasQuestItems(player, BLOOD_CRYSTAL_PURITY_5) || hasQuestItems(player, BLOOD_CRYSTAL_PURITY_6)
+						|| hasQuestItems(player, BLOOD_CRYSTAL_PURITY_7) || hasQuestItems(player, BLOOD_CRYSTAL_PURITY_8) || hasQuestItems(player, BLOOD_CRYSTAL_PURITY_9))
+					{
+						htmltext = "30746-05.html";
+					}
+					else if (hasQuestItems(player, BLOOD_CRYSTAL_PURITY_10))
+					{
+						giveAdena(player, 870400, true);
+						takeItems(player, BLOOD_CRYSTAL_PURITY_10, -1);
+						htmltext = "30746-05a.html";
+					}
+					else if (!hasQuestItems(player, BROKEN_BLOOD_CRYSTAL))
+					{
+						htmltext = "30746-08.html";
+					}
+					else
+					{
+						takeItems(player, BROKEN_BLOOD_CRYSTAL, -1);
+						htmltext = "30746-09.html";
+					}
+					break;
+				}
+				case TOR:
+				{
+					if (!hasQuestItems(player, SECOND_CIRCLE_HUNTER_LICENSE) && !hasQuestItems(player, FIRST_CIRCLE_HUNTER_LICENSE))
+					{
+						htmltext = "30745-01a.html";
+					}
+					else
+					{
+						final long requestCount = getQuestItemsCount(player, FIRST_CIRCLE_REQUEST_1C, FIRST_CIRCLE_REQUEST_2C, FIRST_CIRCLE_REQUEST_3C, FIRST_CIRCLE_REQUEST_4C, FIRST_CIRCLE_REQUEST_5C, FIRST_CIRCLE_REQUEST_6C, FIRST_CIRCLE_REQUEST_7C, FIRST_CIRCLE_REQUEST_8C, FIRST_CIRCLE_REQUEST_9C, FIRST_CIRCLE_REQUEST_10C, FIRST_CIRCLE_REQUEST_11C, FIRST_CIRCLE_REQUEST_12C, FIRST_CIRCLE_REQUEST_1B, FIRST_CIRCLE_REQUEST_2B, FIRST_CIRCLE_REQUEST_3B, FIRST_CIRCLE_REQUEST_4B, FIRST_CIRCLE_REQUEST_5B, FIRST_CIRCLE_REQUEST_6B, FIRST_CIRCLE_REQUEST_1A, FIRST_CIRCLE_REQUEST_2A, FIRST_CIRCLE_REQUEST_3A, SECOND_CIRCLE_REQUEST_1C, SECOND_CIRCLE_REQUEST_2C, SECOND_CIRCLE_REQUEST_3C, SECOND_CIRCLE_REQUEST_4C, SECOND_CIRCLE_REQUEST_5C, SECOND_CIRCLE_REQUEST_6C, SECOND_CIRCLE_REQUEST_7C, SECOND_CIRCLE_REQUEST_8C, SECOND_CIRCLE_REQUEST_9C, SECOND_CIRCLE_REQUEST_10C, SECOND_CIRCLE_REQUEST_11C, SECOND_CIRCLE_REQUEST_12C, SECOND_CIRCLE_REQUEST_1B, SECOND_CIRCLE_REQUEST_2B, SECOND_CIRCLE_REQUEST_3B, SECOND_CIRCLE_REQUEST_4B, SECOND_CIRCLE_REQUEST_5B, SECOND_CIRCLE_REQUEST_6B, SECOND_CIRCLE_REQUEST_1A, SECOND_CIRCLE_REQUEST_2A, SECOND_CIRCLE_REQUEST_3A);
+						if (hasQuestItems(player, FIRST_CIRCLE_HUNTER_LICENSE))
+						{
+							if (requestCount == 0)
+							{
+								if (player.getLevel() < MAX_LEVEL)
+								{
+									htmltext = "30745-01b.html";
+								}
+								else
+								{
+									if (hasQuestItems(player, SECOND_CIRCLE_HUNTER_LICENSE))
+									{
+										htmltext = "30745-03.html";
+									}
+									else
+									{
+										htmltext = "30745-03a.html";
+									}
+								}
+							}
+							else
+							{
+								htmltext = reward(player, qs, REWARDS);
+							}
+						}
+						else if (hasQuestItems(player, SECOND_CIRCLE_HUNTER_LICENSE))
+						{
+							if (requestCount == 0)
+							{
+								htmltext = "30745-03b.html";
+							}
+							else
+							{
+								htmltext = reward(player, qs, REWARDS);
+							}
+						}
+					}
+					break;
+				}
+			}
+		}
+		return htmltext;
+	}
+	
+	@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 "30744-03.htm":
+			{
+				qs.startQuest();
+				if (!hasQuestItems(player, TEST_INSTRUCTIONS_1))
+				{
+					giveItems(player, TEST_INSTRUCTIONS_1, 1);
+				}
+				qs.setMemoState(0);
+				htmltext = event;
+				break;
+			}
+			case "30744-04.html":
+			case "30744-04a.html":
+			case "30744-04b.html":
+			case "30744-04c.html":
+			case "30744-04d.html":
+			case "30744-04e.html":
+			case "30744-04f.html":
+			case "30744-07.html":
+			case "30744-07a.html":
+			case "30744-07b.html":
+			case "30744-08.html":
+			case "30744-08a.html":
+			case "30744-10.html":
+			case "30744-10a.html":
+			case "30744-10b.html":
+			case "30744-10c.html":
+			case "30744-10d.html":
+			case "30744-10e.html":
+			case "30744-10f.html":
+			case "30744-14.html":
+			case "30744-14a.html":
+			case "30744-15.html":
+			case "30744-18.html":
+			case "30745-09.html":
+			case "30746-03a.html":
+			case "30746-07.html":
+			case "30745-04.html":
+			case "30745-05a.html":
+			case "30745-05c.html":
+			{
+				htmltext = event;
+				break;
+			}
+			case "30744-09.html":
+			{
+				if ((getQuestItemsCount(player, FIRST_CIRCLE_REQUEST_1C) + getQuestItemsCount(player, FIRST_CIRCLE_REQUEST_2C) + getQuestItemsCount(player, FIRST_CIRCLE_REQUEST_3C) + //
+					getQuestItemsCount(player, FIRST_CIRCLE_REQUEST_4C) + getQuestItemsCount(player, FIRST_CIRCLE_REQUEST_4C) + getQuestItemsCount(player, FIRST_CIRCLE_REQUEST_6C) + //
+					getQuestItemsCount(player, FIRST_CIRCLE_REQUEST_7C) + getQuestItemsCount(player, FIRST_CIRCLE_REQUEST_8C) + getQuestItemsCount(player, FIRST_CIRCLE_REQUEST_9C) + //
+					getQuestItemsCount(player, FIRST_CIRCLE_REQUEST_10C) + getQuestItemsCount(player, FIRST_CIRCLE_REQUEST_11C) + getQuestItemsCount(player, FIRST_CIRCLE_REQUEST_12C) + //
+					getQuestItemsCount(player, FIRST_CIRCLE_REQUEST_1B) + getQuestItemsCount(player, FIRST_CIRCLE_REQUEST_2B) + getQuestItemsCount(player, FIRST_CIRCLE_REQUEST_3B) + //
+					getQuestItemsCount(player, FIRST_CIRCLE_REQUEST_4B) + getQuestItemsCount(player, FIRST_CIRCLE_REQUEST_5B) + getQuestItemsCount(player, FIRST_CIRCLE_REQUEST_6B) + //
+					getQuestItemsCount(player, FIRST_CIRCLE_REQUEST_1A) + getQuestItemsCount(player, FIRST_CIRCLE_REQUEST_2A) + getQuestItemsCount(player, FIRST_CIRCLE_REQUEST_3A)) == 0)
+				{
+					giveItems(player, TEST_INSTRUCTIONS_2, 1);
+					htmltext = event;
+				}
+				else
+				{
+					htmltext = "30744-09a.html";
+				}
+				break;
+			}
+			case "30744-16.html":
+			{
+				qs.exitQuest(true, true);
+				
+				takeItems(player, -1, FIRST_CIRCLE_HUNTER_LICENSE, SECOND_CIRCLE_HUNTER_LICENSE, LAUREL_LEAF_PIN, TEST_INSTRUCTIONS_1, TEST_INSTRUCTIONS_2, CYBELLINS_REQUEST, BLOOD_CRYSTAL_PURITY_1, BLOOD_CRYSTAL_PURITY_2, BLOOD_CRYSTAL_PURITY_3, BLOOD_CRYSTAL_PURITY_4, BLOOD_CRYSTAL_PURITY_5, BLOOD_CRYSTAL_PURITY_6, BLOOD_CRYSTAL_PURITY_7, BLOOD_CRYSTAL_PURITY_8, BLOOD_CRYSTAL_PURITY_9, BLOOD_CRYSTAL_PURITY_10, BROKEN_BLOOD_CRYSTAL, CYBELLINS_DAGGER, GUARDIAN_BASILISK_SCALE, KARUT_WEED, HAKAS_HEAD, JAKAS_HEAD, MARKAS_HEAD, WINDSUS_ALEPH_SKIN, INDIGO_SPIRIT_ORE, SPORESEA_SEED, TIMAK_ORC_TOTEM, TRISALIM_SILK, AMBROSIUS_FRUIT, BALEFIRE_CRYSTAL, IMPERIAL_ARROWHEAD, ATHUS_HEAD, LANKAS_HEAD, TRISKAS_HEAD, MOTURAS_HEAD, KALATHS_HEAD, FIRST_CIRCLE_REQUEST_1C, FIRST_CIRCLE_REQUEST_2C, FIRST_CIRCLE_REQUEST_3C, FIRST_CIRCLE_REQUEST_4C, FIRST_CIRCLE_REQUEST_5C, FIRST_CIRCLE_REQUEST_6C, FIRST_CIRCLE_REQUEST_7C, FIRST_CIRCLE_REQUEST_8C, FIRST_CIRCLE_REQUEST_9C, FIRST_CIRCLE_REQUEST_10C, FIRST_CIRCLE_REQUEST_11C, FIRST_CIRCLE_REQUEST_12C, FIRST_CIRCLE_REQUEST_1B, FIRST_CIRCLE_REQUEST_2B, FIRST_CIRCLE_REQUEST_3B, FIRST_CIRCLE_REQUEST_4B, FIRST_CIRCLE_REQUEST_5B, FIRST_CIRCLE_REQUEST_6B, FIRST_CIRCLE_REQUEST_1A, FIRST_CIRCLE_REQUEST_2A, FIRST_CIRCLE_REQUEST_3A, SECOND_CIRCLE_REQUEST_1C, SECOND_CIRCLE_REQUEST_2C, SECOND_CIRCLE_REQUEST_3C, SECOND_CIRCLE_REQUEST_4C, SECOND_CIRCLE_REQUEST_5C, SECOND_CIRCLE_REQUEST_6C, SECOND_CIRCLE_REQUEST_7C, SECOND_CIRCLE_REQUEST_8C, SECOND_CIRCLE_REQUEST_9C, SECOND_CIRCLE_REQUEST_10C, SECOND_CIRCLE_REQUEST_11C, SECOND_CIRCLE_REQUEST_12C, SECOND_CIRCLE_REQUEST_1B, SECOND_CIRCLE_REQUEST_2B, SECOND_CIRCLE_REQUEST_3B, SECOND_CIRCLE_REQUEST_4B, SECOND_CIRCLE_REQUEST_5B, SECOND_CIRCLE_REQUEST_6B, SECOND_CIRCLE_REQUEST_1A, SECOND_CIRCLE_REQUEST_2A, SECOND_CIRCLE_REQUEST_3A, CHARM_OF_KADESH, TIMAK_JADE_NECKLACE, ENCHANTED_GOLEM_SHARD, GIANT_MONSTER_EYE_MEAT, DIRE_WYRM_EGG, GUARDIAN_BASILISK_TALON, REVENANTS_CHAINS, WINDSUS_TUSK, GRANDISS_SKULL, TAIK_OBSIDIAN_AMULET, KARUL_BUGBEAR_HEAD, TAMLIN_IVORY_CHARM, FANG_OF_NARAK, ENCHANTED_GARGOYLES_HORN, COILED_SERPENT_TOTEM, TOTEM_OF_KADESH, KAIKIS_HEAD, KRONBE_VENOM_SAC, EVAS_CHARM, TITANS_TABLET, BOOK_OF_SHUNAIMAN, ROTTING_TREE_SPORES, TRISALIM_VENOM_SAC, TAIK_ORC_TOTEM, HARIT_BARBED_NECKLACE, COIN_OF_OLD_EMPIRE, SKIN_OF_FARCRAN, TEMPEST_SHARD, TSUNAMI_SHARD, SATYR_MANE, HAMADRYAD_SHARD, VANOR_SILENOS_MANE, TALK_BUGBEAR_TOTEM, OKUNS_HEAD, KAKRANS_HEAD, NARCISSUSS_SOULSTONE, DEPRIVE_EYE, UNICORNS_HORN, KERUNOSS_GOLD_MANE, SKULL_OF_EXECUTED, BUST_OF_TRAVIS, SWORD_OF_CADMUS);
+				
+				// TODO(Zoey76): This is dead code.
+				if (getQuestItemsCount(player, LAUREL_LEAF_PIN) < 20)
+				{
+					htmltext = event;
+				}
+				else
+				{
+					giveAdena(player, 20000, true);
+					htmltext = "30744-17.html";
+				}
+				break;
+			}
+			case "30745-02.html":
+			{
+				if (!hasQuestItems(player, TEST_INSTRUCTIONS_2))
+				{
+					htmltext = event;
+				}
+				else
+				{
+					htmltext = "30745-03.html";
+				}
+				break;
+			}
+			case "LIST_1":
+			{
+				int i0 = 0;
+				int i1 = 0;
+				int i2 = 0;
+				int i3 = 0;
+				int i4 = 0;
+				int i5 = 0;
+				
+				if (qs.isMemoState(0))
+				{
+					while ((i0 == i1) || (i1 == i2) || (i2 == i3) || (i3 == i4) || (i0 == i4) || (i0 == i2) || (i0 == i3) || (i1 == i3) || (i1 == i4) || (i2 == i4))
+					{
+						if (!hasQuestItems(player, LAUREL_LEAF_PIN))
+						{
+							i0 = getRandom(12);
+							i1 = getRandom(12);
+							i2 = getRandom(12);
+							i3 = getRandom(12);
+							i4 = getRandom(12);
+							qs.setMemoState((i0 * 32 * 32 * 32 * 32) + (i1 * 32 * 32 * 32) + (i2 * 32 * 32) + (i3 * 32 * 1) + (i4 * 1 * 1));
+						}
+						else if (getQuestItemsCount(player, LAUREL_LEAF_PIN) < 4)
+						{
+							if (getRandom(100) < 20)
+							{
+								i0 = getRandom(6) + 12;
+								i1 = getRandom(12);
+								i2 = getRandom(6);
+								i3 = getRandom(6) + 6;
+								i4 = getRandom(12);
+								qs.setMemoState((i0 * 32 * 32 * 32 * 32) + (i1 * 32 * 32 * 32) + (i2 * 32 * 32) + (i3 * 32 * 1) + (i4 * 1 * 1));
+							}
+							else
+							{
+								i0 = getRandom(12);
+								i1 = getRandom(12);
+								i2 = getRandom(12);
+								i3 = getRandom(12);
+								i4 = getRandom(12);
+								qs.setMemoState((i0 * 32 * 32 * 32 * 32) + (i1 * 32 * 32 * 32) + (i2 * 32 * 32) + (i3 * 32 * 1) + (i4 * 1 * 1));
+							}
+						}
+						else if (getRandom(100) < 20)
+						{
+							i0 = getRandom(6) + 12;
+							if (getRandom(20) == 0)
+							{
+								i1 = getRandom(2) + 18;
+							}
+							else
+							{
+								i1 = getRandom(12);
+							}
+							i2 = getRandom(6);
+							i3 = getRandom(6) + 6;
+							i4 = getRandom(12);
+							qs.setMemoState((i0 * 32 * 32 * 32 * 32) + (i1 * 32 * 32 * 32) + (i2 * 32 * 32) + (i3 * 32 * 1) + (i4 * 1 * 1));
+						}
+						else
+						{
+							i0 = getRandom(12);
+							if (getRandom(20) == 0)
+							{
+								i1 = getRandom(2) + 18;
+							}
+							else
+							{
+								i1 = getRandom(12);
+							}
+							i2 = getRandom(6);
+							i3 = getRandom(6) + 6;
+							i4 = getRandom(12);
+							qs.setMemoState((i0 * 32 * 32 * 32 * 32) + (i1 * 32 * 32 * 32) + (i2 * 32 * 32) + (i3 * 32 * 1) + (i4 * 1 * 1));
+						}
+					}
+					
+					i0 = 33520 + i0;
+					i1 = 33520 + i1;
+					i2 = 33520 + i2;
+					i3 = 33520 + i3;
+					i4 = 33520 + i4;
+					
+					htmltext = getHtml(player, "30745-16.html", i0, i1, i2, i3, i4);
+				}
+				else
+				{
+					i5 = qs.getMemoState();
+					i0 = i5 % 32;
+					i5 = i5 / 32;
+					i1 = i5 % 32;
+					i5 = i5 / 32;
+					i2 = i5 % 32;
+					i5 = i5 / 32;
+					i3 = i5 % 32;
+					i5 = i5 / 32;
+					i4 = i5 % 32;
+					i5 = i5 / 32;
+					i0 = 33520 + i0;
+					i1 = 33520 + i1;
+					i2 = 33520 + i2;
+					i3 = 33520 + i3;
+					i4 = 33520 + i4;
+					
+					htmltext = getHtml(player, "30745-16.html", i4, i3, i2, i1, i0);
+				}
+				break;
+			}
+			case "LIST_2":
+			{
+				int i0 = 0;
+				int i1 = 0;
+				int i2 = 0;
+				int i3 = 0;
+				int i4 = 0;
+				int i5 = 0;
+				
+				if (qs.isMemoState(0))
+				{
+					while ((i0 == i1) || (i1 == i2) || (i2 == i3) || (i3 == i4) || (i0 == i4) || (i0 == i2) || (i0 == i3) || (i1 == i3) || (i1 == i4) || (i2 == i4))
+					{
+						if (!hasQuestItems(player, LAUREL_LEAF_PIN))
+						{
+							i0 = getRandom(10);
+							i1 = getRandom(10);
+							i2 = getRandom(5);
+							i3 = getRandom(5) + 5;
+							i4 = getRandom(10);
+							qs.setMemoState((i0 * 32 * 32 * 32 * 32) + (i1 * 32 * 32 * 32) + (i2 * 32 * 32) + (i3 * 32 * 1) + (i4 * 1 * 1));
+						}
+						else if (getQuestItemsCount(player, LAUREL_LEAF_PIN) < 4)
+						{
+							if (getRandom(100) < 20)
+							{
+								i0 = getRandom(6) + 10;
+								i1 = getRandom(10);
+								i2 = getRandom(5);
+								i3 = getRandom(5) + 5;
+								i4 = getRandom(10);
+								qs.setMemoState((i0 * 32 * 32 * 32 * 32) + (i1 * 32 * 32 * 32) + (i2 * 32 * 32) + (i3 * 32 * 1) + (i4 * 1 * 1));
+							}
+							else
+							{
+								i0 = getRandom(10);
+								i1 = getRandom(10);
+								i2 = getRandom(5);
+								i3 = getRandom(5) + 5;
+								i4 = getRandom(10);
+								qs.setMemoState((i0 * 32 * 32 * 32 * 32) + (i1 * 32 * 32 * 32) + (i2 * 32 * 32) + (i3 * 32 * 1) + (i4 * 1 * 1));
+							}
+						}
+						else if (getRandom(100) < 20)
+						{
+							i0 = getRandom(6) + 10;
+							if (getRandom(20) == 0)
+							{
+								i1 = getRandom(3) + 16;
+							}
+							else
+							{
+								i1 = getRandom(10);
+							}
+							i2 = getRandom(5);
+							i3 = getRandom(5) + 5;
+							i4 = getRandom(10);
+							qs.setMemoState((i0 * 32 * 32 * 32 * 32) + (i1 * 32 * 32 * 32) + (i2 * 32 * 32) + (i3 * 32 * 1) + (i4 * 1 * 1));
+						}
+						else
+						{
+							i0 = getRandom(10);
+							if (getRandom(20) == 0)
+							{
+								i1 = getRandom(3) + 16;
+							}
+							else
+							{
+								i1 = getRandom(10);
+							}
+							i2 = getRandom(5);
+							i3 = getRandom(5) + 5;
+							i4 = getRandom(10);
+							qs.setMemoState((i0 * 32 * 32 * 32 * 32) + (i1 * 32 * 32 * 32) + (i2 * 32 * 32) + (i3 * 32 * 1) + (i4 * 1 * 1));
+						}
+					}
+					
+					i0 = 33520 + (i0 + 20);
+					i1 = 33520 + (i1 + 20);
+					i2 = 33520 + (i2 + 20);
+					i3 = 33520 + (i3 + 20);
+					i4 = 33520 + (i4 + 20);
+					
+					htmltext = getHtml(player, "30745-16.html", i0, i1, i2, i3, i4);
+				}
+				else
+				{
+					i5 = qs.getMemoState();
+					i0 = i5 % 32;
+					i5 = i5 / 32;
+					i1 = i5 % 32;
+					i5 = i5 / 32;
+					i2 = i5 % 32;
+					i5 = i5 / 32;
+					i3 = i5 % 32;
+					i5 = i5 / 32;
+					i4 = i5 % 32;
+					i5 = i5 / 32;
+					i0 = 33520 + (i0 + 20);
+					i1 = 33520 + (i1 + 20);
+					i2 = 33520 + (i2 + 20);
+					i3 = 33520 + (i3 + 20);
+					i4 = 33520 + (i4 + 20);
+					
+					htmltext = getHtml(player, "30745-16.html", i4, i3, i2, i1, i0);
+				}
+				break;
+			}
+			case "30746-03.html":
+			{
+				if (!hasQuestItems(player, CYBELLINS_DAGGER))
+				{
+					giveItems(player, CYBELLINS_DAGGER, 1);
+				}
+				if (getQuestItemsCount(player, CYBELLINS_REQUEST) == 0)
+				{
+					giveItems(player, CYBELLINS_REQUEST, 1);
+				}
+				giveItems(player, BLOOD_CRYSTAL_PURITY_1, 1);
+				if (hasQuestItems(player, BROKEN_BLOOD_CRYSTAL))
+				{
+					takeItems(player, BROKEN_BLOOD_CRYSTAL, -1);
+				}
+				htmltext = event;
+				break;
+			}
+			case "30746-06.html":
+			{
+				if (hasQuestItems(player, BLOOD_CRYSTAL_PURITY_2))
+				{
+					giveAdena(player, 3400, true);
+				}
+				else if (hasQuestItems(player, BLOOD_CRYSTAL_PURITY_3))
+				{
+					giveAdena(player, 6800, true);
+				}
+				else if (hasQuestItems(player, BLOOD_CRYSTAL_PURITY_4))
+				{
+					giveAdena(player, 13600, true);
+				}
+				else if (hasQuestItems(player, BLOOD_CRYSTAL_PURITY_5))
+				{
+					giveAdena(player, 27200, true);
+				}
+				else if (hasQuestItems(player, BLOOD_CRYSTAL_PURITY_6))
+				{
+					giveAdena(player, 54400, true);
+				}
+				else if (hasQuestItems(player, BLOOD_CRYSTAL_PURITY_7))
+				{
+					giveAdena(player, 108800, true);
+				}
+				else if (hasQuestItems(player, BLOOD_CRYSTAL_PURITY_8))
+				{
+					giveAdena(player, 217600, true);
+				}
+				else if (hasQuestItems(player, BLOOD_CRYSTAL_PURITY_9))
+				{
+					giveAdena(player, 435200, true);
+				}
+				else if (hasQuestItems(player, BLOOD_CRYSTAL_PURITY_10))
+				{
+					giveAdena(player, 870400, true);
+				}
+				takeItems(player, BLOOD_CRYSTAL_PURITY_2, -1);
+				takeItems(player, BLOOD_CRYSTAL_PURITY_3, -1);
+				takeItems(player, BLOOD_CRYSTAL_PURITY_4, -1);
+				takeItems(player, BLOOD_CRYSTAL_PURITY_5, -1);
+				takeItems(player, BLOOD_CRYSTAL_PURITY_6, -1);
+				takeItems(player, BLOOD_CRYSTAL_PURITY_7, -1);
+				takeItems(player, BLOOD_CRYSTAL_PURITY_8, -1);
+				takeItems(player, BLOOD_CRYSTAL_PURITY_9, -1);
+				takeItems(player, BLOOD_CRYSTAL_PURITY_10, -1);
+				htmltext = event;
+				break;
+			}
+			case "30746-10.html":
+			{
+				takeItems(player, BLOOD_CRYSTAL_PURITY_1, -1);
+				takeItems(player, CYBELLINS_DAGGER, -1);
+				takeItems(player, CYBELLINS_REQUEST, -1);
+				htmltext = event;
+				break;
+			}
+			case "30745-05b.html":
+			{
+				htmltext = event;
+				if (hasQuestItems(player, LAUREL_LEAF_PIN))
+				{
+					takeItems(player, LAUREL_LEAF_PIN, 1);
+				}
+				
+				takeItems(player, -1, FIRST_CIRCLE_REQUEST_1C, FIRST_CIRCLE_REQUEST_2C, FIRST_CIRCLE_REQUEST_3C, FIRST_CIRCLE_REQUEST_4C, FIRST_CIRCLE_REQUEST_5C, FIRST_CIRCLE_REQUEST_6C, FIRST_CIRCLE_REQUEST_7C, FIRST_CIRCLE_REQUEST_8C, FIRST_CIRCLE_REQUEST_9C, FIRST_CIRCLE_REQUEST_10C, FIRST_CIRCLE_REQUEST_11C, FIRST_CIRCLE_REQUEST_12C);
+				takeItems(player, -1, FIRST_CIRCLE_REQUEST_1B, FIRST_CIRCLE_REQUEST_2B, FIRST_CIRCLE_REQUEST_3B, FIRST_CIRCLE_REQUEST_4B, FIRST_CIRCLE_REQUEST_5B, FIRST_CIRCLE_REQUEST_6B);
+				takeItems(player, -1, FIRST_CIRCLE_REQUEST_1A, FIRST_CIRCLE_REQUEST_2A, FIRST_CIRCLE_REQUEST_3A);
+				takeItems(player, -1, SECOND_CIRCLE_REQUEST_1C, SECOND_CIRCLE_REQUEST_2C, SECOND_CIRCLE_REQUEST_3C, SECOND_CIRCLE_REQUEST_4C, SECOND_CIRCLE_REQUEST_5C, SECOND_CIRCLE_REQUEST_6C, SECOND_CIRCLE_REQUEST_7C, SECOND_CIRCLE_REQUEST_8C, SECOND_CIRCLE_REQUEST_9C, SECOND_CIRCLE_REQUEST_10C, SECOND_CIRCLE_REQUEST_11C, SECOND_CIRCLE_REQUEST_12C);
+				takeItems(player, -1, SECOND_CIRCLE_REQUEST_1B, SECOND_CIRCLE_REQUEST_2B, SECOND_CIRCLE_REQUEST_3B, SECOND_CIRCLE_REQUEST_4B, SECOND_CIRCLE_REQUEST_5B, SECOND_CIRCLE_REQUEST_6B);
+				takeItems(player, -1, SECOND_CIRCLE_REQUEST_1A, SECOND_CIRCLE_REQUEST_2A, SECOND_CIRCLE_REQUEST_3A);
+				takeItems(player, -1, CHARM_OF_KADESH, TIMAK_JADE_NECKLACE, ENCHANTED_GOLEM_SHARD, GIANT_MONSTER_EYE_MEAT, DIRE_WYRM_EGG, GUARDIAN_BASILISK_TALON);
+				takeItems(player, -1, REVENANTS_CHAINS, WINDSUS_TUSK, GRANDISS_SKULL, TAIK_OBSIDIAN_AMULET, KARUL_BUGBEAR_HEAD, TAMLIN_IVORY_CHARM);
+				takeItems(player, -1, FANG_OF_NARAK, ENCHANTED_GARGOYLES_HORN, COILED_SERPENT_TOTEM, TOTEM_OF_KADESH, KAIKIS_HEAD, KRONBE_VENOM_SAC);
+				takeItems(player, -1, EVAS_CHARM, TITANS_TABLET, BOOK_OF_SHUNAIMAN, ROTTING_TREE_SPORES, TRISALIM_VENOM_SAC, TAIK_ORC_TOTEM);
+				takeItems(player, -1, HARIT_BARBED_NECKLACE, COIN_OF_OLD_EMPIRE, SKIN_OF_FARCRAN, TEMPEST_SHARD, TSUNAMI_SHARD, SATYR_MANE);
+				takeItems(player, -1, HAMADRYAD_SHARD, VANOR_SILENOS_MANE, TALK_BUGBEAR_TOTEM, OKUNS_HEAD, KAKRANS_HEAD, NARCISSUSS_SOULSTONE);
+				takeItems(player, -1, DEPRIVE_EYE, UNICORNS_HORN, KERUNOSS_GOLD_MANE, SKULL_OF_EXECUTED, BUST_OF_TRAVIS, SWORD_OF_CADMUS);
+				break;
+			}
+			case "30745-10a.html":
+			{
+				giveItems(player, FIRST_CIRCLE_REQUEST_1C, 1);
+				htmltext = event;
+				break;
+			}
+			case "30745-10b.html":
+			{
+				giveItems(player, FIRST_CIRCLE_REQUEST_2C, 1);
+				htmltext = event;
+				break;
+			}
+			case "30745-10c.html":
+			{
+				giveItems(player, FIRST_CIRCLE_REQUEST_3C, 1);
+				htmltext = event;
+				break;
+			}
+			case "30745-10d.html":
+			{
+				giveItems(player, FIRST_CIRCLE_REQUEST_4C, 1);
+				htmltext = event;
+				break;
+			}
+			case "30745-10e.html":
+			{
+				giveItems(player, FIRST_CIRCLE_REQUEST_5C, 1);
+				htmltext = event;
+				break;
+			}
+			case "30745-10f.html":
+			{
+				giveItems(player, FIRST_CIRCLE_REQUEST_6C, 1);
+				htmltext = event;
+				break;
+			}
+			case "30745-10g.html":
+			{
+				giveItems(player, FIRST_CIRCLE_REQUEST_7C, 1);
+				htmltext = event;
+				break;
+			}
+			case "30745-10h.html":
+			{
+				giveItems(player, FIRST_CIRCLE_REQUEST_8C, 1);
+				htmltext = event;
+				break;
+			}
+			case "30745-10i.html":
+			{
+				giveItems(player, FIRST_CIRCLE_REQUEST_9C, 1);
+				htmltext = event;
+				break;
+			}
+			case "30745-10j.html":
+			{
+				giveItems(player, FIRST_CIRCLE_REQUEST_10C, 1);
+				htmltext = event;
+				break;
+			}
+			case "30745-10k.html":
+			{
+				giveItems(player, FIRST_CIRCLE_REQUEST_11C, 1);
+				htmltext = event;
+				break;
+			}
+			case "30745-10l.html":
+			{
+				giveItems(player, FIRST_CIRCLE_REQUEST_12C, 1);
+				htmltext = event;
+				break;
+			}
+			case "30745-11a.html":
+			{
+				giveItems(player, FIRST_CIRCLE_REQUEST_1B, 1);
+				htmltext = event;
+				break;
+			}
+			case "30745-11b.html":
+			{
+				giveItems(player, FIRST_CIRCLE_REQUEST_2B, 1);
+				htmltext = event;
+				break;
+			}
+			case "30745-11c.html":
+			{
+				giveItems(player, FIRST_CIRCLE_REQUEST_3B, 1);
+				htmltext = event;
+				break;
+			}
+			case "30745-11d.html":
+			{
+				giveItems(player, FIRST_CIRCLE_REQUEST_4B, 1);
+				htmltext = event;
+				break;
+			}
+			case "30745-11e.html":
+			{
+				giveItems(player, FIRST_CIRCLE_REQUEST_5B, 1);
+				htmltext = event;
+				break;
+			}
+			case "30745-11f.html":
+			{
+				giveItems(player, FIRST_CIRCLE_REQUEST_6B, 1);
+				htmltext = event;
+				break;
+			}
+			case "30745-12a.html":
+			{
+				giveItems(player, FIRST_CIRCLE_REQUEST_1A, 1);
+				htmltext = event;
+				break;
+			}
+			case "30745-12b.html":
+			{
+				giveItems(player, FIRST_CIRCLE_REQUEST_2A, 1);
+				htmltext = event;
+				break;
+			}
+			case "30745-12c.html":
+			{
+				giveItems(player, FIRST_CIRCLE_REQUEST_3A, 1);
+				htmltext = event;
+				break;
+			}
+			case "30745-13a.html":
+			{
+				giveItems(player, SECOND_CIRCLE_REQUEST_1C, 1);
+				htmltext = event;
+				break;
+			}
+			case "30745-13b.html":
+			{
+				giveItems(player, SECOND_CIRCLE_REQUEST_2C, 1);
+				htmltext = event;
+				break;
+			}
+			case "30745-13c.html":
+			{
+				giveItems(player, SECOND_CIRCLE_REQUEST_3C, 1);
+				htmltext = event;
+				break;
+			}
+			case "30745-13d.html":
+			{
+				giveItems(player, SECOND_CIRCLE_REQUEST_4C, 1);
+				htmltext = event;
+				break;
+			}
+			case "30745-13e.html":
+			{
+				giveItems(player, SECOND_CIRCLE_REQUEST_5C, 1);
+				htmltext = event;
+				break;
+			}
+			case "30745-13f.html":
+			{
+				giveItems(player, SECOND_CIRCLE_REQUEST_6C, 1);
+				htmltext = event;
+				break;
+			}
+			case "30745-13g.html":
+			{
+				giveItems(player, SECOND_CIRCLE_REQUEST_7C, 1);
+				htmltext = event;
+				break;
+			}
+			case "30745-13k.html":
+			{
+				giveItems(player, SECOND_CIRCLE_REQUEST_11C, 1);
+				htmltext = event;
+				break;
+			}
+			case "30745-13i.html":
+			{
+				giveItems(player, SECOND_CIRCLE_REQUEST_9C, 1);
+				htmltext = event;
+				break;
+			}
+			case "30745-13j.html":
+			{
+				giveItems(player, SECOND_CIRCLE_REQUEST_10C, 1);
+				htmltext = event;
+				break;
+			}
+			case "30745-13l.html":
+			{
+				giveItems(player, SECOND_CIRCLE_REQUEST_12C, 1);
+				htmltext = event;
+				break;
+			}
+			case "30745-14a.html":
+			{
+				giveItems(player, SECOND_CIRCLE_REQUEST_1B, 1);
+				htmltext = event;
+				break;
+			}
+			case "30745-14b.html":
+			{
+				giveItems(player, SECOND_CIRCLE_REQUEST_2B, 1);
+				htmltext = event;
+				break;
+			}
+			case "30745-14c.html":
+			{
+				giveItems(player, SECOND_CIRCLE_REQUEST_3B, 1);
+				htmltext = event;
+				break;
+			}
+			case "30745-14d.html":
+			{
+				giveItems(player, SECOND_CIRCLE_REQUEST_4B, 1);
+				htmltext = event;
+				break;
+			}
+			case "30745-14e.html":
+			{
+				giveItems(player, SECOND_CIRCLE_REQUEST_5B, 1);
+				htmltext = event;
+				break;
+			}
+			case "30745-14f.html":
+			{
+				giveItems(player, SECOND_CIRCLE_REQUEST_6B, 1);
+				htmltext = event;
+				break;
+			}
+		}
+		return htmltext;
+	}
+	
+	@Override
+	public String onKill(L2Npc npc, L2PcInstance player, boolean isSummon)
+	{
+		final QuestState qs = getRandomPartyMemberState(player, -1, 3, npc);
+		if (qs != null)
+		{
+			for (int i = DROPLIST.length - 1; i >= 0; i--)
+			{
+				final int[] droplist = DROPLIST[i];
+				if (npc.getId() == droplist[0])
+				{
+					if (hasQuestItems(qs.getPlayer(), droplist[1]) && giveItemRandomly(qs.getPlayer(), npc, droplist[2], droplist[3], droplist[4], droplist[5] / 100d, true))
+					{
+						playSound(player, Sound.ITEMSOUND_QUEST_MIDDLE);
+					}
+				}
+			}
+			
+			switch (npc.getId())
+			{
+				case BREKA_ORC_WARRIOR:
+				{
+					if (hasQuestItems(qs.getPlayer(), TEST_INSTRUCTIONS_1) && ((getQuestItemsCount(qs.getPlayer(), HAKAS_HEAD) + getQuestItemsCount(qs.getPlayer(), JAKAS_HEAD) + getQuestItemsCount(qs.getPlayer(), MARKAS_HEAD)) < 3))
+					{
+						if (getRandom(10) < 2)
+						{
+							if (!hasQuestItems(qs.getPlayer(), HAKAS_HEAD))
+							{
+								addSpawn(BREKA_OVERLORD_HAKA, npc.getX(), npc.getY(), npc.getZ() + 10, npc.getHeading(), false, 0, true);
+							}
+							else if (!hasQuestItems(qs.getPlayer(), JAKAS_HEAD))
+							{
+								addSpawn(BREKA_OVERLORD_JAKA, npc.getX(), npc.getY(), npc.getZ() + 10, npc.getHeading(), false, 0, true);
+							}
+							else if (!hasQuestItems(qs.getPlayer(), MARKAS_HEAD))
+							{
+								addSpawn(BREKA_OVERLORD_MARKA, npc.getX(), npc.getY(), npc.getZ() + 10, npc.getHeading(), false, 0, true);
+							}
+						}
+					}
+					break;
+				}
+				case WINDSUS:
+				{
+					if (hasQuestItems(qs.getPlayer(), TEST_INSTRUCTIONS_1) && !hasQuestItems(qs.getPlayer(), WINDSUS_ALEPH_SKIN) && (getRandom(10) < 2))
+					{
+						addSpawn(WINDSUS_ALEPH, npc.getX(), npc.getY(), npc.getZ() + 10, npc.getHeading(), false, 0, true);
+					}
+					break;
+				}
+				case GRANDIS:
+				{
+					if (hasQuestItems(qs.getPlayer(), FIRST_CIRCLE_REQUEST_2A) && !hasQuestItems(qs.getPlayer(), TITANS_TABLET) && (getRandom(10) < 2))
+					{
+						addSpawn(GOK_MAGOK, npc.getX(), npc.getY(), npc.getZ() + 10, npc.getHeading(), false, 0, true);
+					}
+					break;
+				}
+				case TARLK_BUGBEAR_WARRIOR:
+				{
+					if (hasQuestItems(qs.getPlayer(), TEST_INSTRUCTIONS_2)
+						&& ((getQuestItemsCount(qs.getPlayer(), ATHUS_HEAD) + getQuestItemsCount(qs.getPlayer(), LANKAS_HEAD) + getQuestItemsCount(qs.getPlayer(), TRISKAS_HEAD) + getQuestItemsCount(qs.getPlayer(), MOTURAS_HEAD) + getQuestItemsCount(qs.getPlayer(), KALATHS_HEAD)) < 5))
+					{
+						if (getRandom(10) < 2)
+						{
+							if (!hasQuestItems(qs.getPlayer(), ATHUS_HEAD))
+							{
+								addSpawn(TARLK_RAIDER_ATHU, npc.getX(), npc.getY(), npc.getZ() + 10, npc.getHeading(), false, 0, true);
+							}
+							else if (!hasQuestItems(qs.getPlayer(), LANKAS_HEAD))
+							{
+								addSpawn(TARLK_RAIDER_LANKA, npc.getX(), npc.getY(), npc.getZ() + 10, npc.getHeading(), false, 0, true);
+							}
+							else if (!hasQuestItems(qs.getPlayer(), TRISKAS_HEAD))
+							{
+								addSpawn(TARLK_RAIDER_TRISKA, npc.getX(), npc.getY(), npc.getZ() + 10, npc.getHeading(), false, 0, true);
+							}
+							else if (!hasQuestItems(qs.getPlayer(), MOTURAS_HEAD))
+							{
+								addSpawn(TARLK_RAIDER_MOTURA, npc.getX(), npc.getY(), npc.getZ() + 10, npc.getHeading(), false, 0, true);
+							}
+							else if (!hasQuestItems(qs.getPlayer(), KALATHS_HEAD))
+							{
+								addSpawn(TARLK_RAIDER_KALATH, npc.getX(), npc.getY(), npc.getZ() + 10, npc.getHeading(), false, 0, true);
+							}
+						}
+					}
+					break;
+				}
+				case LETO_LIZARDMAN_SHAMAN:
+				{
+					if (hasQuestItems(qs.getPlayer(), FIRST_CIRCLE_REQUEST_4B) && !hasQuestItems(qs.getPlayer(), TOTEM_OF_KADESH) && (getRandom(10) < 2))
+					{
+						addSpawn(LETO_SHAMAN_KETZ, npc.getX(), npc.getY(), npc.getZ() + 10, npc.getHeading(), false, 0, true);
+					}
+					
+					evolveBloodCrystal(qs.getPlayer());
+					break;
+				}
+				case LETO_LIZARDMAN_OVERLORD:
+				{
+					if (hasQuestItems(qs.getPlayer(), FIRST_CIRCLE_REQUEST_1B) && !hasQuestItems(qs.getPlayer(), FANG_OF_NARAK) && (getRandom(10) < 2))
+					{
+						addSpawn(LETO_CHIEF_NARAK, npc.getX(), npc.getY(), npc.getZ() + 10, npc.getHeading(), false, 0, true);
+					}
+					
+					evolveBloodCrystal(qs.getPlayer());
+					break;
+				}
+				case TIMAK_ORC_WARRIOR:
+				{
+					if (hasQuestItems(qs.getPlayer(), FIRST_CIRCLE_REQUEST_5B) && !hasQuestItems(qs.getPlayer(), KAIKIS_HEAD) && (getRandom(10) < 2))
+					{
+						addSpawn(TIMAK_RAIDER_KAIKEE, npc.getX(), npc.getY(), npc.getZ() + 10, npc.getHeading(), false, 0, true);
+					}
+					break;
+				}
+				case TIMAK_ORC_OVERLORD:
+				{
+					if (hasQuestItems(qs.getPlayer(), SECOND_CIRCLE_REQUEST_1B) && !hasQuestItems(qs.getPlayer(), OKUNS_HEAD) && (getRandom(10) == 0))
+					{
+						addSpawn(TIMAK_OVERLORD_OKUN, npc.getX(), npc.getY(), npc.getZ() + 10, npc.getHeading(), false, 0, true);
+					}
+					break;
+				}
+				case FLINE:
+				case LIELE:
+				{
+					if (hasQuestItems(qs.getPlayer(), SECOND_CIRCLE_REQUEST_7C) && (getQuestItemsCount(qs.getPlayer(), TEMPEST_SHARD) < 40) && (getRandom(20) < 2))
+					{
+						addSpawn(GREMLIN_FILCHER, npc.getX(), npc.getY(), npc.getZ() + 10, npc.getHeading(), false, 0, true);
+						npc.broadcastPacket(new CreatureSay(npc.getObjectId(), Say2.NPC_ALL, npc.getName(), NpcStringId.SHOW_ME_THE_PRETTY_SPARKLING_THINGS_THEYRE_ALL_MINE));
+					}
+					break;
+				}
+				case FOREST_RUNNER:
+				{
+					if (hasQuestItems(qs.getPlayer(), SECOND_CIRCLE_REQUEST_10C) && (getQuestItemsCount(qs.getPlayer(), HAMADRYAD_SHARD) < 40) && (getRandom(20) < 2))
+					{
+						addSpawn(GREMLIN_FILCHER, npc.getX(), npc.getY(), npc.getZ() + 10, npc.getHeading(), false, 0, true);
+						npc.broadcastPacket(new CreatureSay(npc.getObjectId(), Say2.NPC_ALL, npc.getName(), NpcStringId.SHOW_ME_THE_PRETTY_SPARKLING_THINGS_THEYRE_ALL_MINE));
+					}
+					break;
+				}
+				case KARUL_BUGBEAR:
+				{
+					if (hasQuestItems(qs.getPlayer(), FIRST_CIRCLE_REQUEST_3A) && !hasQuestItems(qs.getPlayer(), BOOK_OF_SHUNAIMAN) && (getRandom(10) < 2))
+					{
+						addSpawn(KARUL_CHIEF_OROOTO, npc.getX(), npc.getY(), npc.getZ() + 10, npc.getHeading(), false, 0, true);
+					}
+					break;
+				}
+				case TAIK_ORC_CAPTAIN:
+				{
+					if (hasQuestItems(qs.getPlayer(), SECOND_CIRCLE_REQUEST_2B) && !hasQuestItems(qs.getPlayer(), KAKRANS_HEAD) && (getRandom(10) < 2))
+					{
+						addSpawn(TAIK_OVERLORD_KAKRAN, npc.getX(), npc.getY(), npc.getZ() + 10, npc.getHeading(), false, 0, true);
+					}
+					break;
+				}
+				case MIRROR:
+				{
+					if (hasQuestItems(qs.getPlayer(), SECOND_CIRCLE_REQUEST_3B) && (getQuestItemsCount(qs.getPlayer(), NARCISSUSS_SOULSTONE) < 40) && (getRandom(20) < 2))
+					{
+						addSpawn(GREMLIN_FILCHER, npc.getX(), npc.getY(), npc.getZ() + 10, npc.getHeading(), false, 0, true);
+						npc.broadcastPacket(new CreatureSay(npc.getObjectId(), Say2.NPC_ALL, npc.getName(), NpcStringId.SHOW_ME_THE_PRETTY_SPARKLING_THINGS_THEYRE_ALL_MINE));
+					}
+					break;
+				}
+				case HATAR_RATMAN_THIEF:
+				{
+					if (hasQuestItems(qs.getPlayer(), SECOND_CIRCLE_REQUEST_5C) && (getQuestItemsCount(qs.getPlayer(), COIN_OF_OLD_EMPIRE) < 20) && (getRandom(20) < 2))
+					{
+						addSpawn(GREMLIN_FILCHER, npc.getX(), npc.getY(), npc.getZ() + 10, npc.getHeading(), false, 0, true);
+						npc.broadcastPacket(new CreatureSay(npc.getObjectId(), Say2.NPC_ALL, npc.getName(), NpcStringId.SHOW_ME_THE_PRETTY_SPARKLING_THINGS_THEYRE_ALL_MINE));
+					}
+					break;
+				}
+				case HATAR_RATMAN_BOSS:
+				{
+					if (hasQuestItems(qs.getPlayer(), SECOND_CIRCLE_REQUEST_5C) && (getQuestItemsCount(qs.getPlayer(), COIN_OF_OLD_EMPIRE) < 20) && (getRandom(20) < 2))
+					{
+						addSpawn(GREMLIN_FILCHER, npc.getX(), npc.getY(), npc.getZ() + 10, npc.getHeading(), false, 0, true);
+						npc.broadcastPacket(new CreatureSay(npc.getObjectId(), Say2.NPC_ALL, npc.getName(), NpcStringId.SHOW_ME_THE_PRETTY_SPARKLING_THINGS_THEYRE_ALL_MINE));
+					}
+					
+					if (hasQuestItems(qs.getPlayer(), SECOND_CIRCLE_REQUEST_2A) && !hasQuestItems(qs.getPlayer(), BUST_OF_TRAVIS) && (getRandom(10) < 2))
+					{
+						addSpawn(HATAR_CHIEFTAIN_KUBEL, npc.getX(), npc.getY(), npc.getZ() + 10, npc.getHeading(), false, 0, true);
+					}
+					break;
+				}
+				case VANOR_SILENOS_CHIEFTAIN:
+				{
+					if (hasQuestItems(qs.getPlayer(), SECOND_CIRCLE_REQUEST_6B) && !hasQuestItems(qs.getPlayer(), KERUNOSS_GOLD_MANE) && (getRandom(10) < 2))
+					{
+						addSpawn(VANOR_ELDER_KERUNOS, npc.getX(), npc.getY(), npc.getZ() + 10, npc.getHeading(), false, 0, true);
+					}
+					break;
+				}
+				case GREMLIN_FILCHER:
+				{
+					if (hasQuestItems(qs.getPlayer(), SECOND_CIRCLE_REQUEST_7C) && (getQuestItemsCount(qs.getPlayer(), TEMPEST_SHARD) < 40))
+					{
+						if (giveItemRandomly(qs.getPlayer(), npc, TEMPEST_SHARD, 5, 40, 1.0, true))
+						{
+							playSound(player, Sound.ITEMSOUND_QUEST_MIDDLE);
+						}
+						
+						npc.broadcastPacket(new CreatureSay(npc.getObjectId(), Say2.NPC_ALL, npc.getName(), NpcStringId.PRETTY_GOOD));
+					}
+					
+					if (hasQuestItems(qs.getPlayer(), SECOND_CIRCLE_REQUEST_8C) && (getQuestItemsCount(qs.getPlayer(), TSUNAMI_SHARD) < 40))
+					{
+						if (giveItemRandomly(qs.getPlayer(), npc, TSUNAMI_SHARD, 5, 40, 1.0, true))
+						{
+							playSound(player, Sound.ITEMSOUND_QUEST_MIDDLE);
+						}
+						
+						npc.broadcastPacket(new CreatureSay(npc.getObjectId(), Say2.NPC_ALL, npc.getName(), NpcStringId.PRETTY_GOOD));
+					}
+					
+					if (hasQuestItems(qs.getPlayer(), SECOND_CIRCLE_REQUEST_10C) && (getQuestItemsCount(qs.getPlayer(), HAMADRYAD_SHARD) < 40))
+					{
+						if (giveItemRandomly(qs.getPlayer(), npc, HAMADRYAD_SHARD, 5, 40, 1.0, true))
+						{
+							playSound(player, Sound.ITEMSOUND_QUEST_MIDDLE);
+						}
+						
+						npc.broadcastPacket(new CreatureSay(npc.getObjectId(), Say2.NPC_ALL, npc.getName(), NpcStringId.PRETTY_GOOD));
+					}
+					
+					if (hasQuestItems(qs.getPlayer(), SECOND_CIRCLE_REQUEST_3B) && (getQuestItemsCount(qs.getPlayer(), NARCISSUSS_SOULSTONE) < 40))
+					{
+						if (giveItemRandomly(qs.getPlayer(), npc, NARCISSUSS_SOULSTONE, 5, 40, 1.0, true))
+						{
+							playSound(player, Sound.ITEMSOUND_QUEST_MIDDLE);
+						}
+						
+						npc.broadcastPacket(new CreatureSay(npc.getObjectId(), Say2.NPC_ALL, npc.getName(), NpcStringId.PRETTY_GOOD));
+					}
+					
+					if (hasQuestItems(qs.getPlayer(), SECOND_CIRCLE_REQUEST_5C) && (getQuestItemsCount(qs.getPlayer(), COIN_OF_OLD_EMPIRE) < 20))
+					{
+						if (giveItemRandomly(qs.getPlayer(), npc, COIN_OF_OLD_EMPIRE, 3, 20, 1.0, true))
+						{
+							playSound(player, Sound.ITEMSOUND_QUEST_MIDDLE);
+						}
+						
+						npc.broadcastPacket(new CreatureSay(npc.getObjectId(), Say2.NPC_ALL, npc.getName(), NpcStringId.PRETTY_GOOD));
+					}
+					break;
+				}
+				case GOK_MAGOK:
+				{
+					if (hasQuestItems(qs.getPlayer(), FIRST_CIRCLE_REQUEST_2A) && !hasQuestItems(qs.getPlayer(), TITANS_TABLET) && (getRandom(2) == 0))
+					{
+						addSpawn(BLACK_LEGION_STORMTROOPER, npc.getX(), npc.getY(), npc.getZ() + 10, npc.getHeading(), false, 0, true);
+						addSpawn(BLACK_LEGION_STORMTROOPER, npc.getX(), npc.getY(), npc.getZ() + 10, npc.getHeading(), false, 0, true);
+						npc.broadcastPacket(new CreatureSay(npc.getObjectId(), Say2.NPC_ALL, npc.getName(), NpcStringId.WELL_TAKE_THE_PROPERTY_OF_THE_ANCIENT_EMPIRE));
+					}
+					break;
+				}
+				case HATAR_CHIEFTAIN_KUBEL:
+				{
+					if (hasQuestItems(qs.getPlayer(), SECOND_CIRCLE_REQUEST_2A) && !hasQuestItems(qs.getPlayer(), BUST_OF_TRAVIS) && (getRandom(2) == 0))
+					{
+						addSpawn(BLACK_LEGION_STORMTROOPER, npc.getX(), npc.getY(), npc.getZ() + 10, npc.getHeading(), false, 0, true);
+						addSpawn(BLACK_LEGION_STORMTROOPER, npc.getX(), npc.getY(), npc.getZ() + 10, npc.getHeading(), false, 0, true);
+						npc.broadcastPacket(new CreatureSay(npc.getObjectId(), Say2.NPC_ALL, npc.getName(), NpcStringId.WELL_TAKE_THE_PROPERTY_OF_THE_ANCIENT_EMPIRE));
+					}
+					break;
+				}
+				case KARUL_CHIEF_OROOTO:
+				{
+					if (hasQuestItems(qs.getPlayer(), FIRST_CIRCLE_REQUEST_3A) && !hasQuestItems(qs.getPlayer(), BOOK_OF_SHUNAIMAN) && (getRandom(2) == 0))
+					{
+						addSpawn(BLACK_LEGION_STORMTROOPER, npc.getX(), npc.getY(), npc.getZ() + 10, npc.getHeading(), false, 0, true);
+						addSpawn(BLACK_LEGION_STORMTROOPER, npc.getX(), npc.getY(), npc.getZ() + 10, npc.getHeading(), false, 0, true);
+						npc.broadcastPacket(new CreatureSay(npc.getObjectId(), Say2.NPC_ALL, npc.getName(), NpcStringId.WELL_TAKE_THE_PROPERTY_OF_THE_ANCIENT_EMPIRE));
+					}
+					break;
+				}
+				case LETO_LIZARDMAN_ARCHER:
+				case LETO_LIZARDMAN_SOLDIER:
+				case HARIT_LIZARDMAN_GRUNT:
+				case HARIT_LIZARDMAN_ARCHER:
+				case HARIT_LIZARDMAN_WARRIOR:
+				{
+					evolveBloodCrystal(qs.getPlayer());
+					break;
+				}
+			}
+		}
+		return super.onKill(npc, player, isSummon);
+	}
+	
+	private String reward(L2PcInstance player, QuestState qs, int[][] rewards)
+	{
+		for (int i = rewards.length - 1; i >= 0; i--)
+		{
+			final int[] reward = rewards[i];
+			if (hasQuestItems(player, reward[0]))
+			{
+				if (getQuestItemsCount(player, reward[1]) >= reward[2])
+				{
+					giveItems(player, LAUREL_LEAF_PIN, 1);
+					giveAdena(player, reward[3], true);
+					playSound(player, Sound.ITEMSOUND_QUEST_MIDDLE);
+					qs.setMemoState(0);
+					takeItems(player, reward[0], -1);
+					if (reward[1] == GIANT_MONSTER_EYE_MEAT)
+					{
+						takeItems(player, reward[1], reward[2]);
+					}
+					else
+					{
+						takeItems(player, reward[1], -1);
+					}
+					return (hasQuestItems(player, FIRST_CIRCLE_HUNTER_LICENSE) ? "30745-06a.html" : "30745-06b.html");
+				}
+				return "30745-05.html";
+			}
+		}
+		return null;
+	}
+	
+	private String getHtml(L2PcInstance player, String htmlName, int i0, int i1, int i2, int i3, int i4)
+	{
+		String html = getHtm(player.getHtmlPrefix(), htmlName);
+		html = html.replace("<?reply1?>", LINKS.get(i0));
+		html = html.replace("<?reply2?>", LINKS.get(i1));
+		html = html.replace("<?reply3?>", LINKS.get(i2));
+		html = html.replace("<?reply4?>", LINKS.get(i3));
+		html = html.replace("<?reply5?>", LINKS.get(i4));
+		return html;
+	}
+	
+	private void evolveBloodCrystal(L2PcInstance player)
+	{
+		final L2Weapon weapon = player.getActiveWeaponItem();
+		if ((weapon != null) && (weapon.getId() == CYBELLINS_DAGGER) && (hasQuestItems(player, FIRST_CIRCLE_HUNTER_LICENSE) || hasQuestItems(player, SECOND_CIRCLE_HUNTER_LICENSE)))
+		{
+			if (getRandom(100) < 60)
+			{
+				if (hasQuestItems(player, CYBELLINS_REQUEST))
+				{
+					if (hasQuestItems(player, BLOOD_CRYSTAL_PURITY_1))
+					{
+						giveItems(player, BLOOD_CRYSTAL_PURITY_2, 1);
+						takeItems(player, BLOOD_CRYSTAL_PURITY_1, -1);
+					}
+					else if (hasQuestItems(player, BLOOD_CRYSTAL_PURITY_2))
+					{
+						giveItems(player, BLOOD_CRYSTAL_PURITY_3, 1);
+						takeItems(player, BLOOD_CRYSTAL_PURITY_2, -1);
+					}
+					else if (hasQuestItems(player, BLOOD_CRYSTAL_PURITY_3))
+					{
+						giveItems(player, BLOOD_CRYSTAL_PURITY_4, 1);
+						takeItems(player, BLOOD_CRYSTAL_PURITY_3, -1);
+					}
+					else if (hasQuestItems(player, BLOOD_CRYSTAL_PURITY_4))
+					{
+						giveItems(player, BLOOD_CRYSTAL_PURITY_5, 1);
+						takeItems(player, BLOOD_CRYSTAL_PURITY_4, -1);
+					}
+					else if (hasQuestItems(player, BLOOD_CRYSTAL_PURITY_5))
+					{
+						giveItems(player, BLOOD_CRYSTAL_PURITY_6, 1);
+						takeItems(player, BLOOD_CRYSTAL_PURITY_5, -1);
+					}
+					else if (hasQuestItems(player, BLOOD_CRYSTAL_PURITY_6))
+					{
+						giveItems(player, BLOOD_CRYSTAL_PURITY_7, 1);
+						playSound(player, Sound.ITEMSOUND_QUEST_JACKPOT);
+						takeItems(player, BLOOD_CRYSTAL_PURITY_6, -1);
+					}
+					else if (hasQuestItems(player, BLOOD_CRYSTAL_PURITY_7))
+					{
+						giveItems(player, BLOOD_CRYSTAL_PURITY_8, 1);
+						playSound(player, Sound.ITEMSOUND_QUEST_JACKPOT);
+						takeItems(player, BLOOD_CRYSTAL_PURITY_7, -1);
+					}
+					else if (hasQuestItems(player, BLOOD_CRYSTAL_PURITY_8))
+					{
+						giveItems(player, BLOOD_CRYSTAL_PURITY_9, 1);
+						playSound(player, Sound.ITEMSOUND_QUEST_JACKPOT);
+						takeItems(player, BLOOD_CRYSTAL_PURITY_8, -1);
+					}
+					else if (hasQuestItems(player, BLOOD_CRYSTAL_PURITY_9))
+					{
+						giveItems(player, BLOOD_CRYSTAL_PURITY_10, 1);
+						playSound(player, Sound.ITEMSOUND_QUEST_JACKPOT);
+						takeItems(player, BLOOD_CRYSTAL_PURITY_9, -1);
+					}
+				}
+			}
+			else if (hasQuestItems(player, CYBELLINS_REQUEST) && (hasQuestItems(player, BLOOD_CRYSTAL_PURITY_1) || hasQuestItems(player, BLOOD_CRYSTAL_PURITY_2) || hasQuestItems(player, BLOOD_CRYSTAL_PURITY_3) || hasQuestItems(player, BLOOD_CRYSTAL_PURITY_4)
+				|| hasQuestItems(player, BLOOD_CRYSTAL_PURITY_5) || hasQuestItems(player, BLOOD_CRYSTAL_PURITY_6) || hasQuestItems(player, BLOOD_CRYSTAL_PURITY_7) || hasQuestItems(player, BLOOD_CRYSTAL_PURITY_8) || hasQuestItems(player, BLOOD_CRYSTAL_PURITY_9)))
+			{
+				takeItems(player, -1, BLOOD_CRYSTAL_PURITY_1, BLOOD_CRYSTAL_PURITY_2, BLOOD_CRYSTAL_PURITY_3, BLOOD_CRYSTAL_PURITY_4, BLOOD_CRYSTAL_PURITY_5, BLOOD_CRYSTAL_PURITY_6, BLOOD_CRYSTAL_PURITY_7, BLOOD_CRYSTAL_PURITY_8, BLOOD_CRYSTAL_PURITY_9);
+				giveItems(player, BROKEN_BLOOD_CRYSTAL, 1);
+			}
+		}
+	}
+}
diff --git a/dist/game/data/scripts/quests/QuestMasterHandler.java b/dist/game/data/scripts/quests/QuestMasterHandler.java
index c7895f18a1..e4f06c3118 100644
--- a/dist/game/data/scripts/quests/QuestMasterHandler.java
+++ b/dist/game/data/scripts/quests/QuestMasterHandler.java
@@ -317,6 +317,7 @@ import quests.Q00330_AdeptOfTaste.Q00330_AdeptOfTaste;
 import quests.Q00331_ArrowOfVengeance.Q00331_ArrowOfVengeance;
 import quests.Q00333_HuntOfTheBlackLion.Q00333_HuntOfTheBlackLion;
 import quests.Q00334_TheWishingPotion.Q00334_TheWishingPotion;
+import quests.Q00335_TheSongOfTheHunter.Q00335_TheSongOfTheHunter;
 import quests.Q00336_CoinsOfMagic.Q00336_CoinsOfMagic;
 import quests.Q00337_AudienceWithTheLandDragon.Q00337_AudienceWithTheLandDragon;
 import quests.Q00338_AlligatorHunter.Q00338_AlligatorHunter;
@@ -824,6 +825,7 @@ public class QuestMasterHandler
 		Q00331_ArrowOfVengeance.class,
 		Q00333_HuntOfTheBlackLion.class,
 		Q00334_TheWishingPotion.class,
+		Q00335_TheSongOfTheHunter.class,
 		Q00336_CoinsOfMagic.class,
 		Q00337_AudienceWithTheLandDragon.class,
 		Q00338_AlligatorHunter.class,
diff --git a/dist/game/data/scripts/quests/documentation.txt b/dist/game/data/scripts/quests/documentation.txt
deleted file mode 100644
index 829b58895a..0000000000
--- a/dist/game/data/scripts/quests/documentation.txt
+++ /dev/null
@@ -1,322 +0,0 @@
-Quest scripts define the complete or near-complete flow of events that take place from the 
-start to the end of a quest.  This includes, but is not limitted to, starting and accepting 
-the quest, following complex dialogs, attacking or killing mobs, finding quest items, spawning
-quest mobs, completing a quest, and getting rewards.
-
-In order for quest scripts to function properly, at least 3 classes must be imported from Java:
-from com.l2jserver.gameserver.model.quest import State
-from com.l2jserver.gameserver.model.quest import QuestState
-from com.l2jserver.gameserver.model.quest.jython import QuestJython as JQuest
-
-In addition, the jython library "sys" is generally imported for convinience.  More classes can
-be imported as needed, in order to access other components of the core and enhance the abilities
-of the script.
-
-Jython quest scripts essentially inherit from the Java class com.l2jserver.gameserver.model.quest.Quest
-Developers who are comfortable with Java may read the source code for this class, as provided by the
-l2jserver project (www.l2jserver.com) for full details and available functions.  Alternatively, one
-may read forward in this documentation.
-
-
-AVAILABLE TRIGGER FUNCTIONS:
-There exist a set of functions that are predefined for quests and are triggered from various actions.
-These functions, their triggers, and the parameters passed into the script are defined below:
-
-1) onAdvEvent(self, event, npc, player)
-	This function is called whenever a player clicks on a link in a quest dialog and whenever 
-		a timer fires.  Also, should other functions (see below - onTalk, onKill, etc) are not 
-		implemented, this function will be called in their place.   
-	The	parameter "npc" contains a reference to the instance of NPC associated with this event.  
-		This may be the NPC registered in a timer, or the NPC with whom a player is speaking, etc.
-		This parameter may be NULL in certain circumstances.
-	The parameter "player" contains a reference to the player participating in this function.  It
-		may be the player speaking to the NPC, or the player who caused a timer to start (and owns 
-		that timer).
-		This parameter may be NULL in certain circumstances.
-	The parameter "event" contains a string identifier for the event.  Generally, this string
-		is passed directly via the link.  For example:
-		<a action="bypass -h Quest 626_ADarkTwilight 31517-1.htm">hello</a>
-		The above link sets the event variable to "31517-1.htm" for the quest 626_ADarkTwilight
-		In the case of timers, this will be the name of the timer.  This parameter serves as a 
-		sort of identifier.
-	The parameter "self" is a reference to the quest itself.  You may use self.XXXX where XXXX is
-		any function defined in the parent class of your quest.
-2) onEvent(self, event, st)
-	This function is called in place of onAdvEvent if the former is not implemented.  If a script
-		contains BOTH onAdvEvent AND onEvent, then onEvent will never be called unless the script's
-		onAdvEvent explicitely calls onEvent within.  
-	The	parameter "st" contains a reference to the QuestState of the player who used the link or 
-		started the timer.
-	The parameters "event" and "self" are same as in onAdvEvent.
-3) onAttack(self, npc, player, damage, isPet, skill)
-	This function is called whenever a player attacks an NPC that is registered for the quest
-	The parameter "npc" contains a reference to the exact instance of the NPC that got attacked
-	The parameter "player" contains a reference to the exact instance of the player who attacked.
-	The parameter "damage" is a number, representing the total damage that this attack has inflicted to the NPC.
-	The parameter "isPet" is a boolean.  When false it denotes that the attacker was indeed the player.  
-		If true it specifies that the damage was actually dealt by the player's pet.
-	The parameter "skill" is a skill that player used to attack NPC.
-	The parameter "self" works the same as in onEvent.
-4) onAttack(self, npc, player, damage, isPet)
-	This function is called in place of onAttack(with skill) if the former is not implemented.  If a script
-		contains BOTH onAttacks, then this one (without skill) will never be called unless the script's
-		onAttack(with skill) explicitely calls onAttack(without skill) within.
-4) onKill(self, npc, player, isPet)
-	This function is called whenever a player kills an NPC that is registered for the quest
-	All parameters are the same as in onAttack, lacking the damage parameter, of course.
-5) onSkillSee(self, npc, caster, skill, targets, isPet)
-	This function is called whenever a player casts a skill near a registered NPC (1000 distance)
-	The "npc" and "isPet" parameters are same as with onAttack.
-	the "caster" parameter references the actual instance of the player who cast the spell.
-	The "skill" parameter is a referece to the actual skill that was used (from which info about the id and level
-		of the skill can be obtained).
-	The "targets" parameter is an array of all objects (can be any type of object, including mobs and players) that
-		are affected by the skill.
-	NOTE: if a skill does damage, BOTH onSkillSee AND onAttack will be triggered for the damaged NPC!  However, 
-		only onSkillSee will be triggered if the skill does no damage, or if it damages an NPC who has no onAttack
-		registration while near another NPC who has an onSkillSee registration.
-6) onTalk(self,npc, player)
-	This function is called whenever a player clicks to the "Quest" link of an NPC that is registered 
-	for the quest.
-	All parameters are the same as in onAttack
-7) onFirstTalk(self,npc, player)
-	This function is called whenever a player talks to an NPC that is registered for the quest.  That is, 
-	it is triggered from the very first click on the NPC, not via another dialog.
-	NOTE 1: Each NPC can be registered to at most one quest for triggering this function.  In other words, 
-		the same one NPC cannot respond to an "onFirstTalk" request from two different quests.
-		Attempting to register an NPC in two different quests for this function will result in one of the
-		two registration being ignored.
-	NOTE 2: Since a Quest link isn't clicked in order to reach this, a quest state can be invalid within this
-		function.  The coder of the script may need to create a new quest state (if necessary), by using:
-		st = self.newQuestState(player)	
-	NOTE 3: the returned value of onFirstTalk replaces the default html that would have otherwise been loaded 
-		from a subfolder of .../gameserver/data/html/...
-		If you wish to show the default html, within onFirstTalk do npc.showChatWindow(player) and then return ""
-	All parameters are the same as in onAttack.
-8) onDeath (self, npc, character, st) 
-	This function is called whenever an exact INSTANCE of a character who was previously registered for this 
-	event dies.  The registration for onDeath events is NOT done via the quest itself, but it is instead handled
-	by the QuestState of a particular player.
-	The parameter "npc" contains a reference to the exact instance of the NPC that KILLED the character.
-	The parameter "character" contains a reference to the exact instance of the character that got killed.
-	The parameter "st" contains a reference to the QuestState of whomever was interested (waiting) for this kill
-	The parameter "self" works the same as in onEvent.
-9) onSpawn (self, npc)
-	Currently the only function that has no reference to a player.  It is triggered whenever an NPC spawns or
-	respawns and passes a reference to the newly (re)spawned NPC.  It is useful for initializations, starting
-	quest timers, displaying chat (NpcSay), and more.
-	The parameter "npc" contains a reference to the exact instance of the NPC who just (re)spawned.
-10) onFactionCall(self, npc, caller, attacker, isPet)
-	Triggered when an npc is called by another npc in the same faction.
-	The parameter "npc" contains a reference to the exact instance of the NPC who is being asked for help
-	The parameter "caller" contains a reference to the exact instance of the NPC who is asking for help
-	The parameter "attacker" contains a reference to the exact instance of the player who attacked the caller
-	The "isPet" parameters works same as with onAttack.
-11) onAggroRangeEnter(self, npc, player, isPet)
-	This is currently here only as a place-holder.  This function is NOT yet called from any part of the code.
-	The idea is it will be called whenever a player or pet come near an aggro mob (enter its aggro range).
-	The parameters "npc", "player", and "isPet" work similar to onAttack.
-	
-12) REGISTRATION FUNCTIONS:
-	The functions described below have a single purpose: To register an NPC for event triggers.  Simply put,
-	an NPC must be registered in a quest for a particular event in order for the NPC to respond to the occurence
-	of thatevent.  
-	Registration Functions are NOT called automatically.  Instead, they should be added at the bottom of your 
-	quest script.
-	Descriptions of all registration functions follow:
-	a) addStartNpc(npcId)
-		Registers an NPC for onTalk events.  These NPCs are considered start NPCs.  Therefore, the player
-		does NOT need to have started the quest in order to access the onTalk section of the quest.
-		Instead, when a player talks to NPCs registered by addStartNpc, then the players automatically get
-		a CREATED state for this quest.
-		The parameter "npcId" contains the id of the template for this NPC.
-	b) addTalkId(npcId)
-		Registers an NPC for onTalk events.  These NPCs are not considered start NPCs (unless they are also
-		registered with addStartNpc).  NPCs registered using addTalkId will only respond to the player's
-		click of a "Quest" link if and only if the player has alredy started the quest.
-		The parameter "npcId" contains the id of the template for this NPC.
-	c) addAttackId(npcId)
-		Registers an NPC for onAttack events.  The players do NOT need to be registered for the quest in order
-		to trigger a response to an attack against this NPC.  
-		The parameter "npcId" contains the id of the template for this NPC.
-	d) addKillId(npcId)
-		Registers an NPC for onKill events.  The players do NOT need to be registered for the quest in order
-		to trigger a response to this NPC getting killed.
-		The parameter "npcId" contains the id of the template for this NPC.
-	e) addFirstTalkId(npc)
-		Registers an NPC for onFirstTalk events.  
-	f) addSpawnId(npc)
-		Registers an NPC for onSpawn events.  
-	g) addSkillSeeId(npc)
-		Registers an NPC for onSkillSee events.  
-	f) addFactionCallId(npc)
-		Registers an NPC for onFactionCall events.  
-	h) addAggroRangeEnterId(npc)
-		Registers an NPC for onAggroRangeEnter events (remember, those events aren't yet supported and will not be 
-		triggered by core yet).		
-		
-13) OVERRIDABLE QUEST FUNCTIONS:
-	There exist a few functions which are automatically called by the core (and optionally manually called within
-	your script) which meant to be overriden by your quest script for special needs.   
-	a) saveGlobalData()
-		Optional function.  If a quest (or ai) needs to keep track of variables that are persistant beyond a reboot
-		but are not tied to any particular character (for example, count how many players have finished a quest in 
-		order to do some special action when the count reaches 1000), then you can override this function and add
-		code for saving your special variabls.  This function will automatically be called when the server is shutting
-		down as well as when you attempt to reload the quest using GM commands.  The actual functions used to save
-		those variables are described in section 11, below.  
-	b) init_LoadGlobalData()
-		Optional function.  If a quest has saved global data, you will also need to implement a way to load the data
-		back.  Here, you can define everything from which variables to look for and load to the structure in which
-		you wish to store the data (for example, you may want to format things as an array, or a dictionary, or some 
-		other structure).  The actual functions used to load those variables are described in section 11, below.  
-
-14) OTHER QUEST FUNCTIONS:
-	In addition to the trigger functions (which are called automatically by the core when certain actions take place)
-	there also exist a variety of functions that belong to the Quest class and can be accessed within each script.
-	To call those functions one needs to prefix the call with "self." and provide the appropriate parameters.  For
-	example, if the Quest class had a function named "foo" and it expected an integer parameter, you could call this
-	function from anywhere within the "class Quest" segment of your script, using the code
-	self.foo(5)
-
-	The full listing of available functions can be seen in the class com.l2jserver.gameserver.model.quest.Quest, which 
-	is located at com/l2jsever/gameserver/model/quest/Quest.java from the l2jserver project.  However, a few of the
-	more common functions are summarized here:
-	a) startQuestTimer(name, time, npc, player, repeating)
-		Starts a timer.  The timer will call onAdvEvent(name, npc, player) each time that it fires.
-		The parameter name is a string which serves as the name of the timer (or "event").
-			time refers to the number of milliseconds that the timer will wait before it fires.
-		npc is the actual instance of an NPC or Mob assosiated with the timer.  If this timer is not tied to 
-			any particular instance, you should pass None as the parameter.
-		player is the actual instance of a player assosiated with the timer.  If this timer is not tied to 
-			any particular instance, you should pass None as the parameter.
-		repeating is a boolean (True or False) variable.  If this is False, the timer will only fire once.  If 
-			this is True, the timer will keep firing at equal periods (equal to the "time" parameter) for ever, 
-			unless you explicitely cancel the timer, reboot the server, or reload the quest (assuming that your
-			script doesn't automatically start the timer again when it loads).
-	b) getQuestTimer(name, npc, player)
-		Allows you to grab an instance of the timer.  This is primarily used behind the scenes (from core) and
-		you would rarely really need it, but I am describing as it is somewhat important in understanding timers.
-		The parameter name refers to the name with which a timer was added.  It is the first and most important
-			key in identifying the timer.  Two timers with different name are always considered unrelated to each
-			other.  If the name is the same, the timers are further identified by the npc and player associated.
-		npc is the second key for identifying timers.  A null (None) npc acts as a wildcard!  That is, if you call 
-			this function with a null npc parameter, it will consider as matches any timers with the correct 
-			name and player, regardless of which NPC was used.  On the other hand, if you use a non-null npc, this
-			function will consider as matches any timers with the same name, npc, and player as well as timers
-			with the same name and player but null NPC.
-		player is the last key for identifying timers.  A null (None) player acts as a wildcard!  That is, if you call 
-			this function with a null player parameter, it will consider as matches any timers with the correct 
-			name and npc, regardless of which player was used.  On the other hand, if you use a non-null player, this
-			function will consider as matches any timers with the same name, npc, and player as well as timers
-			with the same name and npc but null player.   
-		Naturally, if both player and npc are null, matches are identified based solely on the name.
-	c) cancelQuestTimer(name, npc, player)
-		Cancels a timer.  See getQuestTimer for details on how this call will match and discover which timer to 
-		cancel.  If multiple timers match the parameters, only the first timer that the code discovers will be cancelled.
-	d) saveGlobalQuestVar(var, value)
-		This permanently (until explicit deletion) saves a variable that is global for this quest.  Here, global 
-		refers to the fact that it is not tied to any particular player!  It does not mean global for all quest. 
-		var is a string denoting the variable name.
-		value is a string denoting the value of the variable "var".
-		For storing complex structures, your script must provide code which properly breaks down the data into 
-		var/value pairs and saves it in a way that can be read back.
-	e) loadGlobalQuestVar(var)
-		This loads a permanently saved variable that is global for all players within this quest.  It then 
-		returns the result as a string.  It returns an empty string if the specified variable does not exist 
-		for this quest.
-		var is the name of the variable you wish to load
-	f) deleteGlobalQuestVar(var)
-		Deletes a global quest variable for this quest (same definition of "global" as in #d).
-		var is the name of the variable you wish to delete
-	g) deleteAllGlobalQuestVars()
-		Deletes ALL global quest variables for this quest (same definition of "global" as in #d).
-	h) getRandomPartyMember(player)
-		Returns a random player who is in the same party as the referenced parameter.  If the referenced
-		parameter is a player who is not in a party, it returns the player reference itself automatically.
-		If the reference is null, it returns null.
-		player is a reference to a player instance.
-	i) getRandomPartyMember(player, var, value)
-		Similar to #h but only returns a result among those players who have the specified var and value pair 
-		among their QuestState variables (see QuestState description below).  If no party member matches these 
-		conditions, a null (None) is returned.
-		The reference player may also be among the possible results if it also matches the conditions.
-		Similarly to #h, if the reference player is not in a party, then only the var/value pairs are checked.
-		In that case, if the player matches the conditions, the same player is returned, else null is returned. 
-		player: The reference player whose party will be checked
-		var: The variable name necessary for a match.  If this is null (None), then a completely random
-			party member is returned regardless of the value (same as in #h).
-		value: the required value of the "var" before a party member is considered for the random poll.  
-		Example usage:
-		self.getRandomPartyMemberState(player, "cond","5")
-		This will return a random party member among those members who have cond=5.
-	j) getRandomPartyMemberState(player, state)
-		Similar to #h but only returns a result among those players whose QuestState has a state matching the 
-		passed "state" variable (see QuestState description below).  If no party member matches the state 
-		condition a null (None) is returned.
-		If the reference player is not in a party, either the reference is return if it matches the state 
-		condition, or a null (None) is returned if the reference player doesn't match the state condition.   
-		For example, 
-		self.getRandomPartyMemberState(player, State.COMPLETED)
-		will return a random party member among those members who have completed the quest.
-
-Quest:
-After writing your script, in order to initialize your quest and register it with the game server, near the 
-bottom of your script, you must use:
-	QUEST       = Quest(id,"12345_QuestName","Description")
-For example:
-	QUEST       = Quest(626,"626_ADarkTwilight","A Dark Twilight")
-It is often useful to define the quest name in a variable at the top of the script (typically called "qn").  
-In that case, you may register your quest using:
-	QUEST       = Quest(626,qn,"A Dark Twilight")
-In addition, you can register quest items with this quest.  All registered items will be DELETED from the
-player's inventory, as soon as the quest is aborted or completed.  Many quests reward items that are not
-meant to be deleted upon quest completion, even if the items appear in the quest inventory (example: star of destiny).
-Such items should NOT be registered as questItems.  To register items with a quest, you need to modify the __init__ 
-function of the quest.  For a simple quest with no registrations, the __init__ function will look something like :
- def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
-For a quest with registered items, this should be:
- def __init__(self,id,name,descr): 
-    JQuest.__init__(self,id,name,descr)
-    self.questItemIds = [1234,5678] 
-In this example, the items with id 1234 and 5678 are registered.
-
-QuestState:
-A QuestState is not part of the quest definition itself, but it contains the information that tracks the 
-progress of a particular player for this quest.  Given a player instance, the quest-state of that player for 
-this quest can be found using:
-	st = player.getQuestState("12345_questname")
-If the player does NOT have a quest-state for this quest (i.e. the player is not currently doing this quest), then
-st will be null.
-In addition, the queststate of a random party member who has a particular variable and value stored for this quest,
-can be discovered using:
-	partyMember = self.getRandomPartyMember(player,"variable","value")
-	st = partyMember.getQuestState("12345_questname")
-Similarly, the queststate of a random party member who has reached a particular STATE for this quest,
-can be discovered using:
-	partyMember = self.getRandomPartyMemberState(player,STATE)
-	st = partyMember.getQuestState("12345_questname")
-For example, instead of "variable" and "value" in the first sample, one may use "cond" and "1".  Instead of STATE in 
-the second sample, one may use State.STARTED
-While a QuestState can be discovered from a player, it can also access the player instance back when needed, using
-	st.getPlayer()
-All other public methods of implementation of QuestState are accessible from jython.  Similarly, objects
-reachable from st can be further used in order to reach deeper.  For example, one may do something like:
-	st.getPlayer().getClan().getLeader().getPlayerInstance().getPet()
-	(this example may not be fully accurate or may get deprecated in the future...it is only meant as a 
-	little demonstation of how one may reach deeper into a chain of objects that are accessible.  In this
-	case, from the QuestState, we get the player whose QuestState this is, then get that player's clan,
-	the clan's leader, the leader's actual player instance, and from there, we find the leader's summonned pet!)
-	
-State:
-States are used to track segments of the quest for players.  States are not a property of any particular quest and 
-States Types cannot be added or removed dynamically.  They are a mere enumeration used universally by all quests.  
-Each QuestState carries a State value which can be compared to the available (global) state types in order to check
-the progress that the given character has with regards to the given QuestState (see QuestState info above).
-The available state types are:
-CREATED
-STARTED
-COMPLETED
-For example, given an instance of a QuestState (st) for a given player doing some quest, one can check if the
-player has completed the quest by doing the comparison:
-st.getState() == State.COMPLETED
\ No newline at end of file
-- 
GitLab