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.
This commit is contained in:
Alan Deutscher
2016-05-18 02:06:24 -07:00
committed by Shauren
parent 6cf1446d39
commit e7a12edb83

View File

@@ -2320,8 +2320,13 @@ void Spell::DoAllEffectOnTarget(TargetInfo* target)
}
}
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)
{
@@ -2474,8 +2479,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();