forked from MagicBane/Server
				
			
				 18 changed files with 931 additions and 969 deletions
			
			
		@ -1,846 +0,0 @@ | 
				
			|||||||
package engine.gameManager; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import ch.claude_martin.enumbitset.EnumBitSet; | 
					 | 
				
			||||||
import engine.Enum; | 
					 | 
				
			||||||
import engine.net.Dispatch; | 
					 | 
				
			||||||
import engine.net.DispatchMessage; | 
					 | 
				
			||||||
import engine.net.client.ClientConnection; | 
					 | 
				
			||||||
import engine.net.client.msg.*; | 
					 | 
				
			||||||
import engine.objects.*; | 
					 | 
				
			||||||
import engine.server.MBServerStatics; | 
					 | 
				
			||||||
import org.joda.time.DateTime; | 
					 | 
				
			||||||
import org.pmw.tinylog.Logger; | 
					 | 
				
			||||||
import java.util.ArrayList; | 
					 | 
				
			||||||
import java.util.concurrent.ConcurrentHashMap; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
public class WarehouseManager { | 
					 | 
				
			||||||
    public static ItemBase goldIB = ItemBase.getItemBase(7); | 
					 | 
				
			||||||
    public static ItemBase stoneIB = ItemBase.getItemBase(1580000); | 
					 | 
				
			||||||
    public static ItemBase truesteelIB = ItemBase.getItemBase(1580001); | 
					 | 
				
			||||||
    public static ItemBase ironIB = ItemBase.getItemBase(1580002); | 
					 | 
				
			||||||
    public static ItemBase adamantIB = ItemBase.getItemBase(1580003); | 
					 | 
				
			||||||
    public static ItemBase lumberIB = ItemBase.getItemBase(1580004); | 
					 | 
				
			||||||
    public static ItemBase oakIB = ItemBase.getItemBase(1580005); | 
					 | 
				
			||||||
    public static ItemBase bronzewoodIB = ItemBase.getItemBase(1580006); | 
					 | 
				
			||||||
    public static ItemBase mandrakeIB = ItemBase.getItemBase(1580007); | 
					 | 
				
			||||||
    public static ItemBase coalIB = ItemBase.getItemBase(1580008); | 
					 | 
				
			||||||
    public static ItemBase agateIB = ItemBase.getItemBase(1580009); | 
					 | 
				
			||||||
    public static ItemBase diamondIB = ItemBase.getItemBase(1580010); | 
					 | 
				
			||||||
    public static ItemBase onyxIB = ItemBase.getItemBase(1580011); | 
					 | 
				
			||||||
    public static ItemBase azothIB = ItemBase.getItemBase(1580012); | 
					 | 
				
			||||||
    public static ItemBase orichalkIB = ItemBase.getItemBase(1580013); | 
					 | 
				
			||||||
    public static ItemBase antimonyIB = ItemBase.getItemBase(1580014); | 
					 | 
				
			||||||
    public static ItemBase sulferIB = ItemBase.getItemBase(1580015); | 
					 | 
				
			||||||
    public static ItemBase quicksilverIB = ItemBase.getItemBase(1580016); | 
					 | 
				
			||||||
    public static ItemBase galvorIB = ItemBase.getItemBase(1580017); | 
					 | 
				
			||||||
    public static ItemBase wormwoodIB = ItemBase.getItemBase(1580018); | 
					 | 
				
			||||||
    public static ItemBase obsidianIB = ItemBase.getItemBase(1580019); | 
					 | 
				
			||||||
    public static ItemBase bloodstoneIB = ItemBase.getItemBase(1580020); | 
					 | 
				
			||||||
    public static ItemBase mithrilIB = ItemBase.getItemBase(1580021); | 
					 | 
				
			||||||
    public static ConcurrentHashMap<Integer, Integer> maxResources = new ConcurrentHashMap<>(); | 
					 | 
				
