Core/Spells: Fixed SPELL_AURA_MOD_INCREASE_ENERGY_PERCENT
This commit is contained in:
@@ -121,15 +121,9 @@ namespace Game.Entities
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
int GetMinPower(PowerType power) { return power == PowerType.LunarPower ? -100 : 0; }
|
|
||||||
// returns negative amount on power reduction
|
|
||||||
public int ModifyPowerPct(PowerType power, float pct, bool apply)
|
|
||||||
{
|
|
||||||
float amount = GetMaxPower(power);
|
|
||||||
MathFunctions.ApplyPercentModFloatVar(ref amount, pct, apply);
|
|
||||||
|
|
||||||
return ModifyPower(power, (int)amount - GetMaxPower(power));
|
int GetMinPower(PowerType power) { return power == PowerType.LunarPower ? -100 : 0; }
|
||||||
}
|
|
||||||
// returns negative amount on power reduction
|
// returns negative amount on power reduction
|
||||||
public int ModifyPower(PowerType power, int dVal)
|
public int ModifyPower(PowerType power, int dVal)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -3411,15 +3411,9 @@ namespace Game.Spells
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
Unit target = aurApp.GetTarget();
|
Unit target = aurApp.GetTarget();
|
||||||
|
|
||||||
PowerType powerType = (PowerType)GetMiscValue();
|
PowerType powerType = (PowerType)GetMiscValue();
|
||||||
// do not check power type, we can always modify the maximum
|
|
||||||
// as the client will not see any difference
|
|
||||||
// also, placing conditions that may change during the aura duration
|
|
||||||
// inside effect handlers is not a good idea
|
|
||||||
|
|
||||||
UnitMods unitMod = (UnitMods.PowerStart + (int)powerType);
|
UnitMods unitMod = (UnitMods.PowerStart + (int)powerType);
|
||||||
|
|
||||||
target.HandleStatModifier(unitMod, UnitModifierType.TotalValue, GetAmount(), apply);
|
target.HandleStatModifier(unitMod, UnitModifierType.TotalValue, GetAmount(), apply);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3430,26 +3424,20 @@ namespace Game.Spells
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
Unit target = aurApp.GetTarget();
|
Unit target = aurApp.GetTarget();
|
||||||
|
|
||||||
PowerType powerType = (PowerType)GetMiscValue();
|
PowerType powerType = (PowerType)GetMiscValue();
|
||||||
// do not check power type, we can always modify the maximum
|
|
||||||
// as the client will not see any difference
|
|
||||||
// also, placing conditions that may change during the aura duration
|
|
||||||
// inside effect handlers is not a good idea
|
|
||||||
|
|
||||||
UnitMods unitMod = UnitMods.PowerStart + (int)powerType;
|
UnitMods unitMod = UnitMods.PowerStart + (int)powerType;
|
||||||
float amount = GetAmount();
|
|
||||||
|
|
||||||
if (apply)
|
// Save old powers for further calculation
|
||||||
{
|
int oldPower = target.GetPower(powerType);
|
||||||
target.HandleStatModifier(unitMod, UnitModifierType.TotalPCT, amount, apply);
|
int oldMaxPower = target.GetMaxPower(powerType);
|
||||||
target.ModifyPowerPct(powerType, amount, apply);
|
|
||||||
}
|
// Handle aura effect for max power
|
||||||
else
|
target.HandleStatModifier(unitMod, UnitModifierType.TotalPCT, GetAmount(), apply);
|
||||||
{
|
|
||||||
target.ModifyPowerPct(powerType, amount, apply);
|
// Calculate the current power change
|
||||||
target.HandleStatModifier(unitMod, UnitModifierType.TotalPCT, amount, apply);
|
int change = target.GetMaxPower(powerType) - oldMaxPower;
|
||||||
}
|
change = (oldPower + change) - target.GetPower(powerType);
|
||||||
}
|
}
|
||||||
|
|
||||||
[AuraEffectHandler(AuraType.ModIncreaseHealthPercent)]
|
[AuraEffectHandler(AuraType.ModIncreaseHealthPercent)]
|
||||||
|
|||||||
Reference in New Issue
Block a user