Browse Source

Durability and initial charges migrated to template.

combat-2
MagicBot 9 months ago
parent
commit
d7dfab5e74
  1. 2
      src/engine/db/handlers/dbItemHandler.java
  2. 2
      src/engine/devcmd/cmds/InfoCmd.java
  3. 11
      src/engine/devcmd/cmds/PrintInventoryCmd.java
  4. 5
      src/engine/net/client/ClientMessagePump.java
  5. 3
      src/engine/objects/CharacterItemManager.java
  6. 22
      src/engine/objects/Item.java

2
src/engine/db/handlers/dbItemHandler.java

@ -64,7 +64,7 @@ public class dbItemHandler extends dbHandlerBase {
preparedStatement.setInt(2, toAdd.getTemplsteID()); preparedStatement.setInt(2, toAdd.getTemplsteID());
preparedStatement.setInt(3, (byte) toAdd.chargesRemaining); preparedStatement.setInt(3, (byte) toAdd.chargesRemaining);
preparedStatement.setInt(4, (short) toAdd.durabilityCurrent); preparedStatement.setInt(4, (short) toAdd.durabilityCurrent);
preparedStatement.setInt(5, toAdd.getDurabilityMax()); preparedStatement.setInt(5, (int) toAdd.template.item_health_full);
if (toAdd.getNumOfItems() < 1) if (toAdd.getNumOfItems() < 1)
preparedStatement.setInt(6, 1); preparedStatement.setInt(6, 1);

2
src/engine/devcmd/cmds/InfoCmd.java

@ -514,7 +514,7 @@ public class InfoCmd extends AbstractDevCmd {
output += StringUtils.addWS("Qty: " output += StringUtils.addWS("Qty: "
+ df.format(item.getNumOfItems()), 20); + df.format(item.getNumOfItems()), 20);
output += "Charges: " + (byte) item.chargesRemaining output += "Charges: " + (byte) item.chargesRemaining
+ '/' + item.getChargesMax(); + '/' + item.template.item_initial_charges;
output += newline; output += newline;
output += "Name: " + template.item_base_name; output += "Name: " + template.item_base_name;
output += newline; output += newline;

11
src/engine/devcmd/cmds/PrintInventoryCmd.java

@ -75,14 +75,17 @@ public class PrintInventoryCmd extends AbstractDevCmd {
int goldCount = 0; int goldCount = 0;
for (Item item : inventory) { for (Item item : inventory) {
if (item.getItemBase().getType().equals(ItemType.GOLD) == false) { ItemTemplate template = ItemTemplate.itemTemplates.get(item.templsteID);
if (item.template.item_type.equals(ItemType.GOLD) == false) {
String chargeInfo = ""; String chargeInfo = "";
byte chargeMax = item.getChargesMax(); int chargeMax = template.item_initial_charges;
if (chargeMax > 0) { if (chargeMax > 0) {
byte charges = (byte) item.chargesRemaining; int charges = item.chargesRemaining;
chargeInfo = " charges: " + charges + '/' + chargeMax; chargeInfo = " charges: " + charges + '/' + chargeMax;
} }
ItemTemplate template = ItemTemplate.itemTemplates.get(item.getTemplsteID());
throwbackInfo(pc, " " + template.item_base_name + ", count: " + item.getNumOfItems() + chargeInfo); throwbackInfo(pc, " " + template.item_base_name + ", count: " + item.getNumOfItems() + chargeInfo);
} else } else
goldCount += item.getNumOfItems(); goldCount += item.getNumOfItems();

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

@ -1246,7 +1246,7 @@ public class ClientMessagePump implements NetMsgHandler {
//apply damaged value reduction //apply damaged value reduction
float durabilityCurrent = (short) sell.durabilityCurrent; float durabilityCurrent = (short) sell.durabilityCurrent;
float durabilityMax = sell.getDurabilityMax(); float durabilityMax = sell.template.item_health_full;
float damagedModifier = durabilityCurrent / durabilityMax; float damagedModifier = durabilityCurrent / durabilityMax;
cost *= damagedModifier; cost *= damagedModifier;
float bargain = player.getBargain(); float bargain = player.getBargain();
@ -1640,7 +1640,8 @@ public class ClientMessagePump implements NetMsgHandler {
//make sure item is damaged and not destroyed //make sure item is damaged and not destroyed
short dur = (short) toRepair.durabilityCurrent; short dur = (short) toRepair.durabilityCurrent;
short max = toRepair.getDurabilityMax(); short max = (short) toRepair.template.item_health_full;
//account for durability modifications //account for durability modifications
float durMod = toRepair.getBonusPercent(ModType.Durability, SourceType.NONE); float durMod = toRepair.getBonusPercent(ModType.Durability, SourceType.NONE);
max *= (1 + (durMod * 0.01f)); max *= (1 + (durMod * 0.01f));

3
src/engine/objects/CharacterItemManager.java

@ -2444,13 +2444,14 @@ public class CharacterItemManager {
return; return;
//don't damage noob gear, hair or beards. //don't damage noob gear, hair or beards.
if (item.getDurabilityMax() == 0) if (item.template.item_health_full == 0)
return; return;
if (!item.isCanDestroy()) if (!item.isCanDestroy())
return; return;
int dur = (int) (short) item.durabilityCurrent; int dur = (int) (short) item.durabilityCurrent;
if (dur - amount <= 0) { if (dur - amount <= 0) {
//destroy the item //destroy the item
junk(item); junk(item);

22
src/engine/objects/Item.java

@ -39,8 +39,6 @@ import java.util.concurrent.locks.ReentrantLock;
public class Item extends AbstractWorldObject { public class Item extends AbstractWorldObject {
private static ConcurrentHashMap<String, Integer> enchantValues = new ConcurrentHashMap<>(MBServerStatics.CHM_INIT_CAP, MBServerStatics.CHM_LOAD, MBServerStatics.CHM_THREAD_LOW); private static ConcurrentHashMap<String, Integer> enchantValues = new ConcurrentHashMap<>(MBServerStatics.CHM_INIT_CAP, MBServerStatics.CHM_LOAD, MBServerStatics.CHM_THREAD_LOW);
private short durabilityMax;
private byte chargesMax;
private final ConcurrentHashMap<AbstractEffectModifier, Float> bonuses = new ConcurrentHashMap<>(MBServerStatics.CHM_INIT_CAP, MBServerStatics.CHM_LOAD, MBServerStatics.CHM_THREAD_LOW); private final ConcurrentHashMap<AbstractEffectModifier, Float> bonuses = new ConcurrentHashMap<>(MBServerStatics.CHM_INIT_CAP, MBServerStatics.CHM_LOAD, MBServerStatics.CHM_THREAD_LOW);
private final ArrayList<String> effectNames = new ArrayList<>(); private final ArrayList<String> effectNames = new ArrayList<>();
public Enum.ItemContainerType containerType; public Enum.ItemContainerType containerType;
@ -87,7 +85,11 @@ public class Item extends AbstractWorldObject {
super(rs); super(rs);
this.templsteID = rs.getInt("item_itemBaseID"); this.templsteID = rs.getInt("item_itemBaseID");
this.template = ItemTemplate.itemTemplates.get(this.templsteID);
if (this.template == null)
Logger.error("Null template of " + this.templsteID)
;
// Set container enumeration // Set container enumeration
String container = rs.getString("item_container"); String container = rs.getString("item_container");
@ -115,15 +117,9 @@ public class Item extends AbstractWorldObject {
this.ownerID = rs.getInt("parent"); this.ownerID = rs.getInt("parent");
if (this.getItemBase() != null)
this.chargesMax = (byte) this.getItemBase().getNumCharges();
else
this.chargesMax = 0;
this.chargesRemaining = rs.getByte("item_chargesRemaining"); this.chargesRemaining = rs.getByte("item_chargesRemaining");
this.durabilityCurrent = rs.getShort("item_durabilityCurrent"); this.durabilityCurrent = rs.getShort("item_durabilityCurrent");
this.durabilityMax = rs.getShort("item_durabilityMax");
DbObjectType ownerType; DbObjectType ownerType;
ownerType = DbManager.BuildingQueries.GET_UID_ENUM(this.ownerID); ownerType = DbManager.BuildingQueries.GET_UID_ENUM(this.ownerID);
@ -221,7 +217,7 @@ public class Item extends AbstractWorldObject {
writer.putString(item.customName); // Unknown. pad? writer.putString(item.customName); // Unknown. pad?
writer.put((byte) 1); // End Datablock byte writer.put((byte) 1); // End Datablock byte
writer.putFloat((float) item.durabilityMax); writer.putFloat(item.template.item_health_full);
writer.putFloat((float) item.durabilityCurrent); writer.putFloat((float) item.durabilityCurrent);
writer.put((byte) 1); // End Datablock byte writer.put((byte) 1); // End Datablock byte
@ -708,18 +704,10 @@ public class Item extends AbstractWorldObject {
return true; return true;
} }
public byte getChargesMax() {
return chargesMax;
}
public void setDurabilityCurrent(float value) { public void setDurabilityCurrent(float value) {
this.durabilityCurrent = value; this.durabilityCurrent = value;
} }
public short getDurabilityMax() {
return durabilityMax;
}
public boolean isCanDestroy() { public boolean isCanDestroy() {
return canDestroy; return canDestroy;
} }

Loading…
Cancel
Save