From 8e692ea21eab2e053aa874aba7a34b2aac456ef3 Mon Sep 17 00:00:00 2001 From: FatBoy-DOTC Date: Sun, 29 Jan 2023 19:06:54 -0600 Subject: [PATCH] Durability repair fix --- src/engine/net/client/ClientMessagePump.java | 18 ++++++++++++------ .../ArmorPiercingEffectModifier.java | 1 - .../DurabilityEffectModifier.java | 19 ++++++++++++++----- 3 files changed, 26 insertions(+), 12 deletions(-) diff --git a/src/engine/net/client/ClientMessagePump.java b/src/engine/net/client/ClientMessagePump.java index 0d89f91d..70177a74 100644 --- a/src/engine/net/client/ClientMessagePump.java +++ b/src/engine/net/client/ClientMessagePump.java @@ -28,6 +28,7 @@ import engine.net.client.msg.*; import engine.net.client.msg.chat.AbstractChatMsg; import engine.net.client.msg.commands.ClientAdminCommandMsg; import engine.objects.*; +import engine.powers.effectmodifiers.AbstractEffectModifier; import engine.server.MBServerStatics; import engine.server.world.WorldServer; import engine.session.Session; @@ -36,6 +37,7 @@ import org.pmw.tinylog.Logger; import java.sql.SQLException; import java.util.ArrayList; +import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ThreadLocalRandom; @@ -2022,10 +2024,17 @@ boolean updateCity = false; //make sure item is damaged and not destroyed short dur = toRepair.getDurabilityCurrent(); short max = toRepair.getDurabilityMax(); - - if (dur >= max || dur < 1) + //account for durability modifications + float durMod = toRepair.getBonusPercent(ModType.Durability,SourceType.None); + max *= (1 + (durMod * 0.01f)); + if (dur >= max || dur < 1) { + //redundancy message to clear item from window in client + toRepair.setDurabilityCurrent(max); + msg.setupRepairAck(max - dur); + dispatch = Dispatch.borrow(player, msg); + DispatchMessage.dispatchMsgDispatch(dispatch, DispatchChannel.SECONDARY); return; - + } //TODO get cost to repair int cost = (int) ((max - dur) * 80.1); Building b = (!npc.isStatic()) ? npc.getBuilding() : null; @@ -2056,14 +2065,11 @@ boolean updateCity = false; ugm.configure(); dispatch = Dispatch.borrow(player, ugm); DispatchMessage.dispatchMsgDispatch(dispatch, DispatchChannel.SECONDARY); - //update durability to database if (!DbManager.ItemQueries.SET_DURABILITY(toRepair, max)) return; - //repair the item toRepair.setDurabilityCurrent(max); - //send repair msg msg.setupRepairAck(max - dur); dispatch = Dispatch.borrow(player, msg); diff --git a/src/engine/powers/effectmodifiers/ArmorPiercingEffectModifier.java b/src/engine/powers/effectmodifiers/ArmorPiercingEffectModifier.java index 19feb4fd..39ec058e 100644 --- a/src/engine/powers/effectmodifiers/ArmorPiercingEffectModifier.java +++ b/src/engine/powers/effectmodifiers/ArmorPiercingEffectModifier.java @@ -31,7 +31,6 @@ public class ArmorPiercingEffectModifier extends AbstractEffectModifier { public void applyBonus(AbstractCharacter ac, int trains) { Float amount = 0f; PlayerBonuses bonus = ac.getBonuses(); - //for to testing: amount = this.percentMod; bonus.addFloat(this, amount * 0.01f); } diff --git a/src/engine/powers/effectmodifiers/DurabilityEffectModifier.java b/src/engine/powers/effectmodifiers/DurabilityEffectModifier.java index 2af78999..cc50dc66 100644 --- a/src/engine/powers/effectmodifiers/DurabilityEffectModifier.java +++ b/src/engine/powers/effectmodifiers/DurabilityEffectModifier.java @@ -9,14 +9,13 @@ package engine.powers.effectmodifiers; +import engine.Enum; import engine.jobs.AbstractEffectJob; -import engine.objects.AbstractCharacter; -import engine.objects.AbstractWorldObject; -import engine.objects.Building; -import engine.objects.Item; +import engine.objects.*; import java.sql.ResultSet; import java.sql.SQLException; +import java.util.concurrent.ConcurrentHashMap; public class DurabilityEffectModifier extends AbstractEffectModifier { @@ -35,7 +34,17 @@ public class DurabilityEffectModifier extends AbstractEffectModifier { } @Override - public void applyBonus(Item item, int trains) {} + public void applyBonus(Item item, int trains) + { + if(item == null){ + return; + } + float amount = 0; + amount = this.percentMod; + item.addBonus(this,amount); + + + } @Override public void applyBonus(Building building, int trains) {} }