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