/* * 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 <http://www.gnu.org/licenses/>. */ package silentium.gameserver.model.actor.instance; import java.util.StringTokenizer; import silentium.gameserver.data.html.StaticHtmPath; import silentium.gameserver.instancemanager.SiegeManager; import silentium.gameserver.network.SystemMessageId; import silentium.gameserver.network.serverpackets.ActionFailed; import silentium.gameserver.network.serverpackets.ItemList; import silentium.gameserver.templates.chars.L2NpcTemplate; /** * @author NightMarez */ public final class L2ObservationInstance extends L2NpcInstance { public L2ObservationInstance(int objectId, L2NpcTemplate template) { super(objectId, template); } @Override public void onBypassFeedback(L2PcInstance player, String command) { if (command.startsWith("observeSiege")) { String val = command.substring(13); StringTokenizer st = new StringTokenizer(val); st.nextToken(); // Bypass cost if (SiegeManager.getSiege(Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken())) != null) doObserve(player, val); else player.sendPacket(SystemMessageId.ONLY_VIEW_SIEGE); } else if (command.startsWith("observe")) doObserve(player, command.substring(8)); else super.onBypassFeedback(player, command); } @Override public String getHtmlPath(int npcId, int val) { String pom = ""; if (val == 0) pom = "" + npcId; else pom = npcId + "-" + val; return StaticHtmPath.ObservationHtmPath + pom + ".htm"; } private void doObserve(L2PcInstance player, String val) { StringTokenizer st = new StringTokenizer(val); int cost = Integer.parseInt(st.nextToken()); int x = Integer.parseInt(st.nextToken()); int y = Integer.parseInt(st.nextToken()); int z = Integer.parseInt(st.nextToken()); if (player.reduceAdena("Broadcast", cost, this, true)) { // enter mode player.enterObserverMode(x, y, z); ItemList il = new ItemList(player, false); player.sendPacket(il); } player.sendPacket(ActionFailed.STATIC_PACKET); } }