From a0a4d23fed58880c5ad1ebf4216d15d957035b65 Mon Sep 17 00:00:00 2001 From: Ovahlord Date: Thu, 13 May 2021 00:43:11 +0200 Subject: Core/Units: No longer send PowerUpdate packets when gaining power via energize spell effects --- src/server/game/Entities/Unit/Unit.cpp | 16 ++++++++-------- src/server/game/Entities/Unit/Unit.h | 4 ++-- 2 files changed, 10 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index af0cfc6be38..7c0fb6a64fd 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -6745,9 +6745,9 @@ void Unit::EnergizeBySpell(Unit* victim, uint32 spellId, int32 damage, Powers po void Unit::EnergizeBySpell(Unit* victim, SpellInfo const* spellInfo, int32 damage, Powers powerType) { - int32 gain = victim->ModifyPower(powerType, damage); + int32 gain = victim->ModifyPower(powerType, damage, false); int32 overEnergize = damage - gain; - victim->GetThreatManager().ForwardThreatForAssistingMe(this, float(damage)/2, spellInfo, true); + victim->GetThreatManager().ForwardThreatForAssistingMe(this, float(damage) / 2, spellInfo, true); SendEnergizeSpellLog(victim, spellInfo->Id, damage, overEnergize, powerType); } @@ -8637,7 +8637,7 @@ int64 Unit::GetHealthGain(int64 dVal) } // returns negative amount on power reduction -int32 Unit::ModifyPower(Powers power, int32 dVal) +int32 Unit::ModifyPower(Powers power, int32 dVal, bool withPowerUpdate /*= true*/) { int32 gain = 0; @@ -8652,7 +8652,7 @@ int32 Unit::ModifyPower(Powers power, int32 dVal) int32 val = dVal + curPower; if (val <= GetMinPower(power)) { - SetPower(power, GetMinPower(power)); + SetPower(power, GetMinPower(power), withPowerUpdate); return -curPower; } @@ -8660,12 +8660,12 @@ int32 Unit::ModifyPower(Powers power, int32 dVal) if (val < maxPower) { - SetPower(power, val); + SetPower(power, val, withPowerUpdate); gain = val - curPower; } else if (curPower != maxPower) { - SetPower(power, maxPower); + SetPower(power, maxPower, withPowerUpdate); gain = maxPower - curPower; } @@ -10082,7 +10082,7 @@ int32 Unit::GetMaxPower(Powers power) const return m_unitData->MaxPower[powerIndex]; } -void Unit::SetPower(Powers power, int32 val) +void Unit::SetPower(Powers power, int32 val, bool withPowerUpdate /*= true*/) { uint32 powerIndex = GetPowerIndex(power); if (powerIndex == MAX_POWERS || powerIndex >= MAX_POWERS_PER_CLASS) @@ -10095,7 +10095,7 @@ void Unit::SetPower(Powers power, int32 val) int32 oldPower = m_unitData->Power[powerIndex]; SetUpdateFieldValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::Power, powerIndex), val); - if (IsInWorld()) + if (IsInWorld() && withPowerUpdate) { WorldPackets::Combat::PowerUpdate packet; packet.Guid = GetGUID(); diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index 6af545a36a3..5275677e2e8 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -934,12 +934,12 @@ class TC_GAME_API Unit : public WorldObject int32 GetMaxPower(Powers power) const; float GetPowerPct(Powers power) const { return GetMaxPower(power) ? 100.f * GetPower(power) / GetMaxPower(power) : 0.0f; } int32 CountPctFromMaxPower(Powers power, int32 pct) const { return CalculatePct(GetMaxPower(power), pct); } - void SetPower(Powers power, int32 val); + void SetPower(Powers power, int32 val, bool withPowerUpdate = true); void SetMaxPower(Powers power, int32 val); void TriggerOnPowerChangeAuras(Powers power, int32 oldVal, int32 newVal); inline void SetFullPower(Powers power) { SetPower(power, GetMaxPower(power)); } // returns the change in power - int32 ModifyPower(Powers power, int32 val); + int32 ModifyPower(Powers power, int32 val, bool withPowerUpdate = true); void ApplyModManaCostMultiplier(float manaCostMultiplier, bool apply) { ApplyModUpdateFieldValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::ManaCostMultiplier), manaCostMultiplier, apply); } void ApplyModManaCostModifier(SpellSchools school, int32 mod, bool apply) { ApplyModUpdateFieldValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::ManaCostModifier, school), mod, apply); } -- cgit v1.2.3