Core/Spells: Aura refresh improvements
This commit is contained in:
1 parent
02b79f42a0
commit
86121e9996
3 files changed
+9
-8
No files matched your search
@@ -306,7 +306,7 @@ uint8 Aura::BuildEffectMaskForOwner(SpellInfo const* spellProto, uint8 available
|
||||
return effMask & availableEffectMask;
|
||||
}
|
||||
|
||||
Aura* Aura::TryRefreshStackOrCreate(AuraCreateInfo& createInfo)
|
||||
Aura* Aura::TryRefreshStackOrCreate(AuraCreateInfo& createInfo, bool updateEffectMask)
|
||||
{
|
||||
ASSERT(createInfo.Caster || createInfo.CasterGUID);
|
||||
|
||||
@@ -337,8 +337,9 @@ Aura* Aura::TryRefreshStackOrCreate(AuraCreateInfo& createInfo)
|
||||
Unit* unit = createInfo._owner->ToUnit();
|
||||
|
||||
// check effmask on owner application (if existing)
|
||||
if (AuraApplication* aurApp = foundAura->GetApplicationOfTarget(unit->GetGUID()))
|
||||
aurApp->UpdateApplyEffectMask(effMask);
|
||||
if (updateEffectMask)
|
||||
if (AuraApplication* aurApp = foundAura->GetApplicationOfTarget(unit->GetGUID()))
|
||||
aurApp->UpdateApplyEffectMask(effMask);
|
||||
return foundAura;
|
||||
}
|
||||
else
|
||||
|
||||
@@ -110,7 +110,7 @@ class TC_GAME_API Aura
|
||||
typedef std::unordered_map<ObjectGuid, AuraApplication*> ApplicationMap;
|
||||
|
||||
static uint8 BuildEffectMaskForOwner(SpellInfo const* spellProto, uint8 availableEffectMask, WorldObject* owner);
|
||||
static Aura* TryRefreshStackOrCreate(AuraCreateInfo& createInfo);
|
||||
static Aura* TryRefreshStackOrCreate(AuraCreateInfo& createInfo, bool updateEffectMask = true);
|
||||
static Aura* TryCreate(AuraCreateInfo& createInfo);
|
||||
static Aura* Create(AuraCreateInfo& createInfo);
|
||||
explicit Aura(AuraCreateInfo const& createInfo);
|
||||
|
||||
@@ -2979,7 +2979,7 @@ void Spell::DoSpellEffectHit(Unit* unit, uint8 effIndex, TargetInfo& hitInfo)
|
||||
.SetOwnerEffectMask(aura_effmask)
|
||||
.IsRefresh = &refresh;
|
||||
|
||||
if (Aura* aura = Aura::TryRefreshStackOrCreate(createInfo))
|
||||
if (Aura* aura = Aura::TryRefreshStackOrCreate(createInfo, false))
|
||||
{
|
||||
hitInfo.HitAura = aura->ToUnitAura();
|
||||
|
||||
@@ -3009,9 +3009,6 @@ void Spell::DoSpellEffectHit(Unit* unit, uint8 effIndex, TargetInfo& hitInfo)
|
||||
hitInfo.HitAura->SetDuration(hitInfo.AuraDuration);
|
||||
}
|
||||
|
||||
if (refresh)
|
||||
hitInfo.HitAura->AddStaticApplication(unit, aura_effmask);
|
||||
|
||||
if (DynamicObject* dynObj = m_originalCaster->GetDynObject(m_spellInfo->Id))
|
||||
dynObj->SetDuration(hitInfo.AuraDuration);
|
||||
|
||||
@@ -3025,6 +3022,9 @@ void Spell::DoSpellEffectHit(Unit* unit, uint8 effIndex, TargetInfo& hitInfo)
|
||||
// So we need to re-update timer with a proper value.
|
||||
m_timer = hitInfo.HitAura->GetMaxDuration();
|
||||
}
|
||||
|
||||
if (refresh)
|
||||
hitInfo.HitAura->AddStaticApplication(unit, aura_effmask);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
Reference in new issue
Block a user