@Override
 public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) {
   final QuestState qs = getQuestState(player, false);
   String htmltext = null;
   if (qs == null) {
     return htmltext;
   }
   switch (event) {
     case "31529-02.html":
     case "31529-04.html":
     case "31529-05.html":
     case "31529-06.html":
     case "31529-07.html":
     case "31529-09.html":
     case "31529-13.html":
     case "31529-13a.html":
     case "31528-02.html":
     case "31528-05.html":
     case "31528-06.html":
     case "31528-07.html":
     case "31328-13.html":
     case "31328-06.html":
     case "31328-05.html":
     case "31328-02.html":
     case "31328-07.html":
     case "31328-08.html":
     case "31328-14.html":
     case "31328-15.html":
     case "31328-16.html":
     case "31328-17.html":
     case "31328-18.html":
     case "31334-12.html":
       {
         htmltext = event;
         break;
       }
     case "31334-02.htm":
       {
         if (qs.isCreated()) {
           final QuestState q21 = player.getQuestState(Q00021_HiddenTruth.class.getSimpleName());
           if ((player.getLevel() >= MIN_LVL) && (q21 != null) && q21.isCompleted()) {
             htmltext = event;
           } else {
             htmltext = "31334-03.html";
           }
         }
         break;
       }
     case "31334-04.html":
       {
         if (qs.isCreated()) {
           qs.startQuest();
           htmltext = event;
         }
         break;
       }
     case "31334-06.html":
       {
         if (qs.isCond(3) && hasQuestItems(player, CROSS_OF_EINHASAD)) {
           htmltext = event;
         } else {
           qs.setCond(2, true);
           htmltext = "31334-07.html";
         }
         break;
       }
     case "31334-08.html":
       {
         if (qs.isCond(3)) {
           qs.setCond(4, true);
           htmltext = event;
         }
         break;
       }
     case "31334-13.html":
       {
         final int cond = qs.getCond();
         if (((5 <= cond) && (cond <= 7)) && hasQuestItems(player, CROSS_OF_EINHASAD)) {
           if (_tifarenOwner == 0) {
             _tifarenOwner = player.getObjectId();
             final L2Npc ghost2 = addSpawn(GHOST_OF_PRIEST, PRIEST_LOC, true, 0);
             ghost2.setScriptValue(player.getObjectId());
             qs.startQuestTimer("DESPAWN_GHOST2", 1000 * 120, ghost2);
             ghost2.broadcastPacket(
                 new NpcSay(
                         ghost2.getObjectId(),
                         Say2.NPC_ALL,
                         ghost2.getId(),
                         NpcStringId.DID_YOU_CALL_ME_S1)
                     .addStringParameter(player.getName()));
             if (((cond == 5) || (cond == 6)) && hasQuestItems(player, LOST_SKULL_OF_ELF)) {
               takeItems(player, LOST_SKULL_OF_ELF, -1);
               qs.setCond(7, true);
             }
             htmltext = event;
           } else {
             qs.setCond(6, true);
             htmltext = "31334-14.html";
           }
         }
         break;
       }
     case "31528-04.html":
       {
         if (npc.getScriptValue() == player.getObjectId()) {
           playSound(player, QuestSound.AMBSOUND_HORROR_03);
           htmltext = event;
         }
         break;
       }
     case "31528-08.html":
       {
         QuestTimer qt = getQuestTimer("DESPAWN_GHOST2", npc, player);
         if ((qt != null) && (npc.getScriptValue() == player.getObjectId())) {
           qt.cancelAndRemove();
           npc.setScriptValue(0);
           qs.startQuestTimer("DESPAWN_GHOST2", 1000 * 3, npc);
           qs.setCond(8);
           htmltext = event;
         }
         break;
       }
     case "DESPAWN_GHOST2":
       {
         _tifarenOwner = 0;
         if (npc.getScriptValue() != 0) {
           npc.broadcastPacket(
               new NpcSay(
                   npc.getObjectId(),
                   Say2.NPC_ALL,
                   npc.getId(),
                   NpcStringId.IM_CONFUSED_MAYBE_ITS_TIME_TO_GO_BACK));
         }
         npc.deleteMe();
         break;
       }
     case "31328-03.html":
       {
         if (qs.isCond(8)) {
           takeItems(player, CROSS_OF_EINHASAD, -1);
           htmltext = event;
         }
         break;
       }
     case "31328-09.html":
       {
         if (qs.isCond(8)) {
           giveItems(player, LETTER_OF_INNOCENTIN, 1);
           qs.setCond(9, true);
           htmltext = event;
         }
         break;
       }
     case "31328-11.html":
       {
         if (qs.isCond(14) && hasQuestItems(player, REPORT_BOX)) {
           takeItems(player, REPORT_BOX, -1);
           qs.setCond(15, true);
           htmltext = event;
         }
         break;
       }
     case "31328-19.html":
       {
         if (qs.isCond(15)) {
           qs.setCond(16, true);
           htmltext = event;
         }
         break;
       }
     case "31527-02.html":
       {
         if (qs.isCond(10) && (_soulWellNpc == null)) {
           _soulWellNpc = addSpawn(SOUL_OF_WELL, SOUL_WELL_LOC, true, 0);
           qs.startQuestTimer("activateSoulOfWell", 90000, _soulWellNpc);
           qs.startQuestTimer("despawnSoulOfWell", 120000, _soulWellNpc);
           _soulWellNpc.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, player);
           playSound(player, QuestSound.SKILLSOUND_ANTARAS_FEAR);
           htmltext = event;
         } else {
           htmltext = "31527-03.html";
         }
         break;
       }
     case "activateSoulOfWell":
       {
         // this enables onAttack ELSE IF block which allows the player to proceed the quest
         npc.setScriptValue(1);
         break;
       }
     case "despawnSoulOfWell":
       {
         // if the player fails to proceed the quest in 2 minutes, the soul is unspawned
         if (!npc.isDead()) {
           _soulWellNpc = null;
         }
         npc.deleteMe();
         break;
       }
     case "31529-03.html":
       {
         if (qs.isCond(9) && hasQuestItems(player, LETTER_OF_INNOCENTIN)) {
           qs.setMemoState(8);
           htmltext = event;
         }
         break;
       }
     case "31529-08.html":
       {
         if (qs.isMemoState(8)) {
           qs.setMemoState(9);
           htmltext = event;
         }
         break;
       }
     case "31529-11.html":
       {
         if (qs.isMemoState(9)) {
           giveItems(player, JEWEL_OF_ADVENTURER_1, 1);
           qs.setCond(10, true);
           qs.setMemoState(10);
           htmltext = event;
         }
         break;
       }
   }
   return htmltext;
 }