From 953b05459a517fb83f18047ab82ac09021bc9440 Mon Sep 17 00:00:00 2001 From: ccrs Date: Sat, 29 Jun 2019 19:24:05 +0200 Subject: Core/Instance: add new hook & method --- src/server/game/Instances/InstanceScript.cpp | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'src/server/game/Instances/InstanceScript.cpp') diff --git a/src/server/game/Instances/InstanceScript.cpp b/src/server/game/Instances/InstanceScript.cpp index 1e8458987bc..b451fd6f1f1 100644 --- a/src/server/game/Instances/InstanceScript.cpp +++ b/src/server/game/Instances/InstanceScript.cpp @@ -648,6 +648,34 @@ void InstanceScript::DoRemoveAurasDueToSpellOnPlayers(uint32 spell, bool include } } +void InstanceScript::DoRemoveAurasDueToSpellOnPlayer(Player* player, uint32 spell, bool includePets /*= false*/, bool includeControlled /*= false*/) +{ + if (!player) + return; + + player->RemoveAurasDueToSpell(spell); + + if (!includePets) + return; + + for (uint8 itr2 = 0; itr2 < MAX_SUMMON_SLOT; ++itr2) + { + if (ObjectGuid summonGUID = player->m_SummonSlot[itr2]) + if (Creature* summon = instance->GetCreature(summonGUID)) + summon->RemoveAurasDueToSpell(spell); + } + + if (!includeControlled) + return; + + for (auto itr2 = player->m_Controlled.begin(); itr2 != player->m_Controlled.end(); ++itr2) + { + if (Unit* controlled = *itr2) + if (controlled->IsInWorld() && controlled->GetTypeId() == TYPEID_UNIT) + controlled->RemoveAurasDueToSpell(spell); + } +} + void InstanceScript::DoCastSpellOnPlayers(uint32 spell, bool includePets /*= false*/, bool includeControlled /*= false*/) { Map::PlayerList const& playerList = instance->GetPlayers(); -- cgit v1.2.3