From a5d41f6d9eb38f5f3c7058bf7da412346e81fc64 Mon Sep 17 00:00:00 2001
From: Zoey76 <zoey_76@msn.com>
Date: Fri, 11 May 2012 01:07:30 +0000
Subject: [PATCH] BETA: Datapack part for [L5327]: 	* Fixing some voiced
 commands and implementing missing actions. 		* StatsVCmd fix by
 brutus, thanks.

---
 .../conquerablehalls/flagwar/FlagWar.java     |   2 +-
 .../data/scripts/handlers/MasterHandler.java  |  42 ++++--
 .../handlers/bypasshandlers/TerritoryWar.java |   3 +-
 .../voicedcommandhandlers/CastleVCmd.java     | 131 ++++++++++++++++++
 .../{set.java => SetVCmd.java}                |  37 +++--
 .../{stats.java => StatsVCmd.java}            |   4 +-
 .../voicedcommandhandlers/castle.java         |  81 -----------
 .../scripts/hellbound/Bernarde/Bernarde.java  |   3 +-
 8 files changed, 191 insertions(+), 112 deletions(-)
 create mode 100644 L2J_DataPack_BETA/dist/game/data/scripts/handlers/voicedcommandhandlers/CastleVCmd.java
 rename L2J_DataPack_BETA/dist/game/data/scripts/handlers/voicedcommandhandlers/{set.java => SetVCmd.java} (64%)
 rename L2J_DataPack_BETA/dist/game/data/scripts/handlers/voicedcommandhandlers/{stats.java => StatsVCmd.java} (93%)
 delete mode 100644 L2J_DataPack_BETA/dist/game/data/scripts/handlers/voicedcommandhandlers/castle.java

diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/conquerablehalls/flagwar/FlagWar.java b/L2J_DataPack_BETA/dist/game/data/scripts/conquerablehalls/flagwar/FlagWar.java
index d3c3a8a29a..0906e947a9 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/conquerablehalls/flagwar/FlagWar.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/conquerablehalls/flagwar/FlagWar.java
@@ -195,7 +195,7 @@ public abstract class FlagWar extends ClanHallSiegeEngine
 							registerClan(clan);
 							html = getFlagHtml(_data.get(clan.getClanId()).flag);
 						}
-						else // Quest not accoplished, try by paying
+						else // Quest not accomplished, try by paying
 							html = "messenger_noquest.htm";
 					}
 					// Register paying the fee
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/MasterHandler.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/MasterHandler.java
index 74e01bf459..4e52741ce4 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/MasterHandler.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/MasterHandler.java
@@ -291,9 +291,9 @@ import handlers.voicedcommandhandlers.ChatAdmin;
 import handlers.voicedcommandhandlers.Debug;
 import handlers.voicedcommandhandlers.Hellbound;
 import handlers.voicedcommandhandlers.Lang;
+import handlers.voicedcommandhandlers.StatsVCmd;
 import handlers.voicedcommandhandlers.TvTVoicedInfo;
 import handlers.voicedcommandhandlers.Wedding;
-import handlers.voicedcommandhandlers.stats;
 
 import java.lang.reflect.Method;
 import java.util.logging.Level;
