mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-03-01 06:55:59 +00:00
fix(Core/Spells): cache reflection target information for reflected thunderstorm direction (#23762)
This commit is contained in:
@@ -643,6 +643,8 @@ Spell::Spell(Unit* caster, SpellInfo const* info, TriggerCastFlags triggerFlags,
|
||||
gameObjTarget = nullptr;
|
||||
destTarget = nullptr;
|
||||
damage = 0;
|
||||
m_reflectionTarget = nullptr;
|
||||
m_reflectionTargetGuid.Clear();
|
||||
effectHandleMode = SPELL_EFFECT_HANDLE_LAUNCH;
|
||||
m_diminishLevel = DIMINISHING_LEVEL_1;
|
||||
m_diminishGroup = DIMINISHING_NONE;
|
||||
@@ -2591,6 +2593,7 @@ void Spell::DoAllEffectOnTarget(TargetInfo* target)
|
||||
//Spells with this flag cannot trigger if effect is casted on self
|
||||
bool canEffectTrigger = !m_spellInfo->HasAttribute(SPELL_ATTR3_SUPPRESS_CASTER_PROCS) && unitTarget->CanProc() && (CanExecuteTriggersOnHit(mask) || missInfo == SPELL_MISS_IMMUNE2);
|
||||
bool reflectedSpell = missInfo == SPELL_MISS_REFLECT;
|
||||
Unit* reflectionSource = nullptr;
|
||||
Unit* spellHitTarget = nullptr;
|
||||
|
||||
if (missInfo == SPELL_MISS_NONE) // In case spell hit target, do all effect on that target
|
||||
@@ -2602,6 +2605,7 @@ void Spell::DoAllEffectOnTarget(TargetInfo* target)
|
||||
{
|
||||
spellHitTarget = m_caster;
|
||||
unitTarget = m_caster;
|
||||
reflectionSource = effectUnit;
|
||||
if (m_caster->IsCreature())
|
||||
m_caster->ToCreature()->LowerPlayerDamageReq(target->damage);
|
||||
}
|
||||
@@ -2609,7 +2613,24 @@ void Spell::DoAllEffectOnTarget(TargetInfo* target)
|
||||
|
||||
if (spellHitTarget)
|
||||
{
|
||||
if (reflectionSource)
|
||||
{
|
||||
m_reflectionTarget = reflectionSource;
|
||||
m_reflectionTargetGuid = reflectionSource->GetGUID();
|
||||
m_reflectionTargetPosition.Relocate(reflectionSource);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_reflectionTarget = nullptr;
|
||||
m_reflectionTargetGuid.Clear();
|
||||
m_reflectionTargetPosition = Position();
|
||||
}
|
||||
|
||||
SpellMissInfo missInfo2 = DoSpellHitOnUnit(spellHitTarget, mask, target->scaleAura);
|
||||
|
||||
m_reflectionTarget = nullptr;
|
||||
m_reflectionTargetGuid.Clear();
|
||||
m_reflectionTargetPosition = Position();
|
||||
if (missInfo2 != SPELL_MISS_NONE)
|
||||
{
|
||||
if (missInfo2 != SPELL_MISS_MISS)
|
||||
|
||||
Reference in New Issue
Block a user