From 7fd55bb6f3bdc9ee9e107470fd9ec8bba6663ceb Mon Sep 17 00:00:00 2001
From: MagicBot <MagicBot@magicbane.com>
Date: Mon, 24 Feb 2025 14:33:40 -0500
Subject: [PATCH] Rework of helper method

---
 src/engine/wpakpowers/WpakPowerManager.java | 30 +++++++++++----------
 1 file changed, 16 insertions(+), 14 deletions(-)

diff --git a/src/engine/wpakpowers/WpakPowerManager.java b/src/engine/wpakpowers/WpakPowerManager.java
index fcf57b3d..cf81339a 100644
--- a/src/engine/wpakpowers/WpakPowerManager.java
+++ b/src/engine/wpakpowers/WpakPowerManager.java
@@ -423,27 +423,29 @@ public class WpakPowerManager {
         float scaledValue;
         mbEnums.ModificationType modificationType = mbEnums.ModificationType.ADD;
 
-        // Method scales by either integer or float values driven by the curve type
+        // Only subset of these used for percent heals and such
+        // are multiplicative.  Everything else is additive.
 
         if (EnumSet.of(mbEnums.ModType.Health, mbEnums.ModType.Mana,
                 mbEnums.ModType.Stamina).contains(modifierEntry.type))
             if (modifierEntry.percentage == 0)
                 modificationType = mbEnums.ModificationType.MULTIPLY;
 
-        if (modifierEntry.percentage != 0f) { //Stat Percent Modifiers
-            if (modificationType.equals(mbEnums.ModificationType.ADD))
-                scaledValue = modifierEntry.percentage + (modifierEntry.compoundCurveType.getValue() * rank);
-            else
-                scaledValue = modifierEntry.percentage * (1 + (modifierEntry.compoundCurveType.getValue() * rank));
-            scaledValue = scaledValue * 0.01f;
-        } else { //Stat Modifiers
-            if (modificationType.equals(mbEnums.ModificationType.ADD))
-                scaledValue = modifierEntry.min + (modifierEntry.compoundCurveType.getValue() * rank);
-            else
-                scaledValue = modifierEntry.min * (1 + (modifierEntry.compoundCurveType.getValue() * rank));
-        }
+        return modifierEntry.percentage != 0f
+                ? calculatePercentageBasedValue(modifierEntry, rank, modificationType)
+                : calculateBaseValue(modifierEntry, rank, modificationType);
+    }
 
-        return scaledValue;
+    private static float calculatePercentageBasedValue(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;
     }
 
+    private static float calculateBaseValue(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));
+    }
 }