diff --git a/src/engine/net/client/ClientMessagePump.java b/src/engine/net/client/ClientMessagePump.java index 3ef37e3d..1424c2be 100644 --- a/src/engine/net/client/ClientMessagePump.java +++ b/src/engine/net/client/ClientMessagePump.java @@ -1681,23 +1681,12 @@ public class ClientMessagePump implements NetMsgHandler { return; } - //int cost = ((int)((toRepair.getMagicValue()/max*(max - dur)) + (npc.getSpecialPrice() * npc.buyPercent))) + (int)(npc.getSpecialPrice() * (max - dur)); - double repairRate = 0.067; // A proportional repair rate based on example - int maxRepairCost = (int)(toRepair.getMagicValue() * repairRate); - - // Calculate the percentage of the durability that is damaged - double damageRatio = (double)(toRepair.getDurabilityMax() - toRepair.getDurabilityCurrent()) / toRepair.getDurabilityMax(); - - // Calculate the repair cost based on the damage ratio and item value - int cost = (int)(maxRepairCost * damageRatio); - - //int pointsToRepair = max - dur; - //int magicValue = toRepair.getMagicValue(); - //if(magicValue == 0) - // magicValue = 1; - //int calculatedValue = toRepair.getDurabilityMax() * magicValue; - //float costPerPoint = (magicValue / max) * ( 1 + npc.buyPercent); - //cost = (int)(pointsToRepair * costPerPoint) + npc.getSpecialPrice(); + int pointsToRepair = max - dur; + double damageRatio = (double)1.0d - (toRepair.getDurabilityMax() - toRepair.getDurabilityCurrent()) / toRepair.getDurabilityMax(); + int modifiedValue = (int)(damageRatio * toRepair.getMagicValue()); + int costPerPoint = modifiedValue / toRepair.getDurabilityMax(); + int modifiedRepairCost = (int)(pointsToRepair * costPerPoint)+ npc.getSpecialPrice(); + int cost = (int)(modifiedRepairCost * 1 + npc.buyPercent) + npc.getSpecialPrice(); Building b = (!npc.isStatic()) ? npc.getBuilding() : null; if (b != null) diff --git a/src/engine/objects/Item.java b/src/engine/objects/Item.java index 084ffde2..050beb17 100644 --- a/src/engine/objects/Item.java +++ b/src/engine/objects/Item.java @@ -1227,7 +1227,10 @@ public class Item extends AbstractWorldObject { } public final int getMagicValue() { - return this.magicValue; + int val = this.calcMagicValue(); + if(val == 0) + val = 1; + return val + this.getItemBase().getMagicValue(); } public int getBaseValue() {