aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGiacomo Pozzoni <giacomopoz@gmail.com>2020-08-29 14:33:49 +0200
committerShauren <shauren.trinity@gmail.com>2022-02-04 13:00:08 +0100
commitc66bcc4c0ef0be3caac8c2e1b2e361de678fb6e4 (patch)
tree1660e2bcbb38c6839b1d9c1ddbdf919cb4430714 /src
parent6830d883adcec99e288d594fa1bd7cf9577c5b7d (diff)
Core/Spell: Fix name clashing between local variables and class member fields (#25352)
(cherry picked from commit 8a48ece5732a47fc36fadc63d0620072ef47f8fe)
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Spells/Spell.cpp11
-rw-r--r--src/server/game/Spells/Spell.h4
-rw-r--r--src/server/game/Spells/SpellEffects.cpp71
-rw-r--r--src/server/game/Spells/SpellScript.cpp2
4 files changed, 65 insertions, 23 deletions
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp
index b6cafb07edf..785ad4008f9 100644
--- a/src/server/game/Spells/Spell.cpp
+++ b/src/server/game/Spells/Spell.cpp
@@ -573,7 +573,7 @@ m_spellValue(new SpellValue(m_spellInfo, caster)), _spellEvent(nullptr)
unitTarget = nullptr;
itemTarget = nullptr;
gameObjTarget = nullptr;
- corpseTarget = nullptr;
+ m_corpseTarget = nullptr;
destTarget = nullptr;
damage = 0;
targetMissInfo = SPELL_MISS_NONE;
@@ -591,7 +591,6 @@ m_spellValue(new SpellValue(m_spellInfo, caster)), _spellEvent(nullptr)
memset(m_misc.Raw.Data, 0, sizeof(m_misc.Raw.Data));
m_SpellVisual.SpellXSpellVisualID = caster->GetCastSpellXSpellVisualId(m_spellInfo);
m_triggeredByAuraSpell = nullptr;
- unitCaster = nullptr;
_spellAura = nullptr;
_dynObjAura = nullptr;
@@ -5267,10 +5266,9 @@ void Spell::HandleEffects(Unit* pUnitTarget, Item* pItemTarget, GameObject* pGoT
unitTarget = pUnitTarget;
itemTarget = pItemTarget;
gameObjTarget = pGoTarget;
- corpseTarget = pCorpseTarget;
+ m_corpseTarget = pCorpseTarget;
destTarget = &m_destTargets[spellEffectInfo.EffectIndex]._position;
effectInfo = &spellEffectInfo;
- unitCaster = m_originalCaster ? m_originalCaster : m_caster->ToUnit();
damage = CalculateDamage(spellEffectInfo, unitTarget, &variance);
@@ -7829,6 +7827,11 @@ bool Spell::IsNeedSendToClient() const
(m_spellInfo->HasAttribute(SPELL_ATTR8_AURA_SEND_AMOUNT)) || m_spellInfo->HasHitDelay() || (!m_triggeredByAuraSpell && !IsTriggered());
}
+Unit* Spell::GetUnitCasterForEffectHandlers() const
+{
+ return m_originalCaster ? m_originalCaster : m_caster->ToUnit();
+}
+
SpellEvent::SpellEvent(Spell* spell) : BasicEvent()
{
m_Spell = spell;
diff --git a/src/server/game/Spells/Spell.h b/src/server/game/Spells/Spell.h
index 0d008288186..13185fe342f 100644
--- a/src/server/game/Spells/Spell.h
+++ b/src/server/game/Spells/Spell.h
@@ -690,7 +690,7 @@ class TC_GAME_API Spell
Unit* unitTarget;
Item* itemTarget;
GameObject* gameObjTarget;
- Corpse* corpseTarget;
+ Corpse* m_corpseTarget;
WorldLocation* destTarget;
int32 damage;
SpellMissInfo targetMissInfo;
@@ -698,7 +698,7 @@ class TC_GAME_API Spell
SpellEffectHandleMode effectHandleMode;
SpellEffectInfo const* effectInfo;
// used in effects handlers
- Unit* unitCaster;
+ Unit* GetUnitCasterForEffectHandlers() const;
UnitAura* _spellAura;
DynObjAura* _dynObjAura;
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp
index 813d926793c..a5317922595 100644
--- a/src/server/game/Spells/SpellEffects.cpp
+++ b/src/server/game/Spells/SpellEffects.cpp
@@ -387,13 +387,13 @@ void Spell::EffectResurrectNew()
if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT_TARGET)
return;
- if (!corpseTarget && !unitTarget)
+ if (!m_corpseTarget && !unitTarget)
return;
Player* player = nullptr;
- if (corpseTarget)
- player = ObjectAccessor::FindPlayer(corpseTarget->GetOwnerGUID());
+ if (m_corpseTarget)
+ player = ObjectAccessor::FindPlayer(m_corpseTarget->GetOwnerGUID());
else if (unitTarget)
player = unitTarget->ToPlayer();
@@ -431,7 +431,7 @@ void Spell::EffectInstaKill()
data.SpellID = m_spellInfo->Id;
m_caster->SendMessageToSet(data.Write(), true);
- Unit::Kill(unitCaster, unitTarget, false);
+ Unit::Kill(GetUnitCasterForEffectHandlers(), unitTarget, false);
}
void Spell::EffectEnvironmentalDMG()
@@ -447,6 +447,7 @@ void Spell::EffectEnvironmentalDMG()
unitTarget->ToPlayer()->EnvironmentalDamage(DAMAGE_FIRE, damage);
else
{
+ Unit* unitCaster = GetUnitCasterForEffectHandlers();
DamageInfo damageInfo(unitCaster, unitTarget, damage, m_spellInfo, m_spellInfo->GetSchoolMask(), SPELL_DIRECT_DAMAGE, BASE_ATTACK);
Unit::CalcAbsorbResist(damageInfo);
@@ -478,6 +479,7 @@ void Spell::EffectSchoolDMG()
damage /= count;
}
+ Unit* unitCaster = GetUnitCasterForEffectHandlers();
switch (m_spellInfo->SpellFamilyName)
{
case SPELLFAMILY_GENERIC:
@@ -522,7 +524,7 @@ void Spell::EffectDummy()
if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT_TARGET)
return;
- if (!unitTarget && !gameObjTarget && !itemTarget && !corpseTarget)
+ if (!unitTarget && !gameObjTarget && !itemTarget && !m_corpseTarget)
return;
// pet auras
@@ -800,6 +802,7 @@ void Spell::EffectTriggerRitualOfSummoning()
void Spell::CalculateJumpSpeeds(SpellEffectInfo const* effInfo, float dist, float& speedXY, float& speedZ)
{
+ Unit* unitCaster = GetUnitCasterForEffectHandlers();
float runSpeed = unitCaster->IsControlledByPlayer() ? playerBaseMoveSpeed[MOVE_RUN] : baseMoveSpeed[MOVE_RUN];
if (Creature* creature = unitCaster->ToCreature())
runSpeed *= creature->GetCreatureTemplate()->speed_run;
@@ -830,6 +833,7 @@ void Spell::EffectJump()
if (effectHandleMode != SPELL_EFFECT_HANDLE_LAUNCH_TARGET)
return;
+ Unit* unitCaster = GetUnitCasterForEffectHandlers();
if (!unitCaster)
return;
@@ -852,6 +856,7 @@ void Spell::EffectJumpDest()
if (effectHandleMode != SPELL_EFFECT_HANDLE_LAUNCH)
return;
+ Unit* unitCaster = GetUnitCasterForEffectHandlers();
if (!unitCaster)
return;
@@ -1009,6 +1014,7 @@ void Spell::EffectPowerDrain()
if (!unitTarget || !unitTarget->IsAlive() || unitTarget->GetPowerType() != powerType || damage < 0)
return;
+ Unit* unitCaster = GetUnitCasterForEffectHandlers();
// add spell damage bonus
if (unitCaster)
{
@@ -1047,8 +1053,8 @@ void Spell::EffectSendEvent()
target = unitTarget;
else if (gameObjTarget)
target = gameObjTarget;
- else if (corpseTarget)
- target = corpseTarget;
+ else if (m_corpseTarget)
+ target = m_corpseTarget;
}
else // if (effectHandleMode == SPELL_EFFECT_HANDLE_HIT)
{
@@ -1089,7 +1095,7 @@ void Spell::EffectPowerBurn()
int32 newDamage = -(unitTarget->ModifyPower(powerType, -damage));
// NO - Not a typo - EffectPowerBurn uses effect value multiplier - not effect damage multiplier
- float dmgMultiplier = effectInfo->CalcValueMultiplier(unitCaster, this);
+ float dmgMultiplier = effectInfo->CalcValueMultiplier(GetUnitCasterForEffectHandlers(), this);
// add log data before multiplication (need power amount, not damage)
ExecuteLogEffectTakeTargetPower(SpellEffectName(effectInfo->Effect), unitTarget, powerType, newDamage, 0.0f);
@@ -1107,6 +1113,8 @@ void Spell::EffectHeal()
if (!unitTarget || !unitTarget->IsAlive() || damage < 0)
return;
+ Unit* unitCaster = GetUnitCasterForEffectHandlers();
+
// Skip if m_originalCaster not available
if (!unitCaster)
return;
@@ -1154,7 +1162,7 @@ void Spell::EffectHealPct()
return;
uint32 heal = unitTarget->CountPctFromMaxHealth(damage);
- if (unitCaster)
+ if (Unit* unitCaster = GetUnitCasterForEffectHandlers())
{
heal = unitCaster->SpellHealingBonusDone(unitTarget, m_spellInfo, heal, HEAL, *effectInfo);
heal = unitTarget->SpellHealingBonusTaken(unitCaster, m_spellInfo, heal, HEAL);
@@ -1171,6 +1179,7 @@ void Spell::EffectHealMechanical()
if (!unitTarget || !unitTarget->IsAlive() || damage < 0)
return;
+ Unit* unitCaster = GetUnitCasterForEffectHandlers();
uint32 heal = damage;
if (unitCaster)
heal = unitCaster->SpellHealingBonusDone(unitTarget, m_spellInfo, heal, HEAL, *effectInfo);
@@ -1190,6 +1199,7 @@ void Spell::EffectHealthLeech()
if (!unitTarget || !unitTarget->IsAlive() || damage < 0)
return;
+ Unit* unitCaster = GetUnitCasterForEffectHandlers();
uint32 bonus = 0;
if (unitCaster)
bonus = unitCaster->SpellDamageBonusDone(unitTarget, m_spellInfo, uint32(damage), SPELL_DIRECT_DAMAGE, *effectInfo);
@@ -1383,6 +1393,7 @@ void Spell::EffectPersistentAA()
if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT)
return;
+ Unit* unitCaster = GetUnitCasterForEffectHandlers();
if (!unitCaster)
return;
@@ -1429,6 +1440,7 @@ void Spell::EffectEnergize()
if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT_TARGET)
return;
+ Unit* unitCaster = GetUnitCasterForEffectHandlers();
if (!unitCaster || !unitTarget)
return;
@@ -1472,6 +1484,7 @@ void Spell::EffectEnergizePct()
if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT_TARGET)
return;
+ Unit* unitCaster = GetUnitCasterForEffectHandlers();
if (!unitCaster || !unitTarget)
return;
@@ -1848,6 +1861,8 @@ void Spell::EffectSummonType()
int32 duration = m_spellInfo->CalcDuration(caster);
+ Unit* unitCaster = GetUnitCasterForEffectHandlers();
+
TempSummon* summon = nullptr;
// determine how many units should be summoned
@@ -2526,6 +2541,7 @@ void Spell::EffectTameCreature()
if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT_TARGET)
return;
+ Unit* unitCaster = GetUnitCasterForEffectHandlers();
if (!unitCaster || !unitCaster->GetPetGUID().IsEmpty())
return;
@@ -2581,7 +2597,7 @@ void Spell::EffectSummonPet()
return;
Player* owner = nullptr;
- if (unitCaster)
+ if (Unit* unitCaster = GetUnitCasterForEffectHandlers())
{
owner = unitCaster->ToPlayer();
if (!owner && unitCaster->IsTotem())
@@ -2696,6 +2712,7 @@ void Spell::EffectTaunt()
if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT_TARGET)
return;
+ Unit* unitCaster = GetUnitCasterForEffectHandlers();
if (!unitCaster)
return;
@@ -2735,6 +2752,7 @@ void Spell::EffectWeaponDmg()
if (effectHandleMode != SPELL_EFFECT_HANDLE_LAUNCH_TARGET)
return;
+ Unit* unitCaster = GetUnitCasterForEffectHandlers();
if (!unitCaster)
return;
@@ -2856,6 +2874,7 @@ void Spell::EffectThreat()
if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT_TARGET)
return;
+ Unit* unitCaster = GetUnitCasterForEffectHandlers();
if (!unitCaster || !unitCaster->IsAlive())
return;
@@ -2873,6 +2892,7 @@ void Spell::EffectHealMaxHealth()
if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT_TARGET)
return;
+ Unit* unitCaster = GetUnitCasterForEffectHandlers();
if (!unitCaster)
return;
@@ -2911,7 +2931,7 @@ void Spell::EffectInterruptCast()
|| (spell->getState() == SPELL_STATE_PREPARING && spell->GetCastTime() > 0.0f))
&& curSpellInfo->CanBeInterrupted(m_caster, unitTarget))
{
- if (unitCaster)
+ if (Unit* unitCaster = GetUnitCasterForEffectHandlers())
{
int32 duration = m_spellInfo->GetDuration();
duration = unitTarget->ModSpellDuration(m_spellInfo, unitTarget, duration, false, 1 << effectInfo->EffectIndex);
@@ -2989,6 +3009,8 @@ void Spell::EffectScriptEffect()
if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT_TARGET)
return;
+ Unit* unitCaster = GetUnitCasterForEffectHandlers();
+
/// @todo we must implement hunter pet summon at login there (spell 6962)
/// @todo: move this to scripts
switch (m_spellInfo->SpellFamilyName)
@@ -3291,6 +3313,7 @@ void Spell::EffectSummonPlayer()
if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT_TARGET)
return;
+ Unit* unitCaster = GetUnitCasterForEffectHandlers();
if (!unitCaster)
return;
@@ -3627,6 +3650,7 @@ void Spell::EffectSummonObject()
if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT)
return;
+ Unit* unitCaster = GetUnitCasterForEffectHandlers();
if (!unitCaster)
return;
@@ -3684,13 +3708,13 @@ void Spell::EffectResurrect()
if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT_TARGET)
return;
- if (!corpseTarget && !unitTarget)
+ if (!m_corpseTarget && !unitTarget)
return;
Player* player = nullptr;
- if (corpseTarget)
- player = ObjectAccessor::FindPlayer(corpseTarget->GetOwnerGUID());
+ if (m_corpseTarget)
+ player = ObjectAccessor::FindPlayer(m_corpseTarget->GetOwnerGUID());
else if (unitTarget)
player = unitTarget->ToPlayer();
@@ -3810,6 +3834,7 @@ void Spell::EffectForceDeselect()
if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT)
return;
+ Unit* unitCaster = GetUnitCasterForEffectHandlers();
if (!unitCaster)
return;
@@ -3939,6 +3964,7 @@ void Spell::EffectCharge()
if (!unitTarget)
return;
+ Unit* unitCaster = GetUnitCasterForEffectHandlers();
if (!unitCaster)
return;
@@ -3997,6 +4023,7 @@ void Spell::EffectChargeDest()
if (!destTarget)
return;
+ Unit* unitCaster = GetUnitCasterForEffectHandlers();
if (!unitCaster)
return;
@@ -4325,6 +4352,7 @@ void Spell::EffectDestroyAllTotems()
if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT)
return;
+ Unit* unitCaster = GetUnitCasterForEffectHandlers();
if (!unitCaster)
return;
@@ -4425,6 +4453,7 @@ void Spell::EffectModifyThreatPercent()
if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT_TARGET)
return;
+ Unit* unitCaster = GetUnitCasterForEffectHandlers();
if (!unitCaster || !unitTarget)
return;
@@ -4436,6 +4465,7 @@ void Spell::EffectTransmitted()
if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT)
return;
+ Unit* unitCaster = GetUnitCasterForEffectHandlers();
if (!unitCaster)
return;
@@ -4657,8 +4687,8 @@ void Spell::EffectSkinPlayerCorpse()
Player* target = nullptr;
if (unitTarget)
target = unitTarget->ToPlayer();
- else if (corpseTarget)
- target = ObjectAccessor::FindPlayer(corpseTarget->GetOwnerGUID());
+ else if (m_corpseTarget)
+ target = ObjectAccessor::FindPlayer(m_corpseTarget->GetOwnerGUID());
if (!player || !target || target->IsAlive())
return;
@@ -4894,6 +4924,7 @@ void Spell::EffectRedirectThreat()
if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT_TARGET)
return;
+ Unit* unitCaster = GetUnitCasterForEffectHandlers();
if (!unitCaster)
return;
@@ -4940,6 +4971,7 @@ void Spell::EffectGameObjectSetDestructionState()
void Spell::SummonGuardian(SpellEffectInfo const* effect, uint32 entry, SummonPropertiesEntry const* properties, uint32 numGuardians, ObjectGuid privateObjectOwner)
{
+ Unit* unitCaster = GetUnitCasterForEffectHandlers();
if (!unitCaster)
return;
@@ -5335,6 +5367,7 @@ void Spell::EffectCreateAreaTrigger()
if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT)
return;
+ Unit* unitCaster = GetUnitCasterForEffectHandlers();
if (!unitCaster || !m_targets.HasDst())
return;
@@ -5401,6 +5434,7 @@ void Spell::EffectCreateConversation()
if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT)
return;
+ Unit* unitCaster = GetUnitCasterForEffectHandlers();
if (!unitCaster || !m_targets.HasDst())
return;
@@ -5705,6 +5739,7 @@ void Spell::EffectCreateSceneObject()
if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT)
return;
+ Unit* unitCaster = GetUnitCasterForEffectHandlers();
if (!unitCaster || !m_targets.HasDst())
return;
@@ -5725,6 +5760,7 @@ void Spell::EffectCreatePrivateSceneObject()
if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT)
return;
+ Unit* unitCaster = GetUnitCasterForEffectHandlers();
if (!unitCaster || !m_targets.HasDst())
return;
@@ -5773,6 +5809,7 @@ void Spell::EffectJumpCharge()
if (effectHandleMode != SPELL_EFFECT_HANDLE_LAUNCH)
return;
+ Unit* unitCaster = GetUnitCasterForEffectHandlers();
if (!unitCaster)
return;
@@ -5896,6 +5933,7 @@ void Spell::EffectCreatePrivateConversation()
if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT)
return;
+ Unit* unitCaster = GetUnitCasterForEffectHandlers();
if (!unitCaster || !unitTarget || unitTarget->GetTypeId() != TYPEID_PLAYER)
return;
@@ -5907,6 +5945,7 @@ void Spell::EffectSendChatMessage()
if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT)
return;
+ Unit* unitCaster = GetUnitCasterForEffectHandlers();
if (!unitCaster)
return;
diff --git a/src/server/game/Spells/SpellScript.cpp b/src/server/game/Spells/SpellScript.cpp
index e82d1111465..0029986471a 100644
--- a/src/server/game/Spells/SpellScript.cpp
+++ b/src/server/game/Spells/SpellScript.cpp
@@ -633,7 +633,7 @@ Corpse* SpellScript::GetHitCorpse() const
TC_LOG_ERROR("scripts", "Script: `%s` Spell: `%u`: function SpellScript::GetHitCorpse was called, but function has no effect in current hook!", m_scriptName->c_str(), m_scriptSpellId);
return nullptr;
}
- return m_spell->corpseTarget;
+ return m_spell->m_corpseTarget;
}
WorldLocation* SpellScript::GetHitDest() const