@Override
 public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) {
   final QuestState st = player.getQuestState(getName());
   if (st == null) {
     return null;
   }
   String htmltext = event;
   switch (event) {
     case "31517-05.html":
       break;
     case "31517-02.htm":
       st.startQuest();
       break;
     case "Exp":
       if (st.getQuestItemsCount(BLOOD_OF_SAINT) < ITEMS_COUNT_REQUIRED) {
         return "31517-06.html";
       }
       st.addExpAndSp(XP_COUNT, SP_COUNT);
       st.exitQuest(true, true);
       htmltext = "31517-07.html";
       break;
     case "Adena":
       if (st.getQuestItemsCount(BLOOD_OF_SAINT) < ITEMS_COUNT_REQUIRED) {
         return "31517-06.html";
       }
       st.giveAdena(ADENA_COUNT, true);
       st.exitQuest(true, true);
       htmltext = "31517-07.html";
       break;
     default:
       htmltext = null;
       break;
   }
   return htmltext;
 }
  @Override
  public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) {
    final QuestState st = player.getQuestState(getName());
    if (st == null) {
      return null;
    }

    String htmltext = null;
    switch (event) {
      case "30926-02.htm":
        {
          st.startQuest();
          htmltext = event;
          break;
        }
      case "30926-05.html":
        {
          st.exitQuest(true, true);
          htmltext = event;
          break;
        }
      case "30926-06.html":
        {
          htmltext = event;
          break;
        }
    }
    return htmltext;
  }
  @Override
  public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) {
    QuestState st = getQuestState(player, false);
    if (st == null) {
      return getNoQuestMsg(player);
    }

    if (Util.isDigit(event)) {
      int i = Integer.valueOf(event);
      final ClassId cid = player.getClassId();
      if ((cid.getRace() == Race.DARK_ELF) && (cid.getId() == CLASSES[i][1])) {
        int suffix;
        final boolean item = st.hasQuestItems(CLASSES[i][6]);
        if (player.getLevel() < 20) {
          suffix = (!item) ? CLASSES[i][2] : CLASSES[i][3];
        } else {
          if (!item) {
            suffix = CLASSES[i][4];
          } else {
            suffix = CLASSES[i][5];
            st.giveItems(SHADOW_WEAPON_COUPON_DGRADE, 15);
            st.takeItems(CLASSES[i][6], -1);
            player.setClassId(CLASSES[i][0]);
            player.setBaseClass(CLASSES[i][0]);
            st.playSound(QuestSound.ITEMSOUND_QUEST_FANFARE_2);
            player.broadcastUserInfo();
            st.exitQuest(false);
          }
        }
        event = npc.getId() + "-" + suffix + ".html";
      }
    }
    return event;
  }
  @Override
  public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) {
    final QuestState st = getQuestState(player, false);
    if (st == null) {
      return null;
    }

    String htmltext = null;
    switch (event) {
      case "31453-02.htm":
        {
          st.startQuest();
          st.setMemoState(1);
          htmltext = event;
          break;
        }
      case "31453-03.html":
        {
          if (st.isMemoState(1)) {
            st.setMemoState(2);
            st.setCond(2, true);
            htmltext = event;
          }
        }
      case "31453-07.html":
        {
          if (st.isMemoState(2) && st.hasQuestItems(ANTELOPE_SKIN)) {
            giveItems(player, FRINTEZZAS_SCROLL, 1);
            st.exitQuest(true, true);
            htmltext = event;
          }
        }
    }
    return htmltext;
  }
 @Override
 public String onTalk(L2Npc npc, L2PcInstance player) {
   final QuestState st = player.getQuestState(getName());
   String htmltext = getNoQuestMsg(player);
   if (st != null) {
     switch (st.getState()) {
       case State.CREATED:
         {
           htmltext =
               (player.getRace() == Race.DARK_ELF)
                   ? (player.getLevel() >= MIN_LVL) ? "30348-02.htm" : "30348-01.htm"
                   : "30348-00.htm";
           break;
         }
       case State.STARTED:
         {
           if (st.isCond(2) && (st.getQuestItemsCount(DARK_BEZOAR) >= REQUIRED_COUNT)) {
             st.giveItems(LESSER_HEALING_POTION, 5);
             st.addExpAndSp(1000, 0);
             st.exitQuest(false, true);
             htmltext = "30348-05.html";
           } else {
             htmltext = "30348-04.html";
           }
           break;
         }
       case State.COMPLETED:
         {
           htmltext = getAlreadyCompletedMsg(player);
           break;
         }
     }
   }
   return htmltext;
 }
 @Override
 public String onTalk(L2Npc npc, L2PcInstance player) {
   final QuestState st = getQuestState(player, false);
   String htmltext = getNoQuestMsg(player);
   if (st != null) {
     switch (st.getState()) {
       case State.CREATED:
         {
           htmltext = player.getLevel() >= MIN_LVL ? "30078-01.html" : "30078-02.htm";
           break;
         }
       case State.STARTED:
         {
           if (st.isCond(2) && (st.getQuestItemsCount(BEAR_SKIN) >= REQUIRED_COUNT)) {
             st.giveAdena(ADENA_COUNT, true);
             st.exitQuest(true, true);
             htmltext = "30078-05.html";
           } else {
             htmltext = "30078-06.html";
           }
           break;
         }
     }
   }
   return htmltext;
 }
  @Override
  public String onTalk(L2Npc npc, L2PcInstance player) {
    String htmltext = getNoQuestMsg(player);
    final QuestState st = getQuestState(player, true);
    if (st == null) {
      return htmltext;
    }

    switch (st.getState()) {
      case State.CREATED:
        {
          htmltext = (player.getLevel() >= 79) ? "32711-01.htm" : "32711-02.htm";
          break;
        }
      case State.STARTED:
        {
          if ((hekaton != null) && !hekaton.isDead()) {
            htmltext = "32711-09.html";
          } else if (st.isCond(1)) {
            htmltext =
                (!hasQuestItems(player, CET_1_SHEET, CET_2_SHEET, CET_3_SHEET))
                    ? "32711-07.html"
                    : "32711-08.html";
          } else if (st.isCond(2)) {
            st.giveItems(SUPPORT_ITEMS, 1);
            st.exitQuest(true, true);
            htmltext = "32711-10.html";
          }
          break;
        }
    }
    return htmltext;
  }
  @Override
  public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) {
    String htmltext = event;
    final QuestState st = player.getQuestState(qn);
    if (st == null) {
      return htmltext;
    }

    switch (event) {
      case "31570-03.htm":
        st.set("cond", "1");
        st.setState(State.STARTED);
        st.playSound("ItemSound.quest_accept");
        break;
      case "31570-05.htm":
        if ((st.getInt("cond") == 1) && (st.hasQuestItems(BLUE_TREASURE_BOX))) {
          htmltext = "31570-06.htm";
          st.set("cond", "2");
          st.giveItems(STRANGE_BLUESPRINT, 1);
          st.takeItems(BLUE_TREASURE_BOX, -1);
          st.playSound("ItemSound.quest_middle");
        }
        break;
      case "31434-02.htm":
        if ((st.getInt("cond") == 2) && (st.hasQuestItems(STRANGE_BLUESPRINT))) {
          htmltext = "31434-01.htm";
          st.giveItems(BLACK_PEARL_RING, 1);
          st.takeItems(STRANGE_BLUESPRINT, -1);
          st.playSound("ItemSound.quest_finish");
          st.exitQuest(false);
        }
        break;
    }
    return htmltext;
  }
  @Override
  public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) {
    final QuestState st = player.getQuestState(getName());
    if (st == null) {
      return null;
    }

    String htmltext = event;
    switch (event) {
      case "32740.html":
      case "32740-01.html":
      case "32744-02.html":
      case "32744-03.htm":
        break;
      case "32744-04.htm":
        st.startQuest();
        break;
      case "32744-quit.html":
        st.exitQuest(true);
        break;
      default:
        htmltext = null;
        break;
    }
    return htmltext;
  }
  @Override
  public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) {
    String htmltext = event;
    final QuestState st = getQuestState(player, false);
    if (st == null) {
      return htmltext;
    }

    switch (event) {
      case "31296-03.html":
        st.startQuest();
        break;
      case "31256-02.html":
        if (st.isCond(1)) {
          st.setCond(2, true);
          st.giveItems(BOX, 1);
        }
        break;
      case "31371-02.html":
        if (st.isCond(2) && st.hasQuestItems(BOX)) {
          st.addExpAndSp(233125, 18142);
          st.exitQuest(false, true);
        } else {
          htmltext = "31371-03.html";
        }
        break;
    }
    return htmltext;
  }
  @Override
  public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) {
    final QuestState st = getQuestState(player, false);
    String htmltext = null;
    if (st == null) {
      return htmltext;
    }

    switch (event) {
      case "30346-04.htm":
        {
          st.startQuest();
          htmltext = event;
          break;
        }
      case "30346-07.html":
        {
          st.exitQuest(true, true);
          htmltext = event;
          break;
        }
      case "30346-08.html":
        {
          htmltext = event;
          break;
        }
    }
    return htmltext;
  }
  @Override
  public String onTalk(L2Npc npc, L2PcInstance player) {
    final QuestState st = getQuestState(player, true);
    if (st == null) {
      return getNoQuestMsg(player);
    }

    String htmltext = getNoQuestMsg(player);
    switch (st.getState()) {
      case State.CREATED:
        {
          if (player.getLevel() < MIN_LEVEL) {
            htmltext = "31540-02.html";
          } else if (!st.hasQuestItems(VACUALITE_FLOATING_STONE)) {
            htmltext = "31540-04.html";
          } else {
            htmltext = "31540-01.htm";
          }
          break;
        }
      case State.STARTED:
        {
          switch (st.getCond()) {
            case 1:
              {
                htmltext = "31540-08.html";
                break;
              }
            case 2:
              {
                st.giveItems(MEDAL_OF_GLORY, 30);
                st.playSound(QuestSound.ITEMSOUND_QUEST_ITEMGET);
                st.exitQuest(QuestType.DAILY, true);
                htmltext = "31540-09.html";
                break;
              }
          }
          break;
        }
      case State.COMPLETED:
        {
          if (!st.isNowAvailable()) {
            htmltext = "31540-03.html";
          } else {
            st.setState(State.CREATED);
            if (player.getLevel() < MIN_LEVEL) {
              htmltext = "31540-02.html";
            } else if (!st.hasQuestItems(VACUALITE_FLOATING_STONE)) {
              htmltext = "31540-04.html";
            } else {
              htmltext = "31540-01.htm";
            }
          }
          break;
        }
    }
    return htmltext;
  }
  @Override
  public String onTalk(L2Npc npc, L2PcInstance player) {
    String htmltext = getNoQuestMsg(player);
    final QuestState st = player.getQuestState(getName());
    if (st == null) {
      return htmltext;
    }

    switch (st.getState()) {
      case State.CREATED:
        htmltext = (player.getLevel() >= MIN_LEVEL) ? "36479-03.html" : "36479-02.html";
        break;
      case State.STARTED:
        if (TerritoryWarManager.getInstance().isTWInProgress()) {
          return "36479-05.html";
        }
        switch (st.getCond()) {
          case 1:
            htmltext = "36479-06.html";
            break;
          case 2:
            st.setCond(3, true);
            htmltext = "36479-07.html";
            break;
          case 3:
            htmltext = "36479-08.html";
            break;
          case 4:
            st.setCond(5, true);
            htmltext = "36479-09.html";
            break;
          case 5:
            htmltext = "36479-10.html";
            break;
          case 6:
            st.setCond(7, true);
            htmltext = "36479-11.html";
            break;
          case 7:
            htmltext = "36479-12.html";
            break;
          case 8:
            st.giveItems(CLOAK, 1);
            st.exitQuest(false, true);
            htmltext = "36479-13.html";
            break;
        }
        break;
      case State.COMPLETED:
        htmltext = "36479-01.html";
        break;
    }
    return htmltext;
  }
  @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 "31388-03.htm":
        {
          if (qs.isCreated()) {
            qs.startQuest();
            htmltext = event;
          }
          break;
        }
      case "31388-04.html":
      case "31388-05.html":
      case "31388-06.html":
        {
          if (qs.isStarted()) {
            htmltext = event;
          }
          break;
        }
      case "31388-07.html":
        {
          if (qs.isCond(2)) {
            if (getQuestItemsCount(player, RIB_BONE_OF_A_BLACK_MAGUS) >= RIB_BONE_REQUIRED_COUNT) {
              giveAdena(player, 25000, true);
              addExpAndSp(player, 305235, 0);
              takeItems(player, RIB_BONE_OF_A_BLACK_MAGUS, -1);
              qs.setCond(1, true);
              htmltext = event;
            } else {
              htmltext = "31388-08.html";
            }
          }
          break;
        }
      case "31388-09.html":
        {
          if (qs.isStarted()) {
            qs.exitQuest(true, true);
            htmltext = event;
          }
          break;
        }
    }
    return htmltext;
  }
  @Override
  public final String onTalk(L2Npc npc, L2PcInstance player) {
    final QuestState st = player.getQuestState(qn);
    if (st == null) {
      return "<html><body>目前沒有執行任務,或條件不符。</body></html>";
    }

    final byte id = st.getState();
    if (id == State.CREATED) {
      if (player.getLevel() > 72) {
        if (st.hasQuestItems(FADED_MARK)) {
          return "32010-02.htm";
        }
        if (st.hasQuestItems(VISITOR_MARK)) {
          st.exitQuest(true);
          return "32010-01a.htm";
        }
        if (st.hasQuestItems(MARK)) {
          st.exitQuest(true);
          return "32010-0.htm";
        }
      }
      st.exitQuest(true);
      return "32010-01.htm";
    } else if (id == State.STARTED) {
      if ((st.getInt("cond") == 2) && (st.getQuestItemsCount(NECRO_HEART) == 10)) {
        st.takeItems(NECRO_HEART, 10);
        st.takeItems(FADED_MARK, 1);
        st.giveItems(MARK, 1);
        st.giveItems(8273, 10);
        st.playSound("ItemSound.quest_finish");
        st.exitQuest(true);
        return "32010-05.htm";
      }
      return "32010-04.htm";
    }
    return "<html><body>目前沒有執行任務,或條件不符。</body></html>";
  }
  @Override
  public final String onAdvEvent(String event, L2Npc npc, L2PcInstance player) {
    QuestState st = player.getQuestState(qn);

    if (st == null) return "<html><body>目前沒有執行任務,或條件不符。</body></html>";

    final int cond = st.getInt("cond");
    if (event.equalsIgnoreCase("31001-05.htm")) {
      if (cond == 0) {
        st.set("cond", "1");
        st.setState(State.STARTED);
        st.playSound("ItemSound.quest_accept");
      }
    } else if (event.equalsIgnoreCase("32576-02.htm")) {
      if (cond == 1) {
        st.giveItems(IDENTITY_CARD, 1);
        st.set("cond", "2");
        st.playSound("ItemSound.quest_middle");
      }
    } else if (event.equalsIgnoreCase("30289-04.htm")) {
      if (cond == 2) {
        st.set("cond", "3");
        player.stopAllEffects();
        SkillTable.getInstance().getInfo(GUARD_DAWN, 1).getEffects(player, player);
      }
    } else if (event.equalsIgnoreCase("30289-07.htm")) {
      if (cond == 3) {
        SkillTable.getInstance().getInfo(GUARD_DAWN, 1).getEffects(player, player);
      }
    } else if (event.equalsIgnoreCase("30289-08.htm")) {
      if (cond == 3) {
        player.stopAllEffects();
      }
    } else if (event.equalsIgnoreCase("30289-11.htm")) {
      if (cond == 3) {
        st.set("cond", "4");
        st.playSound("ItemSound.quest_middle");
        player.stopAllEffects();
      }
    } else if (event.equalsIgnoreCase("30969-03.htm")) {
      if (cond == 4) {
        st.addExpAndSp(52518015, 5817677);
        // st.addExpAndSp(25000000, 2500000); // High Five
        st.unset("cond");
        st.exitQuest(false);
        st.playSound("ItemSound.quest_finish");
      }
    }
    return event;
  }
 @Override
 public String onTalk(L2Npc npc, L2PcInstance player) {
   final QuestState st = getQuestState(player, true);
   String htmltext = null;
   if (st != null) {
     switch (st.getState()) {
       case State.CREATED:
         {
           htmltext =
               (player.getRace() == Race.ORC)
                   ? (player.getLevel() >= MIN_LVL)
                       ? (hasAtLeastOneQuestItem(player, NECKLACE_OF_VALOR, NECKLACE_OF_COURAGE))
                           ? "30577-07.htm"
                           : "30577-03.htm"
                       : "30577-02.htm"
                   : "30577-01.htm";
           break;
         }
       case State.STARTED:
         {
           switch (st.getCond()) {
             case 1:
               {
                 htmltext = "30577-05.html";
                 break;
               }
             case 2:
               {
                 if (st.getQuestItemsCount(KASHA_WOLF_FANG) >= 50) {
                   if (getRandom(100) <= 13) {
                     st.rewardItems(NECKLACE_OF_VALOR, 1);
                     st.rewardItems(HEALING_POTION, 10);
                   } else {
                     st.rewardItems(NECKLACE_OF_COURAGE, 1);
                   }
                   st.takeItems(KASHA_WOLF_FANG, -1);
                   st.exitQuest(true, true);
                   htmltext = "30577-06.html";
                 }
                 break;
               }
           }
           break;
         }
     }
   }
   return htmltext;
 }
  @Override
  public String onTalk(L2Npc npc, L2PcInstance player) {
    final QuestState st = getQuestState(player, true);
    String htmltext = getNoQuestMsg(player);
    if (st == null) {
      return htmltext;
    }

    switch (npc.getId()) {
      case JOHNNY:
        switch (st.getState()) {
          case State.CREATED:
            final QuestState _prev =
                player.getQuestState(Q00249_PoisonedPlainsOfTheLizardmen.class.getSimpleName());
            if ((_prev != null) && _prev.isCompleted() && (player.getLevel() >= MIN_LEVEL)) {
              htmltext = (st.hasQuestItems(SEER_UGOROS_PASS)) ? "32744-07.htm" : "32744-01.htm";
            } else {
              htmltext = "32744-00.htm";
            }
            break;
          case State.STARTED:
            if (st.isCond(1)) {
              htmltext = "32744-05.html";
            } else if (st.isCond(2)) {
              htmltext = "32744-06.html";
            }
            break;
        }
        break;
      case BATRACOS:
        switch (st.getState()) {
          case State.CREATED:
            htmltext = (st.hasQuestItems(SEER_UGOROS_PASS)) ? "32740-05.html" : "32740-00.html";
            break;
          case State.STARTED:
            if (st.isCond(1)) {
              htmltext = "32740-02.html";
            } else if (st.isCond(2)) {
              st.giveItems(SEER_UGOROS_PASS, 1);
              st.exitQuest(true, true);
              htmltext = "32740-04.html";
            }
            break;
        }
    }
    return htmltext;
  }
 @Override
 public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) {
   final QuestState st = player.getQuestState(getName());
   if (st == null) {
     return null;
   }
   String htmltext = null;
   switch (event) {
     case "30621-02.html":
     case "30512-02.html":
       {
         htmltext = event;
         break;
       }
     case "30673-03.htm":
       {
         if (st.isCreated()) {
           st.startQuest();
           st.takeItems(LORAINES_CERTIFICATE, -1);
           st.giveItems(METALLOGRAPH, 1);
           htmltext = event;
         }
         break;
       }
     case "30621-03.html":
       {
         if (st.isCond(1)) {
           st.setCond(2, true);
           htmltext = event;
         }
         break;
       }
     case "30512-03.html":
       {
         if (st.isCond(2)) {
           st.giveAdena(93383, true);
           if (player.getLevel() < MIN_LEVEL_FOR_EXP_SP) {
             st.addExpAndSp(285935, 18711);
           }
           st.exitQuest(false, true);
           htmltext = event;
         }
         break;
       }
   }
   return htmltext;
 }
  @Override
  public final String onAdvEvent(String event, L2Npc npc, L2PcInstance player) {
    final QuestState st = player.getQuestState(qn);
    if (st == null) {
      return null;
    }

    if ("32010-03.htm".equalsIgnoreCase(event)) {
      st.set("cond", "1");
      st.setState(State.STARTED);
      st.playSound("ItemSound.quest_accept");
    } else if ("32010-10.htm".equalsIgnoreCase(event)) {
      st.exitQuest(true);
    }

    return event;
  }
  @Override
  public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) {
    QuestState st = getQuestState(player, false);
    if (st == null) {
      return getNoQuestMsg(player);
    }

    switch (event) {
      case "31331-3.html":
        st.startQuest();
        break;
      case "31331-6.html":
        st.exitQuest(true, true);
        break;
    }
    return event;
  }
  @Override
  public final String onTalk(L2Npc npc, L2PcInstance player) {
    final QuestState st = player.getQuestState(qn);
    final QuestState contractOfMammon = player.getQuestState("194_SevenSignContractOfMammon");

    if (st == null) return "<html><body>目前沒有執行任務,或條件不符。</body></html>";

    final int cond = st.getInt("cond");
    switch (npc.getNpcId()) {
      case CLAUDIA:
        switch (st.getState()) {
          case State.CREATED:
            if (cond == 0
                && player.getLevel() >= 79
                && contractOfMammon.getState() == State.COMPLETED) return "31001-01.htm";
            else st.exitQuest(true);
            return "31001-00.htm";
          case State.STARTED:
            if (cond == 1) return "31001-06.htm";
          case State.COMPLETED:
            return "<html><body>這是已經完成的任務。</body></html>";
        }
      case JOHN:
        switch (st.getInt("cond")) {
          case 1:
            return "32576-01.htm";
          case 2:
            return "32576-03.htm";
        }
      case RAYMOND:
        switch (st.getInt("cond")) {
          case 1:
          case 2:
            return "30289-01.htm";
          case 3:
            if (st.getQuestItemsCount(SHUNAIMAN_CONTRACT) == 1) return "30289-09.htm";
            else return "30289-06.htm";
          case 4:
            return "30289-12.htm";
        }
      case IASON_HEINE:
        if (cond == 4) return "30969-01.htm";
    }
    return "<html><body>目前沒有執行任務,或條件不符。</body></html>";
  }
  @Override
  public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) {
    final QuestState st = getQuestState(player, false);
    if (st == null) {
      return getNoQuestMsg(player);
    }

    switch (event) {
      case "31340-03.htm":
        st.startQuest();
        break;
      case "31335-03.htm":
        st.giveAdena(360000, true);
        st.exitQuest(false, true);
        break;
    }
    return event;
  }
  @Override
  public String onTalk(L2Npc npc, L2PcInstance player) {
    String htmltext = getNoQuestMsg(player);
    final QuestState st = getQuestState(player, true);
    if (st == null) {
      return htmltext;
    }

    L2Clan clan = player.getClan();
    switch (st.getState()) {
      case State.CREATED:
        htmltext =
            ((clan == null) || !player.isClanLeader() || (clan.getLevel() < 5))
                ? "31331-0.htm"
                : "31331-1.htm";
        break;
      case State.STARTED:
        if ((clan == null) || !player.isClanLeader()) {
          st.exitQuest(true);
          return "31331-8.html";
        }

        if (!st.hasQuestItems(TYRANNOSAURUS_CLAW)) {
          htmltext = "31331-4.html";
        } else {
          int count = (int) st.getQuestItemsCount(TYRANNOSAURUS_CLAW);
          int reward = (count < 10) ? (30 * count) : (59 + (30 * count));
          st.playSound(QuestSound.ITEMSOUND_QUEST_FANFARE_1);
          st.takeItems(TYRANNOSAURUS_CLAW, -1);
          clan.addReputationScore(reward, true);
          player.sendPacket(
              SystemMessage.getSystemMessage(
                      SystemMessageId
                          .YOU_HAVE_SUCCESSFULLY_COMPLETED_A_CLAN_QUEST_S1_POINT_S_HAVE_BEEN_ADDED_TO_YOUR_CLAN_REPUTATION)
                  .addInt(reward));
          clan.broadcastToOnlineMembers(new PledgeShowInfoUpdate(clan));
          htmltext = "31331-7.html";
        }
        break;
      default:
        break;
    }
    return htmltext;
  }
  @Override
  public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) {
    String htmltext = event;
    final QuestState st = player.getQuestState(getName());
    if (st == null) {
      return htmltext;
    }

    if (npc.getId() == MOUEN) {
      if (event.equalsIgnoreCase("30196-03.htm")) {
        st.startQuest();
      }
    } else if ((npc.getId() == JOHNNY) && event.equalsIgnoreCase("32744-03.htm")) {
      st.giveAdena(83056, true);
      st.addExpAndSp(477496, 58743);
      st.exitQuest(false, true);
    }
    return htmltext;
  }
  @Override
  public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) {
    final QuestState st = getQuestState(player, false);
    String htmltext = null;
    if (st == null) {
      return htmltext;
    }

    switch (event) {
      case "32133-03.htm":
        {
          st.startQuest();
          htmltext = event;
          break;
        }
      case "32133-06.html":
        {
          htmltext = event;
          break;
        }
      case "32133-08.html":
        {
          if (st.hasQuestItems(CRIMSON_SPIDER_CLAW)) {
            final long claws = st.getQuestItemsCount(CRIMSON_SPIDER_CLAW);
            st.giveAdena((claws * CLAW_PRICE) + ((claws >= 10) ? BONUS : 0), true);
            st.takeItems(CRIMSON_SPIDER_CLAW, -1);
            Q00261_CollectorsDream.giveNewbieReward(player);
            htmltext = event;
          } else {
            htmltext = "32133-07.html";
          }
          break;
        }
      case "32133-09.html":
        {
          st.exitQuest(true, true);
          htmltext = event;
          break;
        }
    }
    return htmltext;
  }
  @Override
  public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) {
    final QuestState st = player.getQuestState(getName());
    if (st == null) {
      return null;
    }

    String htmltext = event;
    switch (event) {
      case "30291-02a.html":
      case "30291-04.html":
      case "30291-05.html":
      case "30291-06.html":
      case "30068-08.html":
      case "30068-09.html":
      case "30068-10.html":
        break;
      case "30068-03.htm":
        st.startQuest();
        break;
      case "30068-04.html":
        st.setCond(2, true);
        break;
      case "30291-07.html":
        st.unset("talk");
        st.setCond(3, true);
        break;
      case "30068-11.html":
        st.giveItems(BADGE_TEMPLE_EXECUTOR, 1);
        st.giveAdena(16924, true);
        if (player.getLevel() < MAX_REWARD_LEVEL) {
          st.addExpAndSp(30000, 2000);
        }
        st.exitQuest(false, true);
        break;
      default:
        htmltext = null;
        break;
    }
    return htmltext;
  }
  @Override
  public String onTalk(L2Npc npc, L2PcInstance player) {
    String htmltext = getNoQuestMsg(player);
    final QuestState st = getQuestState(player, true);
    if (st == null) {
      return htmltext;
    }

    final QuestState st2 = player.getQuestState(Q00017_LightAndDarkness.class.getSimpleName());
    if ((st2 != null) && !st2.isCompleted()) {
      return "31517-04.html";
    }

    switch (st.getState()) {
      case State.COMPLETED:
        htmltext = getAlreadyCompletedMsg(player);
        break;
      case State.CREATED:
        htmltext = (player.getLevel() >= 62) ? "31517-00.htm" : "31517-05.html";
        break;
      case State.STARTED:
        final int npcId = npc.getId();
        if (npcId == HIERARCH) {
          if (st.isCond(6)) {
            st.addExpAndSp(865187, 69172);
            st.exitQuest(false, true);
            htmltext = "31517-03.html";
          } else {
            htmltext = "31517-02a.html";
          }
        } else if ((npcId - 31511) == st.getCond()) {
          htmltext = npcId + "-00.html";
        } else {
          htmltext = npcId + "-01.html";
        }
        break;
    }
    return htmltext;
  }
  @Override
  public String onTalk(L2Npc npc, L2PcInstance player) {
    String htmltext = getNoQuestMsg(player);
    QuestState st = getQuestState(player, true);
    if (st == null) {
      return htmltext;
    }

    switch (st.getState()) {
      case State.COMPLETED:
        htmltext = "32557-0a.html";
        break;
      case State.CREATED:
        st = player.getQuestState(Q10273_GoodDayToFly.class.getSimpleName());
        if (st == null) {
          htmltext = "32557-00.html";
        } else {
          htmltext =
              ((player.getLevel() >= 75) && st.isCompleted()) ? "32557-01.htm" : "32557-00.html";
        }
        break;
      case State.STARTED:
        if ((st.getQuestItemsCount(RED)
                + st.getQuestItemsCount(BLUE)
                + st.getQuestItemsCount(GREEN))
            >= 8) {
          htmltext = "32557-05.html";
          st.giveItems(13728, 1);
          st.addExpAndSp(25160, 2525);
          st.exitQuest(false, true);
        } else {
          htmltext = "32557-04.html";
        }
        break;
    }
    return htmltext;
  }
  @Override
  public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) {
    final QuestState st = player.getQuestState(getName());
    if (st == null) {
      return null;
    }

    String htmltext = event;
    switch (event) {
      case "30847-03.htm":
        st.startQuest();
        break;
      case "30847-06.html":
        if (st.getQuestItemsCount(ENCHANTED_IRON) < IRON_COUNT) {
          return getNoQuestMsg(player);
        }
        st.takeItems(ENCHANTED_IRON, -1);
        st.setCond(3, true);
        break;
      case "30847-09.html":
        if ((st.getQuestItemsCount(ARTISANS_FRAME) >= COUNT)
            && (st.getQuestItemsCount(ORIHARUKON) >= COUNT)) {
          st.takeItems(ARTISANS_FRAME, 10);
          st.takeItems(ORIHARUKON, 10);
          st.giveItems(SEWING_KIT, 1);
          st.exitQuest(false, true);
        } else {
          htmltext = "30847-10.html";
        }
        break;
      default:
        htmltext = null;
        break;
    }
    return htmltext;
  }