@@ -317,7 +317,7 @@ import com.l2jserver.gameserver.handler.VoicedCommandHandler;
  */
 public class MasterHandler
 {
-	private static Logger _log = Logger.getLogger(MasterHandler.class.getName());
+	private static final Logger _log = Logger.getLogger(MasterHandler.class.getName());
 	
 	private static final Class<?>[] _loadInstances =
 	{
@@ -336,7 +336,8 @@ public class MasterHandler
 	
 	private static final Class<?>[][] _handlers = 
 	{
-		{ // Action Handlers
+		{
+			// Action Handlers
 			L2ArtefactInstanceAction.class,
 			L2DecoyAction.class,
 			L2DoorInstanceAction.class,
@@ -348,7 +349,8 @@ public class MasterHandler
 			L2SummonAction.class,
 			L2TrapAction.class,
 		},
-		{ // Action Shift Handlers
+		{
+			// Action Shift Handlers
 			L2DoorInstanceActionShift.class,
 			L2ItemInstanceActionShift.class,
 			L2NpcActionShift.class,
@@ -356,7 +358,8 @@ public class MasterHandler
 			L2StaticObjectInstanceActionShift.class,
 			L2SummonActionShift.class,
 		},
-		{ // Admin Command Handlers
+		{
+			// Admin Command Handlers
 			AdminAdmin.class,
 			AdminAnnouncements.class,
 			AdminBan.class,
@@ -430,7 +433,8 @@ public class MasterHandler
 			AdminVitality.class,
 			AdminZone.class,
 		},
-		{ // Bypass Handlers
+		{
+			// Bypass Handlers
 			Augment.class,
 			ArenaBuff.class,
 			BloodAlliance.class,
@@ -469,7 +473,8 @@ public class MasterHandler
 			VoiceCommand.class,
 			Wear.class,
 		},
-		{ // Chat Handlers
+		{
+			// Chat Handlers
 			ChatAll.class,
 			ChatAlliance.class,
 			ChatBattlefield.class,
@@ -484,7 +489,8 @@ public class MasterHandler
 			ChatTell.class,
 			ChatTrade.class,
 		},
-		{ // Item Handlers
+		{
+			// Item Handlers
 			ScrollOfResurrection.class,
 			SoulShots.class,
 			SpiritShot.class,
@@ -519,7 +525,8 @@ public class MasterHandler
 			EnergyStarStone.class,
 			EventItem.class,
 		},
-		{ // Skill Handlers
+		{
+			// Skill Handlers
 			Blow.class,
 			Pdam.class,
 			Mdam.class,
@@ -567,7 +574,8 @@ public class MasterHandler
 			RefuelAirShip.class,
 			NornilsPower.class,
 		},
-		{ // User Command Handlers
+		{
+			// User Command Handlers
 			ClanPenalty.class,
 			ClanWarsList.class,
 			DisMount.class,
@@ -583,8 +591,12 @@ public class MasterHandler
 			ChannelListUpdate.class,
 			Birthday.class,
 		},
-		{ // Voiced Command Handlers
-			stats.class,
+		{
+			// Voiced Command Handlers
+			StatsVCmd.class,
+			// TODO: Add configuration options for this voiced commands:
+			// CastleVCmd.class,
+			// SetVCmd.class,
 			(Config.L2JMOD_ALLOW_WEDDING ? Wedding.class : null),
 			(Config.BANKING_SYSTEM_ENABLED ? Banking.class : null),
 			(Config.TVT_ALLOW_VOICED_COMMAND ? TvTVoicedInfo.class : null),
@@ -594,7 +606,8 @@ public class MasterHandler
 			(Config.L2JMOD_ALLOW_CHANGE_PASSWORD ? ChangePassword.class : null),
 			(Config.L2JMOD_HELLBOUND_STATUS ? Hellbound.class : null),
 		},
-		{ // Target Handlers
+		{
+			// Target Handlers
 			TargetAlly.class,
 			TargetArea.class,
 			TargetAreaCorpseMob.class,
@@ -628,7 +641,8 @@ public class MasterHandler
 			TargetSummon.class,
 			TargetUnlockable.class,
 		},
-		{ // Telnet Handlers
+		{
+			// Telnet Handlers
 			ChatsHandler.class,
 			DebugHandler.class,
 			HelpHandler.class,
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/bypasshandlers/TerritoryWar.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/bypasshandlers/TerritoryWar.java
index 1845bd90ae..a9966de4b5 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/bypasshandlers/TerritoryWar.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/bypasshandlers/TerritoryWar.java
@@ -146,8 +146,7 @@ public class TerritoryWar implements IBypassHandler
 								_log.warning("TerritoryWar buy: not handled type: " + type);
 								return false;
 						}
-						activeChar.destroyItemByItemId("QUEST", itemId, count, mercman, true);
-						activeChar.addItem("QUEST", boughtId, 1, mercman, false);
+						activeChar.exchangeItemsById("TerritoryWar", mercman, itemId, count, boughtId, 1, true);
 						mercman.showChatWindow(activeChar, 7);
 						return true;
 					}
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/voicedcommandhandlers/CastleVCmd.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/voicedcommandhandlers/CastleVCmd.java
new file mode 100644
index 0000000000..2273c7d5bf
--- /dev/null
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/voicedcommandhandlers/CastleVCmd.java
@@ -0,0 +1,131 @@
+/*
+ * 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 handlers.voicedcommandhandlers;
+
+import com.l2jserver.gameserver.handler.IVoicedCommandHandler;
+import com.l2jserver.gameserver.instancemanager.CastleManager;
+import com.l2jserver.gameserver.model.actor.instance.L2DoorInstance;
+import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jserver.gameserver.model.entity.Castle;
+import com.l2jserver.gameserver.network.SystemMessageId;
+
+/**
+ * @author Zoey76
+ */
+public class CastleVCmd implements IVoicedCommandHandler
+{
+	private static final String[] VOICED_COMMANDS =
+	{
+		"opendoors",
+		"closedoors",
+		"ridewyvern"
+	};
+	
+	@Override
+	public boolean useVoicedCommand(String command, L2PcInstance activeChar, String params)
+	{
+		switch (command)
+		{
+			case "opendoors":
+				if (!params.equals("castle"))
+				{
+					activeChar.sendMessage("Only Castle doors can be open.");
+					return false;
+				}
+				
+				if (!activeChar.isClanLeader())
+				{
+					activeChar.sendPacket(SystemMessageId.ONLY_CLAN_LEADER_CAN_ISSUE_COMMANDS);
+					return false;
+				}
+				
+				final L2DoorInstance door = (L2DoorInstance) activeChar.getTarget();
+				if (door == null)
+				{
+					activeChar.sendPacket(SystemMessageId.INCORRECT_TARGET);
+					return false;
+				}
+				
+				final Castle castle = CastleManager.getInstance().getCastleById(activeChar.getClan().getCastleId());
+				if (castle == null)
+				{
+					activeChar.sendMessage("Your clan does not own a castle.");
+					return false;
+				}
+				
+				if (castle.getSiege().getIsInProgress())
+				{
+					activeChar.sendPacket(SystemMessageId.GATES_NOT_OPENED_CLOSED_DURING_SIEGE);
+					return false;
+				}
+				
+				if (castle.checkIfInZone(door.getX(), door.getY(), door.getZ()))
+				{
+					activeChar.sendPacket(SystemMessageId.GATE_IS_OPENING);
+					door.openMe();
+				}
+				break;
+			case "closedoors":
+				if (!params.equals("castle"))
+				{
+					activeChar.sendMessage("Only Castle doors can be closed.");
+					return false;
+				}
+				if (!activeChar.isClanLeader())
+				{
+					activeChar.sendPacket(SystemMessageId.ONLY_CLAN_LEADER_CAN_ISSUE_COMMANDS);
+					return false;
+				}
+				final L2DoorInstance door2 = (L2DoorInstance) activeChar.getTarget();
+				if (door2 == null)
+				{
+					activeChar.sendPacket(SystemMessageId.INCORRECT_TARGET);
+					return false;
+				}
+				final Castle castle2 = CastleManager.getInstance().getCastleById(activeChar.getClan().getCastleId());
+				if (castle2 == null)
+				{
+					activeChar.sendMessage("Your clan does not own a castle.");
+					return false;
+				}
+				
+				if (castle2.getSiege().getIsInProgress())
+				{
+					activeChar.sendPacket(SystemMessageId.GATES_NOT_OPENED_CLOSED_DURING_SIEGE);
+					return false;
+				}
+				
+				if (castle2.checkIfInZone(door2.getX(), door2.getY(), door2.getZ()))
+				{
+					activeChar.sendMessage("The gate is being closed.");
+					door2.closeMe();
+				}
+				break;
+			case "ridewyvern":
+				if (activeChar.isClanLeader() && (activeChar.getClan().getCastleId() > 0))
+				{
+					activeChar.mount(12621, 0, true);
+				}
+				break;
+		}
+		return true;
+	}
+	
+	@Override
+	public String[] getVoicedCommandList()
+	{
+		return VOICED_COMMANDS;
+	}
+}
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/voicedcommandhandlers/set.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/voicedcommandhandlers/SetVCmd.java
similarity index 64%
rename from L2J_DataPack_BETA/dist/game/data/scripts/handlers/voicedcommandhandlers/set.java
rename to L2J_DataPack_BETA/dist/game/data/scripts/handlers/voicedcommandhandlers/SetVCmd.java
index 6cb6ce7e6e..72f645cdf0 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/voicedcommandhandlers/set.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/voicedcommandhandlers/SetVCmd.java
@@ -20,9 +20,9 @@ import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.util.Util;
 
 /**
- * Fixed by Zoey76.
+ * @author Zoey76
  */
-public class set implements IVoicedCommandHandler
+public class SetVCmd implements IVoicedCommandHandler
 {
 	private static final String[] VOICED_COMMANDS =
 	{
@@ -34,24 +34,41 @@ public class set implements IVoicedCommandHandler
 	@Override
 	public boolean useVoicedCommand(String command, L2PcInstance activeChar, String params)
 	{
-		if (command.startsWith("set privileges"))
+		if (command.equals("set"))
 		{
-			final String val = command.substring(15);
 			final L2Object target = activeChar.getTarget();
-			if (!Util.isDigit(val) || (target == null) || !target.isPlayer())
+			if ((target == null) || !target.isPlayer())
 			{
 				return false;
 			}
 			
-			final int n = Integer.parseInt(val);
-			final L2PcInstance player = target.getActingPlayer();
-			if ((activeChar.getClan() == null) || (player.getClan() == null) || (activeChar.getClan().getClanId() != player.getClan().getClanId()) || !((activeChar.getClanPrivileges() > n) || activeChar.isClanLeader()))
+			final L2PcInstance player = activeChar.getTarget().getActingPlayer();
+			if ((activeChar.getClan() == null) || (player.getClan() == null) || (activeChar.getClan().getClanId() != player.getClan().getClanId()))
 			{
 				return false;
 			}
 			
-			player.setClanPrivileges(n);
-			activeChar.sendMessage("Your clan privileges have been set to " + n + " by " + activeChar.getName() + ".");
+			if (params.startsWith("privileges"))
+			{
+				final String val = params.substring(11);
+				if (!Util.isDigit(val))
+				{
+					return false;
+				}
+				
+				final int n = Integer.parseInt(val);
+				if (!((activeChar.getClanPrivileges() > n) || activeChar.isClanLeader()))
+				{
+					return false;
+				}
+				
+				player.setClanPrivileges(n);
+				activeChar.sendMessage("Your clan privileges have been set to " + n + " by " + activeChar.getName() + ".");
+			}
+			else if (params.startsWith("title"))
+			{
+				
+			}
 		}
 		return true;
 	}
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/voicedcommandhandlers/stats.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/voicedcommandhandlers/StatsVCmd.java
similarity index 93%
rename from L2J_DataPack_BETA/dist/game/data/scripts/handlers/voicedcommandhandlers/stats.java
rename to L2J_DataPack_BETA/dist/game/data/scripts/handlers/voicedcommandhandlers/StatsVCmd.java
index 0f5ff2d31a..e41068267f 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/voicedcommandhandlers/stats.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/voicedcommandhandlers/StatsVCmd.java
@@ -26,7 +26,7 @@ import com.l2jserver.util.StringUtil;
 /**
  * @author Zoey76.
  */
-public class stats implements IVoicedCommandHandler
+public class StatsVCmd implements IVoicedCommandHandler
 {
 	private static final String[] VOICED_COMMANDS =
 	{
@@ -36,7 +36,7 @@ public class stats implements IVoicedCommandHandler
 	@Override
 	public boolean useVoicedCommand(String command, L2PcInstance activeChar, String params)
 	{
-		if (!command.equals("stats") || (params == null) || !params.isEmpty())
+		if (!command.equals("stats") || (params == null) || params.isEmpty())
 		{
 			activeChar.sendMessage("Syntax: .stats <player name>");
 			return false;
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/voicedcommandhandlers/castle.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/voicedcommandhandlers/castle.java
deleted file mode 100644
index ed641d076e..0000000000
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/voicedcommandhandlers/castle.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * 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 handlers.voicedcommandhandlers;
-
-import com.l2jserver.gameserver.handler.IVoicedCommandHandler;
-import com.l2jserver.gameserver.instancemanager.CastleManager;
-import com.l2jserver.gameserver.model.actor.instance.L2DoorInstance;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
-import com.l2jserver.gameserver.model.entity.Castle;
-
-/**
- *
- */
-public class castle implements IVoicedCommandHandler
-{
-	private static final String[] VOICED_COMMANDS =
-	{
-		"open doors",
-		"close doors",
-		"ride wyvern"
-	};
-	
-	@Override
-	public boolean useVoicedCommand(String command, L2PcInstance activeChar, String params)
-	{
-		if (command.startsWith("open doors") && params.equals("castle") && (activeChar.isClanLeader()))
-		{
-			L2DoorInstance door = (L2DoorInstance) activeChar.getTarget();
-			Castle castle = CastleManager.getInstance().getCastleById(activeChar.getClan().getCastleId());
-			if ((door == null) || (castle == null))
-			{
-				return false;
-			}
-			if (castle.checkIfInZone(door.getX(), door.getY(), door.getZ()))
-			{
-				door.openMe();
-			}
-			
-		}
-		else if (command.startsWith("close doors") && params.equals("castle") && (activeChar.isClanLeader()))
-		{
-			final L2DoorInstance door = (L2DoorInstance) activeChar.getTarget();
-			final Castle castle = CastleManager.getInstance().getCastleById(activeChar.getClan().getCastleId());
-			if ((door == null) || (castle == null))
-			{
-				return false;
-			}
-			
-			if (castle.checkIfInZone(door.getX(), door.getY(), door.getZ()))
-			{
-				door.closeMe();
-			}
-		}
-		else if (command.startsWith("ride wyvern") && params.equals("castle"))
-		{
-			if ((activeChar.getClan().getCastleId() > 0) && activeChar.isClanLeader())
-			{
-				activeChar.mount(12621, 0, true);
-			}
-		}
-		return true;
-	}
-	
-	@Override
-	public String[] getVoicedCommandList()
-	{
-		return VOICED_COMMANDS;
-	}
-}
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/hellbound/Bernarde/Bernarde.java b/L2J_DataPack_BETA/dist/game/data/scripts/hellbound/Bernarde/Bernarde.java
index 3e4a747dfd..71a1a1dd12 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/hellbound/Bernarde/Bernarde.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/hellbound/Bernarde/Bernarde.java
@@ -44,9 +44,8 @@ public class Bernarde extends Quest
 			{
 				if (player.getInventory().getInventoryItemCount(DARION_BADGE, -1, false) >= 5)
 				{
-					if (player.destroyItemByItemId("Quest", DARION_BADGE, 5, npc, true))
+					if (player.exchangeItemsById("Quest", npc, DARION_BADGE, 5, HOLY_WATER, 1, true))
 					{
-						player.addItem("Quest", HOLY_WATER, 1, npc, true);
 						return "32300-02b.htm";
 					}
 				}
-- 
GitLab