@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) {
    String htmltext = getNoQuestMsg(player);
    final QuestState st = getQuestState(player, true);
    if (st == null) {
      return htmltext;
    }

    switch (st.getState()) {
      case State.CREATED:
        {
          htmltext =
              (player.getRace() == Race.DARK_ELF)
                  ? (player.getLevel() >= MIN_LEVEL) ? "30346-03.htm" : "30346-02.htm"
                  : "30346-01.htm";
          break;
        }
      case State.STARTED:
        {
          if (hasAtLeastOneQuestItem(player, getRegisteredItemIds())) {
            final long amulets = st.getQuestItemsCount(ORC_AMULET);
            final long necklaces = st.getQuestItemsCount(ORC_NECKLACE);
            st.giveAdena(
                ((amulets * 20) + (necklaces * 30) + ((amulets + necklaces) >= 10 ? 1100 : 0)),
                true);
            takeItems(player, -1, getRegisteredItemIds());
            htmltext = "30346-06.html";
          } else {
            htmltext = "30346-05.html";
          }
          break;
        }
    }
    return htmltext;
  }
  @Override
  public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon) {
    QuestState st = getQuestState(killer, false);
    if (st == null) {
      return null;
    }

    final int npcId = npc.getId();
    if (killer.getParty() != null) {
      final List<QuestState> PartyMembers = new ArrayList<>();
      for (L2PcInstance member : killer.getParty().getMembers()) {
        st = getQuestState(member, false);
        if ((st != null) && st.isStarted() && !st.hasQuestItems(TISSUE_WA)) {
          PartyMembers.add(st);
        }
      }

      if (!PartyMembers.isEmpty()) {
        rewardItem(npcId, PartyMembers.get(getRandom(PartyMembers.size())));
      }
    } else if (st.isStarted() && !st.hasQuestItems(TISSUE_WA)) {
      rewardItem(npcId, st);
    }
    return null;
  }
 @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 "30307-04.htm":
       {
         htmltext = event;
         break;
       }
     case "30307-05.htm":
       {
         if (qs.isCreated()) {
           qs.startQuest();
           giveItems(player, KAROYDS_LETTER, 1);
           htmltext = event;
         }
         break;
       }
   }
   return htmltext;
 }
  @Override
  public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon) {
    final List<L2PcInstance> randomList = new ArrayList<>();
    final QuestState st = killer.getQuestState(getName());
    if ((st != null) && st.isStarted()) {
      randomList.add(killer);
      randomList.add(killer);
    }

    final int monsterChance = MONSTER_DROP_CHANCES.get(npc.getId());
    if (killer.isInParty()) {
      for (L2PcInstance member : killer.getParty().getMembers()) {
        final QuestState qs = member.getQuestState(getName());
        if ((qs != null) && qs.isStarted()) {
          randomList.add(member);
        }
      }
    }

    if (!randomList.isEmpty()) {
      final L2PcInstance player = randomList.get(getRandom(randomList.size()));
      if ((getRandom(1000) < monsterChance) && Util.checkIfInRange(1500, npc, player, true)) {
        giveItems(player, REMNANTS_OF_OLD_DWARVES_DREAMS, 1);
        playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET);
      }
    }
    return super.onKill(npc, killer, isSummon);
  }
 @Override
 public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) {
   String htmltext = event;
   QuestState qs = player.getQuestState("10273_GoodDayToFly");
   if (qs == null || qs.getState() != State.COMPLETED) {
     player.sendPacket(new RadarControl(2, 2, 0, 0, 0));
     player.sendPacket(new RadarControl(0, 2, -184545, 243120, 1581));
     htmltext = "32627.htm";
   } else if (event.equals("32627-3.htm")) {
     player.sendPacket(new RadarControl(2, 2, 0, 0, 0));
     player.sendPacket(new RadarControl(0, 2, -192361, 254528, 3598));
   } else if (event.equals("32627-4.htm")) {
     player.sendPacket(new RadarControl(2, 2, 0, 0, 0));
     player.sendPacket(new RadarControl(0, 2, -174600, 219711, 4424));
   } else if (event.equals("32627-5.htm")) {
     player.sendPacket(new RadarControl(2, 2, 0, 0, 0));
     player.sendPacket(new RadarControl(0, 2, -181989, 208968, 4424));
   } else if (event.equals("32627-6.htm")) {
     player.sendPacket(new RadarControl(2, 2, 0, 0, 0));
     player.sendPacket(new RadarControl(0, 2, -252898, 235845, 5343));
   } else if (event.equals("32627-8.htm")) {
     player.sendPacket(new RadarControl(2, 2, 0, 0, 0));
     player.sendPacket(new RadarControl(0, 2, -212819, 209813, 4288));
   } else if (event.equals("32627-9.htm")) {
     player.sendPacket(new RadarControl(2, 2, 0, 0, 0));
     player.sendPacket(new RadarControl(0, 2, -246899, 251918, 4352));
   }
   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;
    }

    if (npc.getId() == MOUEN) {
      switch (st.getState()) {
        case State.CREATED:
          htmltext = (player.getLevel() >= 82) ? "30196-01.htm" : "30196-00.htm";
          break;
        case State.STARTED:
          if (st.isCond(1)) {
            htmltext = "30196-04.htm";
          }
          break;
        case State.COMPLETED:
          htmltext = "30196-05.htm";
          break;
      }
    } else if (npc.getId() == JOHNNY) {
      if (st.isCond(1)) {
        htmltext = "32744-01.htm";
      } else if (st.isCompleted()) {
        htmltext = "32744-04.htm";
      }
    }
    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 onKill(L2Npc npc, L2PcInstance killer, boolean isSummon) {
    final QuestState qs = getRandomPartyMemberState(killer, -1, 3, npc);
    if (qs == null) {
      return super.onKill(npc, killer, isSummon);
    }

    switch (npc.getId()) {
      case MARSH_ZOMBIE:
        {
          if (hasQuestItems(killer, PRESERVE_OIL)
              && (getRandom(10) < 5)
              && Util.checkIfInRange(1500, npc, killer, true)) {
            giveItems(killer, ZOMBIE_HEAD, 1);
            takeItems(killer, PRESERVE_OIL, -1);
            qs.setCond(7, true);
          }
          break;
        }
      case DOOM_SOLDIER:
      case SKELETON_HUNTER:
      case SKELETON_HUNTER_ARCHER:
        {
          if (hasQuestItems(killer, CECKTINONS_VOUCHER2)
              && giveItemRandomly(qs.getPlayer(), npc, BONE_FRAGMENT, 1, 10, 1.0, true)) {
            qs.setCond(4, true);
          }
          break;
        }
    }
    return super.onKill(npc, killer, isSummon);
  }
  @Override
  public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) {
    final QuestState st = getQuestState(player, false);
    if (st == null) {
      return null;
    }

    String htmltext = null;
    if ((player.getLevel() >= MIN_LEVEL) && st.hasQuestItems(VACUALITE_FLOATING_STONE)) {
      switch (event) {
        case "31540-05.htm":
        case "31540-06.htm":
          {
            htmltext = event;
            break;
          }
        case "31540-07.html":
          {
            st.startQuest();
            htmltext = event;
            break;
          }
      }
    }
    return htmltext;
  }
 @Override
 public void actionForEachPlayer(L2PcInstance player, L2Npc npc, boolean isSummon) {
   final QuestState st = getQuestState(player, false);
   if ((st != null) && st.isCond(1) && Util.checkIfInRange(1500, npc, player, false)) {
     st.setCond(2, true);
   }
 }
  @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() >= MIN_LEVEL) ? "30847-01.htm" : "30847-02.html";
        break;
      case State.STARTED:
        switch (st.getCond()) {
          case 1:
            htmltext = "30847-04.html";
            break;
          case 2:
            htmltext = "30847-05.html";
            break;
          case 3:
            htmltext =
                ((st.getQuestItemsCount(ARTISANS_FRAME) >= COUNT)
                        && (st.getQuestItemsCount(ORIHARUKON) >= COUNT))
                    ? "30847-07.html"
                    : "30847-08.html";
            break;
        }
        break;
      case State.COMPLETED:
        htmltext = getAlreadyCompletedMsg(player);
        break;
    }
    return htmltext;
  }
 @Override
 public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon) {
   final QuestState qs = getRandomPartyMemberState(killer, -1, 3, npc);
   if (qs != null) {
     final ItemChanceHolder info = MOBS_DROP_CHANCES.get(npc.getId());
     switch (info.getId()) {
       case RIB_BONE_OF_A_BLACK_MAGUS:
         {
           if (qs.isCond(1)
               && giveItemRandomly(
                   qs.getPlayer(),
                   npc,
                   RIB_BONE_OF_A_BLACK_MAGUS,
                   1,
                   RIB_BONE_REQUIRED_COUNT,
                   info.getChance(),
                   true)) {
             qs.setCond(2);
           }
           break;
         }
       case ZOMBIES_LIVER:
         {
           giveItemRandomly(qs.getPlayer(), npc, ZOMBIES_LIVER, 1, 0, info.getChance(), true);
           break;
         }
     }
   }
   return super.onKill(npc, killer, isSummon);
 }
  @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;
  }
