diff --git a/src/engine/wpakpowers/WpakPowerManager.java b/src/engine/wpakpowers/WpakPowerManager.java index fcf57b3d..cf81339a 100644 --- a/src/engine/wpakpowers/WpakPowerManager.java +++ b/src/engine/wpakpowers/WpakPowerManager.java @@ -423,27 +423,29 @@ public class WpakPowerManager { float scaledValue; mbEnums.ModificationType modificationType = mbEnums.ModificationType.ADD; - // Method scales by either integer or float values driven by the curve type + // Only subset of these used for percent heals and such + // are multiplicative. Everything else is additive. if (EnumSet.of(mbEnums.ModType.Health, mbEnums.ModType.Mana, mbEnums.ModType.Stamina).contains(modifierEntry.type)) if (modifierEntry.percentage == 0) modificationType = mbEnums.ModificationType.MULTIPLY; - if (modifierEntry.percentage != 0f) { //Stat Percent Modifiers - if (modificationType.equals(mbEnums.ModificationType.ADD)) - scaledValue = modifierEntry.percentage + (modifierEntry.compoundCurveType.getValue() * rank); - else - scaledValue = modifierEntry.percentage * (1 + (modifierEntry.compoundCurveType.getValue() * rank)); - scaledValue = scaledValue * 0.01f; - } else { //Stat Modifiers - if (modificationType.equals(mbEnums.ModificationType.ADD)) - scaledValue = modifierEntry.min + (modifierEntry.compoundCurveType.getValue() * rank); - else - scaledValue = modifierEntry.min * (1 + (modifierEntry.compoundCurveType.getValue() * rank)); - } + return modifierEntry.percentage != 0f + ? calculatePercentageBasedValue(modifierEntry, rank, modificationType) + : calculateBaseValue(modifierEntry, rank, modificationType); + } - return scaledValue; + private static float calculatePercentageBasedValue(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 calculateBaseValue(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)); + } }