Core/Units: Power handling improvements
* Don't include creature_template power multipliers in CreateMana updatefield * Allow NPCs to have power types other than mana * Add missing Essence config regeneration rate * Fixed demon hunter powers not decaying immediately after combat * Fixed some powers decaying immediately out of combat after energizing (for example holy power) * Replace hardcoded list of powers to set to full on levelup with a db2 flag check * Updated Creature::GetPowerIndex for 10.1 new power types Port From (https://github.com/TrinityCore/TrinityCore/commit/1325e0c4b279d590acbcbb05d6abdf5fdb66a882)
This commit is contained in:
@@ -1172,6 +1172,15 @@ namespace Game.Entities
|
||||
|
||||
public void EnergizeBySpell(Unit victim, SpellInfo spellInfo, int damage, PowerType powerType)
|
||||
{
|
||||
Player player = victim.ToPlayer();
|
||||
if (player != null)
|
||||
{
|
||||
var powerTypeEntry = Global.DB2Mgr.GetPowerTypeEntry(powerType);
|
||||
if (powerTypeEntry != null)
|
||||
if (powerTypeEntry.GetFlags().HasFlag(PowerTypeFlags.UseRegenInterrupt))
|
||||
player.InterruptPowerRegen(powerType);
|
||||
}
|
||||
|
||||
int gain = victim.ModifyPower(powerType, damage, false);
|
||||
int overEnergize = damage - gain;
|
||||
|
||||
|
||||
@@ -1662,7 +1662,7 @@ namespace Game.Entities
|
||||
}
|
||||
}
|
||||
|
||||
public void UpdateDisplayPower()
|
||||
public PowerType CalculateDisplayPowerType()
|
||||
{
|
||||
PowerType displayPower = PowerType.Mana;
|
||||
switch (GetShapeshiftForm())
|
||||
@@ -1686,22 +1686,18 @@ namespace Game.Entities
|
||||
AuraEffect powerTypeAura = powerTypeAuras.First();
|
||||
displayPower = (PowerType)powerTypeAura.GetMiscValue();
|
||||
}
|
||||
else if (GetTypeId() == TypeId.Player)
|
||||
else
|
||||
{
|
||||
ChrClassesRecord cEntry = CliDB.ChrClassesStorage.LookupByKey(GetClass());
|
||||
if (cEntry != null && cEntry.DisplayPower < PowerType.Max)
|
||||
displayPower = cEntry.DisplayPower;
|
||||
}
|
||||
else if (GetTypeId() == TypeId.Unit)
|
||||
{
|
||||
|
||||
Vehicle vehicle = GetVehicleKit();
|
||||
if (vehicle)
|
||||
{
|
||||
PowerDisplayRecord powerDisplay = CliDB.PowerDisplayStorage.LookupByKey(vehicle.GetVehicleInfo().PowerDisplayID[0]);
|
||||
if (powerDisplay != null)
|
||||
displayPower = (PowerType)powerDisplay.ActualType;
|
||||
else if (GetClass() == Class.Rogue)
|
||||
displayPower = PowerType.Energy;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1719,7 +1715,12 @@ namespace Game.Entities
|
||||
}
|
||||
}
|
||||
|
||||
SetPowerType(displayPower);
|
||||
return displayPower;
|
||||
}
|
||||
|
||||
public void UpdateDisplayPower()
|
||||
{
|
||||
SetPowerType(CalculateDisplayPowerType());
|
||||
}
|
||||
|
||||
public void SetSheath(SheathState sheathed)
|
||||
|
||||
Reference in New Issue
Block a user