/* * 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.Q10734_DoOrDie; import quests.Q10733_TheTestForSurvival.Q10733_TheTestForSurvival; import com.l2jserver.gameserver.enums.Race; import com.l2jserver.gameserver.model.actor.L2Npc; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; import com.l2jserver.gameserver.model.holders.SkillHolder; import com.l2jserver.gameserver.model.quest.Quest; import com.l2jserver.gameserver.model.quest.QuestState; import com.l2jserver.gameserver.network.NpcStringId; import com.l2jserver.gameserver.network.serverpackets.ExShowScreenMessage; import com.l2jserver.gameserver.network.serverpackets.TutorialShowHtml; /** * @author Sdw */ public class Q10734_DoOrDie extends Quest { // NPC's private static final int KATALIN = 33943; private static final int AYANTHE = 33942; private static final int ADVENTURER_S_GUIDE_APPRENTICE = 33950; private static final int TRAINING_DUMMY = 19546; // Misc private static final int MAX_LEVEL = 20; // Skills private final static SkillHolder[] COMMON_BUFFS = { new SkillHolder(5182, 1), // Blessing of Protection new SkillHolder(15642, 1), // Horn Melody new SkillHolder(15643, 1), // Drum Melody new SkillHolder(15644, 1), // Pipe Organ Melody new SkillHolder(15645, 1), // Guitar Melody new SkillHolder(15646, 1), // Harp Melody new SkillHolder(15647, 1), // Lute Melody new SkillHolder(15651, 1), // Prevailing Sonata new SkillHolder(15652, 1), // Daring Sonata new SkillHolder(15653, 1), // Refreshing Sonata }; private static final SkillHolder WARRIOR_HARMONY = new SkillHolder(15649, 1); private static final SkillHolder WIZARD_HARMONY = new SkillHolder(15650, 1); public Q10734_DoOrDie() { super(10734, Q10734_DoOrDie.class.getSimpleName(), "Do or Die"); addStartNpc(KATALIN, AYANTHE); addTalkId(KATALIN, AYANTHE, ADVENTURER_S_GUIDE_APPRENTICE); addKillId(TRAINING_DUMMY); addCondMaxLevel(MAX_LEVEL, "33942-08.htm"); addCondRace(Race.ERTHEIA, "33942-08.htm"); addCondCompletedQuest(Q10733_TheTestForSurvival.class.getSimpleName(), "33942-08.htm"); } @Override public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) { final QuestState qs = getQuestState(player, false); if (qs == null) { return null; } String htmltext = null; switch (event) { case "33943-03.htm": case "33942-03.htm": { qs.startQuest(); showOnScreenMsg(player, NpcStringId.ATTACK_THE_TRAINING_DUMMY, ExShowScreenMessage.TOP_CENTER, 4500); htmltext = event; break; } case "other_buffs": { if (player.isMageClass()) { htmltext = "33950-03.htm"; } else { htmltext = "33950-05.htm"; } player.sendPacket(new TutorialShowHtml(npc.getObjectId(), "..\\L2Text\\QT_002_Guide_01.htm", TutorialShowHtml.LARGE_WINDOW)); break; } case "buffs": { if (qs.isCond(4) || qs.isCond(5)) { showOnScreenMsg(player, NpcStringId.ATTACK_THE_TRAINING_DUMMY, ExShowScreenMessage.TOP_CENTER, 4500); qs.setCond(6, true); for (SkillHolder skillHolder : COMMON_BUFFS) { npc.setTarget(player); npc.doCast(skillHolder.getSkill()); } if (player.isMageClass()) { htmltext = "33950-06.htm"; npc.setTarget(player); npc.doCast(WIZARD_HARMONY.getSkill()); } else { htmltext = "33950-04.htm"; npc.setTarget(player); npc.doCast(WARRIOR_HARMONY.getSkill()); } } break; } case "33943-02.htm": case "33942-02.htm": case "33950-02.htm": { htmltext = event; break; } } return htmltext; } @Override public String onTalk(L2Npc npc, L2PcInstance player) { QuestState qs = getQuestState(player, true); String htmltext = getNoQuestMsg(player); if (qs.isCompleted()) { htmltext = getAlreadyCompletedMsg(player); } switch (npc.getId()) { case KATALIN: { switch (qs.getCond()) { case 0: { if (!player.isMageClass()) { htmltext = "33943-01.htm"; } else { htmltext = "33943-08.htm"; } break; } case 1: { if (!player.isMageClass()) { htmltext = "33943-04.htm"; } break; } case 3: { showOnScreenMsg(player, NpcStringId.TALK_TO_THE_APPRENTICE_ADVENTURER_S_GUIDE, ExShowScreenMessage.TOP_CENTER, 4500); qs.setCond(5, true); htmltext = "33943-05.htm"; break; } case 5: { htmltext = "33943-06.htm"; break; } case 8: { giveAdena(player, 7000, true); addExpAndSp(player, 805, 2); qs.exitQuest(false, true); htmltext = "33943-07.htm"; break; } } break; } case AYANTHE: { switch (qs.getCond()) { case 0: { if (player.isMageClass()) { htmltext = "33942-01.htm"; } else { htmltext = "33942-08.htm"; } break; } case 1: { if (player.isMageClass()) { htmltext = "33942-04.htm"; } break; } case 2: { showOnScreenMsg(player, NpcStringId.TALK_TO_THE_APPRENTICE_ADVENTURER_S_GUIDE, ExShowScreenMessage.TOP_CENTER, 4500); qs.setCond(4, true); htmltext = "33942-05.htm"; break; } case 4: { htmltext = "33942-06.htm"; break; } case 7: { giveAdena(player, 7000, true); addExpAndSp(player, 805, 2); qs.exitQuest(false, true); htmltext = "33942-07.htm"; break; } } break; } case ADVENTURER_S_GUIDE_APPRENTICE: { switch (qs.getCond()) { case 4: case 5: { htmltext = "33950-01.htm"; break; } case 6: { if (player.isMageClass()) { htmltext = "33950-06.htm"; } else { htmltext = "33950-04.htm"; } break; } } } } return htmltext; } @Override public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon) { final QuestState qs = getQuestState(killer, false); if (qs == null) { return super.onKill(npc, killer, isSummon); } if (npc.getId() == TRAINING_DUMMY) { if (qs.isCond(1)) { if (killer.isMageClass()) { qs.setCond(2, true); } else { qs.setCond(3, true); } } else if (qs.isCond(6)) { if (killer.isMageClass()) { qs.setCond(7, true); } else { qs.setCond(8, true); } } } return super.onKill(npc, killer, isSummon); } }