mirror of
https://github.com/araxiaonline/TrinityCore.git
synced 2026-06-19 22:49:39 -04:00
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 74af880217)
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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)]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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())
|
||||
{
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
+3
-3
@@ -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;
|
||||
|
||||
+2
-2
@@ -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());
|
||||
|
||||
+1
-1
@@ -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);
|
||||
}
|
||||
|
||||
+6
-4
@@ -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);
|
||||
}
|
||||
|
||||
+1
-1
@@ -191,7 +191,7 @@ public:
|
||||
|
||||
void IsSummonedBy(Unit* /*summoner*/) override
|
||||
{
|
||||
me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||
me->SetImmuneToPC(false);
|
||||
DoZoneInCombat();
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -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));
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -446,7 +446,7 @@ public:
|
||||
headGUID.Clear();
|
||||
}
|
||||
|
||||
me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||
me->SetImmuneToPC(false);
|
||||
//instance->SetBossState(DATA_HORSEMAN_EVENT, NOT_STARTED);
|
||||
}
|
||||
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
+7
-7
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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())
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
|
||||
+4
-1
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
+13
-9
@@ -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()
|
||||
|
||||
+4
-2
@@ -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;
|
||||
|
||||
+2
-1
@@ -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
|
||||
|
||||
+8
-4
@@ -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;
|
||||
|
||||
+2
-1
@@ -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:
|
||||
|
||||
+6
-3
@@ -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());
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
+2
-1
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 ||
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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));
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
+4
-2
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -250,7 +250,7 @@ public:
|
||||
{
|
||||
summon->SetVisible(false);
|
||||
summon->SetReactState(REACT_PASSIVE);
|
||||
summon->AddUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||
summon->SetImmuneToPC(true);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user