From bfd89036b2cd6e2bb4b073cc0967c92c0a14ff57 Mon Sep 17 00:00:00 2001 From: FatBoy-DOTC Date: Tue, 25 Feb 2025 20:55:49 -0600 Subject: [PATCH] healer def stance ATR removed again --- src/engine/objects/ItemFactory.java | 4 ++++ src/engine/objects/PlayerCombatStats.java | 28 +++++++++++++++++++---- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/src/engine/objects/ItemFactory.java b/src/engine/objects/ItemFactory.java index cf92a62b..818ea434 100644 --- a/src/engine/objects/ItemFactory.java +++ b/src/engine/objects/ItemFactory.java @@ -710,6 +710,8 @@ public class ItemFactory { int randomPrefix = TableRoll(vendor.getLevel()); if(vendor.contract.getName().contains("Heavy") || vendor.contract.getName().contains("Medium") || vendor.contract.getName().contains("Leather")) randomPrefix += vendor.level * 0.5f; + if(randomPrefix > 320) + randomPrefix = 320; prefixEntry = ModTableEntry.rollTable(prefixTypeTable.modTableID, randomPrefix); if (prefixEntry != null) @@ -727,6 +729,8 @@ public class ItemFactory { int randomSuffix = TableRoll(vendor.getLevel()); if(vendor.contract.getName().contains("Heavy") || vendor.contract.getName().contains("Medium") || vendor.contract.getName().contains("Leather")) randomSuffix += vendor.level * 0.25f; + if(randomSuffix > 320) + randomSuffix = 320; suffixEntry = ModTableEntry.rollTable(suffixTypeTable.modTableID, randomSuffix); if (suffixEntry != null) diff --git a/src/engine/objects/PlayerCombatStats.java b/src/engine/objects/PlayerCombatStats.java index 4981351f..1bb178d1 100644 --- a/src/engine/objects/PlayerCombatStats.java +++ b/src/engine/objects/PlayerCombatStats.java @@ -358,13 +358,22 @@ public class PlayerCombatStats { float stanceValue = 0.0f; float atrEnchants = 0; - + float healerDefStance = 0.0f; for(String effID : this.owner.effects.keySet()) { if (effID.contains("Stance")) { Effect effect = this.owner.effects.get(effID); EffectsBase eb = effect.getEffectsBase(); - if(eb.getIDString().equals("STC-H-DA")) + if(eb.getIDString().equals("STC-H-DA")){ + for (AbstractEffectModifier mod : this.owner.effects.get(effID).getEffectModifiers()) { + if (mod.modType.equals(Enum.ModType.OCV)) { + float percent = mod.getPercentMod(); + int trains = this.owner.effects.get(effID).getTrains(); + float modValue = percent + (trains * mod.getRamp()); + healerDefStance += modValue * 0.01f; + } + } continue; + } for (AbstractEffectModifier mod : this.owner.effects.get(effID).getEffectModifiers()) { if (mod.modType.equals(Enum.ModType.OCV)) { float percent = mod.getPercentMod(); @@ -432,6 +441,7 @@ public class PlayerCombatStats { if(stanceValue > 0.0f){ modifier -= (stanceValue); } + modifier -= healerDefStance; atr *= modifier; } atr = (float) Math.round(atr); @@ -982,12 +992,22 @@ public class PlayerCombatStats { float stanceMod = 1.0f; float atrBuffs = 0.0f; + float healerDefStance = 0.0f; for(String effID : pc.effects.keySet()) { if (effID.contains("Stance")) { Effect effect = pc.effects.get(effID); EffectsBase eb = effect.getEffectsBase(); - if(eb.getIDString().equals("STC-H-DA")) + if(eb.getIDString().equals("STC-H-DA")){ + for (AbstractEffectModifier mod : pc.effects.get(effID).getEffectModifiers()) { + if (mod.modType.equals(Enum.ModType.OCV)) { + float percent = mod.getPercentMod(); + int trains = pc.effects.get(effID).getTrains(); + float modValue = percent + (trains * mod.getRamp()); + healerDefStance += modValue * 0.01f; + } + } continue; + } for (AbstractEffectModifier mod : pc.effects.get(effID).getEffectModifiers()) { if (mod.modType.equals(Enum.ModType.OCV)) { float percent = mod.getPercentMod(); @@ -1015,7 +1035,7 @@ public class PlayerCombatStats { atr *= precise; atr += atrBuffs; if(pc.bonuses != null) - atr *= 1 + (pc.bonuses.getFloatPercentAll(Enum.ModType.OCV, Enum.SourceType.None) - (stanceMod - 1) - (precise - 1)); + atr *= 1 + (pc.bonuses.getFloatPercentAll(Enum.ModType.OCV, Enum.SourceType.None) - (stanceMod - 1) - (precise - 1) - healerDefStance); atr *= stanceMod; return atr; }