Browse Source

More generalized curve helper

feature-config-usage
MagicBot 6 days ago
parent
commit
5277fbbe56
  1. 2
      src/engine/powers/poweractions/CharmPowerAction.java
  2. 2
      src/engine/powers/poweractions/FearPowerAction.java
  3. 2
      src/engine/wpak/PowerActionParser.java
  4. 2
      src/engine/wpak/data/PowerAction.java
  5. 10
      src/engine/wpakpowers/Behaviours.java
  6. 24
      src/engine/wpakpowers/WpakPowerManager.java

2
src/engine/powers/poweractions/CharmPowerAction.java

@ -29,7 +29,7 @@ public class CharmPowerAction extends AbstractPowerAction {
public CharmPowerAction(PowerAction powerAction) { public CharmPowerAction(PowerAction powerAction) {
super(powerAction); super(powerAction);
this.levelCap = powerAction.ramp; this.levelCap = powerAction.ramp;
this.levelCapRamp = powerAction.rampCurve.ordinal(); this.levelCapRamp = powerAction.compoundCurve.ordinal();
} }
@Override @Override

2
src/engine/powers/poweractions/FearPowerAction.java

@ -30,7 +30,7 @@ public class FearPowerAction extends AbstractPowerAction {
public FearPowerAction(PowerAction powerAction) { public FearPowerAction(PowerAction powerAction) {
super(powerAction); super(powerAction);
this.levelCap = powerAction.ramp; this.levelCap = powerAction.ramp;
this.levelCapRamp = powerAction.rampCurve.ordinal(); this.levelCapRamp = powerAction.compoundCurve.ordinal();
} }
@Override @Override

2
src/engine/wpak/PowerActionParser.java

@ -274,7 +274,7 @@ public class PowerActionParser {
powerAction.ramp = Integer.parseInt(arguments.get(0)); powerAction.ramp = Integer.parseInt(arguments.get(0));
if (arguments.size() > 1) // Not all level caps have a curve 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; break;
case "CLEARAGGRO": case "CLEARAGGRO":
powerAction.clearAggro = Boolean.parseBoolean(lineValues.get(1).trim()); powerAction.clearAggro = Boolean.parseBoolean(lineValues.get(1).trim());

2
src/engine/wpak/data/PowerAction.java

@ -24,7 +24,7 @@ public class PowerAction {
public int petRace; public int petRace;
public StatTransfer statTransfer; public StatTransfer statTransfer;
public int ramp; public int ramp;
public mbEnums.CompoundCurveType rampCurve; public mbEnums.CompoundCurveType compoundCurve;
public TrackEntry trackEntry; public TrackEntry trackEntry;
// Additional variables after header go here. // Additional variables after header go here.

10
src/engine/wpakpowers/Behaviours.java

@ -20,25 +20,23 @@ public class Behaviours {
public static Object Flag(AbstractCharacter caster, Power power, Integer rank, AbstractWorldObject target, public static Object Flag(AbstractCharacter caster, Power power, Integer rank, AbstractWorldObject target,
PowerAction powerAction, Effect effect, ModifierEntry modifierEntry) { PowerAction powerAction, Effect effect, ModifierEntry modifierEntry) {
boolean modValue = true; return true;
return modValue;
} }
public static Object MapIntToInts(AbstractCharacter caster, Power power, Integer rank, AbstractWorldObject target, public static Object MapIntToInts(AbstractCharacter caster, Power power, Integer rank, AbstractWorldObject target,
PowerAction powerAction, Effect effect, ModifierEntry modifierEntry) { PowerAction powerAction, Effect effect, ModifierEntry modifierEntry) {
return powerAction.attackAnimations.clone(); return powerAction.attackAnimations.clone();
} }
public static Object Standard(AbstractCharacter caster, Power power, Integer rank, AbstractWorldObject target, public static Object Standard(AbstractCharacter caster, Power power, Integer rank, AbstractWorldObject target,
PowerAction powerAction, Effect effect, ModifierEntry modifierEntry) { 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, public static Object FPSubTypeAttr(AbstractCharacter caster, Power power, Integer rank, AbstractWorldObject target,
PowerAction powerAction, Effect effect, ModifierEntry modifierEntry) { 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, 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, public static Object FPSubTypeDmg(AbstractCharacter caster, Power power, Integer rank, AbstractWorldObject target,
PowerAction powerAction, Effect effect, ModifierEntry modifierEntry) { PowerAction powerAction, Effect effect, ModifierEntry modifierEntry) {
String key = modifierEntry.arg1; 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); return new Pair<>(key,value);
} }

24
src/engine/wpakpowers/WpakPowerManager.java

@ -418,6 +418,24 @@ public class WpakPowerManager {
return false; 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) { public static float applyCurveToModifier(PowerAction powerAction, ModifierEntry modifierEntry, int rank) {
float scaledValue; float scaledValue;
@ -425,10 +443,10 @@ public class WpakPowerManager {
// Method scales by either integer or float values driven by the curve type // Method scales by either integer or float values driven by the curve type
if (EnumSet.of(mbEnums.CompoundCurveType.DefaultFlat, mbEnums.CompoundCurveType.DefaultSlope, if (EnumSet.of(mbEnums.CompoundCurveType.DefaultFlat, mbEnums.CompoundCurveType.DefaultSlope,
mbEnums.CompoundCurveType.DefaultSlopeDown).contains(powerAction.rampCurve)) mbEnums.CompoundCurveType.DefaultSlopeDown).contains(powerAction.compoundCurve))
scaledValue = powerAction.rampCurve.getValue() + (modifierEntry.compoundCurveType.getValue() * rank); scaledValue = powerAction.compoundCurve.getValue() + (modifierEntry.compoundCurveType.getValue() * rank);
else else
scaledValue = powerAction.rampCurve.getValue() * (1 + (modifierEntry.compoundCurveType.getValue() * rank)); scaledValue = powerAction.compoundCurve.getValue() * (1 + (modifierEntry.compoundCurveType.getValue() * rank));
scaledValue = scaledValue * 0.01f; scaledValue = scaledValue * 0.01f;

Loading…
Cancel
Save