			||||||
    public static ConcurrentHashMap<Integer, Warehouse> warehouseByBuildingUUID = new ConcurrentHashMap<>(); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public static ConcurrentHashMap<Integer, Integer> getMaxResources() { | 
					 | 
				
			||||||
        if (maxResources.size() != 23) { | 
					 | 
				
			||||||
            maxResources.put(7, 100000000); | 
					 | 
				
			||||||
            maxResources.put(1580000, 10000); | 
					 | 
				
			||||||
            maxResources.put(1580001, 2000); | 
					 | 
				
			||||||
            maxResources.put(1580002, 2000); | 
					 | 
				
			||||||
            maxResources.put(1580003, 1000); | 
					 | 
				
			||||||
            maxResources.put(1580004, 10000); | 
					 | 
				
			||||||
            maxResources.put(1580005, 3000); | 
					 | 
				
			||||||
            maxResources.put(1580006, 3000); | 
					 | 
				
			||||||
            maxResources.put(1580007, 1000); | 
					 | 
				
			||||||
            maxResources.put(1580008, 3000); | 
					 | 
				
			||||||
            maxResources.put(1580009, 2000); | 
					 | 
				
			||||||
            maxResources.put(1580010, 2000); | 
					 | 
				
			||||||
            maxResources.put(1580011, 1000); | 
					 | 
				
			||||||
            maxResources.put(1580012, 2000); | 
					 | 
				
			||||||
            maxResources.put(1580013, 3000); | 
					 | 
				
			||||||
            maxResources.put(1580014, 1000); | 
					 | 
				
			||||||
            maxResources.put(1580015, 1000); | 
					 | 
				
			||||||
            maxResources.put(1580016, 1000); | 
					 | 
				
			||||||
            maxResources.put(1580017, 500); | 
					 | 
				
			||||||
            maxResources.put(1580018, 500); | 
					 | 
				
			||||||
            maxResources.put(1580019, 500); | 
					 | 
				
			||||||
            maxResources.put(1580020, 500); | 
					 | 
				
			||||||
            maxResources.put(1580021, 500); | 
					 | 
				
			||||||
        } | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        return maxResources; | 
					 | 
				
			||||||
    } | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public static void warehouseDeposit(MerchantMsg msg, PlayerCharacter player, NPC npc) { | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        Building warehouseBuilding; | 
					 | 
				
			||||||
        Warehouse warehouse; | 
					 | 
				
			||||||
        int depositAmount; | 
					 | 
				
			||||||
        Dispatch dispatch; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        Item resource = Item.getFromCache(msg.getItemID()); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (resource == null) | 
					 | 
				
			||||||
            return; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        depositAmount = msg.getAmount(); | 
					 | 
				
			||||||
        CharacterItemManager itemMan = player.getCharItemManager(); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (!itemMan.doesCharOwnThisItem(resource.getObjectUUID())) | 
					 | 
				
			||||||
            return; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        warehouseBuilding = npc.getBuilding(); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (warehouseBuilding == null) | 
					 | 
				
			||||||
            return; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        warehouse = warehouseByBuildingUUID.get(warehouseBuilding.getObjectUUID()); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (warehouse == null) | 
					 | 
				
			||||||
            return; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (!WarehouseManager.deposit(player, resource, depositAmount, true, true,warehouse)) { | 
					 | 
				
			||||||
            return; | 
					 | 
				
			||||||
        } | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        ViewResourcesMessage vrm = new ViewResourcesMessage(player); | 
					 | 
				
			||||||
        vrm.setGuild(player.getGuild()); | 
					 | 
				
			||||||
        vrm.setWarehouseBuilding(warehouseBuilding); | 
					 | 
				
			||||||
        vrm.configure(); | 
					 | 
				
			||||||
        dispatch = Dispatch.borrow(player, vrm); | 
					 | 
				
			||||||
        DispatchMessage.dispatchMsgDispatch(dispatch, Enum.DispatchChannel.SECONDARY); | 
					 | 
				
			||||||
    } | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public static void warehouseWithdraw(MerchantMsg msg, PlayerCharacter player, NPC npc) { | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        int withdrawAmount; | 
					 | 
				
			||||||
        Building warehouseBuilding; | 
					 | 
				
			||||||
        Warehouse warehouse; | 
					 | 
				
			||||||
        Dispatch dispatch; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        withdrawAmount = msg.getAmount(); | 
					 | 
				
			||||||
        warehouseBuilding = npc.getBuilding(); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (warehouseBuilding == null) | 
					 | 
				
			||||||
            return; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (player.getGuild() != warehouseBuilding.getGuild() || !GuildStatusController.isInnerCouncil(player.getGuildStatus())) | 
					 | 
				
			||||||
            return; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        warehouse = warehouseByBuildingUUID.get(warehouseBuilding.getObjectUUID()); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (warehouse == null) | 
					 | 
				
			||||||
            return; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        int hashID = msg.getHashID(); | 
					 | 
				
			||||||
        int itemBaseID = ItemBase.getItemHashIDMap().get(hashID); | 
					 | 
				
			||||||
        ItemBase ib = ItemBase.getItemBase(itemBaseID); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (ib == null) { | 
					 | 
				
			||||||
            Logger.debug("Failed to find Resource ItemBaseID with Hash ID = " + hashID); | 
					 | 
				
			||||||
            return; | 
					 | 
				
			||||||
        } | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (isResourceLocked(warehouse, ib)) { | 
					 | 
				
			||||||
            ChatManager.chatSystemInfo(player, "You cannot withdrawl a locked resource."); | 
					 | 
				
			||||||
            return; | 
					 | 
				
			||||||
        } | 
					 | 
				
			||||||
        if (!withdraw(warehouse, player, ib, withdrawAmount, true, true)) { | 
					 | 
				
			||||||
            ChatManager.chatGuildError(player, "Failed to withdrawl " + ib.getName() + '.'); | 
					 | 
				
			||||||
            Logger.debug(player.getName() + " Failed to withdrawl  =" + ib.getName() + " from Warehouse With ID = " + warehouseBuilding.getObjectUUID()); | 
					 | 
				
			||||||
            return; | 
					 | 
				
			||||||
        } | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        ViewResourcesMessage vrm = new ViewResourcesMessage(player); | 
					 | 
				
			||||||
        vrm.setGuild(player.getGuild()); | 
					 | 
				
			||||||
        vrm.setWarehouseBuilding(warehouseBuilding); | 
					 | 
				
			||||||
        vrm.configure(); | 
					 | 
				
			||||||
        dispatch = Dispatch.borrow(player, vrm); | 
					 | 
				
			||||||
        DispatchMessage.dispatchMsgDispatch(dispatch, Enum.DispatchChannel.SECONDARY); | 
					 | 
				
			||||||
    } | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public static void warehouseLock(MerchantMsg msg, PlayerCharacter player, NPC npc) { | 
					 | 
				
			||||||
        Building warehouse; | 
					 | 
				
			||||||
        int hashID; | 
					 | 
				
			||||||
        Dispatch dispatch; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        hashID = msg.getHashID(); | 
					 | 
				
			||||||
        warehouse = npc.getBuilding(); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (warehouse == null) | 
					 | 
				
			||||||
            return; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (player.getGuild() != warehouse.getGuild() || !GuildStatusController.isInnerCouncil(player.getGuildStatus())) | 
					 | 
				
			||||||
            return; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        Warehouse wh = warehouseByBuildingUUID.get(warehouse.getObjectUUID()); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (wh == null) | 
					 | 
				
			||||||
            return; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        int itemBaseID = ItemBase.getItemHashIDMap().get(hashID); | 
					 | 
				
			||||||
        ItemBase ib = ItemBase.getItemBase(itemBaseID); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (ib == null) | 
					 | 
				
			||||||
            return; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (isResourceLocked(wh, ib)) { | 
					 | 
				
			||||||
            boolean worked; | 
					 | 
				
			||||||
            EnumBitSet<Enum.ResourceType> bitSet = EnumBitSet.asEnumBitSet(wh.lockedResourceTypes.toLong(), Enum.ResourceType.class); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            bitSet.remove(Enum.ResourceType.resourceLookup.get(itemBaseID)); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            worked = DbManager.WarehouseQueries.updateLocks(wh, bitSet.toLong()); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            if (worked) { | 
					 | 
				
			||||||
                wh.lockedResourceTypes.remove(Enum.ResourceType.resourceLookup.get(itemBaseID)); | 
					 | 
				
			||||||
                ViewResourcesMessage vrm = new ViewResourcesMessage(player); | 
					 | 
				
			||||||
                vrm.setGuild(player.getGuild()); | 
					 | 
				
			||||||
                vrm.setWarehouseBuilding(warehouse); | 
					 | 
				
			||||||
                vrm.configure(); | 
					 | 
				
			||||||
                dispatch = Dispatch.borrow(player, vrm); | 
					 | 
				
			||||||
                DispatchMessage.dispatchMsgDispatch(dispatch, Enum.DispatchChannel.SECONDARY); | 
					 | 
				
			||||||
            } | 
					 | 
				
			||||||
            return; | 
					 | 
				
			||||||
        } | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        EnumBitSet<Enum.ResourceType> bitSet = EnumBitSet.asEnumBitSet(wh.lockedResourceTypes.toLong(), Enum.ResourceType.class); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        bitSet.add(Enum.ResourceType.resourceLookup.get(itemBaseID)); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (!DbManager.WarehouseQueries.updateLocks(wh, bitSet.toLong())) | 
					 | 
				
			||||||
            return; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        wh.lockedResourceTypes.add(Enum.ResourceType.resourceLookup.get(itemBaseID)); | 
					 | 
				
			||||||
        ViewResourcesMessage vrm = new ViewResourcesMessage(player); | 
					 | 
				
			||||||
        vrm.setGuild(player.getGuild()); | 
					 | 
				
			||||||
        vrm.setWarehouseBuilding(warehouse); | 
					 | 
				
			||||||
        vrm.configure(); | 
					 | 
				
			||||||
        dispatch = Dispatch.borrow(player, vrm); | 
					 | 
				
			||||||
        DispatchMessage.dispatchMsgDispatch(dispatch, Enum.DispatchChannel.SECONDARY); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    } | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public static synchronized boolean deposit(PlayerCharacter pc, Item resource, int amount, boolean removeFromInventory, boolean transaction, Warehouse warehouse) { | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        ClientConnection origin = pc.getClientConnection(); | 
					 | 
				
			||||||
        if (origin == null) | 
					 | 
				
			||||||
            return false; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (amount < 0) { | 
					 | 
				
			||||||
            Logger.info(pc.getFirstName() + " Attempting to Dupe!!!!!!"); | 
					 | 
				
			||||||
            return false; | 
					 | 
				
			||||||
        } | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        ItemBase ib = resource.getItemBase(); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (ib == null) | 
					 | 
				
			||||||
            return false; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (warehouse.resources.get(ib) == null) | 
					 | 
				
			||||||
            return false; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        CharacterItemManager itemMan = pc.getCharItemManager(); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (itemMan == null) | 
					 | 
				
			||||||
            return false; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (itemMan.getGoldTrading() > 0) { | 
					 | 
				
			||||||
            ErrorPopupMsg.sendErrorPopup(pc, 195); | 
					 | 
				
			||||||
            return false; | 
					 | 
				
			||||||
        } | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (!itemMan.doesCharOwnThisItem(resource.getObjectUUID())) | 
					 | 
				
			||||||
            return false; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (!resource.validForInventory(origin, pc, itemMan)) | 
					 | 
				
			||||||
            return false; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (resource.getNumOfItems() < amount) | 
					 | 
				
			||||||
            return false; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        int oldAmount = warehouse.resources.get(ib); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        int newAmount = oldAmount + amount; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (newAmount > WarehouseManager.getMaxResources().get(ib.getUUID())) { | 
					 | 
				
			||||||
            //ChatManager.chatSystemInfo(pc, "The Warehouse is at it's maximum for this type of resource.");
 | 
					 | 
				
			||||||
            return false; | 
					 | 
				
			||||||
        } | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (removeFromInventory) { | 
					 | 
				
			||||||
            if (ib.getUUID() == 7) { | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                if (itemMan.getGoldInventory().getNumOfItems() - amount < 0) | 
					 | 
				
			||||||
                    return false; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                if (itemMan.getGoldInventory().getNumOfItems() - amount > MBServerStatics.PLAYER_GOLD_LIMIT) | 
					 | 
				
			||||||
                    return false; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                if (!itemMan.modifyInventoryGold(-amount)) { | 
					 | 
				
			||||||
                    //ChatManager.chatSystemError(pc, "You do not have this Gold.");
 | 
					 | 
				
			||||||
                    return false; | 
					 | 
				
			||||||
                } | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                UpdateGoldMsg ugm = new UpdateGoldMsg(pc); | 
					 | 
				
			||||||
                ugm.configure(); | 
					 | 
				
			||||||
                Dispatch dispatch = Dispatch.borrow(pc, ugm); | 
					 | 
				
			||||||
                DispatchMessage.dispatchMsgDispatch(dispatch, engine.Enum.DispatchChannel.SECONDARY); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                itemMan.updateInventory(); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            } else { | 
					 | 
				
			||||||
                itemMan.delete(resource); | 
					 | 
				
			||||||
                itemMan.updateInventory(); | 
					 | 
				
			||||||
            } | 
					 | 
				
			||||||
        } | 
					 | 
				
			||||||
        itemMan.updateInventory(); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (!WarehouseManager.DepositApproved(ib,amount,warehouse)) | 
					 | 
				
			||||||
            return false; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        warehouse.resources.put(ib, newAmount); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        Resource resourceType; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (resource.getItemBase().getType().equals(engine.Enum.ItemType.GOLD)) | 
					 | 
				
			||||||
            resourceType = Resource.GOLD; | 
					 | 
				
			||||||
        else | 
					 | 
				
			||||||
            resourceType = Resource.valueOf(resource.getItemBase().getName().toUpperCase()); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (transaction) | 
					 | 
				
			||||||
            AddTransactionToWarehouse(warehouse, pc.getObjectType(), pc.getObjectUUID(), Enum.TransactionType.DEPOSIT, resourceType, amount); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        return true; | 
					 | 
				
			||||||
    } | 
					 | 
				
