Răsfoiți Sursa

BETA: Unhardcoding '''Mercenary Manager''' AI

Reviewed by: !UnAfraid
malyelfik 12 ani în urmă
părinte
comite
0f3528d09d

+ 0 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/model/L2Object.java

@@ -134,7 +134,6 @@ public abstract class L2Object
 		L2FortCommanderInstance(L2DefenderInstance),
 		// Castle NPCs
 		L2CastleMagicianInstance(L2NpcInstance),
-		L2MercManagerInstance(L2MerchantInstance),
 		// Fort NPCs
 		L2FortEnvoyInstance(L2Npc),
 		L2FortLogisticsInstance(L2MerchantInstance),

+ 0 - 123
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/instance/L2MercManagerInstance.java

@@ -1,123 +0,0 @@
-/*
- * Copyright (C) 2004-2013 L2J Server
- * 
- * This file is part of L2J Server.
- * 
- * L2J Server 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 Server 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 com.l2jserver.gameserver.model.actor.instance;
-
-import java.util.StringTokenizer;
-
-import com.l2jserver.gameserver.model.L2Clan;
-import com.l2jserver.gameserver.model.actor.templates.L2NpcTemplate;
-import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;
-
-public final class L2MercManagerInstance extends L2MerchantInstance
-{
-	private static final int COND_ALL_FALSE = 0;
-	private static final int COND_BUSY_BECAUSE_OF_SIEGE = 1;
-	private static final int COND_OWNER = 2;
-	
-	public L2MercManagerInstance(int objectId, L2NpcTemplate template)
-	{
-		super(objectId, template);
-		setInstanceType(InstanceType.L2MercManagerInstance);
-	}
-	
-	@Override
-	public void onBypassFeedback(L2PcInstance player, String command)
-	{
-		int condition = validateCondition(player);
-		if (condition <= COND_ALL_FALSE)
-		{
-			return;
-		}
-		
-		if (condition == COND_BUSY_BECAUSE_OF_SIEGE)
-		{
-			return;
-		}
-		else if (condition == COND_OWNER)
-		{
-			StringTokenizer st = new StringTokenizer(command, " ");
-			String actualCommand = st.nextToken(); // Get actual command
-			
-			String val = "";
-			if (st.countTokens() >= 1)
-			{
-				val = st.nextToken();
-			}
-			
-			if (actualCommand.equalsIgnoreCase("hire"))
-			{
-				if (val.isEmpty())
-				{
-					return;
-				}
-				
-				showBuyWindow(player, Integer.parseInt(val));
-				return;
-			}
-		}
-		
-		super.onBypassFeedback(player, command);
-	}
-	
-	@Override
-	public void showChatWindow(L2PcInstance player)
-	{
-		String filename = "data/html/mercmanager/mercmanager-no.htm";
-		
-		int condition = validateCondition(player);
-		if (condition == COND_BUSY_BECAUSE_OF_SIEGE)
-		{
-			filename = "data/html/mercmanager/mercmanager-busy.htm"; // Busy because of siege
-		}
-		else if (condition == COND_OWNER)
-		{
-			filename = "data/html/mercmanager/mercmanager.htm"; // Owner message window
-		}
-		
-		NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
-		html.setFile(player.getHtmlPrefix(), filename);
-		html.replace("%objectId%", String.valueOf(getObjectId()));
-		html.replace("%npcId%", String.valueOf(getNpcId()));
-		html.replace("%npcname%", getName());
-		player.sendPacket(html);
-	}
-	
-	private int validateCondition(L2PcInstance player)
-	{
-		if ((getCastle() != null) && (getCastle().getCastleId() > 0))
-		{
-			if (player.getClan() != null)
-			{
-				if (getCastle().getSiege().getIsInProgress())
-				{
-					return COND_BUSY_BECAUSE_OF_SIEGE; // Busy because of siege
-				}
-				else if (getCastle().getOwnerId() == player.getClanId()) // Clan owns castle
-				{
-					if ((player.getClanPrivileges() & L2Clan.CP_CS_MERCENARIES) == L2Clan.CP_CS_MERCENARIES)
-					{
-						return COND_OWNER;
-					}
-				}
-			}
-		}
-		
-		return COND_ALL_FALSE;
-	}
-}

+ 8 - 7
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/instance/L2MerchantInstance.java

@@ -79,25 +79,26 @@ public class L2MerchantInstance extends L2NpcInstance
 	
 	public final void showBuyWindow(L2PcInstance player, int val)
 	{
-		double taxRate = 0;
-		
-		taxRate = getMpc().getTotalTaxRate();
+		showBuyWindow(player, val, true);
+	}
+	
+	public final void showBuyWindow(L2PcInstance player, int val, boolean applyTax)
+	{
+		final double taxRate = (applyTax) ? getMpc().getTotalTaxRate() : 0;
+		final L2TradeList list = TradeController.getInstance().getBuyList(val);
 		
 		player.setInventoryBlockingStatus(true);
 		
-		L2TradeList list = TradeController.getInstance().getBuyList(val);
-		
 		if ((list != null) && list.getNpcId().equals(String.valueOf(getNpcId())))
 		{
 			player.sendPacket(new BuyList(list, player.getAdena(), taxRate));
-			player.sendPacket(new ExBuySellList(player, taxRate, false));
+			player.sendPacket(new ExBuySellList(player, false));
 		}
 		else
 		{
 			_log.warning("possible client hacker: " + player.getName() + " attempting to buy from GM shop! < Ban him!");
 			_log.warning("buylist id:" + val);
 		}
-		
 		player.sendPacket(ActionFailed.STATIC_PACKET);
 	}
 }

+ 1 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/instance/L2MerchantSummonInstance.java

@@ -218,7 +218,7 @@ public class L2MerchantSummonInstance extends L2ServitorInstance
 		if ((list != null) && list.getNpcId().equals(String.valueOf(getNpcId())))
 		{
 			player.sendPacket(new BuyList(list, player.getAdena(), taxRate));
-			player.sendPacket(new ExBuySellList(player, taxRate, false));
+			player.sendPacket(new ExBuySellList(player, false));
 		}
 		else
 		{

+ 1 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/network/clientpackets/RequestBuyItem.java

@@ -319,7 +319,7 @@ public final class RequestBuyItem extends L2GameClientPacket
 		StatusUpdate su = new StatusUpdate(player);
 		su.addAttribute(StatusUpdate.CUR_LOAD, player.getCurrentLoad());
 		player.sendPacket(su);
-		player.sendPacket(new ExBuySellList(player, castleTaxRate + baseTaxRate, true));
+		player.sendPacket(new ExBuySellList(player, true));
 	}
 	
 	@Override

+ 1 - 2
L2J_Server_BETA/java/com/l2jserver/gameserver/network/clientpackets/RequestPreviewItem.java

@@ -31,7 +31,6 @@ import com.l2jserver.gameserver.datatables.ItemTable;
 import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.L2TradeList;
 import com.l2jserver.gameserver.model.actor.L2Npc;
-import com.l2jserver.gameserver.model.actor.instance.L2MercManagerInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2MerchantInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.itemcontainer.Inventory;
@@ -142,7 +141,7 @@ public final class RequestPreviewItem extends L2GameClientPacket
 		// Check current target of the player and the INTERACTION_DISTANCE
 		L2Object target = _activeChar.getTarget();
 		if (!_activeChar.isGM() && ((target == null // No target (i.e. GM Shop)
-			) || !((target instanceof L2MerchantInstance) || (target instanceof L2MercManagerInstance)) // Target not a merchant and not mercmanager
+			) || !((target instanceof L2MerchantInstance)) // Target not a merchant
 		|| !_activeChar.isInsideRadius(target, L2Npc.INTERACTION_DISTANCE, false, false) // Distance is too far
 		))
 		{

+ 1 - 4
L2J_Server_BETA/java/com/l2jserver/gameserver/network/clientpackets/RequestRefundItem.java

@@ -114,7 +114,6 @@ public final class RequestRefundItem extends L2GameClientPacket
 		}
 		
 		L2TradeList list = null;
-		double taxRate = 0;
 		
 		if (merchant != null)
 		{
@@ -122,12 +121,10 @@ public final class RequestRefundItem extends L2GameClientPacket
 			if (merchant instanceof L2MerchantInstance)
 			{
 				lists = TradeController.getInstance().getBuyListByNpcId(((L2MerchantInstance) merchant).getNpcId());
-				taxRate = ((L2MerchantInstance) merchant).getMpc().getTotalTaxRate();
 			}
 			else
 			{
 				lists = TradeController.getInstance().getBuyListByNpcId(((L2MerchantSummonInstance) merchant).getNpcId());
-				taxRate = 50;
 			}
 			
 			if (!player.isGM())
@@ -249,7 +246,7 @@ public final class RequestRefundItem extends L2GameClientPacket
 		StatusUpdate su = new StatusUpdate(player);
 		su.addAttribute(StatusUpdate.CUR_LOAD, player.getCurrentLoad());
 		player.sendPacket(su);
-		player.sendPacket(new ExBuySellList(player, taxRate, true));
+		player.sendPacket(new ExBuySellList(player, true));
 	}
 	
 	@Override

+ 1 - 5
L2J_Server_BETA/java/com/l2jserver/gameserver/network/clientpackets/RequestSellItem.java

@@ -131,8 +131,6 @@ public final class RequestSellItem extends L2GameClientPacket
 			}
 		}
 		
-		double taxRate = 0;
-		
 		L2TradeList list = null;
 		if (merchant != null)
 		{
@@ -140,12 +138,10 @@ public final class RequestSellItem extends L2GameClientPacket
 			if (merchant instanceof L2MerchantInstance)
 			{
 				lists = TradeController.getInstance().getBuyListByNpcId(((L2MerchantInstance) merchant).getNpcId());
-				taxRate = ((L2MerchantInstance) merchant).getMpc().getTotalTaxRate();
 			}
 			else
 			{
 				lists = TradeController.getInstance().getBuyListByNpcId(((L2MerchantSummonInstance) merchant).getNpcId());
-				taxRate = 50;
 			}
 			
 			if (!player.isGM())
@@ -212,7 +208,7 @@ public final class RequestSellItem extends L2GameClientPacket
 		StatusUpdate su = new StatusUpdate(player);
 		su.addAttribute(StatusUpdate.CUR_LOAD, player.getCurrentLoad());
 		player.sendPacket(su);
-		player.sendPacket(new ExBuySellList(player, taxRate, true));
+		player.sendPacket(new ExBuySellList(player, true));
 	}
 	
 	@Override

+ 1 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/ExBuySellList.java

@@ -30,7 +30,7 @@ public class ExBuySellList extends L2GameServerPacket
 	private L2ItemInstance[] _refundList = null;
 	private final boolean _done;
 	
-	public ExBuySellList(L2PcInstance player, double taxRate, boolean done)
+	public ExBuySellList(L2PcInstance player, boolean done)
 	{
 		_sellList = player.getInventory().getAvailableItems(false, false, false);
 		if (player.hasRefund())