diff options
Diffstat (limited to 'src/server/scripts/Northrend')
40 files changed, 169 insertions, 115 deletions
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); } |
