Browse Source

Update to helper method

feature-config-usage
MagicBot 2 days ago
parent
commit
7bcd75719c
  1. 4
      src/engine/util/Pair.java
  2. 8
      src/engine/wpakpowers/Behaviours.java
  3. 31
      src/engine/wpakpowers/WpakPowerManager.java

4
src/engine/util/Pair.java

@ -9,8 +9,8 @@
package engine.util; package engine.util;
public class Pair<A, B> { public class Pair<A, B> {
public final A first; public A first;
public final B second; public B second;
public Pair(A first, B second) { public Pair(A first, B second) {
this.first = first; this.first = first;

8
src/engine/wpakpowers/Behaviours.java

@ -32,12 +32,12 @@ public class Behaviours {
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.getModifiedValue(modifierEntry, rank); return WpakPowerManager.getModifiedValue(modifierEntry, rank).first;
} }
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.getModifiedValue(modifierEntry, rank); return WpakPowerManager.getModifiedValue(modifierEntry, rank).first;
} }
public static Object SubTypeSourceType(AbstractCharacter caster, Power power, Integer rank, AbstractWorldObject target, public static Object SubTypeSourceType(AbstractCharacter caster, Power power, Integer rank, AbstractWorldObject target,
@ -59,8 +59,8 @@ 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.getModifiedValue(modifierEntry, rank); float modifierValue = WpakPowerManager.getModifiedValue(modifierEntry, rank).first;
return new Pair<>(key,value); return new Pair<>(key, modifierValue);
} }
public static Object DD(AbstractCharacter caster, Power power, Integer rank, AbstractWorldObject target, public static Object DD(AbstractCharacter caster, Power power, Integer rank, AbstractWorldObject target,

31
src/engine/wpakpowers/WpakPowerManager.java

@ -28,6 +28,7 @@ import engine.net.client.msg.UpdateStateMsg;
import engine.objects.*; import engine.objects.*;
import engine.server.MBServerStatics; import engine.server.MBServerStatics;
import engine.util.Hasher; import engine.util.Hasher;
import engine.util.Pair;
import engine.wpak.EffectsParser; import engine.wpak.EffectsParser;
import engine.wpak.PowerActionParser; import engine.wpak.PowerActionParser;
import engine.wpak.PowersParser; import engine.wpak.PowersParser;
@ -417,31 +418,25 @@ public class WpakPowerManager {
return false; return false;
} }
public static float getModifiedValue(ModifierEntry modifierEntry, int rank) { public static Pair<Float, Float> getModifiedValue(ModifierEntry modifierEntry, int rank) {
mbEnums.ModificationType modificationType; Pair<Float, Float> outData = new Pair<>(0f, 0f);
// Only a subset of these ModTypes used for percents // Only a subset of these ModTypes used for percents
// are multiplicative. Everything else is additive. // are multiplicative. Everything else is additive.
modificationType = modifierEntry.compoundCurveType.name().contains("SIVL") ? if (modifierEntry.percentage != 0f) {
mbEnums.ModificationType.MULTIPLY : mbEnums.ModificationType.ADD; outData.first = modifierEntry.percentage + (modifierEntry.compoundCurveType.getValue() * rank);
outData.first = outData.first * 0.01f;
return outData;
}
return modifierEntry.percentage != 0f // As there is a min/max we return both as a pai in linear moder
? calculatePercentageValue(modifierEntry, rank, modificationType)
: calculateFlatValue(modifierEntry, rank, modificationType);
}
private static float calculatePercentageValue(ModifierEntry modifierEntry, int rank, mbEnums.ModificationType modificationType) { outData.first = modifierEntry.min + (modifierEntry.compoundCurveType.getValue() * rank);
float scaledValue = modificationType.equals(mbEnums.ModificationType.ADD) outData.second = modifierEntry.max + (modifierEntry.compoundCurveType.getValue() * rank);
? modifierEntry.percentage + (modifierEntry.compoundCurveType.getValue() * rank) return outData;
: modifierEntry.percentage * (1 + (modifierEntry.compoundCurveType.getValue() * rank));
return scaledValue * 0.01f;
} }
private static float calculateFlatValue(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));
}
} }

Loading…
Cancel
Save