aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortreeston <treeston.mmoc@gmail.com>2017-07-09 02:07:29 +0200
committerShauren <shauren.trinity@gmail.com>2020-08-18 18:53:13 +0200
commit2dfafa69ebc422feba1aa01e0c4fab76366f552f (patch)
treec5499048f5e797da591f365709d965cd8f2edd74 /src
parentbefbfbb655731f0202b79586c98f2780ca507edf (diff)
Hi, I'm Treeston, and welcome to Combat PR Prep Refactors.
Today, we're moving UNIT_FLAG_IMMUNE_TO_PC and UNIT_FLAG_IMMUNE_TO_NPC to higher-level abstraction so combat manager can react to it. New methods on Unit: - void SetImmuneTo<All/PC/NPC>(apply, keepCombat = false); - bool IsImmuneTo<All/PC/NPC>() const; (cherry picked from commit 74af880217fc567c9949d7557408718af889402f)
Diffstat (limited to 'src')
-rw-r--r--src/server/game/AI/CreatureAI.cpp3
-rw-r--r--src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp6
-rw-r--r--src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp3
-rw-r--r--src/server/game/Entities/Creature/Creature.cpp7
-rw-r--r--src/server/game/Entities/GameObject/GameObject.cpp2
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp28
-rw-r--r--src/server/game/Entities/Unit/Unit.h7
-rw-r--r--src/server/game/Spells/SpellEffects.cpp3
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_coren_direbrew.cpp6
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_tomb_of_seven.cpp4
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/instance_blackrock_depths.cpp2
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_pyroguard_emberseer.cpp10
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_rend_blackhand.cpp2
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_nefarian.cpp2
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_ragnaros.cpp3
-rw-r--r--src/server/scripts/EasternKingdoms/Karazhan/boss_nightbane.cpp2
-rw-r--r--src/server/scripts/EasternKingdoms/Karazhan/bosses_opera.cpp3
-rw-r--r--src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp6
-rw-r--r--src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp6
-rw-r--r--src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp2
-rw-r--r--src/server/scripts/EasternKingdoms/ShadowfangKeep/boss_apothecary_hummel.cpp10
-rw-r--r--src/server/scripts/EasternKingdoms/ShadowfangKeep/instance_shadowfang_keep.cpp2
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp14
-rw-r--r--src/server/scripts/Kalimdor/WailingCaverns/wailing_caverns.cpp4
-rw-r--r--src/server/scripts/Kalimdor/zone_bloodmyst_isle.cpp2
-rw-r--r--src/server/scripts/Kalimdor/zone_dustwallow_marsh.cpp2
-rw-r--r--src/server/scripts/Kalimdor/zone_moonglade.cpp4
-rw-r--r--src/server/scripts/Kalimdor/zone_tanaris.cpp2
-rw-r--r--src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_general_zarithrian.cpp5
-rw-r--r--src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/instance_ruby_sanctum.cpp5
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp22
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_faction_champions.cpp6
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_lord_jaraxxus.cpp3
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp12
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp3
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.cpp9
-rw-r--r--src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp2
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_horAI.cpp4
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp13
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp3
-rw-r--r--src/server/scripts/Northrend/Gundrak/boss_drakkari_colossus.cpp8
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp8
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp11
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp5
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp4
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp6
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp12
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp10
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_noth.cpp9
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp13
-rw-r--r--src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp4
-rw-r--r--src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp4
-rw-r--r--src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp6
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp15
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp3
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp3
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp6
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp10
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp6
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp2
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_ingvar_the_plunderer.cpp9
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_palehoof.cpp4
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp3
-rw-r--r--src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp20
-rw-r--r--src/server/scripts/Northrend/zone_borean_tundra.cpp2
-rw-r--r--src/server/scripts/Northrend/zone_dragonblight.cpp2
-rw-r--r--src/server/scripts/Northrend/zone_grizzly_hills.cpp8
-rw-r--r--src/server/scripts/Northrend/zone_storm_peaks.cpp4
-rw-r--r--src/server/scripts/Outland/BlackTemple/boss_illidan.cpp6
-rw-r--r--src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp4
-rw-r--r--src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lurker_below.cpp6
-rw-r--r--src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_ahune.cpp6
-rw-r--r--src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_broggok.cpp6
-rw-r--r--src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_kelidan_the_breaker.cpp6
-rw-r--r--src/server/scripts/Outland/HellfireCitadel/BloodFurnace/instance_blood_furnace.cpp6
-rw-r--r--src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp3
-rw-r--r--src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/shattered_halls.cpp4
-rw-r--r--src/server/scripts/Outland/TempestKeep/arcatraz/boss_harbinger_skyriss.cpp4
-rw-r--r--src/server/scripts/Outland/zone_hellfire_peninsula.cpp6
-rw-r--r--src/server/scripts/Outland/zone_shadowmoon_valley.cpp3
-rw-r--r--src/server/scripts/Spells/spell_quest.cpp4
-rw-r--r--src/server/scripts/World/item_scripts.cpp2
82 files changed, 294 insertions, 203 deletions
diff --git a/src/server/game/AI/CreatureAI.cpp b/src/server/game/AI/CreatureAI.cpp
index 6894f4af091..7e57465443b 100644
--- a/src/server/game/AI/CreatureAI.cpp
+++ b/src/server/game/AI/CreatureAI.cpp
@@ -345,7 +345,8 @@ int32 CreatureAI::VisualizeBoundary(uint32 duration, Unit* owner, bool fill) con
if (TempSummon* point = owner->SummonCreature(BOUNDARY_VISUALIZE_CREATURE, Position(startPosition.GetPositionX() + front.first*BOUNDARY_VISUALIZE_STEP_SIZE, startPosition.GetPositionY() + front.second*BOUNDARY_VISUALIZE_STEP_SIZE, spawnZ), TEMPSUMMON_TIMED_DESPAWN, duration * IN_MILLISECONDS))
{
point->SetObjectScale(BOUNDARY_VISUALIZE_CREATURE_SCALE);
- point->AddUnitFlag(UnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_STUNNED | UNIT_FLAG_IMMUNE_TO_NPC));
+ point->AddUnitFlag(UNIT_FLAG_STUNNED);
+ point->SetImmuneToAll(true);
if (!hasOutOfBoundsNeighbor)
point->AddUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
}
diff --git a/src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp b/src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp
index c8ecf527f21..fc0ed3fa9e0 100644
--- a/src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp
+++ b/src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp
@@ -188,7 +188,7 @@ void npc_escortAI::EnterEvadeMode(EvadeReason /*why*/)
{
me->GetMotionMaster()->MoveTargetedHome();
if (HasImmuneToNPCFlags)
- me->AddUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC);
+ me->SetImmuneToNPC(true);
Reset();
}
}
@@ -472,10 +472,10 @@ void npc_escortAI::Start(bool isActiveAttacker /* = true*/, bool run /* = false
//disable npcflags
me->SetNpcFlags(UNIT_NPC_FLAG_NONE);
me->SetNpcFlags2(UNIT_NPC_FLAG_2_NONE);
- if (me->HasUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC))
+ if (me->IsImmuneToNPC())
{
HasImmuneToNPCFlags = true;
- me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC);
+ me->SetImmuneToNPC(false);
}
TC_LOG_DEBUG("scripts", "EscortAI started with " UI64FMTD " waypoints. ActiveAttacker = %d, Run = %d, %s", uint64(WaypointList.size()), m_bIsActiveAttacker, m_bIsRunning, m_uiPlayerGUID.ToString().c_str());
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp
index 19e8d8e6a10..15b64ffb1d5 100644
--- a/src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp
@@ -762,7 +762,8 @@ void BattlegroundIC::HandleCapturedNodes(ICNodePoint* node, bool recapture)
if (Creature* siegeEngine = GetBGCreature(siegeType))
{
- siegeEngine->AddUnitFlag(UnitFlags(UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_CANNOT_SWIM | UNIT_FLAG_IMMUNE_TO_PC));
+ siegeEngine->AddUnitFlag(UnitFlags(UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_CANNOT_SWIM));
+ siegeEngine->SetImmuneToPC(true);
siegeEngine->SetFaction(BG_IC_Factions[(node->faction == TEAM_ALLIANCE ? 0 : 1)]);
}
}
diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp
index 589a9e969ff..3bf69feecca 100644
--- a/src/server/game/Entities/Creature/Creature.cpp
+++ b/src/server/game/Entities/Creature/Creature.cpp
@@ -1790,9 +1790,8 @@ bool Creature::CanStartAttack(Unit const* who, bool force) const
return false;
// This set of checks is should be done only for creatures
- if ((HasUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC) && who->GetTypeId() != TYPEID_PLAYER) // flag is valid only for non player characters
- || (HasUnitFlag(UNIT_FLAG_IMMUNE_TO_PC) && who->GetTypeId() == TYPEID_PLAYER) // immune to PC and target is a player, return false
- || (who->GetOwner() && who->GetOwner()->GetTypeId() == TYPEID_PLAYER && HasUnitFlag(UNIT_FLAG_IMMUNE_TO_PC))) // player pets are immune to pc as well
+ if ((IsImmuneToNPC() && !who->HasUnitFlag(UNIT_FLAG_PVP_ATTACKABLE))
+ || (IsImmuneToPC() && who->HasUnitFlag(UNIT_FLAG_PVP_ATTACKABLE)))
return false;
// Do not attack non-combat pets
@@ -2364,7 +2363,7 @@ bool Creature::CanAssistTo(const Unit* u, const Unit* enemy, bool checkfaction /
if (IsCivilian())
return false;
- if (HasUnitFlag(UnitFlags(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_IMMUNE_TO_NPC)))
+ if (HasUnitFlag(UnitFlags(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE)) || IsImmuneToNPC())
return false;
// skip fighting creature
diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp
index dba1023849f..cccf3a8bf29 100644
--- a/src/server/game/Entities/GameObject/GameObject.cpp
+++ b/src/server/game/Entities/GameObject/GameObject.cpp
@@ -2101,7 +2101,7 @@ void GameObject::CastSpell(Unit* target, uint32 spellId, TriggerCastFlags trigge
return;
// remove immunity flags, to allow spell to target anything
- trigger->RemoveUnitFlag(UnitFlags(UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_IMMUNE_TO_PC));
+ trigger->SetImmuneToAll(false);
if (Unit* owner = GetOwner())
{
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index 59e4f28c592..0469b1ec66e 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -7987,6 +7987,24 @@ void Unit::SetInCombatWith(Unit* enemy)
SetInCombatState(false, enemy);
}
+void Unit::SetImmuneToPC(bool apply, bool keepCombat)
+{
+ (void)keepCombat;
+ if (apply)
+ AddUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ else
+ RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+}
+
+void Unit::SetImmuneToNPC(bool apply, bool keepCombat)
+{
+ (void)keepCombat;
+ if (apply)
+ AddUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC);
+ else
+ RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC);
+}
+
void Unit::CombatStart(Unit* target, bool initialAggro)
{
if (initialAggro)
@@ -8178,12 +8196,12 @@ bool Unit::_IsValidAttackTarget(Unit const* target, SpellInfo const* bySpell, Wo
// check flags
if (target->HasUnitFlag(UnitFlags(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_TAXI_FLIGHT | UNIT_FLAG_NOT_ATTACKABLE_1 | UNIT_FLAG_UNK_16))
- || (!HasUnitFlag(UNIT_FLAG_PVP_ATTACKABLE) && target->HasUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC))
- || (!target->HasUnitFlag(UNIT_FLAG_PVP_ATTACKABLE) && HasUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC)))
+ || (!HasUnitFlag(UNIT_FLAG_PVP_ATTACKABLE) && target->IsImmuneToNPC())
+ || (!target->HasUnitFlag(UNIT_FLAG_PVP_ATTACKABLE) && IsImmuneToNPC()))
return false;
if ((!bySpell || !bySpell->HasAttribute(SPELL_ATTR8_ATTACK_IGNORE_IMMUNE_TO_PC_FLAG))
- && (HasUnitFlag(UNIT_FLAG_PVP_ATTACKABLE) && target->HasUnitFlag(UNIT_FLAG_IMMUNE_TO_PC))
+ && (HasUnitFlag(UNIT_FLAG_PVP_ATTACKABLE) && target->IsImmuneToPC())
// check if this is a world trigger cast - GOs are using world triggers to cast their spells, so we need to ignore their immunity flag here, this is a temp workaround, needs removal when go cast is implemented properly
&& GetEntry() != WORLD_TRIGGER)
return false;
@@ -8289,12 +8307,12 @@ bool Unit::_IsValidAssistTarget(Unit const* target, SpellInfo const* bySpell) co
{
if (HasUnitFlag(UNIT_FLAG_PVP_ATTACKABLE))
{
- if (target->HasUnitFlag(UNIT_FLAG_IMMUNE_TO_PC))
+ if (target->IsImmuneToPC())
return false;
}
else
{
- if (target->HasUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC))
+ if (target->IsImmuneToNPC())
return false;
}
}
diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h
index 571dcecbeeb..fb04300b841 100644
--- a/src/server/game/Entities/Unit/Unit.h
+++ b/src/server/game/Entities/Unit/Unit.h
@@ -1274,6 +1274,13 @@ class TC_GAME_API Unit : public WorldObject
bool IsThreatened() const { return CanHaveThreatList() && !GetThreatManager().IsThreatListEmpty(); }
bool IsThreatenedBy(Unit const* who) const { return who && CanHaveThreatList() && GetThreatManager().IsThreatenedBy(who); }
+ void SetImmuneToAll(bool apply, bool keepCombat = false) { SetImmuneToPC(apply, keepCombat); SetImmuneToNPC(apply, keepCombat); }
+ bool IsImmuneToAll() const { return IsImmuneToPC() && IsImmuneToNPC(); }
+ void SetImmuneToPC(bool apply, bool keepCombat = false);
+ bool IsImmuneToPC() const { return HasUnitFlag(UNIT_FLAG_IMMUNE_TO_PC); }
+ void SetImmuneToNPC(bool apply, bool keepCombat = false);
+ bool IsImmuneToNPC() const { return HasUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC); }
+
bool IsInCombat() const { return HasUnitFlag(UNIT_FLAG_IN_COMBAT); }
bool IsPetInCombat() const { return HasUnitFlag(UNIT_FLAG_PET_IN_COMBAT); }
bool IsInCombatWith(Unit const* who) const;
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp
index 0cf8eec72b1..83a939aef12 100644
--- a/src/server/game/Spells/SpellEffects.cpp
+++ b/src/server/game/Spells/SpellEffects.cpp
@@ -1992,8 +1992,7 @@ void Spell::EffectSummonType(SpellEffIndex effIndex)
summon->SelectLevel(); // some summoned creaters have different from 1 DB data for level/hp
summon->SetNpcFlags(NPCFlags(summon->GetCreatureTemplate()->npcflag & 0xFFFFFFFF));
summon->SetNpcFlags2(NPCFlags2(summon->GetCreatureTemplate()->npcflag >> 32));
-
- summon->AddUnitFlag(UnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC));
+ summon->SetImmuneToAll(true);
summon->AI()->EnterEvadeMode();
break;
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_coren_direbrew.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_coren_direbrew.cpp
index 156e690be85..2bb126dbd39 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_coren_direbrew.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_coren_direbrew.cpp
@@ -142,7 +142,7 @@ public:
void Reset() override
{
_Reset();
- me->AddUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ me->SetImmuneToPC(true);
me->SetFaction(FACTION_FRIENDLY);
events.SetPhase(PHASE_ALL);
@@ -165,7 +165,7 @@ public:
if (action == ACTION_START_FIGHT)
{
events.SetPhase(PHASE_ONE);
- me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ me->SetImmuneToPC(false);
me->SetFaction(FACTION_GOBLIN_DARK_IRON_BAR_PATRON);
me->SetInCombatWithZone();
@@ -398,7 +398,7 @@ public:
Talk(SAY_ANTAGONIST_2);
break;
case ACTION_ANTAGONIST_HOSTILE:
- me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ me->SetImmuneToPC(false);
me->SetFaction(FACTION_GOBLIN_DARK_IRON_BAR_PATRON);
me->SetInCombatWithZone();
break;
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_tomb_of_seven.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_tomb_of_seven.cpp
index 7d709fdaf42..d71529b1ccb 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_tomb_of_seven.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_tomb_of_seven.cpp
@@ -152,7 +152,7 @@ class boss_doomrel : public CreatureScript
me->SetFaction(FACTION_FRIENDLY);
// was set before event start, so set again
- me->AddUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ me->SetImmuneToPC(true);
if (_instance->GetData(DATA_GHOSTKILL) >= 7)
me->SetNpcFlags(UNIT_NPC_FLAG_NONE);
@@ -240,7 +240,7 @@ class boss_doomrel : public CreatureScript
CloseGossipMenuFor(player);
//start event here
me->SetFaction(FACTION_DARK_IRON_DWARVES);
- me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ me->SetImmuneToPC(false);
me->AI()->AttackStart(player);
_instance->SetGuidData(DATA_EVENSTARTER, player->GetGUID());
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/instance_blackrock_depths.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/instance_blackrock_depths.cpp
index 15b5edd3027..be16a653cfa 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/instance_blackrock_depths.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/instance_blackrock_depths.cpp
@@ -355,7 +355,7 @@ public:
if (Creature* boss = instance->GetCreature(TombBossGUIDs[TombEventCounter]))
{
boss->SetFaction(FACTION_DARK_IRON_DWARVES);
- boss->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ boss->SetImmuneToPC(false);
if (Unit* target = boss->SelectNearestTarget(500))
boss->AI()->AttackStart(target);
}
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_pyroguard_emberseer.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_pyroguard_emberseer.cpp
index 5b6c102673a..da61c7d00b9 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_pyroguard_emberseer.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_pyroguard_emberseer.cpp
@@ -82,7 +82,8 @@ public:
void Reset() override
{
- me->AddUnitFlag(UnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_NOT_SELECTABLE));
+ me->AddUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
+ me->SetImmuneToPC(true);
events.Reset();
// Apply auras on spawn and reset
// DoCast(me, SPELL_FIRE_SHIELD_TRIGGER); // Need to find this in old DBC if possible
@@ -160,7 +161,8 @@ public:
me->CastSpell(me, SPELL_EMBERSEER_FULL_STRENGTH);
Talk(EMOTE_FREE_OF_BONDS);
Talk(YELL_FREE_OF_BONDS);
- me->RemoveUnitFlag(UnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_NOT_SELECTABLE));
+ me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
+ me->SetImmuneToPC(false);
events.ScheduleEvent(EVENT_ENTER_COMBAT, 2000);
}
}
@@ -343,7 +345,7 @@ public:
void Reset() override
{
- me->AddUnitFlag(UnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC));
+ me->SetImmuneToAll(true);
if (Creature* Emberseer = me->FindNearestCreature(NPC_PYROGAURD_EMBERSEER, 30.0f, true))
Emberseer->AI()->SetData(1, 3);
}
@@ -357,7 +359,7 @@ public:
{
if (data == 1 && value == 1)
{
- me->RemoveUnitFlag(UnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC));
+ me->SetImmuneToAll(false);
me->InterruptSpell(CURRENT_CHANNELED_SPELL);
_events.CancelEvent(EVENT_ENCAGED_EMBERSEER);
}
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_rend_blackhand.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_rend_blackhand.cpp
index 88fb81d8c07..10a7c828e5b 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_rend_blackhand.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_rend_blackhand.cpp
@@ -191,7 +191,7 @@ public:
void IsSummonedBy(Unit* /*summoner*/) override
{
- me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ me->SetImmuneToPC(false);
DoZoneInCombat();
}
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_nefarian.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_nefarian.cpp
index 4a199b1cac4..c42d7cdd4b4 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_nefarian.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_nefarian.cpp
@@ -211,7 +211,7 @@ public:
me->SetNpcFlags(UNIT_NPC_FLAG_NONE);
DoCast(me, SPELL_NEFARIANS_BARRIER);
me->SetStandState(UNIT_STAND_STATE_STAND);
- me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ me->SetImmuneToPC(false);
AttackStart(target);
events.ScheduleEvent(EVENT_SHADOW_BOLT, urand(3000, 10000));
events.ScheduleEvent(EVENT_FEAR, urand(10000, 20000));
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_ragnaros.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_ragnaros.cpp
index 4d113f8c757..9dd5625e973 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_ragnaros.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_ragnaros.cpp
@@ -161,7 +161,8 @@ class boss_ragnaros : public CreatureScript
break;
case EVENT_INTRO_5:
me->SetReactState(REACT_AGGRESSIVE);
- me->RemoveUnitFlag(UnitFlags(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_PC));
+ me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ me->SetImmuneToPC(false);
_introState = 2;
break;
default:
diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_nightbane.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_nightbane.cpp
index 34911d7ef98..a4463fe4a7f 100644
--- a/src/server/scripts/EasternKingdoms/Karazhan/boss_nightbane.cpp
+++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_nightbane.cpp
@@ -303,7 +303,7 @@ public:
me->GetMotionMaster()->MoveAlongSplineChain(POINT_PHASE_TWO_LANDING, SPLINE_CHAIN_SECOND_LANDING, false);
break;
case EVENT_INTRO_LANDING:
- me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ me->SetImmuneToPC(false);
me->SetInCombatWithZone();
break;
case EVENT_LAND:
diff --git a/src/server/scripts/EasternKingdoms/Karazhan/bosses_opera.cpp b/src/server/scripts/EasternKingdoms/Karazhan/bosses_opera.cpp
index e656baf77d7..32cc678e901 100644
--- a/src/server/scripts/EasternKingdoms/Karazhan/bosses_opera.cpp
+++ b/src/server/scripts/EasternKingdoms/Karazhan/bosses_opera.cpp
@@ -683,7 +683,8 @@ public:
// Anyway, I digress.
// @todo This line below is obviously a hack. Duh. I'm just coming in here to hackfix the encounter to actually be completable.
// It needs a rewrite. Badly. Please, take good care of it.
- me->RemoveUnitFlag(UnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_NON_ATTACKABLE));
+ me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ me->SetImmuneToPC(false);
CycloneTimer = 30000;
ChainLightningTimer = 10000;
}
diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp
index a8759cd9372..82b4a915627 100644
--- a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp
+++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp
@@ -130,7 +130,7 @@ public:
Initialize();
events.Reset();
me->SetFaction(FACTION_CREATURE);
- me->AddUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ me->SetImmuneToPC(true);
me->SetStandState(UNIT_STAND_STATE_KNEEL);
me->LoadEquipment(0, true);
}
@@ -236,7 +236,7 @@ public:
else
{
me->SetFaction(FACTION_MONSTER);
- me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ me->SetImmuneToPC(false);
phase = PHASE_ATTACKING;
if (Player* target = ObjectAccessor::GetPlayer(*me, playerGUID))
@@ -609,7 +609,7 @@ public:
if (m_bIsDuelInProgress)
return true;
- me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ me->SetImmuneToPC(false);
me->RemoveUnitFlag(UNIT_FLAG_UNK_15);
player->CastSpell(me, SPELL_DUEL, false);
diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp
index 1a24429aa38..a8bbb1af174 100644
--- a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp
+++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp
@@ -270,7 +270,7 @@ public:
if (summoned->GetEntry() == NPC_HIGH_INQUISITOR_VALROTH)
valrothGUID = summoned->GetGUID();
- summoned->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ summoned->SetImmuneToPC(false);
}
void SummonAcolyte(uint32 uiAmount)
@@ -609,7 +609,7 @@ public:
{
Initialize();
- me->AddUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ me->SetImmuneToPC(true);
}
bool MeetQuestCondition(Player* player)
@@ -718,7 +718,7 @@ public:
case 9:
Talk(SAY_EXEC_TIME, player);
me->SetStandState(UNIT_STAND_STATE_KNEEL);
- me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ me->SetImmuneToPC(false);
break;
case 10:
Talk(SAY_EXEC_WAITING, player);
diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp
index d3143ebe8d2..3b294a6811c 100644
--- a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp
+++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp
@@ -446,7 +446,7 @@ public:
headGUID.Clear();
}
- me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ me->SetImmuneToPC(false);
//instance->SetBossState(DATA_HORSEMAN_EVENT, NOT_STARTED);
}
diff --git a/src/server/scripts/EasternKingdoms/ShadowfangKeep/boss_apothecary_hummel.cpp b/src/server/scripts/EasternKingdoms/ShadowfangKeep/boss_apothecary_hummel.cpp
index 1cfbabb638d..3172c4e71fa 100644
--- a/src/server/scripts/EasternKingdoms/ShadowfangKeep/boss_apothecary_hummel.cpp
+++ b/src/server/scripts/EasternKingdoms/ShadowfangKeep/boss_apothecary_hummel.cpp
@@ -136,7 +136,7 @@ class boss_apothecary_hummel : public CreatureScript
events.SetPhase(PHASE_INTRO);
events.ScheduleEvent(EVENT_HUMMEL_SAY_0, Milliseconds(1));
- me->AddUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ me->SetImmuneToPC(true);
me->SetFaction(FACTION_MONSTER);
DummyEntryCheckPredicate pred;
summons.DoAction(ACTION_START_EVENT, pred);
@@ -217,8 +217,7 @@ class boss_apothecary_hummel : public CreatureScript
break;
case EVENT_START_FIGHT:
{
- me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
- me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC);
+ me->SetImmuneToAll(false);
me->SetInCombatWithZone();
events.ScheduleEvent(EVENT_CALL_BAXTER, Seconds(6));
events.ScheduleEvent(EVENT_CALL_FRYE, Seconds(14));
@@ -293,14 +292,13 @@ struct npc_apothecary_genericAI : public ScriptedAI
{
if (action == ACTION_START_EVENT)
{
- me->AddUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ me->SetImmuneToPC(true);
me->SetFaction(FACTION_MONSTER);
me->GetMotionMaster()->MovePoint(1, _movePos);
}
else if (action == ACTION_START_FIGHT)
{
- me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
- me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC);
+ me->SetImmuneToAll(false);
me->SetInCombatWithZone();
}
}
diff --git a/src/server/scripts/EasternKingdoms/ShadowfangKeep/instance_shadowfang_keep.cpp b/src/server/scripts/EasternKingdoms/ShadowfangKeep/instance_shadowfang_keep.cpp
index 0255d8ede37..0872c8cfe0e 100644
--- a/src/server/scripts/EasternKingdoms/ShadowfangKeep/instance_shadowfang_keep.cpp
+++ b/src/server/scripts/EasternKingdoms/ShadowfangKeep/instance_shadowfang_keep.cpp
@@ -258,7 +258,7 @@ public:
case 1:
{
Creature* summon = pArchmage->SummonCreature(pArchmage->GetEntry(), SpawnLocation[4], TEMPSUMMON_TIMED_DESPAWN, 10000);
- summon->AddUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ summon->SetImmuneToPC(true);
summon->SetReactState(REACT_DEFENSIVE);
summon->CastSpell(summon, SPELL_ASHCROMBE_TELEPORT, true);
summon->AI()->Talk(SAY_ARCHMAGE);
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp
index d0758b0d1ce..02e65389a16 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp
@@ -335,7 +335,7 @@ public:
void AttackStart(Unit* who) override
{
- if (who && !who->HasUnitFlag(UNIT_FLAG_IMMUNE_TO_PC))
+ if (who && !who->IsImmuneToPC())
npc_escortAI::AttackStart(who);
}
@@ -359,7 +359,7 @@ public:
if (Creature* temp = me->SummonCreature((uint32)RiftAndSpawnsLocations[i][0], RiftAndSpawnsLocations[timeRiftID][1], RiftAndSpawnsLocations[timeRiftID][2], RiftAndSpawnsLocations[timeRiftID][3], RiftAndSpawnsLocations[timeRiftID][4], TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 900000))
{
guidVector[i-timeRiftID-1] = temp->GetGUID();
- temp->AddUnitFlag(UnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC));
+ temp->SetImmuneToAll(true);
temp->SetReactState(REACT_PASSIVE);
temp->GetMotionMaster()->MovePoint(0, RiftAndSpawnsLocations[i][1], RiftAndSpawnsLocations[i][2], RiftAndSpawnsLocations[i][3]);
if ((uint32)RiftAndSpawnsLocations[i][0] == NPC_EPOCH)
@@ -951,7 +951,7 @@ public:
{
disguised2->UpdateEntry(NPC_INFINITE_HUNTER);
//Make them unattackable
- disguised2->AddUnitFlag(UnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC));
+ disguised2->SetImmuneToAll(true);
disguised2->SetReactState(REACT_PASSIVE);
}
JumpToNextStep(2000);
@@ -961,7 +961,7 @@ public:
{
disguised1->UpdateEntry(NPC_INFINITE_AGENT);
//Make them unattackable
- disguised1->AddUnitFlag(UnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC));
+ disguised1->SetImmuneToAll(true);
disguised1->SetReactState(REACT_PASSIVE);
}
JumpToNextStep(2000);
@@ -971,7 +971,7 @@ public:
{
disguised0->UpdateEntry(NPC_INFINITE_ADVERSARY);
//Make them unattackable
- disguised0->AddUnitFlag(UnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC));
+ disguised0->SetImmuneToAll(true);
disguised0->SetReactState(REACT_PASSIVE);
}
JumpToNextStep(2000);
@@ -985,7 +985,7 @@ public:
for (uint32 i = 0; i< ENCOUNTER_DRACONIAN_NUMBER; ++i)
if (Creature* temp = ObjectAccessor::GetCreature(*me, infiniteDraconianGUID[i]))
{
- temp->RemoveUnitFlag(UnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC));
+ temp->SetImmuneToAll(false);
temp->SetReactState(REACT_AGGRESSIVE);
}
JumpToNextStep(5000);
@@ -1043,7 +1043,7 @@ public:
if (Creature* epoch = ObjectAccessor::GetCreature(*me, epochGUID))
{
//Make Epoch attackable
- epoch->RemoveUnitFlag(UnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_NON_ATTACKABLE));
+ epoch->SetImmuneToAll(false);
epoch->SetReactState(REACT_AGGRESSIVE);
}
diff --git a/src/server/scripts/Kalimdor/WailingCaverns/wailing_caverns.cpp b/src/server/scripts/Kalimdor/WailingCaverns/wailing_caverns.cpp
index 2c99ade96d3..2b862ec0b0f 100644
--- a/src/server/scripts/Kalimdor/WailingCaverns/wailing_caverns.cpp
+++ b/src/server/scripts/Kalimdor/WailingCaverns/wailing_caverns.cpp
@@ -89,7 +89,7 @@ public:
currentEvent = 0;
eventProgress = 0;
me->setActive(true);
- me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ me->SetImmuneToPC(false);
}
uint32 eventTimer;
@@ -330,7 +330,7 @@ public:
Talk(SAY_MAKE_PREPARATIONS);
me->SetFaction(FACTION_ESCORTEE_N_NEUTRAL_ACTIVE);
- me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ me->SetImmuneToPC(false);
Start(false, false, player->GetGUID());
SetDespawnAtFar(false);
diff --git a/src/server/scripts/Kalimdor/zone_bloodmyst_isle.cpp b/src/server/scripts/Kalimdor/zone_bloodmyst_isle.cpp
index 54265af5b96..80842ee3ddc 100644
--- a/src/server/scripts/Kalimdor/zone_bloodmyst_isle.cpp
+++ b/src/server/scripts/Kalimdor/zone_bloodmyst_isle.cpp
@@ -630,7 +630,7 @@ public:
_explosivesGuids.clear();
if (Creature* sironas = me->FindNearestCreature(NPC_SIRONAS, SIZE_OF_GRIDS))
{
- sironas->RemoveUnitFlag(UnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC));
+ sironas->SetImmuneToAll(false);
me->SetFacingToObject(sironas);
}
_moveTimer = 1 * IN_MILLISECONDS;
diff --git a/src/server/scripts/Kalimdor/zone_dustwallow_marsh.cpp b/src/server/scripts/Kalimdor/zone_dustwallow_marsh.cpp
index fe11aefc77d..6fc8ccf9238 100644
--- a/src/server/scripts/Kalimdor/zone_dustwallow_marsh.cpp
+++ b/src/server/scripts/Kalimdor/zone_dustwallow_marsh.cpp
@@ -197,7 +197,7 @@ public:
return;
me->SetHomePosition(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), me->GetOrientation());
- me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ me->SetImmuneToPC(false);
SetCombatMovement(true);
if (me->IsInCombat())
diff --git a/src/server/scripts/Kalimdor/zone_moonglade.cpp b/src/server/scripts/Kalimdor/zone_moonglade.cpp
index 2f0757ab568..853c174edb5 100644
--- a/src/server/scripts/Kalimdor/zone_moonglade.cpp
+++ b/src/server/scripts/Kalimdor/zone_moonglade.cpp
@@ -52,7 +52,7 @@ public:
{
npc_omenAI(Creature* creature) : ScriptedAI(creature)
{
- me->AddUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ me->SetImmuneToPC(true);
me->GetMotionMaster()->MovePoint(1, 7549.977f, -2855.137f, 456.9678f);
}
@@ -66,7 +66,7 @@ public:
if (pointId == 1)
{
me->SetHomePosition(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), me->GetOrientation());
- me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ me->SetImmuneToPC(false);
if (Player* player = me->SelectNearestPlayer(40.0f))
AttackStart(player);
}
diff --git a/src/server/scripts/Kalimdor/zone_tanaris.cpp b/src/server/scripts/Kalimdor/zone_tanaris.cpp
index 06398e21fe5..677ccfee10a 100644
--- a/src/server/scripts/Kalimdor/zone_tanaris.cpp
+++ b/src/server/scripts/Kalimdor/zone_tanaris.cpp
@@ -365,7 +365,7 @@ public:
me->SetFaction(FACTION_ESCORTEE_N_NEUTRAL_PASSIVE);
me->SetFullHealth();
me->SetStandState(UNIT_STAND_STATE_STAND);
- me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ me->SetImmuneToPC(false);
Talk(SAY_OOX_START);
Start(true, false, player->GetGUID());
diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_general_zarithrian.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_general_zarithrian.cpp
index 8dddd60e7ff..a20faea64fb 100644
--- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_general_zarithrian.cpp
+++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_general_zarithrian.cpp
@@ -77,7 +77,10 @@ class boss_general_zarithrian : public CreatureScript
{
_Reset();
if (instance->GetBossState(DATA_SAVIANA_RAGEFIRE) == DONE && instance->GetBossState(DATA_BALTHARUS_THE_WARBORN) == DONE)
- me->RemoveUnitFlag(UnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_NOT_SELECTABLE));
+ {
+ me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
+ me->SetImmuneToPC(false);
+ }
}
bool CanAIAttack(Unit const* target) const override
diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/instance_ruby_sanctum.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/instance_ruby_sanctum.cpp
index 943a2e9541e..708f51879f5 100644
--- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/instance_ruby_sanctum.cpp
+++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/instance_ruby_sanctum.cpp
@@ -176,7 +176,10 @@ class instance_ruby_sanctum : public InstanceMapScript
{
if (GetBossState(DATA_SAVIANA_RAGEFIRE) == DONE && GetBossState(DATA_BALTHARUS_THE_WARBORN) == DONE)
if (Creature* zarithrian = GetCreature(DATA_GENERAL_ZARITHRIAN))
- zarithrian->RemoveUnitFlag(UnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_NOT_SELECTABLE));
+ {
+ zarithrian->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
+ zarithrian->SetImmuneToPC(false);
+ }
}
void SetData(uint32 type, uint32 data) override
diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp
index 4367341f074..4f07eaa52ea 100644
--- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp
+++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp
@@ -110,11 +110,10 @@ void AggroAllPlayers(Creature* temp)
if (player->IsAlive())
{
- temp->RemoveUnitFlag(UnitFlags(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_PC));
+ temp->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ temp->SetImmuneToPC(true);
temp->SetReactState(REACT_AGGRESSIVE);
- temp->SetInCombatWith(player);
- player->SetInCombatWith(temp);
- temp->GetThreatManager().AddThreat(player, 0.0f);
+ temp->EngageWithTarget(player);
}
}
}
@@ -329,7 +328,8 @@ public:
me->SetReactState(REACT_PASSIVE);
// THIS IS A HACK, SHOULD BE REMOVED WHEN THE EVENT IS FULL SCRIPTED
- me->AddUnitFlag(UnitFlags(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_PC));
+ me->AddUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ me->SetImmuneToPC(true);
}
void Initialize()
@@ -466,7 +466,8 @@ public:
me->SetReactState(REACT_PASSIVE);
// THIS IS A HACK, SHOULD BE REMOVED WHEN THE EVENT IS FULL SCRIPTED
- me->AddUnitFlag(UnitFlags(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_PC));
+ me->AddUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ me->SetImmuneToPC(true);
}
void Initialize()
@@ -609,7 +610,8 @@ public:
me->SetReactState(REACT_PASSIVE);
// THIS IS A HACK, SHOULD BE REMOVED WHEN THE EVENT IS FULL SCRIPTED
- me->AddUnitFlag(UnitFlags(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_PC));
+ me->AddUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ me->SetImmuneToPC(true);
}
void Initialize()
@@ -760,7 +762,8 @@ public:
me->SetReactState(REACT_PASSIVE);
// THIS IS A HACK, SHOULD BE REMOVED WHEN THE EVENT IS FULL SCRIPTED
- me->AddUnitFlag(UnitFlags(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_PC));
+ me->AddUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ me->SetImmuneToPC(true);
}
void Initialize()
@@ -920,7 +923,8 @@ public:
me->SetReactState(REACT_PASSIVE);
// THIS IS A HACK, SHOULD BE REMOVED WHEN THE EVENT IS FULL SCRIPTED
- me->AddUnitFlag(UnitFlags(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_PC));
+ me->AddUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ me->SetImmuneToPC(true);
}
void Initialize()
diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_faction_champions.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_faction_champions.cpp
index 40301954ecb..44afc9f7deb 100644
--- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_faction_champions.cpp
+++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_faction_champions.cpp
@@ -487,7 +487,8 @@ class boss_toc_champion_controller : public CreatureScript
{
_summons.Summon(champion);
champion->SetReactState(REACT_PASSIVE);
- champion->AddUnitFlag(UnitFlags(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_PC));
+ champion->AddUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ champion->SetImmuneToPC(false);
if (playerTeam == ALLIANCE)
{
champion->SetHomePosition(vChampionJumpTarget[pos].GetPositionX(), vChampionJumpTarget[pos].GetPositionY(), vChampionJumpTarget[pos].GetPositionZ(), 0);
@@ -518,7 +519,8 @@ class boss_toc_champion_controller : public CreatureScript
if (Creature* summon = ObjectAccessor::GetCreature(*me, *i))
{
summon->SetReactState(REACT_AGGRESSIVE);
- summon->RemoveUnitFlag(UnitFlags(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_PC));
+ summon->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ summon->SetImmuneToPC(false);
}
}
break;
diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_lord_jaraxxus.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_lord_jaraxxus.cpp
index 4ca91b49f9a..54378f8b821 100644
--- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_lord_jaraxxus.cpp
+++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_lord_jaraxxus.cpp
@@ -118,7 +118,8 @@ class boss_jaraxxus : public CreatureScript
_JustReachedHome();
instance->SetBossState(BOSS_JARAXXUS, FAIL);
DoCast(me, SPELL_JARAXXUS_CHAINS);
- me->AddUnitFlag(UnitFlags(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_PC));
+ me->AddUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ me->SetImmuneToPC(true);
}
void KilledUnit(Unit* who) override
diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp
index 1982fe17452..fa54863673a 100644
--- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp
+++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp
@@ -204,7 +204,8 @@ class boss_gormok : public CreatureScript
{
case 0:
instance->DoUseDoorOrButton(instance->GetGuidData(GO_MAIN_GATE_DOOR));
- me->RemoveUnitFlag(UnitFlags(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_IMMUNE_TO_PC));
+ me->RemoveUnitFlag(UnitFlags(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE));
+ me->SetImmuneToPC(false);
me->SetReactState(REACT_AGGRESSIVE);
me->SetInCombatWithZone();
break;
@@ -613,7 +614,8 @@ struct boss_jormungarAI : public BossAI
case EVENT_SUMMON_ACIDMAW:
if (Creature* acidmaw = me->SummonCreature(NPC_ACIDMAW, ToCCommonLoc[9].GetPositionX(), ToCCommonLoc[9].GetPositionY(), ToCCommonLoc[9].GetPositionZ(), 5, TEMPSUMMON_MANUAL_DESPAWN))
{
- acidmaw->RemoveUnitFlag(UnitFlags(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_IMMUNE_TO_PC));
+ acidmaw->RemoveUnitFlag(UnitFlags(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE));
+ acidmaw->SetImmuneToPC(false);
acidmaw->SetReactState(REACT_AGGRESSIVE);
acidmaw->SetInCombatWithZone();
acidmaw->CastSpell(acidmaw, SPELL_EMERGE);
@@ -770,7 +772,8 @@ class boss_dreadscale : public CreatureScript
{
case 0:
instance->DoCloseDoorOrButton(instance->GetGuidData(GO_MAIN_GATE_DOOR));
- me->RemoveUnitFlag(UnitFlags(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_IMMUNE_TO_PC));
+ me->RemoveUnitFlag(UnitFlags(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE));
+ me->SetImmuneToPC(false);
me->SetReactState(REACT_AGGRESSIVE);
me->SetInCombatWithZone();
break;
@@ -943,7 +946,8 @@ class boss_icehowl : public CreatureScript
break;
case 2:
instance->DoUseDoorOrButton(instance->GetGuidData(GO_MAIN_GATE_DOOR));
- me->RemoveUnitFlag(UnitFlags(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_IMMUNE_TO_PC));
+ me->RemoveUnitFlag(UnitFlags(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE));
+ me->SetImmuneToPC(false);
me->SetReactState(REACT_AGGRESSIVE);
me->SetInCombatWithZone();
break;
diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp
index f138fc0dd83..07ff15a8a64 100644
--- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp
+++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp
@@ -194,7 +194,8 @@ struct boss_twin_baseAI : public BossAI
switch (uiId)
{
case 1:
- me->RemoveUnitFlag(UnitFlags(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_NOT_SELECTABLE));
+ me->RemoveUnitFlag(UnitFlags(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE));
+ me->SetImmuneToPC(false);
me->SetReactState(REACT_AGGRESSIVE);
break;
default:
diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.cpp
index aed5453640a..84f1868912c 100644
--- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.cpp
+++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.cpp
@@ -240,7 +240,8 @@ class npc_announcer_toc10 : public CreatureScript
if (Creature* jaraxxus = ObjectAccessor::GetCreature(*player, instance->GetGuidData(NPC_JARAXXUS)))
{
jaraxxus->RemoveAurasDueToSpell(SPELL_JARAXXUS_CHAINS);
- jaraxxus->RemoveUnitFlag(UnitFlags(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_PC));
+ jaraxxus->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ jaraxxus->SetImmuneToPC(false);
jaraxxus->SetReactState(REACT_DEFENSIVE);
jaraxxus->SetInCombatWithZone();
}
@@ -429,7 +430,8 @@ class npc_fizzlebang_toc : public CreatureScript
_instance->SetData(TYPE_EVENT, 1180);
if (Creature* jaraxxus = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(NPC_JARAXXUS)))
{
- jaraxxus->RemoveUnitFlag(UnitFlags(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_PC));
+ jaraxxus->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ jaraxxus->SetImmuneToPC(false);
jaraxxus->SetReactState(REACT_AGGRESSIVE);
jaraxxus->SetInCombatWithZone();
}
@@ -526,7 +528,8 @@ class npc_fizzlebang_toc : public CreatureScript
Talk(SAY_STAGE_1_04);
if (Creature* jaraxxus = me->SummonCreature(NPC_JARAXXUS, ToCCommonLoc[1].GetPositionX(), ToCCommonLoc[1].GetPositionY(), ToCCommonLoc[1].GetPositionZ(), 5.0f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, DESPAWN_TIME))
{
- jaraxxus->AddUnitFlag(UnitFlags(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_PC));
+ jaraxxus->AddUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ jaraxxus->SetImmuneToPC(true);
jaraxxus->SetReactState(REACT_PASSIVE);
jaraxxus->GetMotionMaster()->MovePoint(0, ToCCommonLoc[1].GetPositionX(), ToCCommonLoc[1].GetPositionY()-10, ToCCommonLoc[1].GetPositionZ());
}
diff --git a/src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp b/src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp
index 661657de3e8..2e96274164d 100644
--- a/src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp
+++ b/src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp
@@ -213,7 +213,7 @@ class npc_drakkari_invader : public CreatureScript
if (type == POINT_MOTION_TYPE && pointId == POINT_LANDING)
{
me->Dismount();
- me->RemoveUnitFlag(UnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC));
+ me->SetImmuneToAll(false);
DoCastAOE(SPELL_INVADER_TAUNT);
}
}
diff --git a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_horAI.cpp b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_horAI.cpp
index 903cf1bf749..eb7b02364b8 100644
--- a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_horAI.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_horAI.cpp
@@ -27,7 +27,7 @@ void boss_horAI::Reset()
{
_Reset();
me->SetVisible(false);
- me->AddUnitFlag(UnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC));
+ me->SetImmuneToAll(true);
me->SetReactState(REACT_PASSIVE);
if (instance->GetData(DATA_WAVE_COUNT) != NOT_STARTED)
instance->ProcessEvent(nullptr, EVENT_DO_WIPE);
@@ -38,7 +38,7 @@ void boss_horAI::DoAction(int32 actionId)
switch (actionId)
{
case ACTION_ENTER_COMBAT: // called by InstanceScript when boss shall enter in combat.
- me->RemoveUnitFlag(UnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC));
+ me->SetImmuneToAll(false);
me->SetReactState(REACT_AGGRESSIVE);
DoZoneInCombat(me, 150.0f);
break;
diff --git a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp
index 5fa460e3370..d7003359e44 100644
--- a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp
@@ -1032,7 +1032,7 @@ class npc_jaina_or_sylvanas_escape_hor : public CreatureScript
if (Creature* lichking = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING_ESCAPE)))
{
- lichking->AddUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ lichking->SetImmuneToPC(true);
lichking->RemoveAllAttackers();
DeleteAllFromThreatList(lichking, me->GetGUID());
@@ -1046,7 +1046,8 @@ class npc_jaina_or_sylvanas_escape_hor : public CreatureScript
case EVENT_ESCAPE_6:
if (Creature* lichking = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING_ESCAPE)))
{
- lichking->RemoveUnitFlag(UnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_PACIFIED));
+ lichking->RemoveUnitFlag(UNIT_FLAG_PACIFIED);
+ lichking->SetImmuneToPC(false);
if (_instance->GetData(DATA_TEAM_IN_INSTANCE) == ALLIANCE)
{
@@ -1929,7 +1930,7 @@ class npc_frostsworn_general : public CreatureScript
{
if (Creature* reflection = me->SummonCreature(NPC_REFLECTION, *target, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 3000))
{
- reflection->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ reflection->SetImmuneToPC(false);
target->CastSpell(reflection, SPELL_CLONE, true);
target->CastSpell(reflection, SPELL_GHOST_VISUAL, true);
reflection->AI()->AttackStart(target);
@@ -2164,7 +2165,7 @@ struct npc_escape_event_trash : public ScriptedAI
DoZoneInCombat(me, 0.0f);
if (Creature* leader = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_ESCAPE_LEADER)))
{
- me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ me->SetImmuneToPC(false);
me->SetInCombatWith(leader);
leader->SetInCombatWith(me);
AddThreat(leader, 0.0f);
@@ -2595,7 +2596,7 @@ class npc_quel_delar_sword : public CreatureScript
if (_intro)
_events.ScheduleEvent(EVENT_QUEL_DELAR_INIT, 0);
else
- me->RemoveUnitFlag(UnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC));
+ me->SetImmuneToAll(false);
}
void EnterCombat(Unit* /*victim*/) override
@@ -2663,7 +2664,7 @@ class npc_quel_delar_sword : public CreatureScript
case EVENT_QUEL_DELAR_FIGHT:
Talk(SAY_QUEL_DELAR_SWORD);
me->GetMotionMaster()->MovePoint(0, QuelDelarMovement[2]);
- me->RemoveUnitFlag(UnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC));
+ me->SetImmuneToAll(false);
break;
default:
break;
diff --git a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp
index 6dedf185277..3d83f74d33a 100644
--- a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp
@@ -596,7 +596,8 @@ class instance_halls_of_reflection : public InstanceMapScript
if (Creature* temp = instance->GetCreature(guid))
{
temp->CastSpell(temp, SPELL_SPIRIT_ACTIVATE, false);
- temp->RemoveUnitFlag(UnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_NOT_SELECTABLE));
+ temp->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
+ temp->SetImmuneToAll(false);
temp->AI()->DoZoneInCombat(temp, 100.00f);
}
}
diff --git a/src/server/scripts/Northrend/Gundrak/boss_drakkari_colossus.cpp b/src/server/scripts/Northrend/Gundrak/boss_drakkari_colossus.cpp
index 337ee6e2ad3..4d0c3ecc5af 100644
--- a/src/server/scripts/Northrend/Gundrak/boss_drakkari_colossus.cpp
+++ b/src/server/scripts/Northrend/Gundrak/boss_drakkari_colossus.cpp
@@ -108,7 +108,7 @@ class boss_drakkari_colossus : public CreatureScript
if (GetData(DATA_INTRO_DONE))
{
me->SetReactState(REACT_AGGRESSIVE);
- me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ me->SetImmuneToPC(false);
me->RemoveAura(SPELL_FREEZE_ANIM);
}
@@ -140,7 +140,7 @@ class boss_drakkari_colossus : public CreatureScript
me->GetMotionMaster()->MoveIdle();
me->SetReactState(REACT_PASSIVE);
- me->AddUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ me->SetImmuneToPC(true);
DoCast(me, SPELL_FREEZE_ANIM);
break;
case ACTION_UNFREEZE_COLOSSUS:
@@ -149,7 +149,7 @@ class boss_drakkari_colossus : public CreatureScript
return;
me->SetReactState(REACT_AGGRESSIVE);
- me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ me->SetImmuneToPC(false);
me->RemoveAura(SPELL_FREEZE_ANIM);
me->SetInCombatWithZone();
@@ -163,7 +163,7 @@ class boss_drakkari_colossus : public CreatureScript
void DamageTaken(Unit* /*attacker*/, uint32& damage) override
{
- if (me->HasUnitFlag(UNIT_FLAG_IMMUNE_TO_PC))
+ if (me->IsImmuneToPC())
damage = 0;
if (phase == COLOSSUS_PHASE_NORMAL ||
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp
index c1629bbcb84..7f3e76a2406 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp
@@ -244,7 +244,8 @@ class boss_blood_council_controller : public CreatureScript
for (uint32 bossData : PrincesData)
if (Creature* prince = ObjectAccessor::GetCreature(*me, instance->GetGuidData(bossData)))
{
- prince->RemoveUnitFlag(UnitFlags(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_PC));
+ prince->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ prince->SetImmuneToPC(false);
if (bossData == DATA_PRINCE_VALANAR)
prince->SetHealth(prince->GetMaxHealth());
}
@@ -453,7 +454,7 @@ struct BloodPrincesBossAI : public BossAI
summons.DespawnAll();
me->SetCombatPulseDelay(0);
- me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ me->SetImmuneToPC(false);
_isEmpowered = false;
me->SetHealth(_spawnHealth);
instance->SetData(DATA_ORB_WHISPERER_ACHIEVEMENT, uint32(true));
@@ -562,7 +563,8 @@ struct BloodPrincesBossAI : public BossAI
{
case ACTION_STAND_UP:
me->RemoveAurasDueToSpell(SPELL_FEIGN_DEATH);
- me->RemoveUnitFlag(UnitFlags(UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_IMMUNE_TO_PC));
+ me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
+ me->SetImmuneToPC(false);
me->RemoveDynamicFlag(UNIT_DYNFLAG_DEAD);
me->RemoveUnitFlag2(UNIT_FLAG2_FEIGN_DEATH);
me->m_Events.AddEvent(new StandUpEvent(me), me->m_Events.CalculateTime(1000));
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp
index 28635ee990d..1f206826126 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp
@@ -294,7 +294,7 @@ class boss_deathbringer_saurfang : public CreatureScript
events.Reset();
events.SetPhase(PHASE_COMBAT);
- me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ me->SetImmuneToPC(false);
if (!_introDone)
{
DoCast(me, SPELL_GRIP_OF_AGONY);
@@ -322,7 +322,7 @@ class boss_deathbringer_saurfang : public CreatureScript
void AttackStart(Unit* victim) override
{
- if (me->HasUnitFlag(UNIT_FLAG_IMMUNE_TO_PC))
+ if (me->IsImmuneToPC())
return;
ScriptedAI::AttackStart(victim);
@@ -332,7 +332,7 @@ class boss_deathbringer_saurfang : public CreatureScript
{
ScriptedAI::EnterEvadeMode(why);
if (_introDone)
- me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ me->SetImmuneToPC(false);
}
void JustReachedHome() override
@@ -368,7 +368,8 @@ class boss_deathbringer_saurfang : public CreatureScript
_dead = true;
_JustDied();
_EnterEvadeMode();
- me->AddUnitFlag(UnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_NOT_SELECTABLE));
+ me->AddUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
+ me->SetImmuneToPC(true);
DoCastAOE(SPELL_REMOVE_MARKS_OF_THE_FALLEN_CHAMPION);
DoCast(me, SPELL_ACHIEVEMENT, true);
@@ -488,7 +489,7 @@ class boss_deathbringer_saurfang : public CreatureScript
case EVENT_INTRO_FINISH:
events.SetPhase(PHASE_COMBAT);
_introDone = true;
- me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ me->SetImmuneToPC(false);
break;
case EVENT_SUMMON_BLOOD_BEAST:
for (uint32 i10 = 0; i10 < 2; ++i10)
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp
index 9eec05cf352..55ae1114639 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp
@@ -251,7 +251,10 @@ class boss_professor_putricide : public CreatureScript
me->GetMotionMaster()->MovementExpired();
if (instance->GetBossState(DATA_ROTFACE) == DONE && instance->GetBossState(DATA_FESTERGUT) == DONE)
- me->RemoveUnitFlag(UnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_NOT_SELECTABLE));
+ {
+ me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
+ me->SetImmuneToPC(false);
+ }
}
void EnterCombat(Unit* who) override
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp
index c52fe72b7c3..87fe0eff1ec 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp
@@ -851,7 +851,7 @@ class npc_rimefang : public CreatureScript
me->setActive(true);
me->SetSpeedRate(MOVE_FLIGHT, 2.0f);
- me->AddUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ me->SetImmuneToPC(true);
float moveTime = me->GetExactDist(&RimefangFlyPos) / (me->GetSpeed(MOVE_FLIGHT) * 0.001f);
me->m_Events.AddEvent(new FrostwyrmLandEvent(*me, RimefangLandPos), me->m_Events.CalculateTime(uint64(moveTime) + 250));
me->SetDefaultMovementType(IDLE_MOTION_TYPE);
@@ -873,7 +873,7 @@ class npc_rimefang : public CreatureScript
me->SetAnimTier(UNIT_BYTE1_FLAG_NONE, false);
me->SetHomePosition(RimefangLandPos);
me->SetFacingTo(RimefangLandPos.GetOrientation());
- me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ me->SetImmuneToPC(false);
me->SetReactState(REACT_AGGRESSIVE);
}
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp
index 9a64fed8836..5db75800c92 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp
@@ -508,7 +508,7 @@ class boss_the_lich_king : public CreatureScript
void Reset() override
{
_Reset();
- me->AddUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ me->SetImmuneToPC(true);
me->SetReactState(REACT_PASSIVE);
events.SetPhase(PHASE_INTRO);
Initialize();
@@ -917,7 +917,7 @@ class boss_the_lich_king : public CreatureScript
break;
case EVENT_FINISH_INTRO:
me->SetWalk(false);
- me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ me->SetImmuneToPC(false);
me->SetReactState(REACT_AGGRESSIVE);
events.SetPhase(PHASE_ONE);
break;
@@ -1836,7 +1836,7 @@ class npc_terenas_menethil : public CreatureScript
if (Creature* lichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
{
lichKing->AI()->DoAction(ACTION_FINISH_OUTRO);
- lichKing->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC);
+ lichKing->SetImmuneToNPC(false);
if (Creature* tirion = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_HIGHLORD_TIRION_FORDRING)))
tirion->AI()->AttackStart(lichKing);
}
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp
index 7ebd36173f2..9304af7fd8d 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp
@@ -841,7 +841,7 @@ class boss_sister_svalna : public CreatureScript
case ACTION_START_GAUNTLET:
me->setActive(true);
_isEventInProgress = true;
- me->AddUnitFlag(UnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC));
+ me->SetImmuneToAll(true);
events.ScheduleEvent(EVENT_SVALNA_START, 25000);
break;
case ACTION_RESURRECT_CAPTAINS:
@@ -875,7 +875,7 @@ class boss_sister_svalna : public CreatureScript
_isEventInProgress = false;
me->setActive(false);
- me->RemoveUnitFlag(UnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC));
+ me->SetImmuneToAll(false);
me->SetDisableGravity(false);
me->SetHover(false);
}
@@ -1046,7 +1046,7 @@ class npc_crok_scourgebane : public CreatureScript
{
// pause pathing until trash pack is cleared
case 0:
- me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC);
+ me->SetImmuneToNPC(false);
Talk(SAY_CROK_COMBAT_WP_0);
if (!_aliveTrash.empty())
SetEscortPaused(true);
@@ -1792,7 +1792,8 @@ class spell_icc_stoneform : public SpellScriptLoader
if (Creature* target = GetTarget()->ToCreature())
{
target->SetReactState(REACT_PASSIVE);
- target->AddUnitFlag(UnitFlags(UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_IMMUNE_TO_PC));
+ target->AddUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
+ target->SetImmuneToPC(true);
target->SetEmoteState(EMOTE_STATE_CUSTOM_SPELL_02);
}
}
@@ -1802,7 +1803,8 @@ class spell_icc_stoneform : public SpellScriptLoader
if (Creature* target = GetTarget()->ToCreature())
{
target->SetReactState(REACT_AGGRESSIVE);
- target->RemoveUnitFlag(UnitFlags(UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_IMMUNE_TO_PC));
+ target->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
+ target->SetImmuneToPC(false);
target->SetEmoteState(EMOTE_ONESHOT_NONE);
}
}
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp b/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp
index 6ccda367344..cbf20738444 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp
@@ -224,7 +224,8 @@ public:
return;
_Reset();
me->SetReactState(REACT_PASSIVE);
- me->AddUnitFlag(UnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_NOT_SELECTABLE));
+ me->AddUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
+ me->SetImmuneToPC(true);
_skeletonCount = 0;
_bansheeCount = 0;
_abominationCount = 0;
@@ -424,7 +425,8 @@ public:
case EVENT_PHASE_TWO:
me->CastStop();
events.SetPhase(PHASE_TWO);
- me->RemoveUnitFlag(UnitFlags(UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_IMMUNE_TO_PC));
+ me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
+ me->SetImmuneToPC(false);
ResetThreatList();
me->SetReactState(REACT_AGGRESSIVE);
Talk(EMOTE_PHASE_TWO);
@@ -521,7 +523,7 @@ public:
case ACTION_BEGIN_ENCOUNTER:
if (instance->GetBossState(BOSS_KELTHUZAD) != NOT_STARTED)
return;
- me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ me->SetImmuneToPC(false);
instance->SetBossState(BOSS_KELTHUZAD, IN_PROGRESS);
events.SetPhase(PHASE_ONE);
DoZoneInCombat();
@@ -805,7 +807,7 @@ public:
me->RemoveAllAuras();
me->CombatStop();
me->StopMoving();
- me->AddUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ me->SetImmuneToPC(true);
me->DespawnOrUnsummon(30 * IN_MILLISECONDS); // just in case anything interrupts the movement
me->GetMotionMaster()->MoveTargetedHome();
default:
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp b/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp
index 65f0f47e9a9..acdc627cc8b 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp
@@ -105,7 +105,8 @@ public:
{
DoCastAOE(SPELL_TELEPORT_BACK);
me->SetReactState(REACT_AGGRESSIVE);
- me->RemoveUnitFlag(UnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_NOT_SELECTABLE));
+ me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
+ me->SetImmuneToPC(false);
}
balconyCount = 0;
@@ -243,7 +244,8 @@ public:
case EVENT_BALCONY:
events.SetPhase(PHASE_BALCONY);
me->SetReactState(REACT_PASSIVE);
- me->AddUnitFlag(UnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_NOT_SELECTABLE));
+ me->AddUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
+ me->SetImmuneToPC(true, true);
me->AttackStop();
me->StopMoving();
me->RemoveAllAuras();
@@ -299,7 +301,8 @@ public:
EnterPhaseGround();
break;
case EVENT_GROUND_ATTACKABLE:
- me->RemoveUnitFlag(UnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_NOT_SELECTABLE));
+ me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
+ me->SetImmuneToPC(false);
me->SetReactState(REACT_AGGRESSIVE);
break;
}
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp b/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp
index 75701715e31..bdb68a81d4b 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp
@@ -320,7 +320,8 @@ struct boss_thaddius : public BossAI
me->DespawnOrUnsummon();
me->SetRespawnTime(initial ? 5 : 30);
- me->AddUnitFlag(UnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_STUNNED));
+ me->AddUnitFlag(UnitFlags(UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_STUNNED));
+ me->SetImmuneToPC(true);
events.SetPhase(PHASE_RESETTING);
if (Creature* feugen = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_FEUGEN)))
feugen->AI()->DoAction(ACTION_BEGIN_RESET_ENCOUNTER);
@@ -385,7 +386,7 @@ struct boss_thaddius : public BossAI
ballLightningUnlocked = false;
me->RemoveAura(SPELL_THADDIUS_INACTIVE_VISUAL);
me->RemoveUnitFlag(UNIT_FLAG_STUNNED);
- me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ me->SetImmuneToPC(false);
me->SetReactState(REACT_AGGRESSIVE);
DoZoneInCombat();
@@ -640,7 +641,7 @@ public:
if (!isOverloading)
{
isOverloading = true;
- caster->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ caster->SetImmuneToPC(false);
if (Creature* creatureCaster = caster->ToCreature())
creatureCaster->AI()->Talk(EMOTE_TESLA_LINK_BREAKS);
me->RemoveAura(SPELL_STALAGG_CHAIN_VISUAL);
@@ -657,7 +658,7 @@ public:
refreshBeam = false;
caster->CastStop();
caster->CastSpell(me, SPELL_STALAGG_CHAIN_VISUAL, true);
- caster->AddUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ caster->SetImmuneToPC(true);
}
}
@@ -907,7 +908,7 @@ public:
if (!isOverloading)
{
isOverloading = true;
- caster->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ caster->SetImmuneToPC(false);
if (Creature* creatureCaster = caster->ToCreature())
creatureCaster->AI()->Talk(EMOTE_TESLA_LINK_BREAKS);
me->RemoveAura(SPELL_STALAGG_CHAIN_VISUAL);
@@ -924,7 +925,7 @@ public:
refreshBeam = false;
caster->CastStop();
caster->CastSpell(me, SPELL_FEUGEN_CHAIN_VISUAL, true);
- caster->AddUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ caster->SetImmuneToPC(true);
}
}
diff --git a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp
index a2cb29d53c8..4e5cb1eb864 100644
--- a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp
+++ b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp
@@ -375,7 +375,7 @@ public:
me->SetDisableGravity(true);
me->SetAnimTier(UnitBytes1_Flags(UNIT_BYTE1_FLAG_ALWAYS_STAND | UNIT_BYTE1_FLAG_HOVER), false);
- me->AddUnitFlag(UnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC));
+ me->SetImmuneToAll(true);
me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
// TO DO: find what in core is making boss slower than in retail (when correct speed data) or find missing movement flag update or forced spline change
me->SetSpeedRate(MOVE_FLIGHT, _flySpeed * 0.25f);
@@ -465,7 +465,7 @@ public:
pos.m_positionZ = alexstraszaBunny->GetPositionZ();
alexstraszaBunny->GetNearPoint2D(pos.m_positionX, pos.m_positionY, 30.0f, alexstraszaBunny->GetAngle(me));
me->GetMotionMaster()->MoveLand(POINT_LAND_P_ONE, pos);
- me->RemoveUnitFlag(UnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC));
+ me->SetImmuneToAll(false);
me->SetReactState(REACT_AGGRESSIVE);
me->SetInCombatWithZone();
events.ScheduleEvent(EVENT_LAND_START_ENCOUNTER, 7*IN_MILLISECONDS, 1, PHASE_NOT_STARTED);
diff --git a/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp b/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp
index e5988fe47b2..aa4707ea863 100644
--- a/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp
+++ b/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp
@@ -131,14 +131,14 @@ class boss_keristrasza : public CreatureScript
{
if (remove)
{
- me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ me->SetImmuneToPC(false);
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
if (me->HasAura(SPELL_FROZEN_PRISON))
me->RemoveAurasDueToSpell(SPELL_FROZEN_PRISON);
}
else
{
- me->AddUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ me->SetImmuneToPC(true);
me->AddUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
DoCast(me, SPELL_FROZEN_PRISON, false);
}
diff --git a/src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp b/src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp
index 7e4a76a02e7..1bc6a8c429e 100644
--- a/src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp
+++ b/src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp
@@ -285,7 +285,8 @@ class spell_varos_centrifuge_shield : public SpellScriptLoader
if (caster->HasUnitFlag(UnitFlags(UNIT_FLAG_UNK_15 | UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_UNK_6)))
{
caster->ToCreature()->SetReactState(REACT_PASSIVE);
- caster->AddUnitFlag(UnitFlags(UNIT_FLAG_UNK_15 | UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_UNK_6));
+ caster->AddUnitFlag(UnitFlags(UNIT_FLAG_UNK_15 | UNIT_FLAG_UNK_6));
+ caster->SetImmuneToAll(true, true);
}
}
}
@@ -295,7 +296,8 @@ class spell_varos_centrifuge_shield : public SpellScriptLoader
if (Unit* caster = GetCaster())
{
caster->ToCreature()->SetReactState(REACT_AGGRESSIVE);
- caster->RemoveUnitFlag(UnitFlags(UNIT_FLAG_UNK_15 | UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_UNK_6));
+ caster->RemoveUnitFlag(UnitFlags(UNIT_FLAG_UNK_15 | UNIT_FLAG_UNK_6));
+ caster->SetImmuneToAll(false);
}
}
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp
index cef4d4d189a..eb2eb19fc2b 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp
@@ -379,11 +379,12 @@ class boss_algalon_the_observer : public CreatureScript
events.ScheduleEvent(EVENT_DESPAWN_ALGALON_2, 17000);
events.ScheduleEvent(EVENT_DESPAWN_ALGALON_3, 26000);
me->DespawnOrUnsummon(34000);
- me->AddUnitFlag(UnitFlags(UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_IMMUNE_TO_NPC));
+ me->AddUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
+ me->SetImmuneToNPC(true);
break;
case ACTION_INIT_ALGALON:
_firstPull = false;
- me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ me->SetImmuneToPC(false);
break;
}
}
@@ -396,7 +397,8 @@ class boss_algalon_the_observer : public CreatureScript
void EnterCombat(Unit* /*target*/) override
{
uint32 introDelay = 0;
- me->AddUnitFlag(UnitFlags(UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_IMMUNE_TO_NPC));
+ me->AddUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
+ me->SetImmuneToNPC(true);
events.Reset();
events.SetPhase(PHASE_ROLE_PLAY);
@@ -503,7 +505,7 @@ class boss_algalon_the_observer : public CreatureScript
{
instance->SetBossState(BOSS_ALGALON, FAIL);
BossAI::EnterEvadeMode(why);
- me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ me->SetImmuneToPC(false);
me->SetSheath(SHEATH_STATE_UNARMED);
}
@@ -578,7 +580,7 @@ class boss_algalon_the_observer : public CreatureScript
break;
case EVENT_INTRO_FINISH:
events.Reset();
- me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ me->SetImmuneToPC(false);
break;
case EVENT_START_COMBAT:
instance->SetBossState(BOSS_ALGALON, IN_PROGRESS);
@@ -587,7 +589,8 @@ class boss_algalon_the_observer : public CreatureScript
{
events.SetPhase(PHASE_NORMAL);
me->SetSheath(SHEATH_STATE_MELEE);
- me->RemoveUnitFlag(UnitFlags(UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_IMMUNE_TO_NPC));
+ me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
+ me->SetImmuneToNPC(false);
me->SetReactState(REACT_DEFENSIVE);
DoCastAOE(SPELL_SUPERMASSIVE_FAIL, true);
//! Workaround for Creature::_IsTargetAcceptable returning false
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp
index 3f0fde0929e..344085468b6 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp
@@ -1358,7 +1358,8 @@ class npc_healthy_spore : public CreatureScript
npc_healthy_sporeAI(Creature* creature) : ScriptedAI(creature)
{
SetCombatMovement(false);
- me->AddUnitFlag(UnitFlags(UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_PC));
+ me->AddUnitFlag(UnitFlags(UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_NON_ATTACKABLE));
+ me->SetImmuneToPC(true);
me->SetReactState(REACT_PASSIVE);
DoCast(me, SPELL_HEALTHY_SPORE_VISUAL);
DoCast(me, SPELL_POTENT_PHEROMONES);
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp
index 417f04da167..b2c8dcc9022 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp
@@ -182,7 +182,8 @@ class boss_ignis : public CreatureScript
{
summon->SetFaction(FACTION_MONSTER_2);
summon->SetReactState(REACT_AGGRESSIVE);
- summon->RemoveUnitFlag(UnitFlags(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_PACIFIED | UNIT_FLAG_STUNNED | UNIT_FLAG_IMMUNE_TO_PC));
+ summon->RemoveUnitFlag(UnitFlags(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_PACIFIED | UNIT_FLAG_STUNNED));
+ summon->SetImmuneToPC(false);
summon->SetControlled(false, UNIT_STATE_ROOT);
}
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp
index 99f0e9d2d4f..94fd523542b 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp
@@ -981,7 +981,8 @@ class boss_vx_001 : public CreatureScript
events.ScheduleEvent(EVENT_FLAME_SUPPRESSANT_VX, 6000);
/* fallthrough */
case DO_START_VX001:
- me->RemoveUnitFlag(UnitFlags(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_IMMUNE_TO_PC));
+ me->RemoveUnitFlag(UnitFlags(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE));
+ me->SetImmuneToPC(false);
me->RemoveAurasDueToSpell(SPELL_FREEZE_ANIM);
me->SetEmoteState(EMOTE_ONESHOT_NONE); // Remove emotestate.
//me->SetUInt32Value(UNIT_FIELD_BYTES_1, UNIT_BYTES_1_OFFSET_ANIM_TIER, UNIT_BYTE1_FLAG_ALWAYS_STAND | UNIT_BYTE1_FLAG_HOVER); Blizzard handles hover animation like this it seems.
@@ -1158,7 +1159,8 @@ class boss_aerial_command_unit : public CreatureScript
events.ScheduleEvent(EVENT_SUMMON_FIRE_BOTS, 1000, 0, PHASE_AERIAL_COMMAND_UNIT);
/* fallthrough */
case DO_START_AERIAL:
- me->RemoveUnitFlag(UnitFlags(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_IMMUNE_TO_PC));
+ me->RemoveUnitFlag(UnitFlags(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE));
+ me->SetImmuneToPC(false);
me->SetReactState(REACT_AGGRESSIVE);
events.SetPhase(PHASE_AERIAL_COMMAND_UNIT);
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp
index 58bfb55e1d5..062e5bdb884 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp
@@ -472,7 +472,7 @@ class boss_thorim : public CreatureScript
me->SetReactState(REACT_PASSIVE);
me->SetDisableGravity(true);
me->SetControlled(true, UNIT_STATE_ROOT);
- me->AddUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ me->SetImmuneToPC(true);
events.SetPhase(PHASE_NULL);
@@ -613,7 +613,7 @@ class boss_thorim : public CreatureScript
if (Creature* runicColossus = instance->GetCreature(DATA_RUNIC_COLOSSUS))
{
- runicColossus->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ runicColossus->SetImmuneToPC(false);
runicColossus->AI()->DoAction(ACTION_ACTIVATE_ADDS);
}
@@ -815,7 +815,7 @@ class boss_thorim : public CreatureScript
if (++_killedCount >= 6)
{
// Event starts
- me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ me->SetImmuneToPC(false);
DoZoneInCombat(me);
}
break;
@@ -1333,7 +1333,7 @@ struct npc_thorim_minibossAI : public ScriptedAI
{
for (ObjectGuid const& guid : _summons)
if (Creature* summon = ObjectAccessor::GetCreature(*me, guid))
- summon->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ summon->SetImmuneToPC(false);
}
}
@@ -1403,7 +1403,7 @@ class npc_runic_colossus : public CreatureScript
if (Creature* giant = _instance->GetCreature(DATA_RUNE_GIANT))
{
- giant->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ giant->SetImmuneToPC(false);
giant->AI()->DoAction(ACTION_ACTIVATE_ADDS);
}
}
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp
index de37736355f..8141e3d66ec 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp
@@ -1049,7 +1049,8 @@ class boss_brain_of_yogg_saron : public CreatureScript
void Reset() override
{
- me->RemoveUnitFlag(UnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_NOT_SELECTABLE));
+ me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
+ me->SetImmuneToPC(false);
DoCast(me, SPELL_MATCH_HEALTH);
_summons.DespawnAll();
}
@@ -1063,7 +1064,8 @@ class boss_brain_of_yogg_saron : public CreatureScript
DoCastAOE(SPELL_SHATTERED_ILLUSION_REMOVE, true);
DoCast(me, SPELL_MATCH_HEALTH_2, true); // it doesn't seem to hit Yogg-Saron here
DoCast(me, SPELL_BRAIN_HURT_VISUAL, true);
- me->AddUnitFlag(UnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_NOT_SELECTABLE));
+ me->AddUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
+ me->SetImmuneToPC(true);
if (Creature* voice = _instance->GetCreature(DATA_VOICE_OF_YOGG_SARON))
voice->AI()->DoAction(ACTION_PHASE_THREE);
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp
index 8ebd55a1d97..ef69a25f11b 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp
@@ -228,7 +228,7 @@ class instance_ulduar : public InstanceMapScript
if (_algalonTimer && _algalonTimer <= 60)
algalon->AI()->DoAction(ACTION_INIT_ALGALON);
else
- algalon->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ algalon->SetImmuneToPC(false);
}
// Keepers at Observation Ring
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_ingvar_the_plunderer.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_ingvar_the_plunderer.cpp
index 2fe0ad42b37..fe0396efbb0 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_ingvar_the_plunderer.cpp
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_ingvar_the_plunderer.cpp
@@ -115,7 +115,8 @@ class boss_ingvar_the_plunderer : public CreatureScript
{
if (me->GetEntry() != NPC_INGVAR)
me->UpdateEntry(NPC_INGVAR);
- me->RemoveUnitFlag(UnitFlags(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_NOT_SELECTABLE));
+ me->RemoveUnitFlag(UnitFlags(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE));
+ me->SetImmuneToPC(false);
_Reset();
}
@@ -131,7 +132,8 @@ class boss_ingvar_the_plunderer : public CreatureScript
me->StopMoving();
DoCast(me, SPELL_INGVAR_FEIGN_DEATH, true);
- me->AddUnitFlag(UnitFlags(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_NOT_SELECTABLE));
+ me->AddUnitFlag(UnitFlags(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE));
+ me->SetImmuneToPC(true, true);
Talk(SAY_DEATH);
}
@@ -229,7 +231,8 @@ class boss_ingvar_the_plunderer : public CreatureScript
break;
case EVENT_JUST_TRANSFORMED:
ScheduleSecondPhase();
- me->RemoveUnitFlag(UnitFlags(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_NOT_SELECTABLE));
+ me->RemoveUnitFlag(UnitFlags(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE));
+ me->SetImmuneToPC(false);
if (Unit* target = me->GetThreatManager().SelectVictim())
AttackStart(target);
else
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_palehoof.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_palehoof.cpp
index 4664f201ab3..19573eb24ff 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_palehoof.cpp
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_palehoof.cpp
@@ -293,7 +293,7 @@ public:
}
case ACTION_START_FIGHT:
me->RemoveAurasDueToSpell(SPELL_FREEZE);
- me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ me->SetImmuneToPC(false);
DoZoneInCombat();
if (Creature* orb = ObjectAccessor::GetCreature(*me, _orb))
orb->DespawnOrUnsummon(1000);
@@ -346,7 +346,7 @@ struct PalehoofMinionsBossAI : public BossAI
if (actionId == ACTION_START_FIGHT)
{
me->RemoveAurasDueToSpell(SPELL_FREEZE);
- me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ me->SetImmuneToPC(false);
DoZoneInCombat();
}
}
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp
index 2dc7ac890e8..6de234a6593 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp
@@ -267,7 +267,8 @@ public:
Talk(SAY_DRAKE_DEATH);
DoCast(me, SPELL_SKADI_TELEPORT, true);
summons.DespawnEntry(NPC_WORLD_TRIGGER);
- me->RemoveUnitFlag(UnitFlags(UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_IMMUNE_TO_PC));
+ me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
+ me->SetImmuneToPC(false);
me->SetReactState(REACT_AGGRESSIVE);
_phase = PHASE_GROUND;
diff --git a/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp b/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp
index ab209d3287c..4cb4a6adee4 100644
--- a/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp
+++ b/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp
@@ -559,7 +559,7 @@ class instance_violet_hold : public InstanceMapScript
{
if (Creature* moragg = GetCreature(DATA_MORAGG))
{
- moragg->RemoveUnitFlag(UnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC));
+ moragg->SetImmuneToAll(false);
moragg->AI()->DoZoneInCombat(moragg, 200.0f);
}
});
@@ -592,12 +592,12 @@ class instance_violet_hold : public InstanceMapScript
for (uint32 i = DATA_EREKEM_GUARD_1; i <= DATA_EREKEM_GUARD_2; ++i)
{
if (Creature* guard = instance->GetCreature(GetGuidData(i)))
- guard->RemoveUnitFlag(UnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC));
+ guard->SetImmuneToAll(false);
}
if (Creature* erekem = GetCreature(DATA_EREKEM))
{
- erekem->RemoveUnitFlag(UnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC));
+ erekem->SetImmuneToAll(false);
erekem->AI()->DoZoneInCombat(erekem, 200.0f);
}
});
@@ -620,7 +620,7 @@ class instance_violet_hold : public InstanceMapScript
{
if (Creature* ichoron = GetCreature(DATA_ICHORON))
{
- ichoron->RemoveUnitFlag(UnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC));
+ ichoron->SetImmuneToAll(false);
ichoron->AI()->DoZoneInCombat(ichoron, 200.0f);
}
});
@@ -642,7 +642,7 @@ class instance_violet_hold : public InstanceMapScript
{
if (Creature* lavanthor = GetCreature(DATA_LAVANTHOR))
{
- lavanthor->RemoveUnitFlag(UnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC));
+ lavanthor->SetImmuneToAll(false);
lavanthor->AI()->DoZoneInCombat(lavanthor, 200.0f);
}
});
@@ -669,7 +669,7 @@ class instance_violet_hold : public InstanceMapScript
{
if (Creature* xevozz = GetCreature(DATA_XEVOZZ))
{
- xevozz->RemoveUnitFlag(UnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC));
+ xevozz->SetImmuneToAll(false);
xevozz->AI()->DoZoneInCombat(xevozz, 200.0f);
}
});
@@ -695,7 +695,7 @@ class instance_violet_hold : public InstanceMapScript
{
if (Creature* zuramat = GetCreature(DATA_ZURAMAT))
{
- zuramat->RemoveUnitFlag(UnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC));
+ zuramat->SetImmuneToAll(false);
zuramat->AI()->DoZoneInCombat(zuramat, 200.0f);
}
});
@@ -735,7 +735,7 @@ class instance_violet_hold : public InstanceMapScript
UpdateKilledBoss(guard);
guard->GetMotionMaster()->MoveTargetedHome();
- guard->AddUnitFlag(UnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC));
+ guard->SetImmuneToAll(true);
}
}
/* fallthrough */
@@ -748,7 +748,7 @@ class instance_violet_hold : public InstanceMapScript
}
boss->GetMotionMaster()->MoveTargetedHome();
- boss->AddUnitFlag(UnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC));
+ boss->SetImmuneToAll(true);
break;
}
}
@@ -903,7 +903,7 @@ class instance_violet_hold : public InstanceMapScript
{
cyanigosa->RemoveAurasDueToSpell(SPELL_CYANIGOSA_ARCANE_POWER_STATE);
cyanigosa->CastSpell(cyanigosa, SPELL_CYANIGOSA_TRANSFORM, true);
- cyanigosa->RemoveUnitFlag(UnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC));
+ cyanigosa->SetImmuneToAll(false);
}
});
});
diff --git a/src/server/scripts/Northrend/zone_borean_tundra.cpp b/src/server/scripts/Northrend/zone_borean_tundra.cpp
index a9bb0868634..baadf2361a4 100644
--- a/src/server/scripts/Northrend/zone_borean_tundra.cpp
+++ b/src/server/scripts/Northrend/zone_borean_tundra.cpp
@@ -724,7 +724,7 @@ public:
owner->CastSpell(owner, SPELL_SUBDUED, true);
GetCaster()->CastSpell(GetCaster(), SPELL_DRAKE_HATCHLING_SUBDUED, true);
owner->SetFaction(35);
- owner->AddUnitFlag(UnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC));
+ owner->SetImmuneToAll(true);
owner->DespawnOrUnsummon(3 * MINUTE*IN_MILLISECONDS);
}
diff --git a/src/server/scripts/Northrend/zone_dragonblight.cpp b/src/server/scripts/Northrend/zone_dragonblight.cpp
index 9c3f455bc41..b55c684e527 100644
--- a/src/server/scripts/Northrend/zone_dragonblight.cpp
+++ b/src/server/scripts/Northrend/zone_dragonblight.cpp
@@ -548,7 +548,7 @@ class npc_wyrmrest_defender : public CreatureScript
{
case SPELL_WYRMREST_DEFENDER_MOUNT:
Talk(WHISPER_MOUNTED, me->GetCharmerOrOwner());
- me->RemoveUnitFlag(UnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC));
+ me->SetImmuneToAll(false);
me->AddUnitFlag(UNIT_FLAG_PVP_ATTACKABLE);
break;
// Both below are for checking low hp warning
diff --git a/src/server/scripts/Northrend/zone_grizzly_hills.cpp b/src/server/scripts/Northrend/zone_grizzly_hills.cpp
index bfb90373474..716b2a2e094 100644
--- a/src/server/scripts/Northrend/zone_grizzly_hills.cpp
+++ b/src/server/scripts/Northrend/zone_grizzly_hills.cpp
@@ -368,7 +368,7 @@ public:
if (me->FindNearestGameObject(OBJECT_HAUNCH, 2.0f))
{
me->SetStandState(UNIT_STAND_STATE_DEAD);
- me->AddUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ me->SetImmuneToPC(true);
me->AddDynamicFlag(UNIT_DYNFLAG_DEAD);
}
_phase = 0;
@@ -563,7 +563,8 @@ public:
{
_playerGUID.Clear();
- me->RemoveUnitFlag(UnitFlags(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_PC));
+ me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ me->SetImmuneToPC(false);
me->SetReactState(REACT_AGGRESSIVE);
}
@@ -613,7 +614,8 @@ public:
{
if (spell->Id == SPELL_SMOKE_BOMB && caster->GetTypeId() == TYPEID_PLAYER)
{
- me->AddUnitFlag(UnitFlags(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_PC));
+ me->AddUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ me->SetImmuneToPC(true);
me->SetReactState(REACT_PASSIVE);
me->CombatStop(false);
_playerGUID = caster->GetGUID();
diff --git a/src/server/scripts/Northrend/zone_storm_peaks.cpp b/src/server/scripts/Northrend/zone_storm_peaks.cpp
index fc38104ba08..1ce1754d47c 100644
--- a/src/server/scripts/Northrend/zone_storm_peaks.cpp
+++ b/src/server/scripts/Northrend/zone_storm_peaks.cpp
@@ -720,7 +720,7 @@ public:
InitSpellsForPhase();
- me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ me->SetImmuneToPC(false);
}
void DoAction(int32 action) override
@@ -759,7 +759,7 @@ public:
_playerGuid = caster->GetGUID();
DoCastAOE(SPELL_FULL_HEAL_MANA, true);
- me->AddUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ me->SetImmuneToPC(true);
me->GetMotionMaster()->MovePoint(POINT_START_FIGHT, *caster);
}
diff --git a/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp b/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp
index c1fba1eb033..befa2fa0164 100644
--- a/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp
+++ b/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp
@@ -805,7 +805,7 @@ public:
events.ScheduleEvent(EVENT_ENCOUNTER_START, Seconds(3), GROUP_PHASE_ALL);
break;
case EVENT_ENCOUNTER_START:
- me->RemoveUnitFlag(UnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC));
+ me->SetImmuneToAll(false);
DoZoneInCombat();
if (Creature* akama = instance->GetCreature(DATA_AKAMA))
akama->AI()->DoAction(ACTION_START_ENCOUNTER);
@@ -1179,7 +1179,7 @@ public:
break;
case POINT_MINIONS:
_events.SetPhase(PHASE_MINIONS);
- me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC);
+ me->SetImmuneToNPC(false);
me->SetReactState(REACT_AGGRESSIVE);
if (Creature* illidan = _instance->GetCreature(DATA_ILLIDAN_STORMRAGE))
illidan->AI()->DoAction(ACTION_START_MINIONS_WEAVE);
@@ -1312,7 +1312,7 @@ public:
me->SetReactState(REACT_PASSIVE);
me->AttackStop();
me->HandleEmoteCommand(EMOTE_ONESHOT_EXCLAMATION);
- me->AddUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC);
+ me->SetImmuneToNPC(true);
_events.ScheduleEvent(EVENT_AKAMA_MINIONS_MOVE, Seconds(4));
break;
case EVENT_AKAMA_MINIONS_MOVE:
diff --git a/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp b/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp
index 3d5b3c3f4a4..a7d20d6dda2 100644
--- a/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp
+++ b/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp
@@ -222,7 +222,7 @@ public:
{
_Reset();
Initialize();
- me->AddUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ me->SetImmuneToPC(true);
me->AddUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
me->SetEmoteState(EMOTE_STATE_STUN);
me->SetWalk(true);
@@ -263,7 +263,7 @@ public:
{
_isInPhaseOne = false;
me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
- me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ me->SetImmuneToPC(false);
me->SetWalk(false);
events.ScheduleEvent(EVENT_ADD_THREAT, Milliseconds(100));
diff --git a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lurker_below.cpp b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lurker_below.cpp
index 3072c388ddb..1a7e2d4719b 100644
--- a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lurker_below.cpp
+++ b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lurker_below.cpp
@@ -156,7 +156,7 @@ public:
DoCast(me, SPELL_SUBMERGE); // submerge anim
me->SetVisible(false); // we start invis under water, submerged
me->AddUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
- me->AddUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ me->SetImmuneToPC(true);
}
void JustDied(Unit* /*killer*/) override
@@ -219,7 +219,7 @@ public:
{
WaitTimer = 3000;
CanStartEvent = true; // fresh fished from pool
- me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ me->SetImmuneToPC(false);
me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
}
else
@@ -335,7 +335,7 @@ public:
Submerged = false;
me->InterruptNonMeleeSpells(false); // shouldn't be any
me->RemoveAllAuras();
- me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ me->SetImmuneToPC(false);
me->SetEmoteState(EMOTE_ONESHOT_NONE);
DoCast(me, SPELL_EMERGE, true);
Spawned = false;
diff --git a/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_ahune.cpp b/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_ahune.cpp
index 0e36c797a7a..aa5a5a9a170 100644
--- a/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_ahune.cpp
+++ b/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_ahune.cpp
@@ -327,7 +327,8 @@ public:
{
if (action == ACTION_AHUNE_RETREAT)
{
- me->RemoveUnitFlag(UnitFlags(UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_IMMUNE_TO_PC));
+ me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
+ me->SetImmuneToPC(false);
me->RemoveAurasDueToSpell(SPELL_ICE_SPEAR_AURA);
_events.ScheduleEvent(EVENT_SYNCH_HEALTH, Seconds(3), 0, PHASE_TWO);
}
@@ -335,7 +336,8 @@ public:
{
_events.Reset();
DoCast(me, SPELL_ICE_SPEAR_AURA);
- me->AddUnitFlag(UnitFlags(UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_IMMUNE_TO_PC));
+ me->AddUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
+ me->SetImmuneToPC(true);
}
}
diff --git a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_broggok.cpp b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_broggok.cpp
index 190f813495c..9a92c30ecc7 100644
--- a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_broggok.cpp
+++ b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_broggok.cpp
@@ -108,14 +108,16 @@ class boss_broggok : public CreatureScript
break;
case ACTION_ACTIVATE_BROGGOK:
me->SetReactState(REACT_AGGRESSIVE);
- me->RemoveUnitFlag(UnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_NON_ATTACKABLE));
+ me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ me->SetImmuneToAll(false);
events.ScheduleEvent(EVENT_SLIME_SPRAY, 10000);
events.ScheduleEvent(EVENT_POISON_BOLT, 7000);
events.ScheduleEvent(EVENT_POISON_CLOUD, 5000);
break;
case ACTION_RESET_BROGGOK:
me->SetReactState(REACT_PASSIVE);
- me->AddUnitFlag(UnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_NON_ATTACKABLE));
+ me->AddUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ me->SetImmuneToAll(true);
break;
}
}
diff --git a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_kelidan_the_breaker.cpp b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_kelidan_the_breaker.cpp
index 6ebba7e9c30..ebe2a9ebe09 100644
--- a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_kelidan_the_breaker.cpp
+++ b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_kelidan_the_breaker.cpp
@@ -99,7 +99,8 @@ class boss_kelidan_the_breaker : public CreatureScript
Initialize();
SummonChannelers();
me->SetReactState(REACT_PASSIVE);
- me->AddUnitFlag(UnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_NON_ATTACKABLE));
+ me->AddUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ me->SetImmuneToAll(true);
}
void EnterCombat(Unit* who) override
@@ -143,7 +144,8 @@ class boss_kelidan_the_breaker : public CreatureScript
return;
}
me->SetReactState(REACT_AGGRESSIVE);
- me->RemoveUnitFlag(UnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_NON_ATTACKABLE));
+ me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ me->SetImmuneToAll(false);
if (killer)
AttackStart(killer);
}
diff --git a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/instance_blood_furnace.cpp b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/instance_blood_furnace.cpp
index 8d52d7dd09b..014c4086716 100644
--- a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/instance_blood_furnace.cpp
+++ b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/instance_blood_furnace.cpp
@@ -219,7 +219,8 @@ class instance_blood_furnace : public InstanceMapScript
{
if (!prisoner->IsAlive())
prisoner->Respawn(true);
- prisoner->AddUnitFlag(UnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_NON_ATTACKABLE));
+ prisoner->AddUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ prisoner->SetImmuneToAll(true);
}
void StorePrisoner(Creature* creature)
@@ -307,7 +308,8 @@ class instance_blood_furnace : public InstanceMapScript
for (GuidSet::const_iterator i = prisoners.begin(); i != prisoners.end(); ++i)
if (Creature* prisoner = instance->GetCreature(*i))
{
- prisoner->RemoveUnitFlag(UnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_NON_ATTACKABLE));
+ prisoner->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ prisoner->SetImmuneToAll(false);
prisoner->SetInCombatWithZone();
}
}
diff --git a/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp b/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp
index 001031e439f..bdafad65efa 100644
--- a/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp
+++ b/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp
@@ -250,7 +250,8 @@ class boss_magtheridon : public CreatureScript
CombatStart();
break;
case EVENT_RELEASED:
- me->RemoveUnitFlag(UnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_NOT_SELECTABLE));
+ me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
+ me->SetImmuneToPC(false);
me->SetInCombatWithZone();
instance->SetData(DATA_MANTICRON_CUBE, ACTION_ENABLE);
events.ScheduleEvent(EVENT_CLEAVE, Seconds(10));
diff --git a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/shattered_halls.cpp b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/shattered_halls.cpp
index 3a065b246ac..800a1149115 100644
--- a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/shattered_halls.cpp
+++ b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/shattered_halls.cpp
@@ -94,9 +94,9 @@ class boss_shattered_executioner : public CreatureScript
me->AddLootMode(LOOT_MODE_HARD_MODE_1);
if (instance->GetBossState(DATA_KARGATH) == DONE)
- me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ me->SetImmuneToPC(false);
else
- me->AddUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ me->SetImmuneToPC(true);
Initialize();
}
diff --git a/src/server/scripts/Outland/TempestKeep/arcatraz/boss_harbinger_skyriss.cpp b/src/server/scripts/Outland/TempestKeep/arcatraz/boss_harbinger_skyriss.cpp
index 7c4fea78892..068e0b02211 100644
--- a/src/server/scripts/Outland/TempestKeep/arcatraz/boss_harbinger_skyriss.cpp
+++ b/src/server/scripts/Outland/TempestKeep/arcatraz/boss_harbinger_skyriss.cpp
@@ -99,7 +99,7 @@ class boss_harbinger_skyriss : public CreatureScript
void Reset() override
{
if (!Intro)
- me->AddUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ me->SetImmuneToPC(true);
Initialize();
}
@@ -182,7 +182,7 @@ class boss_harbinger_skyriss : public CreatureScript
Intro_Timer = 3000;
break;
case 3:
- me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ me->SetImmuneToPC(false);
Intro = true;
break;
}
diff --git a/src/server/scripts/Outland/zone_hellfire_peninsula.cpp b/src/server/scripts/Outland/zone_hellfire_peninsula.cpp
index 6c499d8a280..5e9f422c7ec 100644
--- a/src/server/scripts/Outland/zone_hellfire_peninsula.cpp
+++ b/src/server/scripts/Outland/zone_hellfire_peninsula.cpp
@@ -959,7 +959,7 @@ public:
me->RestoreFaction();
me->RemoveNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
me->AddNpcFlag(UNIT_NPC_FLAG_GOSSIP);
- me->AddUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ me->SetImmuneToPC(true);
}
void DamageTaken(Unit* /*attacker*/, uint32 &damage) override
@@ -974,7 +974,7 @@ public:
me->GetThreatManager().ClearAllThreat();
me->CombatStop(true);
me->AddNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
- me->AddUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ me->SetImmuneToPC(true);
Talk(SAY_DEFEATED);
_events.ScheduleEvent(EVENT_EVADE, Minutes(1));
@@ -994,7 +994,7 @@ public:
_events.ScheduleEvent(EVENT_ATTACK, Seconds(2));
break;
case EVENT_ATTACK:
- me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ me->SetImmuneToPC(false);
me->SetFaction(FACTION_MONSTER_2);
if (Player* player = ObjectAccessor::GetPlayer(*me, _playerGUID))
me->EngageWithTarget(player);
diff --git a/src/server/scripts/Outland/zone_shadowmoon_valley.cpp b/src/server/scripts/Outland/zone_shadowmoon_valley.cpp
index 804139e2f60..9f66c247a98 100644
--- a/src/server/scripts/Outland/zone_shadowmoon_valley.cpp
+++ b/src/server/scripts/Outland/zone_shadowmoon_valley.cpp
@@ -167,7 +167,8 @@ public:
{
if (spell->Id == SPELL_SUMMON_INFERNAL)
{
- me->RemoveUnitFlag(UnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_PACIFIED | UNIT_FLAG_NOT_SELECTABLE));
+ me->RemoveUnitFlag(UnitFlags(UNIT_FLAG_PACIFIED | UNIT_FLAG_NOT_SELECTABLE));
+ me->SetImmuneToPC(false);
me->SetDisplayId(MODEL_INFERNAL);
}
}
diff --git a/src/server/scripts/Spells/spell_quest.cpp b/src/server/scripts/Spells/spell_quest.cpp
index 67e1706a945..ff4f58685c0 100644
--- a/src/server/scripts/Spells/spell_quest.cpp
+++ b/src/server/scripts/Spells/spell_quest.cpp
@@ -277,13 +277,13 @@ class spell_q11396_11399_force_shield_arcane_purple_x3 : public SpellScriptLoade
void HandleEffectApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
Unit* target = GetTarget();
- target->AddUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ target->SetImmuneToPC(true);
target->AddUnitState(UNIT_STATE_ROOT);
}
void HandleEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
- GetTarget()->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ GetTarget()->SetImmuneToPC(false);
}
void Register() override
diff --git a/src/server/scripts/World/item_scripts.cpp b/src/server/scripts/World/item_scripts.cpp
index dbe38683c3e..21e852b1f8f 100644
--- a/src/server/scripts/World/item_scripts.cpp
+++ b/src/server/scripts/World/item_scripts.cpp
@@ -250,7 +250,7 @@ public:
{
summon->SetVisible(false);
summon->SetReactState(REACT_PASSIVE);
- summon->AddUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
+ summon->SetImmuneToPC(true);
}
return false;
}