123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289 |
- /*
- * Copyright (C) 2004-2015 L2J DataPack
- *
- * This file is part of L2J DataPack.
- *
- * L2J DataPack is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * L2J DataPack is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
- package quests.Q10289_FadeToBlack;
- import quests.Q10288_SecretMission.Q10288_SecretMission;
- import com.l2jserver.gameserver.model.L2Party;
- import com.l2jserver.gameserver.model.actor.L2Npc;
- import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
- import com.l2jserver.gameserver.model.quest.Quest;
- import com.l2jserver.gameserver.model.quest.QuestState;
- /**
- * Fade to Black (10289)
- * @author Plim
- */
- public class Q10289_FadeToBlack extends Quest
- {
- // NPC
- private static final int GREYMORE = 32757;
- // Items
- private static final int MARK_OF_SPLENDOR = 15527;
- private static final int MARK_OF_DARKNESS = 15528;
- // Monster
- private static final int ANAYS = 25701;
-
- public Q10289_FadeToBlack()
- {
- super(10289, Q10289_FadeToBlack.class.getSimpleName(), "Fade to Black");
- addStartNpc(GREYMORE);
- addTalkId(GREYMORE);
- addKillId(ANAYS);
- registerQuestItems(MARK_OF_SPLENDOR, MARK_OF_DARKNESS);
- }
-
- @Override
- public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
- {
- QuestState qs = getQuestState(player, false);
- String htmltext = null;
- if (qs == null)
- {
- return htmltext;
- }
-
- switch (event)
- {
- case "32757-02.htm":
- htmltext = event;
- break;
- case "32757-03.htm":
- qs.startQuest();
- htmltext = event;
- break;
- case "32757-06.html":
- if (qs.isCond(2) && hasQuestItems(player, MARK_OF_DARKNESS))
- {
- htmltext = "32757-07.html";
- }
- else if (qs.isCond(3) && hasQuestItems(player, MARK_OF_SPLENDOR))
- {
- htmltext = "32757-08.html";
- }
- else
- {
- htmltext = event;
- }
- break;
- case "11":
- case "12":
- case "13":
- case "14":
- case "15":
- case "16":
- case "17":
- case "18":
- case "19":
- case "20":
- case "21":
- case "22":
- case "23":
- case "24":
- case "25":
- case "26":
- case "27":
- case "28":
- case "29":
- case "30":
- if (qs.isCond(3) && hasQuestItems(player, MARK_OF_SPLENDOR))
- {
- // see 32757-08.html for recipe list (all moirai armor 60%)
- switch (event)
- {
- case "11":
- rewardItems(player, 15775, 1);
- giveAdena(player, 420920, true);
- break;
- case "12":
- rewardItems(player, 15776, 1);
- giveAdena(player, 420920, true);
- break;
- case "13":
- rewardItems(player, 15777, 1);
- giveAdena(player, 420920, true);
- break;
- case "14":
- rewardItems(player, 15778, 1);
- break;
- case "15":
- rewardItems(player, 15779, 1);
- giveAdena(player, 168360, true);
- break;
- case "16":
- rewardItems(player, 15780, 1);
- giveAdena(player, 168360, true);
- break;
- case "17":
- rewardItems(player, 15781, 1);
- giveAdena(player, 252540, true);
- break;
- case "18":
- rewardItems(player, 15782, 1);
- giveAdena(player, 357780, true);
- break;
- case "19":
- rewardItems(player, 15783, 1);
- giveAdena(player, 357780, true);
- break;
- case "20":
- rewardItems(player, 15784, 1);
- giveAdena(player, 505100, true);
- break;
- case "21":
- rewardItems(player, 15785, 1);
- giveAdena(player, 505100, true);
- break;
- case "22":
- rewardItems(player, 15786, 1);
- giveAdena(player, 505100, true);
- break;
- case "23":
- rewardItems(player, 15787, 1);
- giveAdena(player, 505100, true);
- break;
- case "24":
- rewardItems(player, 15787, 1);
- giveAdena(player, 505100, true);
- break;
- case "25":
- rewardItems(player, 15789, 1);
- giveAdena(player, 505100, true);
- break;
- case "26":
- rewardItems(player, 15790, 1);
- giveAdena(player, 496680, true);
- break;
- case "27":
- rewardItems(player, 15791, 1);
- giveAdena(player, 496680, true);
- break;
- case "28":
- rewardItems(player, 15792, 1);
- giveAdena(player, 563860, true);
- break;
- case "29":
- rewardItems(player, 15793, 1);
- giveAdena(player, 509040, true);
- break;
- case "30":
- rewardItems(player, 15794, 1);
- giveAdena(player, 454240, true);
- break;
- }
-
- long marksOfDarkness = getQuestItemsCount(player, MARK_OF_DARKNESS);
- if (marksOfDarkness > 0)
- {
- addExpAndSp(player, 55983 * marksOfDarkness, 136500 * (int) marksOfDarkness);
- }
- qs.exitQuest(false, true);
- htmltext = "32757-09.html";
- }
- break;
- }
- return htmltext;
- }
-
- @Override
- public String onKill(L2Npc anays, L2PcInstance killer, boolean isSummon)
- {
- final QuestState qs = getRandomPartyMemberState(killer, -1, 3, anays);
- if (qs != null)
- {
- if (qs.getPlayer().isInParty())
- {
- // if player is in party, reward all members
- final L2Party party = qs.getPlayer().getParty();
- final int rnd = getRandom(party.getMemberCount());
- int idx = 0;
-
- for (L2PcInstance member : party.getMembers())
- {
- // only one lucky player will get the good item, the rest will get the bad one
- rewardPlayer(getQuestState(member, false), (idx == rnd));
- idx++;
- }
- }
- else
- {
- // if no party, the winner gets it all
- rewardPlayer(qs, true);
- }
- }
- return super.onKill(anays, killer, isSummon);
- }
-
- @Override
- public boolean checkPartyMember(QuestState qs, L2Npc npc)
- {
- return (qs.getCond() < 3);
- }
-
- @Override
- public String onTalk(L2Npc npc, L2PcInstance player)
- {
- final QuestState qs = getQuestState(player, true);
- String htmltext = getNoQuestMsg(player);
- if (qs == null)
- {
- return htmltext;
- }
-
- if (qs.isCreated())
- {
- final QuestState q10288 = player.getQuestState(Q10288_SecretMission.class.getSimpleName());
- if ((player.getLevel() < 82) || (q10288 == null) || !q10288.isCompleted())
- {
- htmltext = "32757-00.htm";
- }
- else
- {
- htmltext = "32757-01.htm";
- }
- }
- else if (qs.isStarted())
- {
- switch (qs.getCond())
- {
- case 1:
- htmltext = "32757-04.html";
- break;
- case 2:
- case 3:
- htmltext = "32757-05.html";
- break;
- }
- }
- else
- {
- htmltext = "32757-10.html";
- }
- return htmltext;
- }
-
- private static final void rewardPlayer(QuestState qs, boolean isLucky)
- {
- if ((qs != null) && qs.isCond(1))
- {
- giveItems(qs.getPlayer(), (isLucky ? MARK_OF_SPLENDOR : MARK_OF_DARKNESS), 1);
- qs.setCond(isLucky ? 3 : 2, true);
- }
- }
- }
|