aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorOvahlord <dreadkiller@gmx.de>2021-05-13 00:43:11 +0200
committerShauren <shauren.trinity@gmail.com>2021-05-13 00:43:11 +0200
commita0a4d23fed58880c5ad1ebf4216d15d957035b65 (patch)
tree1561a0f831849f468ba1af3aed6aba9a2b2e3968 /src
parent1a7779a6e6464d9bc5b367e02820213edd60f704 (diff)
Core/Units: No longer send PowerUpdate packets when gaining power via energize spell effects
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp16
-rw-r--r--src/server/game/Entities/Unit/Unit.h4
2 files changed, 10 insertions, 10 deletions
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); }