/* * This program 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. * * This program 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 . */ package custom.VarkaSilenosSupport; import gnu.trove.TIntObjectHashMap; import com.l2jserver.gameserver.datatables.SkillTable; import com.l2jserver.gameserver.model.L2Skill; 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; import com.l2jserver.gameserver.model.quest.State; import com.l2jserver.gameserver.network.serverpackets.ActionFailed; import com.l2jserver.gameserver.network.serverpackets.WareHouseWithdrawalList; import com.l2jserver.gameserver.util.Util; /** * @authors Emperorc (python), Nyaran (java) * @notes Finished by Kerberos_20 (python) 10/23/07 */ public class VarkaSilenosSupport extends Quest { private static final String qn = "VarkaSilenosSupport"; private static final int ASHAS = 31377; //Hierarch private static final int NARAN = 31378; //Messenger private static final int UDAN = 31379; //Buffer private static final int DIYABU= 31380; //Grocer private static final int HAGOS = 31381; //Warehouse Keeper private static final int SHIKON= 31382; //Trader private static final int TERANU= 31383; //Teleporter private static final int[] NPCS = { ASHAS, NARAN, UDAN, DIYABU, HAGOS, SHIKON, TERANU }; private static final int SEED = 7187; private static final TIntObjectHashMap BUFF = new TIntObjectHashMap(); private class BuffsData { private int _skill; private int _cost; public BuffsData(int skill, int cost) { super(); _skill = skill; _cost = cost; } public L2Skill getSkill() { return SkillTable.getInstance().getInfo(_skill, 1); } public int getCost() { return _cost; } } @Override public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) { String htmltext = event; QuestState st = player.getQuestState(qn); if (st == null) return htmltext; int Alevel = player.getAllianceWithVarkaKetra(); if (Util.isDigit(event) && BUFF.containsKey(Integer.parseInt(event))) { BuffsData buff = BUFF.get(Integer.parseInt(event)); if (st.getQuestItemsCount(SEED) >= buff.getCost()) { st.takeItems(SEED, buff.getCost()); npc.setTarget(player); npc.doCast(buff.getSkill()); npc.setCurrentHpMp(npc.getMaxHp(), npc.getMaxMp()); htmltext = "31379-4.htm"; } } else if (event.equals("Withdraw")) { if (player.getWarehouse().getSize() == 0) htmltext = "31381-0.htm"; else { player.sendPacket(ActionFailed.STATIC_PACKET); player.setActiveWarehouse(player.getWarehouse()); player.sendPacket(new WareHouseWithdrawalList(player, 1)); } } else if (event.equals("Teleport")) { if (Alevel == -4) htmltext = "31383-4.htm"; else if (Alevel == -5) htmltext = "31383-5.htm"; } return htmltext; } @Override public String onFirstTalk(L2Npc npc, L2PcInstance player) { String htmltext = Quest.getNoQuestMsg(player); QuestState st = player.getQuestState(qn); if (st == null) st = this.newQuestState(player); int npcId = npc.getNpcId(); int Alevel = player.getAllianceWithVarkaKetra(); long seeds = st.getQuestItemsCount(SEED); if (npcId == ASHAS) { if (Alevel < 0) htmltext = "31377-friend.htm"; else htmltext = "31377-no.htm"; } else if (npcId == NARAN) { if (Alevel < 0) htmltext = "31378-friend.htm"; else htmltext = "31378-no.htm"; } else if (npcId == UDAN) { st.setState(State.STARTED); if (Alevel > -1) htmltext = "31379-3.htm"; else if (Alevel > -3 && Alevel > 0) htmltext = "31379-1.htm"; else if (Alevel < -2) if (seeds != 0) htmltext = "31379-4.htm"; else htmltext = "31379-2.htm"; } else if (npcId == DIYABU) { if (player.getKarma() >= 1) htmltext = "31380-pk.htm"; else if (Alevel >= 0) htmltext = "31380-no.htm"; else if (Alevel == -1 || Alevel == -2) htmltext = "31380-1.htm"; else htmltext = "31380-2.htm"; } else if (npcId == HAGOS) { if (Alevel >= 0) htmltext = "31381-no.htm"; else if (Alevel == -1) htmltext = "31381-1.htm"; else if (player.getWarehouse().getSize() == 0) htmltext = "31381-3.htm"; else if (Alevel == -2 || Alevel == -3) htmltext = "31381-2.htm"; else htmltext = "31381-4.htm"; } else if (npcId == SHIKON) { if (Alevel == -2) htmltext = "31382-1.htm"; else if (Alevel == -3 || Alevel == -4) htmltext = "31382-2.htm"; else if (Alevel == -5) htmltext = "31382-3.htm"; else htmltext = "31382-no.htm"; } else if (npcId == TERANU) { if (Alevel >= 0) htmltext = "31383-no.htm"; else if (Alevel < 0 && Alevel > -4) htmltext = "31383-1.htm"; else if (Alevel == -4) htmltext = "31383-2.htm"; else htmltext = "31383-3.htm"; } return htmltext; } public VarkaSilenosSupport(int id, String name, String descr) { super(id, name, descr); for (int i : NPCS) addFirstTalkId(i); addTalkId(UDAN); addTalkId(HAGOS); addTalkId(TERANU); addStartNpc(HAGOS); addStartNpc(TERANU); BUFF.put(1, new BuffsData(4359, 2)); // Focus: Requires 2 Nepenthese Seeds BUFF.put(2, new BuffsData(4360, 2)); // Death Whisper: Requires 2 Nepenthese Seeds BUFF.put(3, new BuffsData(4345, 3)); // Might: Requires 3 Nepenthese Seeds BUFF.put(4, new BuffsData(4355, 3)); // Acumen: Requires 3 Nepenthese Seeds BUFF.put(5, new BuffsData(4352, 3)); // Berserker: Requires 3 Nepenthese Seeds BUFF.put(6, new BuffsData(4354, 3)); // Vampiric Rage: Requires 3 Nepenthese Seeds BUFF.put(7, new BuffsData(4356, 6)); // Empower: Requires 6 Nepenthese Seeds BUFF.put(8, new BuffsData(4357, 6)); // Haste: Requires 6 Nepenthese Seeds } public static void main(String args[]) { new VarkaSilenosSupport(-1, qn, "custom"); } }