@Override
  public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) {
    String htmltext = event;
    QuestState st = player.getQuestState(qn);

    if (st == null) {
      return getNoQuestMsg(player);
    }

    if (event.equalsIgnoreCase("32245-03.htm") && (player.getLevel() >= 76) && !st.isCompleted()) {
      if (st.getState() == State.CREATED) {
        st.setState(State.STARTED);
        st.set("cond", "1");
        st.set("rewarded_prince", "1");
        st.set("rewarded_ranku", "1");
        st.playSound("ItemSound.quest_accept");
      } else {
        htmltext = "32245-03a.htm";
      }
    } else if (event.equalsIgnoreCase("32245-07.htm")
        && (st.getInt("cond") == 3)
        && !st.isCompleted()) {
      st.giveAdena(65884, true);
      st.addExpAndSp(50541, 5094);
      st.giveItems(FIRE, 1);
      st.giveItems(WATER, 1);
      st.giveItems(EARTH, 1);
      st.giveItems(WIND, 1);
      st.giveItems(DARKNESS, 1);
      st.giveItems(DIVINITY, 1);
      st.playSound("ItemSound.quest_finish");
      st.exitQuest(false);
    }
    return htmltext;
  }
  @Override
  public final String onTalk(L2Npc npc, L2PcInstance player) {
    String htmltext = Quest.getNoQuestMsg(player);
    QuestState st = player.getQuestState(qn);

    if (st == null) {
      return htmltext;
    }

    if (st.getState() == State.CREATED) {
      if (player.getLevel() >= 76) {
        htmltext = "32245-01.htm";
      } else {
        htmltext = "32245-02.htm";
      }
    } else if (st.isCompleted()) {
      htmltext = getAlreadyCompletedMsg(player);
    } else if (st.getState() == State.STARTED) {
      switch (st.getInt("cond")) {
        case 1:
        case 2:
          if (st.hasQuestItems(BLUEPRINT_RANKU) && st.hasQuestItems(BLUEPRINT_PRINCE)) {
            st.takeItems(BLUEPRINT_RANKU, -1);
            st.takeItems(BLUEPRINT_PRINCE, -1);
            st.set("cond", "3");
            st.playSound("ItemSound.quest_middle");
            htmltext = "32245-05.htm";
          } else {
            htmltext = "32245-04.htm";
          }

          break;
        case 3:
          htmltext = "32245-06.htm";
      }
    }
    return htmltext;
  }
  @Override
  public String onTalk(L2Npc npc, L2PcInstance player) {
    String htmltext = getNoQuestMsg(player);
    QuestState st = player.getQuestState(qn);
    if (st == null) return htmltext;

    if (npc.getNpcId() == JAKAN) {
      switch (st.getState()) {
        case State.CREATED:
          if (player.getLevel() >= 84) htmltext = "32773-1.htm";
          else htmltext = "32773-0.htm";
          break;
        case State.STARTED:
          if (st.getInt("cond") == 1) htmltext = "32773-4.htm";
          else if (st.getInt("cond") == 2) {
            htmltext = "32773-5.htm";
            st.unset("cond");
            st.takeItems(TAG_ID, 1);
            st.giveItems(57, 95200);
            st.addExpAndSp(435024, 50366);
            st.playSound("ItemSound.quest_finish");
            st.exitQuest(false);

            Calendar reDo = Calendar.getInstance();
            reDo.set(Calendar.MINUTE, RESET_MIN);
            if (reDo.get(Calendar.HOUR_OF_DAY) >= RESET_HOUR) reDo.add(Calendar.DATE, 1);
            reDo.set(Calendar.HOUR_OF_DAY, RESET_HOUR);
            st.set("reDoTime", String.valueOf(reDo.getTimeInMillis()));
          }
          break;
        case State.COMPLETED:
          Long reDoTime = Long.parseLong(st.get("reDoTime"));
          if (reDoTime > System.currentTimeMillis()) htmltext = "32773-6.htm";
          else {
            st.setState(State.CREATED);
            if (player.getLevel() >= 84) htmltext = "32773-1.htm";
            else htmltext = "32773-0.htm";
          }
          break;
      }
    } else if (Util.contains(SOLDIER_CORPSES, npc.getNpcId())) {
      if (st.getInt("cond") == 1) htmltext = "corpse-1.htm";
    }
    return htmltext;
  }
  @Override
  public String onTalk(L2Npc npc, L2PcInstance player) {
    String htmltext = getNoQuestMsg(player);
    QuestState st = player.getQuestState(qn);
    QuestState prev = player.getQuestState("250_WatchWhatYouEat");

    if (st == null) return htmltext;

    switch (st.getState()) {
      case State.CREATED:
        if (player.getLevel() >= 82 && prev != null && prev.isCompleted())
          htmltext = "32742-01.htm";
        else htmltext = "32742-14.htm";
        break;
      case State.STARTED:
        if (st.getQuestItemsCount(VialOfTantaBlood) < 100) htmltext = "32742-04.html";
        else htmltext = "32742-05.html";
        break;
    }
    return htmltext;
  }