diff options
author | Shauren <shauren.trinity@gmail.com> | 2018-01-28 11:37:20 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2018-03-25 19:28:36 +0300 |
commit | 91be2332e249147ce3169c46a7da77f0f8c2211d (patch) | |
tree | eab9e0ab76ae523f7a843fe1c2300eba17f53af2 /src/server/game/Spells/SpellEffects.cpp | |
parent | 1e62b53c66829dc9820117e17bfb44cb2652f814 (diff) |
Core/Entities: Phasing rewrite
* Optimized phase visibility checking
* Handle all phase flags
Closes #16758
Closes #21119
Diffstat (limited to 'src/server/game/Spells/SpellEffects.cpp')
-rw-r--r-- | src/server/game/Spells/SpellEffects.cpp | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index ceafaaf797f..a03b124f4b4 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -51,6 +51,7 @@ #include "OutdoorPvPMgr.h" #include "PathGenerator.h" #include "Pet.h" +#include "PhasingHandler.h" #include "Player.h" #include "ReputationMgr.h" #include "ScriptMgr.h" @@ -3086,7 +3087,7 @@ void Spell::EffectSummonObjectWild(SpellEffIndex effIndex) if (!go) return; - go->CopyPhaseFrom(m_caster); + PhasingHandler::InheritPhaseShift(go, m_caster); int32 duration = m_spellInfo->CalcDuration(m_caster); @@ -3105,7 +3106,7 @@ void Spell::EffectSummonObjectWild(SpellEffIndex effIndex) if (GameObject* linkedTrap = go->GetLinkedTrap()) { - linkedTrap->CopyPhaseFrom(m_caster); + PhasingHandler::InheritPhaseShift(linkedTrap , m_caster); linkedTrap->SetRespawnTime(duration > 0 ? duration / IN_MILLISECONDS : 0); linkedTrap->SetSpellId(m_spellInfo->Id); @@ -3641,7 +3642,7 @@ void Spell::EffectDuel(SpellEffIndex effIndex) if (!go) return; - go->CopyPhaseFrom(m_caster); + PhasingHandler::InheritPhaseShift(go, m_caster); go->SetUInt32Value(GAMEOBJECT_FACTION, m_caster->getFaction()); go->SetUInt32Value(GAMEOBJECT_LEVEL, m_caster->getLevel()+1); @@ -3971,7 +3972,7 @@ void Spell::EffectSummonObject(SpellEffIndex effIndex) if (!go) return; - go->CopyPhaseFrom(m_caster); + PhasingHandler::InheritPhaseShift(go, m_caster); //go->SetUInt32Value(GAMEOBJECT_LEVEL, m_caster->getLevel()); int32 duration = m_spellInfo->CalcDuration(m_caster); @@ -4654,7 +4655,7 @@ void Spell::EffectTransmitted(SpellEffIndex effIndex) if (!go) return; - go->CopyPhaseFrom(m_caster); + PhasingHandler::InheritPhaseShift(go, m_caster); int32 duration = m_spellInfo->CalcDuration(m_caster); @@ -4717,7 +4718,7 @@ void Spell::EffectTransmitted(SpellEffIndex effIndex) if (GameObject* linkedTrap = go->GetLinkedTrap()) { - linkedTrap->CopyPhaseFrom(m_caster); + PhasingHandler::InheritPhaseShift(linkedTrap, m_caster); linkedTrap->SetRespawnTime(duration > 0 ? duration / IN_MILLISECONDS : 0); //linkedTrap->SetUInt32Value(GAMEOBJECT_LEVEL, m_caster->getLevel()); @@ -5713,7 +5714,7 @@ void Spell::EffectUpdatePlayerPhase(SpellEffIndex /*effIndex*/) if (!unitTarget || unitTarget->GetTypeId() != TYPEID_PLAYER) return; - unitTarget->UpdateAreaAndZonePhase(); + PhasingHandler::OnConditionChange(unitTarget); } void Spell::EffectUpdateZoneAurasAndPhases(SpellEffIndex /*effIndex*/) |