Пример #1
0
  /** Talk with captains and using of the escape teleporter */
  @Override
  public final String onTalk(L2Npc npc, L2PcInstance player) {
    QuestState st = player.getQuestState(qn);
    if (st == null) newQuestState(player);
    final int npcId = npc.getNpcId();

    if (npcId == TELEPORTER) {
      final L2Party party = player.getParty();
      // only party leader can talk with escape teleporter
      if (party != null && party.isLeader(player)) {
        final InstanceWorld world = InstanceManager.getInstance().getWorld(npc.getInstanceId());
        if (world instanceof KamaWorld) {
          // party members must be in the instance
          if (world.allowed.contains(player.getObjectId())) {
            Instance inst = InstanceManager.getInstance().getInstance(world.instanceId);

            // teleports entire party away
            for (L2PcInstance partyMember : party.getPartyMembers())
              if (partyMember != null && partyMember.getInstanceId() == world.instanceId)
                teleportPlayer(partyMember, inst.getSpawnLoc(), 0);
          }
        }
      }
    } else return npcId + ".htm";

    return "";
  }
  @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;
  }
Пример #3
0
  /** Only escape teleporters first talk handled */
  @Override
  public final String onFirstTalk(L2Npc npc, L2PcInstance player) {
    if (npc.getNpcId() == TELEPORTER) {
      if (player.isInParty() && player.getParty().isLeader(player)) return "32496.htm";
      else return "32496-no.htm";
    }

    return "";
  }
  @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 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;
  }
  @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;
  }