示例#1
0
  @Override
  public String onTalk(L2Npc npc, L2PcInstance player) {
    String htmltext = "";
    QuestState accessQuest = player.getQuestState("240_ImTheOnlyOneYouCanTrust");
    if ((accessQuest != null) && accessQuest.isCompleted()) htmltext = "32640.htm";
    else htmltext = "32640-no.htm";

    return htmltext;
  }
  private void givePormanders(L2PcInstance player) {
    final int index = getTransferClassIndex(player);

    if (index >= 0) {
      QuestState st = player.getQuestState(qn);
      if (st == null) {
        st = newQuestState(player);
      }

      final String name = qn + String.valueOf(player.getClassId().getId());
      if (st.getInt(name) == 0) {
        st.setInternal(name, "1");
        if (st.getGlobalQuestVar(name).isEmpty()) {
          st.saveGlobalQuestVar(name, "1");
          player.addItem(qn, PORMANDERS[index].getId(), PORMANDERS[index].getCount(), null, true);
        }
      }

      if (Config.SKILL_CHECK_ENABLE && (!player.isGM() || Config.SKILL_CHECK_GM)) {
        long count =
            PORMANDERS[index].getCount()
                - player.getInventory().getInventoryItemCount(PORMANDERS[index].getId(), -1, false);
        for (L2Skill sk : player.getAllSkills()) {
          for (L2SkillLearn s :
              SkillTreesData.getInstance().getTransferSkillTree(player.getClassId()).values()) {
            if (s.getSkillId() == sk.getId()) {
              // Holy Weapon allowed for Shilien Saint/Inquisitor stance
              if ((sk.getId() == 1043) && (index == 2) && player.isInStance()) {
                continue;
              }

              count--;
              if (count < 0) {
                Util.handleIllegalPlayerAction(
                    player,
                    "Player "
                        + player.getName()
                        + " has too many transfered skills or items, skill:"
                        + s.getName()
                        + " ("
                        + sk.getId()
                        + "/"
                        + sk.getLevel()
                        + "), class:"
                        + player.getTemplate().className,
                    1);
                if (Config.SKILL_CHECK_REMOVE) {
                  player.removeSkill(sk);
                }
              }
            }
          }
        }
      }
    }
  }
  @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;
  }
  @Override
  public String onKill(L2Npc npc, L2PcInstance player, boolean isPet) {
    L2PcInstance partyMember = getRandomPartyMember(player, "1");
    if (partyMember == null) return null;
    final QuestState st = partyMember.getQuestState(qn);
    int chance = Rnd.get(1000);
    boolean giveItem = false;

    switch (npc.getNpcId()) {
      case 22771: // Tanta Lizardman Berserker
        if (chance < 159) giveItem = true;
        break;
      case 22770: // Tanta Lizardman Soldier
        if (chance < 123) giveItem = true;
        break;
      case 22774: // Tanta Lizardman Summoner
        if (chance < 261) giveItem = true;
        break;
      case 22769: // Tanta Lizardman Warrior
        if (chance < 689) giveItem = true;
        break;
      case 22772: // Tanta Lizardman Archer
        if (chance < 739) giveItem = true;
        break;
      case 22768: // Tanta Lizardman Scout
        if (chance < 509) giveItem = true;
        break;
      case 22773: // Tanta Lizardman Magician
        if (chance < 737) giveItem = true;
        break;
    }

    if (giveItem) {
      st.giveItems(VialOfTantaBlood, 1);
      st.playSound("ItemSound.quest_itemget");
    }
    return null;
  }
