From 5277fbbe567cd7d97b0a4985a00b85c5a595e6c2 Mon Sep 17 00:00:00 2001 From: MagicBot Date: Sat, 22 Feb 2025 15:23:15 -0500 Subject: [PATCH] More generalized curve helper --- .../powers/poweractions/CharmPowerAction.java | 2 +- .../powers/poweractions/FearPowerAction.java | 2 +- src/engine/wpak/PowerActionParser.java | 2 +- src/engine/wpak/data/PowerAction.java | 2 +- src/engine/wpakpowers/Behaviours.java | 10 ++++---- src/engine/wpakpowers/WpakPowerManager.java | 24 ++++++++++++++++--- 6 files changed, 29 insertions(+), 13 deletions(-) diff --git a/src/engine/powers/poweractions/CharmPowerAction.java b/src/engine/powers/poweractions/CharmPowerAction.java index 380871cc..b57c3c6c 100644 --- a/src/engine/powers/poweractions/CharmPowerAction.java +++ b/src/engine/powers/poweractions/CharmPowerAction.java @@ -29,7 +29,7 @@ public class CharmPowerAction extends AbstractPowerAction { public CharmPowerAction(PowerAction powerAction) { super(powerAction); this.levelCap = powerAction.ramp; - this.levelCapRamp = powerAction.rampCurve.ordinal(); + this.levelCapRamp = powerAction.compoundCurve.ordinal(); } @Override diff --git a/src/engine/powers/poweractions/FearPowerAction.java b/src/engine/powers/poweractions/FearPowerAction.java index 9ca954a9..0bb25f8a 100644 --- a/src/engine/powers/poweractions/FearPowerAction.java +++ b/src/engine/powers/poweractions/FearPowerAction.java @@ -30,7 +30,7 @@ public class FearPowerAction extends AbstractPowerAction { public FearPowerAction(PowerAction powerAction) { super(powerAction); this.levelCap = powerAction.ramp; - this.levelCapRamp = powerAction.rampCurve.ordinal(); + this.levelCapRamp = powerAction.compoundCurve.ordinal(); } @Override diff --git a/src/engine/wpak/PowerActionParser.java b/src/engine/wpak/PowerActionParser.java index 00d051ba..090a2f21 100644 --- a/src/engine/wpak/PowerActionParser.java +++ b/src/engine/wpak/PowerActionParser.java @@ -274,7 +274,7 @@ public class PowerActionParser { powerAction.ramp = Integer.parseInt(arguments.get(0)); if (arguments.size() > 1) // Not all level caps have a curve - powerAction.rampCurve = mbEnums.CompoundCurveType.valueOf(arguments.get(1)); + powerAction.compoundCurve = mbEnums.CompoundCurveType.valueOf(arguments.get(1)); break; case "CLEARAGGRO": powerAction.clearAggro = Boolean.parseBoolean(lineValues.get(1).trim()); diff --git a/src/engine/wpak/data/PowerAction.java b/src/engine/wpak/data/PowerAction.java index 3a20b061..27719555 100644 --- a/src/engine/wpak/data/PowerAction.java +++ b/src/engine/wpak/data/PowerAction.java @@ -24,7 +24,7 @@ public class PowerAction { public int petRace; public StatTransfer statTransfer; public int ramp; - public mbEnums.CompoundCurveType rampCurve; + public mbEnums.CompoundCurveType compoundCurve; public TrackEntry trackEntry; // Additional variables after header go here. diff --git a/src/engine/wpakpowers/Behaviours.java b/src/engine/wpakpowers/Behaviours.java index ed2e915d..dcdb3cbc 100644 --- a/src/engine/wpakpowers/Behaviours.java +++ b/src/engine/wpakpowers/Behaviours.java @@ -20,25 +20,23 @@ public class Behaviours { public static Object Flag(AbstractCharacter caster, Power power, Integer rank, AbstractWorldObject target, PowerAction powerAction, Effect effect, ModifierEntry modifierEntry) { - boolean modValue = true; - return modValue; + return true; } public static Object MapIntToInts(AbstractCharacter caster, Power power, Integer rank, AbstractWorldObject target, PowerAction powerAction, Effect effect, ModifierEntry modifierEntry) { - return powerAction.attackAnimations.clone(); } public static Object Standard(AbstractCharacter caster, Power power, Integer rank, AbstractWorldObject target, PowerAction powerAction, Effect effect, ModifierEntry modifierEntry) { - return WpakPowerManager.applyCurveToModifier(powerAction, modifierEntry, rank); + return WpakPowerManager.applyCurveToValue(powerAction.compoundCurve, modifierEntry.compoundCurveType.getValue(), rank); } public static Object FPSubTypeAttr(AbstractCharacter caster, Power power, Integer rank, AbstractWorldObject target, PowerAction powerAction, Effect effect, ModifierEntry modifierEntry) { - return WpakPowerManager.applyCurveToModifier(powerAction, modifierEntry, rank); + return WpakPowerManager.applyCurveToValue(powerAction.compoundCurve, modifierEntry.compoundCurveType.getValue(), rank); } public static Object SubTypeSourceType(AbstractCharacter caster, Power power, Integer rank, AbstractWorldObject target, @@ -60,7 +58,7 @@ 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.applyCurveToModifier(powerAction, modifierEntry, rank); + float value = WpakPowerManager.applyCurveToValue(powerAction.compoundCurve, modifierEntry.compoundCurveType.getValue(), rank); return new Pair<>(key,value); } diff --git a/src/engine/wpakpowers/WpakPowerManager.java b/src/engine/wpakpowers/WpakPowerManager.java index 7383836c..72b7890f 100644 --- a/src/engine/wpakpowers/WpakPowerManager.java +++ b/src/engine/wpakpowers/WpakPowerManager.java @@ -418,6 +418,24 @@ public class WpakPowerManager { return false; } + public static float applyCurveToValue(mbEnums.CompoundCurveType curve, float value, int rank) { + + float scaledValue; + + // Method scales by either integer or float values driven by the curve type + + if (EnumSet.of(mbEnums.CompoundCurveType.DefaultFlat, mbEnums.CompoundCurveType.DefaultSlope, + mbEnums.CompoundCurveType.DefaultSlopeDown).contains(curve)) + scaledValue = curve.getValue() + (value * rank); + else + scaledValue = curve.getValue() * (1 + (value * rank)); + + scaledValue = scaledValue * 0.01f; + + return scaledValue; + } + + public static float applyCurveToModifier(PowerAction powerAction, ModifierEntry modifierEntry, int rank) { float scaledValue; @@ -425,10 +443,10 @@ public class WpakPowerManager { // Method scales by either integer or float values driven by the curve type if (EnumSet.of(mbEnums.CompoundCurveType.DefaultFlat, mbEnums.CompoundCurveType.DefaultSlope, - mbEnums.CompoundCurveType.DefaultSlopeDown).contains(powerAction.rampCurve)) - scaledValue = powerAction.rampCurve.getValue() + (modifierEntry.compoundCurveType.getValue() * rank); + mbEnums.CompoundCurveType.DefaultSlopeDown).contains(powerAction.compoundCurve)) + scaledValue = powerAction.compoundCurve.getValue() + (modifierEntry.compoundCurveType.getValue() * rank); else - scaledValue = powerAction.rampCurve.getValue() * (1 + (modifierEntry.compoundCurveType.getValue() * rank)); + scaledValue = powerAction.compoundCurve.getValue() * (1 + (modifierEntry.compoundCurveType.getValue() * rank)); scaledValue = scaledValue * 0.01f;