From f5801e083729772d1aa5e0f7eac20491cd564b24 Mon Sep 17 00:00:00 2001
From: MagicBot <MagicBot@magicbane.com>
Date: Thu, 20 Feb 2025 07:54:41 -0500
Subject: [PATCH] Static method to apply curves

---
 src/engine/mbEnums.java                     |  3 +--
 src/engine/wpakpowers/Behaviour.java        | 16 +---------------
 src/engine/wpakpowers/WpakPowerManager.java | 20 ++++++++++++++++++++
 3 files changed, 22 insertions(+), 17 deletions(-)

diff --git a/src/engine/mbEnums.java b/src/engine/mbEnums.java
index 3ee211c4..828756db 100644
--- a/src/engine/mbEnums.java
+++ b/src/engine/mbEnums.java
@@ -1623,8 +1623,7 @@ public class mbEnums {
         Warrior(SexType.NONE),
         Wizard(SexType.NONE),
         Nightstalker(SexType.NONE),
-        Necromancer(SexType.NONE),
-        ;
+        Necromancer(SexType.NONE);
 
         private final SexType sexRestriction;
 
diff --git a/src/engine/wpakpowers/Behaviour.java b/src/engine/wpakpowers/Behaviour.java
index 21625ced..4dbd982c 100644
--- a/src/engine/wpakpowers/Behaviour.java
+++ b/src/engine/wpakpowers/Behaviour.java
@@ -31,22 +31,8 @@ public class Behaviour {
 
     public static Object Standard(AbstractCharacter caster, AbstractWorldObject target, Power power,
                                   ActionEntry powerAction, Effect effect, ModifierEntry modifierEntry, Integer rank) {
-        boolean useAdditiveCurve = true;
-        float modifierCurveValue = modifierEntry.compoundCurveType.getValue();
-        float modValue;
 
-        if (modifierCurveValue > 0 && modifierCurveValue < .1 &&
-                modifierEntry.min != 0 && modifierEntry.max != 0)
-            useAdditiveCurve = false;
-
-        if (useAdditiveCurve)
-            modValue = powerAction.curve.getValue() + (modifierCurveValue * rank);
-        else
-            modValue = powerAction.curve.getValue() * (1 + (modifierCurveValue * rank));
-
-        modValue = modValue * 0.01f;
-
-        return modValue;
+        return WpakPowerManager.applyCurveToModifier(powerAction, modifierEntry, rank);
     }
 
     public static Object FPSubTypeAttr(AbstractCharacter caster, AbstractWorldObject target, Power power,
diff --git a/src/engine/wpakpowers/WpakPowerManager.java b/src/engine/wpakpowers/WpakPowerManager.java
index 54f5942d..bd3e7c1e 100644
--- a/src/engine/wpakpowers/WpakPowerManager.java
+++ b/src/engine/wpakpowers/WpakPowerManager.java
@@ -427,4 +427,24 @@ public class WpakPowerManager {
         }
         return false;
     }
+
+    public static float applyCurveToModifier(ActionEntry powerAction, ModifierEntry modifierEntry, int rank) {
+
+        boolean additiveMode = true;
+        float modifierCurveValue = modifierEntry.compoundCurveType.getValue();
+        float modValue;
+
+        if (modifierCurveValue > 0 && modifierCurveValue < .1 &&
+                modifierEntry.min != 0 && modifierEntry.max != 0)
+            additiveMode = false;
+
+        if (additiveMode)
+            modValue = powerAction.curve.getValue() + (modifierCurveValue * rank);
+        else
+            modValue = powerAction.curve.getValue() * (1 + (modifierCurveValue * rank));
+
+        modValue = modValue * 0.01f;
+
+        return modValue;
+    }
 }