Exemple #15
0
  @Override
  public String onFirstTalk(L2Npc npc, L2PcInstance player) {
    final MDWorld world = (MDWorld) InstanceManager.getInstance().getWorld(npc.getInstanceId());
    final QuestState qs =
        player.getQuestState(Q10327_IntruderWhoWantsTheBookOfGiants.class.getSimpleName());
    String htmltext = null;

    if (qs.isCond(1)) {
      if (world.deskSpawns.get(world.randomDesk) == npc) {
        qs.setCond(2);
        giveItems(player, THE_WAR_OF_GODS_AND_GIANTS, 1);
        world.thiefSpawns = spawnGroup("thiefs", world.getInstanceId());
        showOnScreenMsg(
            player,
            NpcStringId.WATCH_OUT_YOU_ARE_BEING_ATTACKED,
            ExShowScreenMessage.TOP_CENTER,
            5000);
        startQuestTimer("assist_player", 2000, world.toyron, player);
        htmltext = "desk_correct.html";
      } else {
        htmltext = "desk_wrong.html";
      }
    }
    return htmltext;
  }
  @Override
  public String onTalk(L2Npc npc, L2PcInstance player) {
    final QuestState st = player.getQuestState(getName());
    String htmltext = getNoQuestMsg(player);
    if (st == null) {
      return htmltext;
    }

    switch (st.getState()) {
      case State.CREATED:
        {
          if (player.getLevel() < MIN_LVL) {
            htmltext = "32054-02.htm";
          } else {
            final QuestState q117 = player.getQuestState("117_OceanOfDistantStar"); // TODO: Update.
            htmltext = (q117 != null) && q117.isCompleted() ? "32054-01.htm" : "32054-04.htm";
          }
          break;
        }
      case State.STARTED:
        {
          htmltext =
              st.hasQuestItems(REMNANTS_OF_OLD_DWARVES_DREAMS) ? "32054-05.html" : "32054-06.html";
          break;
        }
    }
    return htmltext;
  }
  @Override
  public final String onTalk(L2Npc npc, L2PcInstance player) {
    final QuestState st = player.getQuestState(qn);
    if (st == null) {
      return getNoQuestMsg(player);
    }

    final int cond = st.getInt("cond");
    switch (npc.getNpcId()) {
      case ADLER1:
        switch (st.getState()) {
          case State.CREATED:
            if (player.getLevel() < MIN_LEVEL) {
              return "32497-05.htm";
            }
            if (player.getLevel() > MAX_LEVEL) {
              return "32497-06.htm";
            }
            return "32497-01.htm";
          case State.STARTED:
            if (cond > 1) {
              return "32497-00.htm";
            }
            return "32497-03.htm";
          case State.COMPLETED:
            return "32497-07.htm";
          default:
            return "32497-01.htm";
        }
      case SINAI:
        if (cond > 1) {
          return "32500-00.htm";
        }
        return "32500-01.htm";
      case INSPECTOR:
        switch (st.getInt("cond")) {
          case 1:
            return "32507-01.htm";
          case 2:
            return "32507-02.htm";
          case 3:
            return "32507-03.htm";
          case 4:
          case 5:
            return "32507-05.htm";
          case 6:
            return "32507-06.htm";
          default:
            return "32507-09.htm";
        }
      case ADLER2:
        if (st.getState() == State.COMPLETED) {
          return "32510-00.htm";
        } else if (cond == 9) {
          return "32510-01.htm";
        }
    }
    return getNoQuestMsg(player);
  }
 @Override
 public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon) {
   final QuestState st = getRandomPartyMemberState(killer, -1, 3, npc);
   if (st != null) {
     st.giveItemRandomly(npc, CRIMSON_SPIDER_CLAW, 1, 0, 0.6, true);
   }
   return super.onKill(npc, killer, isSummon);
 }
 @Override
 public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon) {
   final QuestState st = killer.getQuestState(getName());
   if ((st != null) && st.isCond(1)) {
     st.setCond(2, true);
   }
   return super.onKill(npc, killer, isSummon);
 }
  @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 onKill(L2Npc npc, L2PcInstance killer, boolean isSummon) {
   final QuestState st = getQuestState(killer, false);
   if ((st != null) && (getRandom(10) > 4)) {
     st.giveItems(MONSTERS.get(npc.getId()), 1);
     st.playSound(QuestSound.ITEMSOUND_QUEST_ITEMGET);
   }
   return super.onKill(npc, killer, isSummon);
 }
 @Override
 public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) {
   final QuestState st = player.getQuestState(getName());
   if ((st != null) && event.equalsIgnoreCase("36479-04.html")) {
     st.startQuest();
     return event;
   }
   return null;
 }
 @Override
 public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) {
   final QuestState st = getQuestState(player, false);
   if ((st != null) && event.equalsIgnoreCase("30572-04.htm")) {
     st.startQuest();
     return event;
   }
   return null;
 }
 @Override
 public String onTalk(L2Npc npc, L2PcInstance talker) {
   final QuestState qs = getQuestState(talker, true);
   String htmltext = getNoQuestMsg(talker);
   switch (qs.getState()) {
     case State.CREATED:
       {
         if (npc.getId() == EYE_OF_ARGOS) {
           htmltext = ((talker.getLevel() < MIN_LVL) ? "31683-02.html" : "31683-01.htm");
         }
         break;
       }
     case State.STARTED:
       {
         if (npc.getId() == EYE_OF_ARGOS) {
           switch (qs.getCond()) {
             case 1:
             case 2:
             case 3:
             case 4:
             case 5:
               {
                 htmltext = "31683-04.html";
                 break;
               }
             case 6:
               {
                 htmltext = "31683-05.html";
                 break;
               }
             case 7:
               {
                 htmltext = "31683-07.html";
                 break;
               }
             case 8:
               {
                 htmltext = "31683-08.html";
                 break;
               }
           }
         } else if (qs.getInt("TABLET_" + npc.getId()) == 0) {
           htmltext = npc.getId() + "-01.html";
         } else {
           htmltext = npc.getId() + "-03.html";
         }
         break;
       }
     case State.COMPLETED:
       {
         htmltext = getAlreadyCompletedMsg(talker);
         break;
       }
   }
   return htmltext;
 }
 private void giveItem(L2Npc npc, L2PcInstance player) {
   final QuestState st = player.getQuestState(getName());
   if ((st != null)
       && (st.isStarted())
       && (!st.isCond(5))
       && Util.checkIfInRange(1500, npc, player, false)) {
     st.giveItems(MONSTER_DROPS.get(npc.getId()), 1);
     st.setCond(5, true);
   }
 }
 @Override
 public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) {
   final QuestState st = player.getQuestState(getName());
   if ((st != null) && event.equals("30349-03.htm")) {
     st.startQuest();
     st.giveItems(JENNAS_LETTER, 1);
     return event;
   }
   return null;
 }
 @Override
 public String onKill(L2Npc npc, L2PcInstance player, boolean isSummon) {
   final QuestState st = getRandomPartyMemberState(player, 2, 3, npc);
   if ((st != null)
       && giveItemRandomly(
           st.getPlayer(), npc, ANTELOPE_SKIN, 1, 1, MOBS_SKIN.get(npc.getId()), true)) {
     st.setCond(3);
   }
   return super.onKill(npc, player, isSummon);
 }
  @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 onTalk(L2Npc npc, L2PcInstance player) {
    final QuestState st = getQuestState(player, true);
    String htmltext = getNoQuestMsg(player);
    if (st == null) {
      return htmltext;
    }

    switch (st.getState()) {
      case State.CREATED:
        htmltext = (player.getLevel() < MIN_LEVEL) ? "32741-01.html" : "32741-02.htm";
        break;
      case State.STARTED:
        if (st.isCond(1)
            && !st.hasQuestItems(HIGH_GRADE_LIZARD_SCALE)
            && !st.hasQuestItems(MIDDLE_GRADE_LIZARD_SCALE)) {
          htmltext = "32741-05.html";
        } else if (st.isCond(2) && st.hasQuestItems(MIDDLE_GRADE_LIZARD_SCALE)) {
          htmltext = "32741-06.html";
        }

        if (st.isCond(2) && st.hasQuestItems(HIGH_GRADE_LIZARD_SCALE)) {
          htmltext = "32741-07.html";
        }
        break;
    }
    return htmltext;
  }
  @Override
  public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) {
    final QuestState st = getQuestState(player, false);
    if (st == null) {
      return null;
    }

    String htmltext = event;
    switch (event) {
      case "32711-04.html":
        if (player.getLevel() >= 79) {
          st.startQuest();
          htmltext =
              (st.hasQuestItems(CET_1_SHEET, CET_2_SHEET, CET_3_SHEET))
                  ? "32711-04a.html"
                  : "32711-04.html";
        }
        break;
      case "32711-05a.html":
        player.sendPacket(new RadarControl(0, 2, 186214, 61591, -4152));
        break;
      case "32711-05b.html":
        player.sendPacket(new RadarControl(0, 2, 187554, 60800, -4984));
        break;
      case "32711-05c.html":
        player.sendPacket(new RadarControl(0, 2, 193432, 53922, -4368));
        break;
      case "spawn":
        if (!hasQuestItems(player, CET_1_SHEET, CET_2_SHEET, CET_3_SHEET)) {
          return getNoQuestMsg(player);
        } else if ((hekaton != null) && !hekaton.isDead()) {
          return "32711-09.html";
        }
        String respawn = loadGlobalQuestVar("Respawn");
        long remain =
            (!respawn.isEmpty()) ? Long.parseLong(respawn) - System.currentTimeMillis() : 0;
        if (remain > 0) {
          return "32711-09a.html";
        }
        st.takeItems(CET_1_SHEET, 1);
        st.takeItems(CET_2_SHEET, 1);
        st.takeItems(CET_3_SHEET, 1);
        hekaton = addSpawn(HEKATON_PRIME, 191777, 56197, -7624, 0, false, 0);
        htmltext = "32711-09.html";
        break;
      case "32711-03.htm":
      case "32711-05.html":
      case "32711-06.html":
        break;
      default:
        htmltext = null;
        break;
    }
    return htmltext;
  }