forked from MagicBane/Server
Update to helper method
This commit is contained in:
@@ -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;
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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);
|
outData.first = modifierEntry.min + (modifierEntry.compoundCurveType.getValue() * rank);
|
||||||
|
outData.second = modifierEntry.max + (modifierEntry.compoundCurveType.getValue() * rank);
|
||||||
|
return outData;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static float calculatePercentageValue(ModifierEntry modifierEntry, int rank, mbEnums.ModificationType modificationType) {
|
|
||||||
float scaledValue = modificationType.equals(mbEnums.ModificationType.ADD)
|
|
||||||
? modifierEntry.percentage + (modifierEntry.compoundCurveType.getValue() * rank)
|
|
||||||
: 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));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user