diff --git a/src/engine/net/client/ClientMessagePump.java b/src/engine/net/client/ClientMessagePump.java
index e6b6edcb..d72b0c47 100644
--- a/src/engine/net/client/ClientMessagePump.java
+++ b/src/engine/net/client/ClientMessagePump.java
@@ -1415,18 +1415,15 @@ public class ClientMessagePump implements NetMsgHandler {
                             int cost = me.magicValue;
                             if(npc.getContractID() == 1201 && me.getItemBase().getName().equals("Prospector"))
                                 cost = 50;
-                            int resourceCost = (Warehouse.getSellStackSize(me.getItemBase().getUUID()) * Warehouse.getCostForResource(me.getItemBase().getUUID()));
-                            if (resourceCost != 0)
-                                cost = resourceCost;
-                            if(npc.contractUUID == 900 && me.getItemBase().getUUID() == 1705032){
-                                cost = 1000000;
-                            }
                             float bargain = sourcePlayer.getBargain();
                             float profit = npc.getSellPercent(sourcePlayer) - bargain;
                             if(me.getItemBase().getType().equals(ItemType.POTION))
                                 profit -= 1.0f;
                             if (profit < 1)
                                 profit = 1;
+                            if(npc.getContractID() == 900){
+                                cost = Warehouse.getCostForResource(ib.getUUID()) * Warehouse.getSellStackSize(ib.getUUID());
+                            }
                             cost *= profit;
                             if (gold.getNumOfItems() - cost < 0) {
                                 //dont' have enough goldItem exit!
@@ -1447,33 +1444,7 @@ public class ClientMessagePump implements NetMsgHandler {
                                 return;
                             }
                             if(me.getItemBase().getType().equals(ItemType.RESOURCE) && npc.getContractID() == 900){
-                                boolean stacked = false;
-                                int buystack = Warehouse.getSellStackSize(me.getItemBase().getUUID());
-                                for(Item item : itemMan.getInventory()){
-                                    int itemID = item.getItemBaseID();
-                                    int meID = me.getItemBase().getUUID();
-                                    if(itemID == meID){
-                                        if(Warehouse.maxResources.isEmpty())
-                                            Warehouse.getMaxResources();
-                                        int maxStack = Warehouse.maxResources.get(itemID);
-                                        if(maxStack > item.getNumOfItems() + buystack){
-                                            item.setNumOfItems(item.getNumOfItems() + buystack);
-                                            stacked = true;
-                                            itemMan.updateInventory();
-                                            DbManager.ItemQueries.UPDATE_NUM_ITEMS(item,item.getNumOfItems());
-                                            break;
-                                        }
-                                    }
-                                }
-                                if(!stacked){
-                                    buy = Item.createItemForPlayer(sourcePlayer, ib);
-                                    if (buy != null) {
-                                        me.transferEnchants(buy);
-                                        itemMan.addItemToInventory(buy);
-                                        buy.setNumOfItems(buystack);
-                                        DbManager.ItemQueries.UPDATE_NUM_ITEMS(buy,buy.getNumOfItems());
-                                    }
-                                }
+                                handleResourcePurchase(me,itemMan,npc,buy,sourcePlayer,ib);
                             }else {
                                 buy = Item.createItemForPlayer(sourcePlayer, ib);
                                 if (buy != null) {
@@ -1589,6 +1560,35 @@ public class ClientMessagePump implements NetMsgHandler {
         }
     }
 
+    public static void handleResourcePurchase(MobEquipment me, CharacterItemManager itemMan, NPC npc, Item buy, PlayerCharacter sourcePlayer, ItemBase ib){
+        boolean stacked = false;
+        int buystack = Warehouse.getSellStackSize(me.getItemBase().getUUID());
+        for(Item item : itemMan.getInventory()){
+            int itemID = item.getItemBaseID();
+            int meID = me.getItemBase().getUUID();
+            if(itemID == meID){
+                if(Warehouse.maxResources.isEmpty())
+                    Warehouse.getMaxResources();
+                int maxStack = Warehouse.maxResources.get(itemID);
+                if(maxStack > item.getNumOfItems() + buystack){
+                    item.setNumOfItems(item.getNumOfItems() + buystack);
+                    stacked = true;
+                    itemMan.updateInventory();
+                    DbManager.ItemQueries.UPDATE_NUM_ITEMS(item,item.getNumOfItems());
+                    break;
+                }
+            }
+        }
+        if(!stacked){
+            buy = Item.createItemForPlayer(sourcePlayer, ib);
+            if (buy != null) {
+                me.transferEnchants(buy);
+                itemMan.addItemToInventory(buy);
+                buy.setNumOfItems(buystack);
+                DbManager.ItemQueries.UPDATE_NUM_ITEMS(buy,buy.getNumOfItems());
+            }
+        }
+    }
     private static void Repair(RepairMsg msg, ClientConnection origin) {
 
         PlayerCharacter player = SessionManager.getPlayerCharacter(origin);