Public feed
#380227
/* * $Author: AresXP * $Date: -- * $Revision: 4 * * * 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 2, 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, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * * http://www.gnu.org/copyleft/gpl.html */package net.sf.l2j.gameserver.model.actor.instance;import java.util.StringTokenizer;import javolution.text.TextBuilder;//import net.sf.l2j.gameserver.model.L2ItemInstance;import net.sf.l2j.gameserver.serverpackets.ActionFailed;import net.sf.l2j.gameserver.serverpackets.MyTargetSelected;import net.sf.l2j.gameserver.serverpackets.NpcHtmlMessage;//import net.sf.l2j.gameserver.serverpackets.PlaySound;import net.sf.l2j.gameserver.serverpackets.SystemMessage;import net.sf.l2j.gameserver.model.quest.QuestState;import net.sf.l2j.gameserver.model.actor.instance.L2FolkInstance;import net.sf.l2j.gameserver.templates.L2NpcTemplate;import net.sf.l2j.gameserver.model.quest.State;import net.sf.l2j.gameserver.lib.Rnd;/** * This class ... * * @version $Revision: $ $Date: $ * @author AresXP */public class L2HelperInstance extends L2FolkInstance{ public L2HelperInstance(int objectId, L2NpcTemplate template) { super(objectId, template); } private static String _mimirs_elixir = "235_MimirsElixir"; private static String _fates_whisper = "234_FatesWhisper"; private static boolean _mimir_completed = false; private static boolean _fates_completed = false; private static int _adena_needed = 125000000; public void onAction(L2PcInstance player) { player.sendPacket(new ActionFailed()); player.setTarget(this); player.sendPacket(new MyTargetSelected(getObjectId(), -15)); setMimir(player); setFates(player); if (isInsideRadius(player, INTERACTION_DISTANCE, false, false)) showMessageWindow(player); } public void onBypassFeedback(L2PcInstance player, String command) { if (!isInsideRadius(player, INTERACTION_DISTANCE, false, false)) return; player.sendPacket(new ActionFailed()); StringTokenizer st = new StringTokenizer(command, " "); String actualCommand = st.nextToken(); // Get actual command String val = ""; if (st.countTokens() >= 1) { val = st.nextToken(); } if(actualCommand.equals("complete_mimir0")) completeMimir(player, 0); if(actualCommand.equals("complete_mimir1")) completeMimir(player, 1); if(actualCommand.equals("complete_fates0")) completeFates(player, 0); if(actualCommand.equals("complete_fates1")) completeFates(player, 1); } public void setMimir(L2PcInstance player) { QuestState qs = player.getQuestState(_mimirs_elixir); if(qs == null || !qs.isCompleted()) _mimir_completed = false; else _mimir_completed = true; } public boolean isMimirCompleted() { return _mimir_completed; } public void setFates(L2PcInstance player) { QuestState qs = player.getQuestState(_fates_whisper); if(qs == null || !qs.isCompleted()) _fates_completed = false; else _fates_completed = true; } public boolean isFatesCompleted() { return _fates_completed; } public void showMessageWindow(L2PcInstance player) { TextBuilder msg = new TextBuilder("<html><body>"); if(isFatesCompleted() && isMimirCompleted()) { msg.append("%npcname%:<br><br>"); msg.append("You've already completed the quests!"); msg.append("</body></html>"); } else { msg.append("%npcname%:<br><br>"); msg.append("I am here to help you complete your subclass quests.<br>"); if(!isMimirCompleted()) { msg.append("<br>Mimir's Elixir (100%): <button value=\"mimir\" action=\"bypass -h npc_"+ + getObjectId()+"_complete_mimir0\">"); msg.append("<br>Mimir's Elixir (rnd): <button value=\"mimir\" action=\"bypass -h npc_"+getObjectId()+"_complete_mimir1\">"); } if(!isFatesCompleted()) { msg.append("<br>Mimir's Elixir (100%): <button value=\"mimir\" action=\"bypass -h npc_"+getObjectId()+"_complete_fates0\">"); msg.append("<br>Mimir's Elixir (rnd): <button value=\"mimir\" action=\"bypass -h npc_"+getObjectId()+"_complete_fates1\">"); } msg.append("</body></html>"); } this.sendHtmlMessage(player, msg.toString()); } private void sendHtmlMessage(L2PcInstance player, String htmlMessage) { NpcHtmlMessage html = new NpcHtmlMessage(1); html.setHtml(htmlMessage); html.replace("%objectId%", String.valueOf(getObjectId())); html.replace("%npcname%", getName()); player.sendPacket(html); } /** * * @param player * @param type -> 0 = normal, 1 = low alternative */ private void completeMimir(L2PcInstance player, int type) { if(type == 0) { if(player.getInventory().getAdena() >= _adena_needed) { player.getInventory().reduceAdena("Quest", _adena_needed, player, null); QuestState qs = player.getQuestState(_mimirs_elixir); State state = new State("Completed", qs.getQuest()); qs.setState(state); } else { player.sendMessage("You need "+_adena_needed+ " adena to complete Mimir's Elixir"); } } else if(type == 1) { int _percent = Rnd.get(40,90); if(player.getInventory().getAdena() >= (_adena_needed/2)) { player.sendMessage("You would have enough adena."); if(Rnd.get(100) < _percent) { player.sendMessage("And would've succeeded :P"); } else { player.sendMessage("But would've failed :("); } } else { player.sendMessage("No luck tehee"); } } } /** * @param player * @param type -> 0 for expensive (100%), 1 for inexpensive (random percent) */ private void completeFates(L2PcInstance player, int type) { if(type == 0) { if(player.getInventory().getAdena() >= _adena_needed) { player.getInventory().reduceAdena("Quest", _adena_needed, player, null); QuestState qs = player.getQuestState(_fates_whisper); State state = new State("Completed", qs.getQuest()); qs.setState(state); } else { player.sendMessage("You need "+_adena_needed+ " adena to complete the Fates Whisper quest."); } } else if(type == 1) { int _percent = Rnd.get(40,90); if(player.getInventory().getAdena() >= (_adena_needed/2)) { player.sendMessage("You would have enough adena."); if(Rnd.get(100) < _percent) { player.sendMessage("And would've succeeded :P"); } else { player.sendMessage("But would've failed :("); } } else { player.sendMessage("No luck tehee"); } } }}