Static method to apply curves

This commit is contained in:
2025-02-20 07:54:41 -05:00
parent 79864713b5
commit f5801e0837
3 changed files with 22 additions and 17 deletions
+1 -2
View File
@@ -1623,8 +1623,7 @@ public class mbEnums {
Warrior(SexType.NONE), Warrior(SexType.NONE),
Wizard(SexType.NONE), Wizard(SexType.NONE),
Nightstalker(SexType.NONE), Nightstalker(SexType.NONE),
Necromancer(SexType.NONE), Necromancer(SexType.NONE);
;
private final SexType sexRestriction; private final SexType sexRestriction;
+1 -15
View File
@@ -31,22 +31,8 @@ public class Behaviour {
public static Object Standard(AbstractCharacter caster, AbstractWorldObject target, Power power, public static Object Standard(AbstractCharacter caster, AbstractWorldObject target, Power power,
ActionEntry powerAction, Effect effect, ModifierEntry modifierEntry, Integer rank) { ActionEntry powerAction, Effect effect, ModifierEntry modifierEntry, Integer rank) {
boolean useAdditiveCurve = true;
float modifierCurveValue = modifierEntry.compoundCurveType.getValue();
float modValue;
if (modifierCurveValue > 0 && modifierCurveValue < .1 && return WpakPowerManager.applyCurveToModifier(powerAction, modifierEntry, rank);
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;
} }
public static Object FPSubTypeAttr(AbstractCharacter caster, AbstractWorldObject target, Power power, public static Object FPSubTypeAttr(AbstractCharacter caster, AbstractWorldObject target, Power power,
@@ -427,4 +427,24 @@ public class WpakPowerManager {
} }
return false; 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;
}
} }