			||||||
    public static synchronized boolean depositFromMine(Mine mine, ItemBase resource, int amount, Warehouse warehouse) { | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        int oldAmount = warehouse.resources.get(resource); | 
					 | 
				
			||||||
        int newAmount = oldAmount + amount; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (newAmount > WarehouseManager.getMaxResources().get(resource.getUUID())) | 
					 | 
				
			||||||
            return false; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (!WarehouseManager.DepositApproved(resource,amount,warehouse)) | 
					 | 
				
			||||||
            return false; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        warehouse.resources.put(resource, newAmount); | 
					 | 
				
			||||||
        Resource resourceType; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (resource.getUUID() == 7) | 
					 | 
				
			||||||
            resourceType = Resource.GOLD; | 
					 | 
				
			||||||
        else | 
					 | 
				
			||||||
            resourceType = Resource.valueOf(resource.getName().toUpperCase()); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (mine != null) | 
					 | 
				
			||||||
            AddTransactionToWarehouse(warehouse, Enum.GameObjectType.Building, mine.getBuildingID(), Enum.TransactionType.MINE, resourceType, amount); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        return true; | 
					 | 
				
			||||||
    } | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public static boolean DepositApproved(ItemBase ib, int amount, Warehouse warehouse){ | 
					 | 
				
			||||||
        if (ib == null) | 
					 | 
				
			||||||
            return false; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (warehouse.resources.get(ib) == null) | 
					 | 
				
			||||||
            return false; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        int oldAmount = warehouse.resources.get(ib); | 
					 | 
				
			||||||
        int newAmount = oldAmount + amount; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (newAmount > WarehouseManager.getMaxResources().get(ib.getUUID())) | 
					 | 
				
			||||||
            return false; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        int itemID = ib.getUUID(); | 
					 | 
				
			||||||
        boolean worked = false; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        switch (itemID) { | 
					 | 
				
			||||||
            case 7: | 
					 | 
				
			||||||
                worked = DbManager.WarehouseQueries.updateGold(warehouse, newAmount); | 
					 | 
				
			||||||
                break; | 
					 | 
				
			||||||
            case 1580000: | 
					 | 
				
			||||||
                worked = DbManager.WarehouseQueries.updateStone(warehouse, newAmount); | 
					 | 
				
			||||||
                break; | 
					 | 
				
			||||||
            case 1580001: | 
					 | 
				
			||||||
                worked = DbManager.WarehouseQueries.updateTruesteel(warehouse, newAmount); | 
					 | 
				
			||||||
                break; | 
					 | 
				
			||||||
            case 1580002: | 
					 | 
				
			||||||
                worked = DbManager.WarehouseQueries.updateIron(warehouse, newAmount); | 
					 | 
				
			||||||
                break; | 
					 | 
				
			||||||
            case 1580003: | 
					 | 
				
			||||||
                worked = DbManager.WarehouseQueries.updateAdamant(warehouse, newAmount); | 
					 | 
				
			||||||
                break; | 
					 | 
				
			||||||
            case 1580004: | 
					 | 
				
			||||||
                worked = DbManager.WarehouseQueries.updateLumber(warehouse, newAmount); | 
					 | 
				
			||||||
                break; | 
					 | 
				
			||||||
            case 1580005: | 
					 | 
				
			||||||
                worked = DbManager.WarehouseQueries.updateOak(warehouse, newAmount); | 
					 | 
				
			||||||
                break; | 
					 | 
				
			||||||
            case 1580006: | 
					 | 
				
			||||||
                worked = DbManager.WarehouseQueries.updateBronzewood(warehouse, newAmount); | 
					 | 
				
			||||||
                break; | 
					 | 
				
			||||||
            case 1580007: | 
					 | 
				
			||||||
                worked = DbManager.WarehouseQueries.updateMandrake(warehouse, newAmount); | 
					 | 
				
			||||||
                break; | 
					 | 
				
			||||||
            case 1580008: | 
					 | 
				
			||||||
                worked = DbManager.WarehouseQueries.updateCoal(warehouse, newAmount); | 
					 | 
				
			||||||
                break; | 
					 | 
				
			||||||
            case 1580009: | 
					 | 
				
			||||||
                worked = DbManager.WarehouseQueries.updateAgate(warehouse, newAmount); | 
					 | 
				
			||||||
                break; | 
					 | 
				
			||||||
            case 1580010: | 
					 | 
				
			||||||
                worked = DbManager.WarehouseQueries.updateDiamond(warehouse, newAmount); | 
					 | 
				
			||||||
                break; | 
					 | 
				
			||||||
            case 1580011: | 
					 | 
				
			||||||
                worked = DbManager.WarehouseQueries.updateOnyx(warehouse, newAmount); | 
					 | 
				
			||||||
                break; | 
					 | 
				
			||||||
            case 1580012: | 
					 | 
				
			||||||
                worked = DbManager.WarehouseQueries.updateAzoth(warehouse, newAmount); | 
					 | 
				
			||||||
                break; | 
					 | 
				
			||||||
            case 1580013: | 
					 | 
				
			||||||
                worked = DbManager.WarehouseQueries.updateOrichalk(warehouse, newAmount); | 
					 | 
				
			||||||
                break; | 
					 | 
				
			||||||
            case 1580014: | 
					 | 
				
			||||||
                worked = DbManager.WarehouseQueries.updateAntimony(warehouse, newAmount); | 
					 | 
				
			||||||
                break; | 
					 | 
				
			||||||
            case 1580015: | 
					 | 
				
			||||||
                worked = DbManager.WarehouseQueries.updateSulfur(warehouse, newAmount); | 
					 | 
				
			||||||
                break; | 
					 | 
				
			||||||
            case 1580016: | 
					 | 
				
			||||||
                worked = DbManager.WarehouseQueries.updateQuicksilver(warehouse, newAmount); | 
					 | 
				
			||||||
                break; | 
					 | 
				
			||||||
            case 1580017: | 
					 | 
				
			||||||
                worked = DbManager.WarehouseQueries.updateGalvor(warehouse, newAmount); | 
					 | 
				
			||||||
                break; | 
					 | 
				
			||||||
            case 1580018: | 
					 | 
				
			||||||
                worked = DbManager.WarehouseQueries.updateWormwood(warehouse, newAmount); | 
					 | 
				
			||||||
                break; | 
					 | 
				
			||||||
            case 1580019: | 
					 | 
				
			||||||
                worked = DbManager.WarehouseQueries.updateObsidian(warehouse, newAmount); | 
					 | 
				
			||||||
                break; | 
					 | 
				
			||||||
            case 1580020: | 
					 | 
				
			||||||
                worked = DbManager.WarehouseQueries.updateBloodstone(warehouse, newAmount); | 
					 | 
				
			||||||
                break; | 
					 | 
				
			||||||
            case 1580021: | 
					 | 
				
			||||||
                worked = DbManager.WarehouseQueries.updateMithril(warehouse, newAmount); | 
					 | 
				
			||||||
                break; | 
					 | 
				
			||||||
        } | 
					 | 
				
			||||||
        return worked; | 
					 | 
				
			||||||
    } | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public static synchronized void depositRealmTaxes(PlayerCharacter taxer, ItemBase ib, int amount, Warehouse warehouse) { | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (!DepositApproved(ib,amount,warehouse)) | 
					 | 
				
			||||||
            return; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        int oldAmount = warehouse.resources.get(ib); | 
					 | 
				
			||||||
        int newAmount = oldAmount + amount; | 
					 | 
				
			||||||
        warehouse.resources.put(ib, newAmount); | 
					 | 
				
			||||||
        Resource resourceType; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (ib.getUUID() == 7) | 
					 | 
				
			||||||
            resourceType = Resource.GOLD; | 
					 | 
				
			||||||
        else | 
					 | 
				
			||||||
            resourceType = Resource.valueOf(ib.getName().toUpperCase()); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        AddTransactionToWarehouse(warehouse, taxer.getObjectType(), taxer.getObjectUUID(), Enum.TransactionType.TAXRESOURCEDEPOSIT, resourceType, amount); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    } | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public static synchronized void depositProfitTax(ItemBase ib, int amount, Building building, Warehouse warehouse) { | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (ib == null) | 
					 | 
				
			||||||
            return; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (warehouse.resources.get(ib) == null) | 
					 | 
				
			||||||
            return; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        int oldAmount = warehouse.resources.get(ib); | 
					 | 
				
			||||||
        int newAmount = oldAmount + amount; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (newAmount > getMaxResources().get(ib.getUUID())) | 
					 | 
				
			||||||
            return; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (!DepositApproved(ib,amount,warehouse)) | 
					 | 
				
			||||||
            return; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        warehouse.resources.put(ib, newAmount); | 
					 | 
				
			||||||
        Resource resourceType; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (ib.getUUID() == 7) | 
					 | 
				
			||||||
            resourceType = Resource.GOLD; | 
					 | 
				
			||||||
        else | 
					 | 
				
			||||||
            resourceType = Resource.valueOf(ib.getName().toUpperCase()); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (building != null) | 
					 | 
				
			||||||
            AddTransactionToWarehouse(warehouse, Enum.GameObjectType.Building, building.getObjectUUID(), Enum.TransactionType.DEPOSIT, resourceType, amount); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    } | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public static boolean WithdrawApproved(ItemBase ib, int amount, Warehouse warehouse){ | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (ib == null) | 
					 | 
				
			||||||
            return false; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (warehouse.resources.get(ib) == null) | 
					 | 
				
			||||||
            return false; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (amount <= 0) | 
					 | 
				
			||||||
            return false; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        int oldAmount = warehouse.resources.get(ib); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (oldAmount < amount) | 
					 | 
				
			||||||
            return false; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        int hashID = ib.getHashID(); | 
					 | 
				
			||||||
        int newAmount = oldAmount - amount; | 
					 | 
				
			||||||
        boolean worked = false; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        switch (hashID) { | 
					 | 
				
			||||||
            case 2308551: | 
					 | 
				
			||||||
                worked = DbManager.WarehouseQueries.updateGold(warehouse, newAmount); | 
					 | 
				
			||||||
                break; | 
					 | 
				
			||||||
            case 74856115: | 
					 | 
				
			||||||
                worked = DbManager.WarehouseQueries.updateStone(warehouse, newAmount); | 
					 | 
				
			||||||
                break; | 
					 | 
				
			||||||
            case -317484979: | 
					 | 
				
			||||||
                worked = DbManager.WarehouseQueries.updateTruesteel(warehouse, newAmount); | 
					 | 
				
			||||||
                break; | 
					 | 
				
			||||||
            case 2504297: | 
					 | 
				
			||||||
                worked = DbManager.WarehouseQueries.updateIron(warehouse, newAmount); | 
					 | 
				
			||||||
                break; | 
					 | 
				
			||||||
            case -1741189964: | 
					 | 
				
			||||||
                worked = DbManager.WarehouseQueries.updateAdamant(warehouse, newAmount); | 
					 | 
				
			||||||
                break; | 
					 | 
				
			||||||
            case -1603256692: | 
					 | 
				
			||||||
                worked = DbManager.WarehouseQueries.updateLumber(warehouse, newAmount); | 
					 | 
				
			||||||
                break; | 
					 | 
				
			||||||
            case 74767: | 
					 | 
				
			||||||
                worked = DbManager.WarehouseQueries.updateOak(warehouse, newAmount); | 
					 | 
				
			||||||
                break; | 
					 | 
				
			||||||
            case 1334770447: | 
					 | 
				
			||||||
                worked = DbManager.WarehouseQueries.updateBronzewood(warehouse, newAmount); | 
					 | 
				
			||||||
                break; | 
					 | 
				
			||||||
            case 1191391799: | 
					 | 
				
			||||||
                worked = DbManager.WarehouseQueries.updateMandrake(warehouse, newAmount); | 
					 | 
				
			||||||
                break; | 
					 | 
				
			||||||
            case 2559427: | 
					 | 
				
			||||||
                worked = DbManager.WarehouseQueries.updateCoal(warehouse, newAmount); | 
					 | 
				
			||||||
                break; | 
					 | 
				
			||||||
            case 75173057: | 
					 | 
				
			||||||
                worked = DbManager.WarehouseQueries.updateAgate(warehouse, newAmount); | 
					 | 
				
			||||||
                break; | 
					 | 
				
			||||||
            case -1730704107: | 
					 | 
				
			||||||
                worked = DbManager.WarehouseQueries.updateDiamond(warehouse, newAmount); | 
					 | 
				
			||||||
                break; | 
					 | 
				
			||||||
            case 2977263: | 
					 | 
				
			||||||
                worked = DbManager.WarehouseQueries.updateOnyx(warehouse, newAmount); | 
					 | 
				
			||||||
                break; | 
					 | 
				
			||||||
            case 78329697: | 
					 | 
				
			||||||
                worked = DbManager.WarehouseQueries.updateAzoth(warehouse, newAmount); | 
					 | 
				
			||||||
                break; | 
					 | 
				
			||||||
            case -2036290524: | 
					 | 
				
			||||||
                worked = DbManager.WarehouseQueries.updateOrichalk(warehouse, newAmount); | 
					 | 
				
			||||||
                break; | 
					 | 
				
			||||||
            case 452320058: | 
					 | 
				
			||||||
                worked = DbManager.WarehouseQueries.updateAntimony(warehouse, newAmount); | 
					 | 
				
			||||||
                break; | 
					 | 
				
			||||||
            case -1586349421: | 
					 | 
				
			||||||
                worked = DbManager.WarehouseQueries.updateSulfur(warehouse, newAmount); | 
					 | 
				
			||||||
                break; | 
					 | 
				
			||||||
            case -472884509: | 
					 | 
				
			||||||
                worked = DbManager.WarehouseQueries.updateQuicksilver(warehouse, newAmount); | 
					 | 
				
			||||||
                break; | 
					 | 
				
			||||||
            case -1596311545: | 
					 | 
				
			||||||
                worked = DbManager.WarehouseQueries.updateGalvor(warehouse, newAmount); | 
					 | 
				
			||||||
                break; | 
					 | 
				
			||||||
            case 1532478436: | 
					 | 
				
			||||||
                worked = DbManager.WarehouseQueries.updateWormwood(warehouse, newAmount); | 
					 | 
				
			||||||
                break; | 
					 | 
				
			||||||
            case -697973233: | 
					 | 
				
			||||||
                worked = DbManager.WarehouseQueries.updateObsidian(warehouse, newAmount); | 
					 | 
				
			||||||
                break; | 
					 | 
				
			||||||
            case -1569826353: | 
					 | 
				
			||||||
                worked = DbManager.WarehouseQueries.updateBloodstone(warehouse, newAmount); | 
					 | 
				
			||||||
                break; | 
					 | 
				
			||||||
            case -1761257186: | 
					 | 
				
			||||||
                worked = DbManager.WarehouseQueries.updateMithril(warehouse, newAmount); | 
					 | 
				
			||||||
                break; | 
					 | 
				
			||||||
        } | 
					 | 
				
			||||||
        return worked; | 
					 | 
				
			||||||
    } | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public static synchronized boolean withdraw(Warehouse warehouse, NPC npc, ItemBase ib, int amount, boolean transaction) { | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        int oldAmount = warehouse.resources.get(ib); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        int newAmount = oldAmount - amount; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (!WithdrawApproved(ib,amount, warehouse)) | 
					 | 
				
			||||||
            return false; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        warehouse.resources.put(ib, newAmount); | 
					 | 
				
			||||||
        Resource resourceType; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (ib.getUUID() == 7) | 
					 | 
				
			||||||
            resourceType = Resource.GOLD; | 
					 | 
				
			||||||
        else | 
					 | 
				
			||||||
            resourceType = Resource.valueOf(ib.getName().toUpperCase()); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (transaction) | 
					 | 
				
			||||||
            AddTransactionToWarehouse(warehouse, npc.getObjectType(), npc.getObjectUUID(), Enum.TransactionType.WITHDRAWL, resourceType, amount); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        return true; | 
					 | 
				
			||||||
    } | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public static synchronized void transferResources(Warehouse warehouse, PlayerCharacter taxer, TaxResourcesMsg msg, ArrayList<Integer> realmResources, float taxPercent) { | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        for (int ibID : realmResources) { | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            ItemBase ib = ItemBase.getItemBase(ibID); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            if (ib == null) | 
					 | 
				
			||||||
                return; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            if (warehouse.resources.get(ib) == null) | 
					 | 
				
			||||||
                return; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            int amount = (int) (warehouse.resources.get(ib) * taxPercent); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            if (amount <= 0) { | 
					 | 
				
			||||||
                msg.getResources().put(ib.getHashID(), 0); | 
					 | 
				
			||||||
                continue; | 
					 | 
				
			||||||
            } | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            int oldAmount = warehouse.resources.get(ib); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            if (oldAmount < amount) | 
					 | 
				
			||||||
                amount = oldAmount; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            int newAmount = oldAmount - amount; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            if (newAmount < amount) | 
					 | 
				
			||||||
                continue; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            if (!WithdrawApproved(ib,amount,warehouse)) { | 
					 | 
				
			||||||
                msg.getResources().put(ib.getHashID(), 0); | 
					 | 
				
			||||||
                continue; | 
					 | 
				
			||||||
            } | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            msg.getResources().put(ib.getHashID(), amount); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            warehouse.resources.put(ib, newAmount); | 
					 | 
				
			||||||
            depositRealmTaxes(taxer, ib, amount, warehouse); | 
					 | 
				
			||||||
            Resource resourceType; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            if (ib.getUUID() == 7) | 
					 | 
				
			||||||
                resourceType = Resource.GOLD; | 
					 | 
				
			||||||
            else | 
					 | 
				
			||||||
                resourceType = Resource.valueOf(ib.getName().toUpperCase()); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            AddTransactionToWarehouse(warehouse, taxer.getObjectType(), taxer.getObjectUUID(), Enum.TransactionType.TAXRESOURCE, resourceType, amount); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        } | 
					 | 
				
			||||||
    } | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public static synchronized boolean withdraw(Warehouse warehouse, PlayerCharacter pc, ItemBase ib, int amount, boolean addToInventory, boolean transaction) { | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (pc == null) | 
					 | 
				
			||||||
            return false; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (ib == null) | 
					 | 
				
			||||||
            return false; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (warehouse.resources.get(ib) == null) | 
					 | 
				
			||||||
            return false; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (amount <= 0) | 
					 | 
				
			||||||
            return false; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        CharacterItemManager itemMan = pc.getCharItemManager(); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (itemMan == null) | 
					 | 
				
			||||||
            return false; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (addToInventory) | 
					 | 
				
			||||||
            if (!itemMan.hasRoomInventory(ib.getWeight())) { | 
					 | 
				
			||||||
                ChatManager.chatSystemInfo(pc, "You can not carry any more of that item."); | 
					 | 
				
			||||||
                return false; | 
					 | 
				
			||||||
            } | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (addToInventory && ib.getUUID() == ItemBase.GOLD_BASE_ID) { | 
					 | 
				
			||||||
            if (pc.getCharItemManager().getGoldInventory().getNumOfItems() + amount > MBServerStatics.PLAYER_GOLD_LIMIT) { | 
					 | 
				
			||||||
                return false; | 
					 | 
				
			||||||
            } | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            if (pc.getCharItemManager().getGoldInventory().getNumOfItems() + amount < 0) | 
					 | 
				
			||||||
                return false; | 
					 | 
				
			||||||
        } | 
					 | 
				
			||||||
        int oldAmount = warehouse.resources.get(ib); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (oldAmount < amount) | 
					 | 
				
			||||||
            return false; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        int newAmount = oldAmount - amount; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (!WithdrawApproved(ib,amount,warehouse)) | 
					 | 
				
			||||||
            return false; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        warehouse.resources.put(ib, newAmount); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (addToInventory) { | 
					 | 
				
			||||||
            if (ib.getUUID() == 7) { | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                itemMan.addGoldToInventory(amount, false); | 
					 | 
				
			||||||
                UpdateGoldMsg ugm = new UpdateGoldMsg(pc); | 
					 | 
				
			||||||
                ugm.configure(); | 
					 | 
				
			||||||
                Dispatch dispatch = Dispatch.borrow(pc, ugm); | 
					 | 
				
			||||||
                DispatchMessage.dispatchMsgDispatch(dispatch, Enum.DispatchChannel.SECONDARY); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                itemMan.updateInventory(); | 
					 | 
				
			||||||
            } else { | 
					 | 
				
			||||||
                boolean itemWorked = false; | 
					 | 
				
			||||||
                Item item = new Item(ib, pc.getObjectUUID(), Enum.OwnerType.PlayerCharacter, (byte) 0, (byte) 0, | 
					 | 
				
			||||||
                        (short) 1, (short) 1, true, false, Enum.ItemContainerType.INVENTORY, (byte) 0, | 
					 | 
				
			||||||
                        new ArrayList<>(), ""); | 
					 | 
				
			||||||
                item.setNumOfItems(amount); | 
					 | 
				
			||||||
                item.containerType = Enum.ItemContainerType.INVENTORY; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                try { | 
					 | 
				
			||||||
                    item = DbManager.ItemQueries.ADD_ITEM(item); | 
					 | 
				
			||||||
                    itemWorked = true; | 
					 | 
				
			||||||
                } catch (Exception e) { | 
					 | 
				
			||||||
                    Logger.error(e); | 
					 | 
				
			||||||
                } | 
					 | 
				
			||||||
                if (itemWorked) { | 
					 | 
				
			||||||
                    itemMan.addItemToInventory(item); | 
					 | 
				
			||||||
                    itemMan.updateInventory(); | 
					 | 
				
			||||||
                } | 
					 | 
				
			||||||
            } | 
					 | 
				
			||||||
        } | 
					 | 
				
			||||||
        Resource resourceType; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (ib.getUUID() == 7) | 
					 | 
				
			||||||
            resourceType = Resource.GOLD; | 
					 | 
				
			||||||
        else | 
					 | 
				
			||||||
            resourceType = Resource.valueOf(ib.getName().toUpperCase()); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (transaction) | 
					 | 
				
			||||||
            AddTransactionToWarehouse(warehouse, pc.getObjectType(), pc.getObjectUUID(), Enum.TransactionType.WITHDRAWL, resourceType, amount); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        return true; | 
					 | 
				
			||||||
    } | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public static synchronized boolean loot(Warehouse warehouse, PlayerCharacter pc, ItemBase ib, int amount, boolean addToInventory) { | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (pc == null) | 
					 | 
				
			||||||
            return false; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (ib == null) | 
					 | 
				
			||||||
            return false; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (warehouse.resources.get(ib) == null) | 
					 | 
				
			||||||
            return false; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (amount <= 0) | 
					 | 
				
			||||||
            return false; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        CharacterItemManager itemMan = pc.getCharItemManager(); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (itemMan == null) | 
					 | 
				
			||||||
            return false; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (!itemMan.hasRoomInventory(ib.getWeight())) { | 
					 | 
				
			||||||
            ChatManager.chatSystemInfo(pc, "You can not carry any more of that item."); | 
					 | 
				
			||||||
            return false; | 
					 | 
				
			||||||
        } | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        int oldAmount = warehouse.resources.get(ib); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (oldAmount < amount) | 
					 | 
				
			||||||
            return false; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        int newAmount = oldAmount - amount; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        warehouse.resources.put(ib, newAmount); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (addToInventory) { | 
					 | 
				
			||||||
            if (ib.getUUID() == 7) { | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                itemMan.addGoldToInventory(amount, false); | 
					 | 
				
			||||||
                UpdateGoldMsg ugm = new UpdateGoldMsg(pc); | 
					 | 
				
			||||||
                ugm.configure(); | 
					 | 
				
			||||||
                Dispatch dispatch = Dispatch.borrow(pc, ugm); | 
					 | 
				
			||||||
                DispatchMessage.dispatchMsgDispatch(dispatch, Enum.DispatchChannel.SECONDARY); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                itemMan.updateInventory(); | 
					 | 
				
			||||||
            } else { | 
					 | 
				
			||||||
                boolean itemWorked = false; | 
					 | 
				
			||||||
                Item item = new Item(ib, pc.getObjectUUID(), Enum.OwnerType.PlayerCharacter, (byte) 0, (byte) 0, | 
					 | 
				
			||||||
                        (short) 1, (short) 1, true, false, Enum.ItemContainerType.INVENTORY, (byte) 0, | 
					 | 
				
			||||||
                        new ArrayList<>(), ""); | 
					 | 
				
			||||||
                item.setNumOfItems(amount); | 
					 | 
				
			||||||
                item.containerType = Enum.ItemContainerType.INVENTORY; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                try { | 
					 | 
				
			||||||
                    item = DbManager.ItemQueries.ADD_ITEM(item); | 
					 | 
				
			||||||
                    itemWorked = true; | 
					 | 
				
			||||||
                } catch (Exception e) { | 
					 | 
				
			||||||
                    Logger.error(e); | 
					 | 
				
			||||||
                } | 
					 | 
				
			||||||
                if (itemWorked) { | 
					 | 
				
			||||||
                    itemMan.addItemToInventory(item); | 
					 | 
				
			||||||
                    itemMan.updateInventory(); | 
					 | 
				
			||||||
                } | 
					 | 
				
			||||||
            } | 
					 | 
				
			||||||
        } | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        return true; | 
					 | 
				
			||||||
    } | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public static boolean isEmpty(Warehouse warehouse) { | 
					 | 
				
			||||||
        int amount = 0; | 
					 | 
				
			||||||
        for (ItemBase ib : ItemBase.getResourceList()) { | 
					 | 
				
			||||||
            if (amount > 0) | 
					 | 
				
			||||||
                return false; | 
					 | 
				
			||||||
            amount += warehouse.resources.get(ib); | 
					 | 
				
			||||||
        } | 
					 | 
				
			||||||
        return true; | 
					 | 
				
			||||||
    } | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public static void loadAllTransactions(Warehouse warehouse) { | 
					 | 
				
			||||||
        warehouse.transactions = DbManager.WarehouseQueries.GET_TRANSACTIONS_FOR_WAREHOUSE(warehouse.buildingUID); | 
					 | 
				
			||||||
    } | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public static void AddTransactionToWarehouse(Warehouse warehouse, Enum.GameObjectType targetType, int targetUUID, Enum.TransactionType transactionType, Resource resource, int amount) { | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (!DbManager.WarehouseQueries.CREATE_TRANSACTION(warehouse.buildingUID, targetType, targetUUID, transactionType, resource, amount, DateTime.now())) | 
					 | 
				
			||||||
            return; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        Transaction transaction = new Transaction(warehouse.buildingUID, targetType, targetUUID, transactionType, resource, amount, DateTime.now()); | 
					 | 
				
			||||||
        warehouse.transactions.add(transaction); | 
					 | 
				
			||||||
    } | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public static boolean isAboveCap(Warehouse warehouse, ItemBase ib, int deposit) { | 
					 | 
				
			||||||
        int newAmount = warehouse.resources.get(ib) + deposit; | 
					 | 
				
			||||||
        return newAmount > getMaxResources().get(ib.getUUID()); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    } | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public static boolean isResourceLocked(Warehouse warehouse, ItemBase itemBase) { | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        Enum.ResourceType resourceType; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        resourceType = Enum.ResourceType.resourceLookup.get(itemBase.getUUID()); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        return resourceType.elementOf(warehouse.lockedResourceTypes); | 
					 | 
				
			||||||
    } | 
					 | 
				
			||||||
} | 
					 | 
				
			||||||
					Loading…
					
					
				
		Reference in new issue