示例#5
0
  @Override
  public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) {
    String htmltext = "";
    QuestState st = player.getQuestState(getName());
    if (st == null) st = newQuestState(player);

    int index = Integer.parseInt(event) - 1;

    if (_locs.length > index) {
      Location loc = _locs[index];

      if (player.getParty() != null) {
        for (L2PcInstance partyMember : player.getParty().getPartyMembers()) {
          if (partyMember.isInsideRadius(player, 1000, true, true))
            partyMember.teleToLocation(loc, true);
        }
      }
      player.teleToLocation(loc, false);
      st.exitQuest(true);
    }

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

    if (st == null) return htmltext;

    if (npc.getNpcId() == JAKAN) {
      if (event.equalsIgnoreCase("32773-3.htm")) {
        st.setState(State.STARTED);
        st.set("cond", "1");
        st.playSound("ItemSound.quest_accept");
      }
    } else if (Util.contains(SOLDIER_CORPSES, npc.getNpcId())) {
      if (st.getInt("cond") == 1) {
        st.giveItems(TAG_ID, 1);
        st.set("cond", "2");
        st.playSound("ItemSound.quest_middle");
        npc.deleteMe();
      } else htmltext = getNoQuestMsg(player);
    }
    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 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 onKill(L2Npc npc, L2PcInstance player, boolean isPet) {
    L2PcInstance pl = null;
    switch (npc.getNpcId()) {
      case DEMON_PRINCE:
        pl = getRandomPartyMember(player, "rewarded_prince", "1");
        if (pl != null) {
          final QuestState st = pl.getQuestState(qn);
          st.giveItems(BLUEPRINT_PRINCE, 1);
          st.set("rewarded_prince", "2");

          if (st.hasQuestItems(BLUEPRINT_RANKU)) {
            st.playSound("ItemSound.quest_middle");
            st.set("cond", "2");
          } else {
            st.playSound("ItemSound.quest_itemget");
          }
        }
        break;
      case RANKU:
        pl = getRandomPartyMember(player, "rewarded_ranku", "1");
        if (pl != null) {
          final QuestState st = pl.getQuestState(qn);
          st.giveItems(BLUEPRINT_RANKU, 1);
          st.set("rewarded_ranku", "2");

          if (st.getQuestItemsCount(BLUEPRINT_PRINCE) > 0) {
            st.playSound("ItemSound.quest_middle");
            st.set("cond", "2");
          } else {
            st.playSound("ItemSound.quest_itemget");
          }
        }
        break;
    }
    return null;
  }
  @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 onAdvEvent(String event, L2Npc npc, L2PcInstance player) {
    String htmltext = event;
    QuestState st = player.getQuestState(qn);

    if (st == null) return htmltext;

    if (event.equalsIgnoreCase("32742-03.htm")) {
      st.set("cond", "1");
      st.playSound("ItemSound.quest_accept");
      st.setState(State.STARTED);
    } else if (event.equalsIgnoreCase("Icarus")) {
      if (st.getQuestItemsCount(VialOfTantaBlood) >= 500) {
        st.takeItems(VialOfTantaBlood, 500);
        int i0 = Rnd.get(5);
        if (i0 == 0) st.giveItems(10381, 1);
        else if (i0 == 1) st.giveItems(10405, 1);
        else if (i0 == 2) st.giveItems(10405, 4);
        else if (i0 == 3) st.giveItems(10405, 4);
        else st.giveItems(10405, 6);
        st.playSound("ItemSound.quest_finish");
        htmltext = "32742-06.html";
      } else htmltext = "32742-07.html";
    } else if (event.equalsIgnoreCase("Moirai")) {
      if (st.getQuestItemsCount(VialOfTantaBlood) >= 100) {
        st.takeItems(VialOfTantaBlood, 100);
        int i0 = Rnd.get(10);
        if (i0 == 0) st.giveItems(15776, 1);
        else if (i0 == 1) st.giveItems(15779, 1);
        else if (i0 == 2) st.giveItems(15782, 1);
        else if (i0 == 3) {
          boolean i1 = Rnd.nextBoolean();
          if (!i1) st.giveItems(15785, 1);
          else st.giveItems(15788, 1);
        } else if (i0 == 4) {
          int i1 = Rnd.get(10);
          if (i1 < 4) st.giveItems(15812, 1);
          else if (i1 < 8) st.giveItems(15813, 1);
          else st.giveItems(15814, 1);
        } else if (i0 == 5) st.giveItems(15646, 5);
        else if (i0 == 6) st.giveItems(15649, 5);
        else if (i0 == 7) st.giveItems(15652, 5);
        else if (i0 == 8) {
          boolean i1 = Rnd.nextBoolean();
          if (!i1) st.giveItems(15655, 5);
          else st.giveItems(15658, 5);
        } else {
          int i1 = Rnd.get(10);
          if (i1 < 4) st.giveItems(15772, 1);
          else if (i1 < 7) st.giveItems(15773, 1);
          else st.giveItems(15774, 1);
        }
        st.playSound("ItemSound.quest_finish");
        htmltext = "32742-08.html";
      } else htmltext = "32742-09.html";
    } else if (event.equalsIgnoreCase("32742-11.html")) {
      if (st.hasQuestItems(VialOfTantaBlood)) htmltext = "32742-11.html";
      else {
        st.playSound("ItemSound.quest_finish");
        st.exitQuest(true);
        htmltext = "32742-12.html";
      }
    } else if (event.equalsIgnoreCase("32742-13.html")) {
      st.takeItems(VialOfTantaBlood, -1);
      st.playSound("ItemSound.quest_finish");
      st.exitQuest(true);
      htmltext = "32742-12.html";
    }
    return htmltext;
  }