Browse Source

repair cost formula fixed

lakebane-optimize
FatBoy-DOTC 2 weeks ago
parent
commit
76eed79b0a
  1. 23
      src/engine/net/client/ClientMessagePump.java
  2. 5
      src/engine/objects/Item.java

23
src/engine/net/client/ClientMessagePump.java

@ -1681,23 +1681,12 @@ public class ClientMessagePump implements NetMsgHandler { @@ -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)

5
src/engine/objects/Item.java

@ -1227,7 +1227,10 @@ public class Item extends AbstractWorldObject { @@ -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() {

Loading…
Cancel
Save