diff options
author | Alan Deutscher <adeutscher@gmail.com> | 2016-05-18 02:06:24 -0700 |
---|---|---|
committer | joschiwald <joschiwald.trinity@gmail.com> | 2017-01-08 19:41:37 +0100 |
commit | 1c60553df0fc531dbf9e70583f6bf593bfbec41c (patch) | |
tree | e6a615d95bfcb98b6937b19bb2fb9a3a214f8bc3 | |
parent | a2ee7e16ec3e3985fd39001c691c89d960f7d5c3 (diff) |
Core/Spells Make certain spells (e.g. Mind Control) properly flag the caster for PvP (#17145)
* This issue was caused by PvP-flagging being done calculated after the target's flag was turned off by becoming a pet.
(cherry picked from commit e7a12edb833ffe26f27d6e392e97a560ffb0c827)
-rw-r--r-- | src/server/game/Spells/Spell.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 6fc944770fd..c04afe1fe6f 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -2356,8 +2356,13 @@ void Spell::DoAllEffectOnTarget(TargetInfo* target) PrepareScriptHitHandlers(); CallScriptBeforeHitHandlers(missInfo); + bool enablePvP = false; // need to check PvP state before spell effects, but act on it afterwards + if (spellHitTarget) { + // if target is flagged for pvp also flag caster if a player + if (unit->IsPvP() && m_caster->GetTypeId() == TYPEID_PLAYER) + enablePvP = true; // Decide on PvP flagging now, but act on it later. SpellMissInfo missInfo2 = DoSpellHitOnUnit(spellHitTarget, mask, target->scaleAura); if (missInfo2 != SPELL_MISS_NONE) @@ -2511,8 +2516,7 @@ void Spell::DoAllEffectOnTarget(TargetInfo* target) // Needs to be called after dealing damage/healing to not remove breaking on damage auras DoTriggersOnSpellHit(spellHitTarget, mask); - // if target is fallged for pvp also flag caster if a player - if (unit->IsPvP() && m_caster->GetTypeId() == TYPEID_PLAYER) + if (enablePvP) m_caster->ToPlayer()->UpdatePvP(true); CallScriptAfterHitHandlers(); |