From 7bcd75719c42cf237055ed9615224f12cc8fe83a Mon Sep 17 00:00:00 2001 From: MagicBot Date: Wed, 26 Feb 2025 11:43:46 -0500 Subject: [PATCH] Update to helper method --- src/engine/util/Pair.java | 4 +-- src/engine/wpakpowers/Behaviours.java | 8 +++--- src/engine/wpakpowers/WpakPowerManager.java | 31 +++++++++------------ 3 files changed, 19 insertions(+), 24 deletions(-) diff --git a/src/engine/util/Pair.java b/src/engine/util/Pair.java index d984d868..d9b2b1ca 100644 --- a/src/engine/util/Pair.java +++ b/src/engine/util/Pair.java @@ -9,8 +9,8 @@ package engine.util; public class Pair { - public final A first; - public final B second; + public A first; + public B second; public Pair(A first, B second) { this.first = first; diff --git a/src/engine/wpakpowers/Behaviours.java b/src/engine/wpakpowers/Behaviours.java index a5cb2cb7..ce6c2db2 100644 --- a/src/engine/wpakpowers/Behaviours.java +++ b/src/engine/wpakpowers/Behaviours.java @@ -32,12 +32,12 @@ public class Behaviours { public static Object Standard(AbstractCharacter caster, Power power, Integer rank, AbstractWorldObject target, PowerAction powerAction, Effect effect, ModifierEntry modifierEntry) { - return WpakPowerManager.getModifiedValue(modifierEntry, rank); + return WpakPowerManager.getModifiedValue(modifierEntry, rank).first; } public static Object FPSubTypeAttr(AbstractCharacter caster, Power power, Integer rank, AbstractWorldObject target, PowerAction powerAction, Effect effect, ModifierEntry modifierEntry) { - return WpakPowerManager.getModifiedValue(modifierEntry, rank); + return WpakPowerManager.getModifiedValue(modifierEntry, rank).first; } public static Object SubTypeSourceType(AbstractCharacter caster, Power power, Integer rank, AbstractWorldObject target, @@ -59,8 +59,8 @@ public class Behaviours { public static Object FPSubTypeDmg(AbstractCharacter caster, Power power, Integer rank, AbstractWorldObject target, PowerAction powerAction, Effect effect, ModifierEntry modifierEntry) { String key = modifierEntry.arg1; - float value = WpakPowerManager.getModifiedValue(modifierEntry, rank); - return new Pair<>(key,value); + float modifierValue = WpakPowerManager.getModifiedValue(modifierEntry, rank).first; + return new Pair<>(key, modifierValue); } public static Object DD(AbstractCharacter caster, Power power, Integer rank, AbstractWorldObject target, diff --git a/src/engine/wpakpowers/WpakPowerManager.java b/src/engine/wpakpowers/WpakPowerManager.java index 66264fcc..64729eed 100644 --- a/src/engine/wpakpowers/WpakPowerManager.java +++ b/src/engine/wpakpowers/WpakPowerManager.java @@ -28,6 +28,7 @@ import engine.net.client.msg.UpdateStateMsg; import engine.objects.*; import engine.server.MBServerStatics; import engine.util.Hasher; +import engine.util.Pair; import engine.wpak.EffectsParser; import engine.wpak.PowerActionParser; import engine.wpak.PowersParser; @@ -417,31 +418,25 @@ public class WpakPowerManager { return false; } - public static float getModifiedValue(ModifierEntry modifierEntry, int rank) { + public static Pair getModifiedValue(ModifierEntry modifierEntry, int rank) { - mbEnums.ModificationType modificationType; + Pair outData = new Pair<>(0f, 0f); // Only a subset of these ModTypes used for percents // are multiplicative. Everything else is additive. - modificationType = modifierEntry.compoundCurveType.name().contains("SIVL") ? - mbEnums.ModificationType.MULTIPLY : mbEnums.ModificationType.ADD; + if (modifierEntry.percentage != 0f) { + outData.first = modifierEntry.percentage + (modifierEntry.compoundCurveType.getValue() * rank); + outData.first = outData.first * 0.01f; + return outData; + } - return modifierEntry.percentage != 0f - ? calculatePercentageValue(modifierEntry, rank, modificationType) - : calculateFlatValue(modifierEntry, rank, modificationType); - } + // As there is a min/max we return both as a pai in linear moder - private static float calculatePercentageValue(ModifierEntry modifierEntry, int rank, mbEnums.ModificationType modificationType) { - float scaledValue = modificationType.equals(mbEnums.ModificationType.ADD) - ? modifierEntry.percentage + (modifierEntry.compoundCurveType.getValue() * rank) - : modifierEntry.percentage * (1 + (modifierEntry.compoundCurveType.getValue() * rank)); - return scaledValue * 0.01f; + outData.first = modifierEntry.min + (modifierEntry.compoundCurveType.getValue() * rank); + outData.second = modifierEntry.max + (modifierEntry.compoundCurveType.getValue() * rank); + return outData; } - private static float calculateFlatValue(ModifierEntry modifierEntry, int rank, mbEnums.ModificationType modificationType) { - return modificationType.equals(mbEnums.ModificationType.ADD) - ? modifierEntry.min + (modifierEntry.compoundCurveType.getValue() * rank) - : modifierEntry.min * (1 + (modifierEntry.compoundCurveType.getValue() * rank)); - } + }