aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTeleqraph <nyrdeveloper@gmail.com>2023-07-20 19:09:27 +0200
committerGitHub <noreply@github.com>2023-07-20 19:09:27 +0200
commit88ff97c1f96381565c47f8ca1993bdc7fce19fd6 (patch)
treee2b89eb2da0a1a01e8f4eef0a37328e997cb344c
parentd4112334142f85addcf784bf3b4fb3b04773f1cd (diff)
Core/Units: Added helper functions to modify UNIT_FLAG_UNINTERACTIBLE (#29159)
Co-authored-by: Shauren <shauren.trinity@gmail.com>
-rw-r--r--src/server/game/AI/CreatureAI.cpp2
-rw-r--r--src/server/game/AI/SmartScripts/SmartScript.cpp5
-rw-r--r--src/server/game/Battlefield/Battlefield.cpp6
-rw-r--r--src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp12
-rw-r--r--src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp10
-rw-r--r--src/server/game/Entities/Creature/Creature.cpp4
-rw-r--r--src/server/game/Entities/Object/Object.cpp4
-rw-r--r--src/server/game/Entities/Player/Player.cpp2
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp10
-rw-r--r--src/server/game/Entities/Unit/Unit.h3
-rw-r--r--src/server/game/Entities/Vehicle/Vehicle.cpp4
-rw-r--r--src/server/scripts/Argus/AntorusTheBurningThrone/boss_garothi_worldbreaker.cpp16
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_pyroguard_emberseer.cpp4
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_nefarian.cpp4
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_vaelastrasz.cpp2
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_ragnaros.cpp4
-rw-r--r--src/server/scripts/EasternKingdoms/Karazhan/boss_curator.cpp2
-rw-r--r--src/server/scripts/EasternKingdoms/Karazhan/boss_nightbane.cpp2
-rw-r--r--src/server/scripts/EasternKingdoms/Karazhan/boss_prince_malchezaar.cpp4
-rw-r--r--src/server/scripts/EasternKingdoms/Karazhan/bosses_opera.cpp8
-rw-r--r--src/server/scripts/EasternKingdoms/Karazhan/karazhan.cpp2
-rw-r--r--src/server/scripts/EasternKingdoms/MagistersTerrace/boss_felblood_kaelthas.cpp4
-rw-r--r--src/server/scripts/EasternKingdoms/MagistersTerrace/boss_selin_fireheart.cpp2
-rw-r--r--src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp4
-rw-r--r--src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp4
-rw-r--r--src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp12
-rw-r--r--src/server/scripts/EasternKingdoms/ScarletMonastery/boss_mograine_and_whitemane.cpp8
-rw-r--r--src/server/scripts/EasternKingdoms/Scholomance/boss_jandice_barov.cpp4
-rw-r--r--src/server/scripts/EasternKingdoms/Scholomance/boss_kirtonos_the_herald.cpp6
-rw-r--r--src/server/scripts/EasternKingdoms/ShadowfangKeep/boss_apothecary_hummel.cpp4
-rw-r--r--src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp9
-rw-r--r--src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp6
-rw-r--r--src/server/scripts/EasternKingdoms/Uldaman/boss_archaedas.cpp14
-rw-r--r--src/server/scripts/EasternKingdoms/Uldaman/instance_uldaman.cpp10
-rw-r--r--src/server/scripts/EasternKingdoms/zone_silverpine_forest.cpp10
-rw-r--r--src/server/scripts/ExilesReach/zone_exiles_reach.cpp6
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal_trash.cpp4
-rw-r--r--src/server/scripts/Kalimdor/Firelands/boss_alysrazor.cpp2
-rw-r--r--src/server/scripts/Kalimdor/HallsOfOrigination/boss_anraphet.cpp4
-rw-r--r--src/server/scripts/Kalimdor/HallsOfOrigination/boss_earthrager_ptah.cpp6
-rw-r--r--src/server/scripts/Kalimdor/Maraudon/boss_noxxion.cpp4
-rw-r--r--src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp12
-rw-r--r--src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp4
-rw-r--r--src/server/scripts/Kalimdor/zone_felwood.cpp2
-rw-r--r--src/server/scripts/Kalimdor/zone_the_barrens.cpp6
-rw-r--r--src/server/scripts/Maelstrom/Stonecore/boss_corborus.cpp4
-rw-r--r--src/server/scripts/Maelstrom/Stonecore/boss_slabhide.cpp2
-rw-r--r--src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_herald_volazj.cpp8
-rw-r--r--src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_jedoga_shadowseeker.cpp6
-rw-r--r--src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_prince_taldaram.cpp2
-rw-r--r--src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp9
-rw-r--r--src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/obsidian_sanctum.cpp6
-rw-r--r--src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_general_zarithrian.cpp2
-rw-r--r--src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp4
-rw-r--r--src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/instance_ruby_sanctum.cpp2
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp20
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_lord_jaraxxus.cpp4
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp17
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp3
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp2
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp4
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp8
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp8
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp2
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp8
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp2
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp4
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp4
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_noth.cpp6
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp13
-rw-r--r--src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp10
-rw-r--r--src/server/scripts/Northrend/Nexus/Nexus/boss_magus_telestra.cpp6
-rw-r--r--src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_ionar.cpp9
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp10
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp4
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp21
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp3
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp3
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp6
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp6
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp30
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp10
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp4
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp2
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_ingvar_the_plunderer.cpp9
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp8
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_palehoof.cpp4
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp4
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_svala.cpp3
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_ymiron.cpp3
-rw-r--r--src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp6
-rw-r--r--src/server/scripts/Outland/BlackTemple/boss_illidan.cpp16
-rw-r--r--src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp14
-rw-r--r--src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lurker_below.cpp4
-rw-r--r--src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_warlord_kalithresh.cpp6
-rw-r--r--src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_ahune.cpp6
-rw-r--r--src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_broggok.cpp4
-rw-r--r--src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp2
-rw-r--r--src/server/scripts/Outland/TempestKeep/Eye/boss_alar.cpp8
-rw-r--r--src/server/scripts/Outland/TempestKeep/Eye/boss_astromancer.cpp10
-rw-r--r--src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp20
-rw-r--r--src/server/scripts/Outland/TempestKeep/arcatraz/boss_harbinger_skyriss.cpp3
-rw-r--r--src/server/scripts/Outland/zone_blades_edge_mountains.cpp2
-rw-r--r--src/server/scripts/Outland/zone_shadowmoon_valley.cpp2
-rw-r--r--src/server/scripts/Spells/spell_generic.cpp8
-rw-r--r--src/server/scripts/World/boss_emerald_dragons.cpp9
-rw-r--r--src/server/scripts/World/npcs_special.cpp10
107 files changed, 388 insertions, 304 deletions
diff --git a/src/server/game/AI/CreatureAI.cpp b/src/server/game/AI/CreatureAI.cpp
index f88e8f1546b..c63e3c21ee1 100644
--- a/src/server/game/AI/CreatureAI.cpp
+++ b/src/server/game/AI/CreatureAI.cpp
@@ -398,7 +398,7 @@ int32 CreatureAI::VisualizeBoundary(Seconds duration, Unit* owner, bool fill) co
point->SetUnitFlag(UNIT_FLAG_STUNNED);
point->SetImmuneToAll(true);
if (!hasOutOfBoundsNeighbor)
- point->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ point->SetUninteractible(true);
}
}
diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp
index b27e0847c3f..561ec21655f 100644
--- a/src/server/game/AI/SmartScripts/SmartScript.cpp
+++ b/src/server/game/AI/SmartScripts/SmartScript.cpp
@@ -2438,10 +2438,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u
{
if (IsUnit(target))
{
- if (e.action.setUninteractible.uninteractible)
- target->ToUnit()->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
- else
- target->ToUnit()->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ target->ToUnit()->SetUninteractible(e.action.setUninteractible.uninteractible != 0);
}
}
break;
diff --git a/src/server/game/Battlefield/Battlefield.cpp b/src/server/game/Battlefield/Battlefield.cpp
index 7893b925bc3..030ca20fec8 100644
--- a/src/server/game/Battlefield/Battlefield.cpp
+++ b/src/server/game/Battlefield/Battlefield.cpp
@@ -463,7 +463,8 @@ void Battlefield::HideNpc(Creature* creature)
{
creature->CombatStop();
creature->SetReactState(REACT_PASSIVE);
- creature->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_UNINTERACTIBLE);
+ creature->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ creature->SetUninteractible(true);
creature->DisappearAndDie();
creature->SetVisible(false);
}
@@ -471,7 +472,8 @@ void Battlefield::HideNpc(Creature* creature)
void Battlefield::ShowNpc(Creature* creature, bool aggressive)
{
creature->SetVisible(true);
- creature->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_UNINTERACTIBLE);
+ creature->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ creature->SetUninteractible(false);
if (!creature->IsAlive())
creature->Respawn(true);
if (aggressive)
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp
index 78ea466b716..a41cd3347b9 100644
--- a/src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp
@@ -137,8 +137,11 @@ void BattlegroundIC::PostUpdateImpl(uint32 diff)
if (siege->IsAlive())
{
if (siege->HasUnitFlag(UNIT_FLAG_UNINTERACTIBLE | UNIT_FLAG_CANT_SWIM | UNIT_FLAG_IMMUNE_TO_PC))
+ {
// following sniffs the vehicle always has UNIT_FLAG_CANNOT_SWIM
- siege->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE | UNIT_FLAG_IMMUNE_TO_PC);
+ siege->SetUninteractible(false);
+ siege->SetImmuneToPC(false);
+ }
else
siege->SetHealth(siege->GetMaxHealth());
}
@@ -561,7 +564,7 @@ void BattlegroundIC::HandleContestedNodes(ICNodePoint* node)
for (Creature* cannon : cannons)
{
cannon->GetVehicleKit()->RemoveAllPassengers();
- cannon->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ cannon->SetUninteractible(true);
}
}
else if (node->nodeType == NODE_TYPE_WORKSHOP)
@@ -593,7 +596,7 @@ void BattlegroundIC::HandleCapturedNodes(ICNodePoint* node, bool recapture)
gunshipHorde->GetCreatureListWithEntryInGrid(cannons, NPC_HORDE_GUNSHIP_CANNON, 150.0f);
for (Creature* cannon : cannons)
- cannon->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ cannon->SetUninteractible(false);
for (uint8 u = 0; u < MAX_HANGAR_TELEPORTERS_SPAWNS; ++u)
{
@@ -748,7 +751,8 @@ void BattlegroundIC::HandleCapturedNodes(ICNodePoint* node, bool recapture)
if (Creature* siegeEngine = GetBGCreature(siegeType))
{
- siegeEngine->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE | UNIT_FLAG_CANT_SWIM);
+ siegeEngine->SetUnitFlag(UNIT_FLAG_CANT_SWIM);
+ siegeEngine->SetUninteractible(true);
siegeEngine->SetImmuneToPC(true);
siegeEngine->SetFaction(BG_IC_Factions[(node->faction == TEAM_ALLIANCE ? 0 : 1)]);
}
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp
index d513230439f..27fb91ae668 100644
--- a/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp
@@ -631,9 +631,15 @@ void BattlegroundSA::DemolisherStartState(bool start)
if (Creature* dem = GetBGCreature(i))
{
if (start)
- dem->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_UNINTERACTIBLE);
+ {
+ dem->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ dem->SetUninteractible(true);
+ }
else
- dem->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_UNINTERACTIBLE);
+ {
+ dem->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ dem->SetUninteractible(false);
+ }
}
}
}
diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp
index af3c30ab610..e0f418ac779 100644
--- a/src/server/game/Entities/Creature/Creature.cpp
+++ b/src/server/game/Entities/Creature/Creature.cpp
@@ -657,7 +657,7 @@ bool Creature::UpdateEntry(uint32 entry, CreatureData const* data /*= nullptr*/,
// trigger creature is always uninteractible and can not be attacked
if (IsTrigger())
- SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ SetUninteractible(true);
InitializeReactState();
@@ -2549,7 +2549,7 @@ bool Creature::CanAssistTo(Unit const* u, Unit const* enemy, bool checkfaction /
if (IsCivilian())
return false;
- if (HasUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_UNINTERACTIBLE) || IsImmuneToNPC())
+ if (HasUnitFlag(UNIT_FLAG_NON_ATTACKABLE) || IsImmuneToNPC() || IsUninteractible())
return false;
// skip fighting creature
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp
index 7b80617b528..748213b71e7 100644
--- a/src/server/game/Entities/Object/Object.cpp
+++ b/src/server/game/Entities/Object/Object.cpp
@@ -2986,7 +2986,7 @@ bool WorldObject::IsValidAttackTarget(WorldObject const* target, SpellInfo const
if ((!bySpell || !bySpell->HasAttribute(SPELL_ATTR6_CAN_TARGET_UNTARGETABLE)) && unitTarget && unitTarget->HasUnitFlag(UNIT_FLAG_NON_ATTACKABLE_2))
return false;
- if (unitTarget && unitTarget->HasUnitFlag(UNIT_FLAG_UNINTERACTIBLE))
+ if (unitTarget && unitTarget->IsUninteractible())
return false;
if (Player const* playerAttacker = ToPlayer())
@@ -3135,7 +3135,7 @@ bool WorldObject::IsValidAssistTarget(WorldObject const* target, SpellInfo const
if ((!bySpell || !bySpell->HasAttribute(SPELL_ATTR6_CAN_TARGET_UNTARGETABLE)) && unitTarget && unitTarget->HasUnitFlag(UNIT_FLAG_NON_ATTACKABLE_2))
return false;
- if (unitTarget && unitTarget->HasUnitFlag(UNIT_FLAG_UNINTERACTIBLE))
+ if (unitTarget && unitTarget->IsUninteractible())
return false;
// check flags for negative spells
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 3dd427924c4..8b0a25ddcc2 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -23588,7 +23588,7 @@ void Player::UpdateTriggerVisibility()
{
Creature* creature = GetMap()->GetCreature(*itr);
// Update fields of triggers, transformed units or uninteractible units (values dependent on GM state)
- if (!creature || (!creature->IsTrigger() && !creature->HasAuraType(SPELL_AURA_TRANSFORM) && !creature->HasUnitFlag(UNIT_FLAG_UNINTERACTIBLE)))
+ if (!creature || (!creature->IsTrigger() && !creature->HasAuraType(SPELL_AURA_TRANSFORM) && !creature->IsUninteractible()))
continue;
creature->ForceUpdateFieldChange(creature->m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::DisplayID));
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index db72864c945..41098f401f9 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -7968,6 +7968,14 @@ void Unit::SetImmuneToNPC(bool apply, bool keepCombat)
RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC);
}
+void Unit::SetUninteractible(bool apply)
+{
+ if (apply)
+ SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ else
+ RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+}
+
void Unit::SetCannotTurn(bool apply)
{
if (apply)
@@ -7986,7 +7994,7 @@ bool Unit::isTargetableForAttack(bool checkFakeDeath) const
if (!IsAlive())
return false;
- if (HasUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_UNINTERACTIBLE))
+ if (HasUnitFlag(UNIT_FLAG_NON_ATTACKABLE) || IsUninteractible())
return false;
if (GetTypeId() == TYPEID_PLAYER && ToPlayer()->IsGameMaster())
diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h
index 43955fcd969..f9d1153ae58 100644
--- a/src/server/game/Entities/Unit/Unit.h
+++ b/src/server/game/Entities/Unit/Unit.h
@@ -1151,6 +1151,9 @@ class TC_GAME_API Unit : public WorldObject
void SetImmuneToNPC(bool apply, bool keepCombat);
virtual void SetImmuneToNPC(bool apply) { SetImmuneToNPC(apply, false); }
+ bool IsUninteractible() const { return HasUnitFlag(UNIT_FLAG_UNINTERACTIBLE); }
+ void SetUninteractible(bool apply);
+
bool CannotTurn() const { return HasUnitFlag2(UNIT_FLAG2_CANNOT_TURN); }
void SetCannotTurn(bool apply);
diff --git a/src/server/game/Entities/Vehicle/Vehicle.cpp b/src/server/game/Entities/Vehicle/Vehicle.cpp
index 0546c7e4729..3a90a80b48e 100644
--- a/src/server/game/Entities/Vehicle/Vehicle.cpp
+++ b/src/server/game/Entities/Vehicle/Vehicle.cpp
@@ -512,7 +512,7 @@ Vehicle* Vehicle::RemovePassenger(WorldObject* passenger)
// Remove UNIT_FLAG_UNINTERACTIBLE if passenger did not have it before entering vehicle
if (seat->second.SeatInfo->Flags & VEHICLE_SEAT_FLAG_PASSENGER_NOT_SELECTABLE && !seat->second.Passenger.IsUninteractible)
- unit->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ unit->SetUninteractible(false);
seat->second.Passenger.Reset();
@@ -819,7 +819,7 @@ bool VehicleJoinEvent::Execute(uint64, uint32)
Passenger->SetVehicle(Target);
Seat->second.Passenger.Guid = Passenger->GetGUID();
- Seat->second.Passenger.IsUninteractible = Passenger->HasUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ Seat->second.Passenger.IsUninteractible = Passenger->IsUninteractible();
Seat->second.Passenger.IsGravityDisabled = Passenger->HasUnitMovementFlag(MOVEMENTFLAG_DISABLE_GRAVITY);
if (Seat->second.SeatInfo->CanEnterOrExit())
{
diff --git a/src/server/scripts/Argus/AntorusTheBurningThrone/boss_garothi_worldbreaker.cpp b/src/server/scripts/Argus/AntorusTheBurningThrone/boss_garothi_worldbreaker.cpp
index 699d87986e1..a41787b8efc 100644
--- a/src/server/scripts/Argus/AntorusTheBurningThrone/boss_garothi_worldbreaker.cpp
+++ b/src/server/scripts/Argus/AntorusTheBurningThrone/boss_garothi_worldbreaker.cpp
@@ -254,7 +254,7 @@ struct boss_garothi_worldbreaker : public BossAI
events.Reset();
events.ScheduleEvent(EVENT_REENGAGE_PLAYERS, 3s + 500ms);
HideCannons();
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
break;
default:
break;
@@ -278,20 +278,20 @@ struct boss_garothi_worldbreaker : public BossAI
DoCastSelf(SPELL_APOCALYPSE_DRIVE_FINAL_DAMAGE);
Talk(SAY_ANNOUNCE_APOCALYPSE_DRIVE);
Talk(SAY_APOCALYPSE_DRIVE);
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
if (Creature* decimator = instance->GetCreature(DATA_DECIMATOR))
{
instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, decimator, 2);
decimator->SetUnitFlag(UNIT_FLAG_IN_COMBAT);
- decimator->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ decimator->SetUninteractible(false);
}
if (Creature* annihilator = instance->GetCreature(DATA_ANNIHILATOR))
{
instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, annihilator, 2);
annihilator->SetUnitFlag(UNIT_FLAG_IN_COMBAT);
- annihilator->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ annihilator->SetUninteractible(false);
}
++_apocalypseDriveCount;
}
@@ -326,7 +326,7 @@ struct boss_garothi_worldbreaker : public BossAI
case NPC_ANNIHILATOR:
me->InterruptNonMeleeSpells(true);
me->RemoveAurasDueToSpell(SPELL_APOCALYPSE_DRIVE);
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
if (summon->GetEntry() == NPC_ANNIHILATOR)
_searingBarrageSpellId = SPELL_SEARING_BARRAGE_ANNIHILATOR;
@@ -455,13 +455,15 @@ struct boss_garothi_worldbreaker : public BossAI
if (Creature* decimator = instance->GetCreature(DATA_DECIMATOR))
{
instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, decimator);
- decimator->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE | UNIT_FLAG_IMMUNE);
+ decimator->SetUninteractible(true);
+ decimator->SetUnitFlag(UNIT_FLAG_IMMUNE);
}
if (Creature* annihilator = instance->GetCreature(DATA_ANNIHILATOR))
{
instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, annihilator);
- annihilator->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE | UNIT_FLAG_IMMUNE);
+ annihilator->SetUninteractible(true);
+ annihilator->SetUnitFlag(UNIT_FLAG_IMMUNE);
}
}
};
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_pyroguard_emberseer.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_pyroguard_emberseer.cpp
index 4bdaea4afad..826cc63dfaf 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_pyroguard_emberseer.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_pyroguard_emberseer.cpp
@@ -77,7 +77,7 @@ struct boss_pyroguard_emberseer : public BossAI
void Reset() override
{
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
me->SetImmuneToPC(true);
events.Reset();
// Apply auras on spawn and reset
@@ -140,7 +140,7 @@ struct boss_pyroguard_emberseer : public BossAI
me->CastSpell(me, SPELL_EMBERSEER_FULL_STRENGTH);
Talk(EMOTE_FREE_OF_BONDS);
Talk(YELL_FREE_OF_BONDS);
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
me->SetImmuneToPC(false);
events.ScheduleEvent(EVENT_ENTER_COMBAT, 2s);
}
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_nefarian.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_nefarian.cpp
index 310ae35e096..0084e493e50 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_nefarian.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_nefarian.cpp
@@ -219,7 +219,7 @@ struct boss_victor_nefarius : public BossAI
if (summon->GetEntry() != NPC_NEFARIAN)
{
summon->UpdateEntry(NPC_BONE_CONSTRUCT);
- summon->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ summon->SetUninteractible(true);
summon->SetReactState(REACT_PASSIVE);
summon->SetStandState(UNIT_STAND_STATE_DEAD);
}
@@ -560,7 +560,7 @@ struct boss_nefarian : public BossAI
{
(*itr)->Respawn();
DoZoneInCombat((*itr));
- (*itr)->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ (*itr)->SetUninteractible(false);
(*itr)->SetReactState(REACT_AGGRESSIVE);
(*itr)->SetStandState(UNIT_STAND_STATE_STAND);
}
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_vaelastrasz.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_vaelastrasz.cpp
index df0eb7e6686..e09f932680a 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_vaelastrasz.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_vaelastrasz.cpp
@@ -71,7 +71,7 @@ struct boss_vaelastrasz : public BossAI
Initialize();
creature->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
creature->SetFaction(FACTION_FRIENDLY);
- creature->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ creature->SetUninteractible(false);
}
void Initialize()
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_ragnaros.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_ragnaros.cpp
index ebd9f7e8403..5ba5854d984 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_ragnaros.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_ragnaros.cpp
@@ -172,7 +172,7 @@ struct boss_ragnaros : public BossAI
//Become unbanished again
me->SetReactState(REACT_AGGRESSIVE);
me->SetFaction(FACTION_MONSTER);
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
me->SetEmoteState(EMOTE_ONESHOT_NONE);
me->HandleEmoteCommand(EMOTE_ONESHOT_EMERGE);
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0))
@@ -250,7 +250,7 @@ struct boss_ragnaros : public BossAI
//Root self
//DoCast(me, 23973);
me->SetFaction(FACTION_FRIENDLY);
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
me->SetEmoteState(EMOTE_STATE_SUBMERGED);
me->HandleEmoteCommand(EMOTE_ONESHOT_SUBMERGE);
instance->SetData(DATA_RAGNAROS_ADDS, 0);
diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_curator.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_curator.cpp
index 69c28424726..2a383362c1b 100644
--- a/src/server/scripts/EasternKingdoms/Karazhan/boss_curator.cpp
+++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_curator.cpp
@@ -163,7 +163,7 @@ public:
_scheduler.Schedule(Seconds(2), [this](TaskContext /*context*/)
{
me->SetReactState(REACT_AGGRESSIVE);
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
DoZoneInCombat();
});
}
diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_nightbane.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_nightbane.cpp
index 90b87ede00a..aeebe791a63 100644
--- a/src/server/scripts/EasternKingdoms/Karazhan/boss_nightbane.cpp
+++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_nightbane.cpp
@@ -158,7 +158,7 @@ public:
events.SetPhase(PHASE_INTRO);
me->setActive(true);
me->SetFarVisible(true);
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
me->GetMotionMaster()->MoveAlongSplineChain(POINT_INTRO_START, SPLINE_CHAIN_INTRO_START, false);
HandleTerraceDoors(false);
}
diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_prince_malchezaar.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_prince_malchezaar.cpp
index a19e0a29dd6..68699394ad4 100644
--- a/src/server/scripts/EasternKingdoms/Karazhan/boss_prince_malchezaar.cpp
+++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_prince_malchezaar.cpp
@@ -159,7 +159,7 @@ public:
if (spellInfo->Id == SPELL_INFERNAL_RELAY)
{
me->SetDisplayId(me->GetNativeDisplayId());
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
HellfireTimer = 4000;
CleanupTimer = 170000;
}
@@ -453,7 +453,7 @@ public:
Creature* axe = me->SummonCreature(MALCHEZARS_AXE, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 1s);
if (axe)
{
- axe->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ axe->SetUninteractible(true);
axe->SetFaction(me->GetFaction());
axes[i] = axe->GetGUID();
if (target)
diff --git a/src/server/scripts/EasternKingdoms/Karazhan/bosses_opera.cpp b/src/server/scripts/EasternKingdoms/Karazhan/bosses_opera.cpp
index 96c6a4e4ee6..6e515066112 100644
--- a/src/server/scripts/EasternKingdoms/Karazhan/bosses_opera.cpp
+++ b/src/server/scripts/EasternKingdoms/Karazhan/bosses_opera.cpp
@@ -1019,7 +1019,7 @@ void PretendToDie(Creature* creature)
creature->InterruptNonMeleeSpells(true);
creature->RemoveAllAuras();
creature->SetHealth(0);
- creature->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ creature->SetUninteractible(true);
creature->GetMotionMaster()->Clear();
creature->GetMotionMaster()->MoveIdle();
creature->SetStandState(UNIT_STAND_STATE_DEAD);
@@ -1027,7 +1027,7 @@ void PretendToDie(Creature* creature)
void Resurrect(Creature* target)
{
- target->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ target->SetUninteractible(false);
target->SetFullHealth();
target->SetStandState(UNIT_STAND_STATE_STAND);
target->CastSpell(target, SPELL_RES_VISUAL, true);
@@ -1252,7 +1252,7 @@ public:
{
if (Creature* Julianne = (ObjectAccessor::GetCreature((*me), JulianneGUID)))
{
- Julianne->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ Julianne->SetUninteractible(false);
Julianne->GetMotionMaster()->Clear();
Julianne->setDeathState(JUST_DIED);
Julianne->CombatStop(true);
@@ -1521,7 +1521,7 @@ void boss_julianne::boss_julianneAI::DamageTaken(Unit* /*done_by*/, uint32& dama
{
if (Creature* Romulo = (ObjectAccessor::GetCreature((*me), RomuloGUID)))
{
- Romulo->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ Romulo->SetUninteractible(false);
Romulo->GetMotionMaster()->Clear();
Romulo->setDeathState(JUST_DIED);
Romulo->CombatStop(true);
diff --git a/src/server/scripts/EasternKingdoms/Karazhan/karazhan.cpp b/src/server/scripts/EasternKingdoms/Karazhan/karazhan.cpp
index 528a66bad72..e8cebe4984e 100644
--- a/src/server/scripts/EasternKingdoms/Karazhan/karazhan.cpp
+++ b/src/server/scripts/EasternKingdoms/Karazhan/karazhan.cpp
@@ -199,7 +199,7 @@ public:
me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), 0.0f,
TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 1min))
{
- spotlight->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ spotlight->SetUninteractible(true);
spotlight->CastSpell(spotlight, SPELL_SPOTLIGHT, false);
m_uiSpotlightGUID = spotlight->GetGUID();
}
diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_felblood_kaelthas.cpp b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_felblood_kaelthas.cpp
index 8b2a6766a07..9b035976388 100644
--- a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_felblood_kaelthas.cpp
+++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_felblood_kaelthas.cpp
@@ -410,7 +410,7 @@ struct npc_felblood_kaelthas_phoenix : public ScriptedAI
me->AttackStop();
me->SetReactState(REACT_PASSIVE);
me->RemoveAllAuras();
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
DoCastSelf(SPELL_EMBER_BLAST);
// DoCastSelf(SPELL_SUMMON_PHOENIX_EGG); -- We do a manual summon for now. Feel free to move it to spelleffect_dbc
if (Creature* egg = DoSummon(NPC_PHOENIX_EGG, me->GetPosition(), 0s))
@@ -467,7 +467,7 @@ struct npc_felblood_kaelthas_phoenix : public ScriptedAI
_isInEgg = false;
DoCastSelf(SPELL_FULL_HEAL);
DoCastSelf(SPELL_BURN);
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
_events.ScheduleEvent(EVENT_ATTACK_PLAYERS, 2s);
break;
default:
diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_selin_fireheart.cpp b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_selin_fireheart.cpp
index 8cb2c5e0d10..787cf45c59f 100644
--- a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_selin_fireheart.cpp
+++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_selin_fireheart.cpp
@@ -153,7 +153,7 @@ class boss_selin_fireheart : public CreatureScript
Unit* CrystalChosen = ObjectAccessor::GetUnit(*me, CrystalGUID);
if (CrystalChosen && CrystalChosen->IsAlive())
{
- CrystalChosen->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ CrystalChosen->SetUninteractible(false);
CrystalChosen->CastSpell(me, SPELL_MANA_RAGE, true);
events.ScheduleEvent(EVENT_EMPOWER, 10s, PHASE_DRAIN);
}
diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp
index 67f23cf43ba..2047f9ee505 100644
--- a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp
+++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp
@@ -922,7 +922,7 @@ public:
deathcharger->RestoreFaction();
deathcharger->RemoveNpcFlag(UNIT_NPC_FLAG_SPELLCLICK);
- deathcharger->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ deathcharger->SetUninteractible(true);
if (!me->GetVehicle() && deathcharger->IsVehicle() && deathcharger->GetVehicleKit()->HasEmptySeat(0))
me->EnterVehicle(deathcharger);
}
@@ -936,7 +936,7 @@ public:
if (killer->GetTypeId() == TYPEID_PLAYER && deathcharger->GetTypeId() == TYPEID_UNIT && deathcharger->IsVehicle())
{
deathcharger->SetNpcFlag(UNIT_NPC_FLAG_SPELLCLICK);
- deathcharger->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ deathcharger->SetUninteractible(false);
deathcharger->SetFaction(FACTION_SCARLET_CRUSADE_2);
}
}
diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp
index f1a72d1818b..083dcf24eb8 100644
--- a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp
+++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp
@@ -747,7 +747,7 @@ public:
case 15: // summon gate
if (Creature* temp = me->SummonCreature(NPC_HIGHLORD_ALEXANDROS_MOGRAINE, LightofDawnLoc[22], TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 5min))
{
- temp->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ temp->SetUninteractible(true);
temp->CastSpell(temp, SPELL_ALEXANDROS_MOGRAINE_SPAWN, true);
temp->AI()->Talk(EMOTE_LIGHT_OF_DAWN06);
uiAlexandrosGUID = temp->GetGUID();
@@ -758,7 +758,7 @@ public:
case 16: // Alexandros out
if (Creature* temp = ObjectAccessor::GetCreature(*me, uiAlexandrosGUID))
{
- temp->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ temp->SetUninteractible(false);
temp->GetMotionMaster()->MovePoint(0, LightofDawnLoc[23]);
temp->AI()->Talk(SAY_LIGHT_OF_DAWN32);
}
diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp
index 8342512a234..83850147e3f 100644
--- a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp
+++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp
@@ -198,7 +198,7 @@ struct npc_headless_horseman_head : public PassiveAI
void HandleInitialSetup()
{
DoCastSelf(SPELL_HEADLESS_HORSEMAN_C_HEAD_STUN);
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
_phase = PHASE_1;
_events.SetPhase(PHASE_1);
}
@@ -255,7 +255,7 @@ struct npc_headless_horseman_head : public PassiveAI
{
me->RemoveAurasDueToSpell(SPELL_HEADLESS_HORSEMAN_C_HEAD_STUN);
DoCastSelf(SPELL_HEADLESS_HORSEMAN_C_HEAD_VISUAL, true);
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
me->GetMotionMaster()->MoveRandom(30.0f);
switch (_phase)
@@ -310,11 +310,11 @@ struct npc_headless_horseman_head : public PassiveAI
DoCast(horseman, SPELL_HEADLESS_HORSEMAN_C_RETURN_HEAD, true);
me->RemoveAllAttackers();
me->GetMotionMaster()->Clear();
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
break;
case EVENT_RAIN_OF_TREATS:
DoCastSelf(SPELL_RAIN_OF_TREATS);
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
_instance->SetData(DATA_PREPARE_RESET, 0);
if (GameObject* pumpkin = me->SummonGameObject(GO_PUMPKIN_SHRINE, GOPumpkinSpawnPosition, GOPumpkinSpawnQuat, 7_days))
me->RemoveGameObject(pumpkin, false);
@@ -707,7 +707,7 @@ struct npc_sir_thomas : public PassiveAI
void Reset() override
{
me->RemoveNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
DoCastSelf(SPELL_HEADLESS_HORSEMAN_WISP_INVIS);
_scheduler.Schedule(9s, [this](TaskContext /*context*/)
@@ -720,7 +720,7 @@ struct npc_sir_thomas : public PassiveAI
{
if (spellInfo->Id == SPELL_HEADLESS_HORSEMAN_WISP_FLIGHT_PORT)
{
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
me->SetNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
me->RemoveAurasDueToSpell(SPELL_HEADLESS_HORSEMAN_WISP_INVIS);
DoCastSelf(SPELL_HEADLESS_HORSEMAN_C_GHOST_VISUAL, true);
diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_mograine_and_whitemane.cpp b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_mograine_and_whitemane.cpp
index ce94275294c..f054558afcf 100644
--- a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_mograine_and_whitemane.cpp
+++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_mograine_and_whitemane.cpp
@@ -95,7 +95,8 @@ public:
_killYellTimer.Reset(0s);
DoCastSelf(SPELL_RETRIBUTION_AURA, true);
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE | UNIT_FLAG_NON_ATTACKABLE);
+ me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ me->SetUninteractible(false);
me->SetStandState(UNIT_STAND_STATE_STAND);
me->SetReactState(REACT_AGGRESSIVE);
@@ -168,7 +169,8 @@ public:
me->InterruptNonMeleeSpells(true);
me->RemoveAllAuras();
me->ClearAllReactives();
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE | UNIT_FLAG_NON_ATTACKABLE);
+ me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ me->SetUninteractible(true);
me->SetStandState(UNIT_STAND_STATE_DEAD);
me->SetReactState(REACT_PASSIVE); // prevent Mograine from attacking while fake death
@@ -190,7 +192,7 @@ public:
// Say text
Talk(SAY_MO_RESURRECTED);
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
me->SetStandState(UNIT_STAND_STATE_STAND);
});
diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_jandice_barov.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_jandice_barov.cpp
index 97a0d1fa435..d7ca8207024 100644
--- a/src/server/scripts/EasternKingdoms/Scholomance/boss_jandice_barov.cpp
+++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_jandice_barov.cpp
@@ -90,14 +90,14 @@ public:
break;
case EVENT_ILLUSION:
DoCast(SPELL_ILLUSION);
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
me->SetDisplayId(11686); // Invisible Model
ModifyThreatByPercent(me->GetVictim(), -99);
events.ScheduleEvent(EVENT_SET_VISIBILITY, 3s);
events.ScheduleEvent(EVENT_ILLUSION, 25s);
break;
case EVENT_SET_VISIBILITY:
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
me->SetDisplayId(11073); //Jandice Model
break;
default:
diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_kirtonos_the_herald.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_kirtonos_the_herald.cpp
index c102f54afad..a4f8cea844e 100644
--- a/src/server/scripts/EasternKingdoms/Scholomance/boss_kirtonos_the_herald.cpp
+++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_kirtonos_the_herald.cpp
@@ -128,7 +128,8 @@ class boss_kirtonos_the_herald : public CreatureScript
events.ScheduleEvent(INTRO_1, 500ms);
me->SetDisableGravity(true);
me->SetReactState(REACT_PASSIVE);
- me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ me->SetUninteractible(true);
Talk(EMOTE_SUMMONED);
}
@@ -178,7 +179,8 @@ class boss_kirtonos_the_herald : public CreatureScript
case INTRO_5:
me->HandleEmoteCommand(EMOTE_ONESHOT_ROAR);
me->SetVirtualItem(0, uint32(WEAPON_KIRTONOS_STAFF));
- me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
+ me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
me->SetReactState(REACT_AGGRESSIVE);
events.ScheduleEvent(INTRO_6, 5s);
break;
diff --git a/src/server/scripts/EasternKingdoms/ShadowfangKeep/boss_apothecary_hummel.cpp b/src/server/scripts/EasternKingdoms/ShadowfangKeep/boss_apothecary_hummel.cpp
index 255e2c6a171..88a9d539fba 100644
--- a/src/server/scripts/EasternKingdoms/ShadowfangKeep/boss_apothecary_hummel.cpp
+++ b/src/server/scripts/EasternKingdoms/ShadowfangKeep/boss_apothecary_hummel.cpp
@@ -149,7 +149,7 @@ struct boss_apothecary_hummel : public BossAI
_isDead = true;
me->RemoveAurasDueToSpell(SPELL_ALLURING_PERFUME);
DoCastSelf(SPELL_PERMANENT_FEIGN_DEATH, true);
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
Talk(SAY_HUMMEL_DEATH);
}
}
@@ -170,7 +170,7 @@ struct boss_apothecary_hummel : public BossAI
Talk(SAY_HUMMEL_DEATH);
events.Reset();
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
instance->SetBossState(DATA_APOTHECARY_HUMMEL, DONE);
Map::PlayerList const& players = me->GetMap()->GetPlayers();
diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp
index 42888e461b2..65dfebf49f2 100644
--- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp
+++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp
@@ -264,7 +264,7 @@ public:
{
Initialize();
me->SetDisableGravity(true);
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
me->setActive(true);
me->SetFarVisible(true);
@@ -444,7 +444,7 @@ public:
void InitializeAI() override
{
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
me->AddUnitState(UNIT_STATE_STUNNED);
@@ -617,7 +617,7 @@ public:
{
if (summoned->GetEntry() == NPC_ARMAGEDDON_TARGET)
{
- summoned->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ summoned->SetUninteractible(true);
summoned->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
// summoned->SetVisibility(VISIBILITY_OFF); //with this we cant see the armageddon visuals
}
@@ -1038,7 +1038,8 @@ public:
void Reset() override
{
Initialize();
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE | UNIT_FLAG_NON_ATTACKABLE);
+ me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ me->SetUninteractible(true);
}
void JustSummoned(Creature* summoned) override
diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp
index e4fb7ebf798..8805c80753c 100644
--- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp
+++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp
@@ -232,7 +232,7 @@ struct boss_muru : public BossAI
{
_Reset();
Initialize();
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
me->SetVisible(true);
}
@@ -279,7 +279,7 @@ struct boss_muru : public BossAI
_phase = PHASE_TWO;
me->RemoveAllAuras();
DoCast(me, SPELL_OPEN_ALL_PORTALS, true);
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
scheduler.Schedule(Seconds(6), [this](TaskContext /*context*/)
{
@@ -372,7 +372,7 @@ struct npc_dark_fiend : public ScriptedAI
_scheduler.Schedule(Seconds(2), [this](TaskContext /*context*/)
{
me->SetReactState(REACT_AGGRESSIVE);
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
if (Creature* _summoner = ObjectAccessor::GetCreature(*me, _summonerGUID))
if (Unit* target = _summoner->AI()->SelectTarget(SelectTargetMethod::Random, 0))
diff --git a/src/server/scripts/EasternKingdoms/Uldaman/boss_archaedas.cpp b/src/server/scripts/EasternKingdoms/Uldaman/boss_archaedas.cpp
index f23e6924eab..f19fdcf2ff0 100644
--- a/src/server/scripts/EasternKingdoms/Uldaman/boss_archaedas.cpp
+++ b/src/server/scripts/EasternKingdoms/Uldaman/boss_archaedas.cpp
@@ -101,7 +101,7 @@ class boss_archaedas : public CreatureScript
instance->SetData(0, 5); // respawn any dead minions
me->SetFaction(FACTION_FRIENDLY);
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
me->SetControlled(true, UNIT_STATE_ROOT);
me->AddAura(SPELL_FREEZE_ANIM, me);
}
@@ -114,7 +114,7 @@ class boss_archaedas : public CreatureScript
{
DoCast(minion, SPELL_AWAKEN_VAULT_WALKER, flag);
minion->CastSpell(minion, SPELL_ARCHAEDAS_AWAKEN, true);
- minion->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ minion->SetUninteractible(false);
minion->SetControlled(false, UNIT_STATE_ROOT);
minion->SetFaction(FACTION_MONSTER);
minion->RemoveAura(SPELL_MINION_FREEZE_ANIM);
@@ -124,7 +124,7 @@ class boss_archaedas : public CreatureScript
void JustEngagedWith(Unit* /*who*/) override
{
me->SetFaction(FACTION_MONSTER);
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
me->SetControlled(false, UNIT_STATE_ROOT);
}
@@ -264,7 +264,7 @@ class npc_archaedas_minions : public CreatureScript
Initialize();
me->SetFaction(35);
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
me->SetControlled(true, UNIT_STATE_ROOT);
me->RemoveAllAuras();
me->AddAura(SPELL_MINION_FREEZE_ANIM, me);
@@ -274,7 +274,7 @@ class npc_archaedas_minions : public CreatureScript
{
me->SetFaction(FACTION_MONSTER);
me->RemoveAllAuras();
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
me->SetControlled(false, UNIT_STATE_ROOT);
bAmIAwake = true;
}
@@ -353,7 +353,7 @@ class npc_stonekeepers : public CreatureScript
void Reset() override
{
me->SetFaction(FACTION_FRIENDLY);
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
me->SetControlled(true, UNIT_STATE_ROOT);
me->RemoveAllAuras();
me->AddAura(SPELL_MINION_FREEZE_ANIM, me);
@@ -362,7 +362,7 @@ class npc_stonekeepers : public CreatureScript
void JustEngagedWith(Unit* /*who*/) override
{
me->SetFaction(FACTION_FRIENDLY);
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
me->SetControlled(false, UNIT_STATE_ROOT);
}
diff --git a/src/server/scripts/EasternKingdoms/Uldaman/instance_uldaman.cpp b/src/server/scripts/EasternKingdoms/Uldaman/instance_uldaman.cpp
index b3365ace584..b02c5bc275a 100644
--- a/src/server/scripts/EasternKingdoms/Uldaman/instance_uldaman.cpp
+++ b/src/server/scripts/EasternKingdoms/Uldaman/instance_uldaman.cpp
@@ -139,7 +139,7 @@ class instance_uldaman : public InstanceMapScript
{
creature->SetFaction(FACTION_FRIENDLY);
creature->RemoveAllAuras();
- creature->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ creature->SetUninteractible(true);
creature->SetControlled(true, UNIT_STATE_ROOT);
creature->AddAura(SPELL_MINION_FREEZE_ANIM, creature);
}
@@ -173,7 +173,7 @@ class instance_uldaman : public InstanceMapScript
continue;
target->SetControlled(false, UNIT_STATE_ROOT);
target->SetFaction(FACTION_MONSTER);
- target->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ target->SetUninteractible(false);
target->RemoveAura(SPELL_MINION_FREEZE_ANIM);
return; // only want the first one we find
@@ -196,7 +196,7 @@ class instance_uldaman : public InstanceMapScript
if (!target || !target->IsAlive() || target->GetFaction() == FACTION_MONSTER)
continue;
target->SetControlled(false, UNIT_STATE_ROOT);
- target->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ target->SetUninteractible(false);
target->SetFaction(FACTION_MONSTER);
target->RemoveAura(SPELL_MINION_FREEZE_ANIM);
archaedas->CastSpell(target, SPELL_AWAKEN_VAULT_WALKER, true);
@@ -248,7 +248,7 @@ class instance_uldaman : public InstanceMapScript
archaedas->RemoveAura(SPELL_FREEZE_ANIM);
archaedas->CastSpell(archaedas, SPELL_ARCHAEDAS_AWAKEN, false);
archaedas->SetFaction(FACTION_TITAN);
- archaedas->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ archaedas->SetUninteractible(false);
whoWokeuiArchaedasGUID = target;
}
}
@@ -261,7 +261,7 @@ class instance_uldaman : public InstanceMapScript
ironaya->SetFaction(FACTION_TITAN);
ironaya->SetControlled(false, UNIT_STATE_ROOT);
- ironaya->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ ironaya->SetUninteractible(false);
ironaya->GetMotionMaster()->Clear();
ironaya->GetMotionMaster()->MovePoint(0, IronayaPoint);
diff --git a/src/server/scripts/EasternKingdoms/zone_silverpine_forest.cpp b/src/server/scripts/EasternKingdoms/zone_silverpine_forest.cpp
index d941582dd5b..c43de96c55d 100644
--- a/src/server/scripts/EasternKingdoms/zone_silverpine_forest.cpp
+++ b/src/server/scripts/EasternKingdoms/zone_silverpine_forest.cpp
@@ -1459,7 +1459,7 @@ struct npc_silverpine_forsaken_bat : public VehicleAI
{
player->KilledMonsterCredit(NPC_BAT_HANDLER_MAGGOTBREATH);
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
me->SetSpeed(UnitMoveType::MOVE_RUN, 17.794235f);
me->GetMotionMaster()->MovePath(PATH_BAT_TO_LAKE, false);
@@ -1697,7 +1697,7 @@ struct npc_silverpine_deathstalker_rane_yorick : public ScriptedAI
DoCastSelf(SPELL_STEALTH);
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
_playerSkipped = true;
}
@@ -1852,7 +1852,7 @@ struct npc_silverpine_deathstalker_rane_yorick : public ScriptedAI
case EVENT_RANE_SKIPS_PATH + 1:
DoCastSelf(SPELL_STEALTH);
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
_events.ScheduleEvent(EVENT_SET_GUID_FOR_ARMOIRE, 500ms);
break;
@@ -2354,7 +2354,7 @@ struct npc_silverpine_armoire : public VehicleAI
{
yorick->RemoveAura(SPELL_STEALTH);
- yorick->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ yorick->SetUninteractible(false);
bloodfang->CastSpell(yorick, SPELL_RIDE_REVERSE_CAST_EXSANGUINATE, true);
@@ -3387,7 +3387,7 @@ struct npc_silverpine_orc_crate : public ScriptedAI
{
if (summoner->GetEntry() == NPC_ORC_SEA_PUP)
{
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
me->EnterVehicle(summoner->ToUnit());
}
diff --git a/src/server/scripts/ExilesReach/zone_exiles_reach.cpp b/src/server/scripts/ExilesReach/zone_exiles_reach.cpp
index e5b8a33aefb..069cce7341e 100644
--- a/src/server/scripts/ExilesReach/zone_exiles_reach.cpp
+++ b/src/server/scripts/ExilesReach/zone_exiles_reach.cpp
@@ -367,7 +367,8 @@ struct npc_sparring_partner_exiles_reach : public ScriptedAI
case POSITION_SPARPOINT_READY:
if (Player* player = ObjectAccessor::GetPlayer(*me, _playerGUID))
me->SetFacingToObject(player);
- me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_UNINTERACTIBLE);
+ me->SetImmuneToPC(false);
+ me->SetUninteractible(false);
break;
default:
break;
@@ -394,7 +395,8 @@ struct npc_sparring_partner_exiles_reach : public ScriptedAI
damage = 0;
me->SetHealth(1);
DoStopAttack();
- me->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_UNINTERACTIBLE);
+ me->SetImmuneToPC(true);
+ me->SetUninteractible(true);
_events.CancelEvent(EVENT_JUMP_BEHIND);
if (Player* player = ObjectAccessor::GetPlayer(*me, _playerGUID))
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal_trash.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal_trash.cpp
index 3263af0cd5e..15a5567584a 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal_trash.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal_trash.cpp
@@ -426,7 +426,7 @@ public:
CanMove = false;
Delay = rand32() % 30000;
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
me->SetDisplayId(MODEL_INVIS);
go = false;
Initialize();
@@ -490,7 +490,7 @@ public:
if (spawnTimer <= diff)
{
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
me->SetDisplayId(me->GetNativeDisplayId());
CanMove = true;
if (instance->GetData(DATA_ALLIANCE_RETREAT) && !instance->GetData(DATA_HORDE_RETREAT))
diff --git a/src/server/scripts/Kalimdor/Firelands/boss_alysrazor.cpp b/src/server/scripts/Kalimdor/Firelands/boss_alysrazor.cpp
index 79caac8dbab..a3aeb643c55 100644
--- a/src/server/scripts/Kalimdor/Firelands/boss_alysrazor.cpp
+++ b/src/server/scripts/Kalimdor/Firelands/boss_alysrazor.cpp
@@ -299,7 +299,7 @@ class npc_blazing_monstrosity : public CreatureScript
// Our passenger is another vehicle (boardable by players)
DoCast(passenger, SPELL_SHARE_HEALTH, true);
passenger->SetFaction(35);
- passenger->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ passenger->SetUninteractible(false);
// Hack to relocate vehicle on vehicle so exiting players are not moved under map
Movement::MoveSplineInit init(passenger);
diff --git a/src/server/scripts/Kalimdor/HallsOfOrigination/boss_anraphet.cpp b/src/server/scripts/Kalimdor/HallsOfOrigination/boss_anraphet.cpp
index a993f30c802..ebe2ae71072 100644
--- a/src/server/scripts/Kalimdor/HallsOfOrigination/boss_anraphet.cpp
+++ b/src/server/scripts/Kalimdor/HallsOfOrigination/boss_anraphet.cpp
@@ -156,7 +156,7 @@ public:
if (instance->GetData(DATA_DEAD_ELEMENTALS) == 4)
{
// Set to combat automatically, Brann's event won't repeat
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
events.SetPhase(PHASE_COMBAT);
ScheduleCombatEvents();
me->SetHomePosition(AnraphetActivatePos);
@@ -240,7 +240,7 @@ public:
events.ScheduleEvent(EVENT_ANRAPHET_READY, 6s, 0, PHASE_INTRO);
break;
case EVENT_ANRAPHET_READY:
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
events.SetPhase(PHASE_COMBAT);
ScheduleCombatEvents();
break;
diff --git a/src/server/scripts/Kalimdor/HallsOfOrigination/boss_earthrager_ptah.cpp b/src/server/scripts/Kalimdor/HallsOfOrigination/boss_earthrager_ptah.cpp
index fb645aaa715..6f2ecff5f14 100644
--- a/src/server/scripts/Kalimdor/HallsOfOrigination/boss_earthrager_ptah.cpp
+++ b/src/server/scripts/Kalimdor/HallsOfOrigination/boss_earthrager_ptah.cpp
@@ -294,7 +294,8 @@ public:
{
if (Unit* ptah = GetCaster())
{
- ptah->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE | UNIT_FLAG_PREVENT_EMOTES_FROM_CHAT_TEXT);
+ ptah->SetUninteractible(true);
+ ptah->SetUnitFlag(UNIT_FLAG_PREVENT_EMOTES_FROM_CHAT_TEXT);
ptah->SetUnitFlag2(UNIT_FLAG2_FEIGN_DEATH);
}
}
@@ -303,7 +304,8 @@ public:
{
if (Unit* ptah = GetCaster())
{
- ptah->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE | UNIT_FLAG_PREVENT_EMOTES_FROM_CHAT_TEXT);
+ ptah->SetUninteractible(false);
+ ptah->RemoveUnitFlag(UNIT_FLAG_PREVENT_EMOTES_FROM_CHAT_TEXT);
ptah->RemoveUnitFlag2(UNIT_FLAG2_FEIGN_DEATH);
}
}
diff --git a/src/server/scripts/Kalimdor/Maraudon/boss_noxxion.cpp b/src/server/scripts/Kalimdor/Maraudon/boss_noxxion.cpp
index ac6d038bfa9..ef86e220646 100644
--- a/src/server/scripts/Kalimdor/Maraudon/boss_noxxion.cpp
+++ b/src/server/scripts/Kalimdor/Maraudon/boss_noxxion.cpp
@@ -83,7 +83,7 @@ public:
{
//Become visible again
me->SetFaction(FACTION_MONSTER);
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
//Noxxion model
me->SetDisplayId(11172);
Invisible = false;
@@ -123,7 +123,7 @@ public:
//me->m_canMove = true;
me->InterruptNonMeleeSpells(false);
me->SetFaction(FACTION_FRIENDLY);
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
// Invisible Model
me->SetDisplayId(11686);
SummonAdds(me->GetVictim());
diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp
index a5a695d7429..ea02ccf3d0e 100644
--- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp
+++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp
@@ -209,7 +209,8 @@ public:
//Reset flags
me->RemoveAurasDueToSpell(SPELL_RED_COLORATION);
me->RemoveAurasDueToSpell(SPELL_FREEZE_ANIM);
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE | UNIT_FLAG_NON_ATTACKABLE);
+ me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ me->SetUninteractible(false);
me->SetVisible(true);
//Reset Phase
@@ -420,7 +421,8 @@ public:
me->RemoveAurasDueToSpell(SPELL_RED_COLORATION);
//Reset to normal emote state and prevent select and attack
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE | UNIT_FLAG_NON_ATTACKABLE);
+ me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ me->SetUninteractible(true);
//Remove Target field
me->SetTarget(ObjectGuid::Empty);
@@ -523,7 +525,8 @@ public:
//Reset flags
me->RemoveAurasDueToSpell(SPELL_TRANSFORM);
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE | UNIT_FLAG_NON_ATTACKABLE);
+ me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ me->SetUninteractible(true);
me->SetVisible(false);
instance->SetData(DATA_CTHUN_PHASE, PHASE_NOT_STARTED);
@@ -632,7 +635,8 @@ public:
me->SetFullHealth();
me->SetVisible(true);
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE | UNIT_FLAG_NON_ATTACKABLE);
+ me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ me->SetUninteractible(false);
//Emerging phase
//AttackStart(ObjectAccessor::GetUnit(*me, HoldpPlayer));
diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp
index baa45489f71..743dacb9951 100644
--- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp
+++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp
@@ -112,7 +112,7 @@ public:
{
//Cast
me->HandleEmoteCommand(EMOTE_ONESHOT_SUBMERGE);
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
me->SetFaction(FACTION_FRIENDLY);
DoCast(me, SPELL_DIRTMOUND_PASSIVE);
@@ -132,7 +132,7 @@ public:
//Back_Timer
if (Submerged && Back_Timer <= diff)
{
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
me->SetFaction(FACTION_MONSTER);
DoCastVictim(SPELL_GROUND_RUPTURE);
diff --git a/src/server/scripts/Kalimdor/zone_felwood.cpp b/src/server/scripts/Kalimdor/zone_felwood.cpp
index fd37411ab82..097b803488d 100644
--- a/src/server/scripts/Kalimdor/zone_felwood.cpp
+++ b/src/server/scripts/Kalimdor/zone_felwood.cpp
@@ -63,7 +63,7 @@ public:
}
else
{
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
}
me->RemoveNpcFlag(UNIT_NPC_FLAG_SPELLCLICK);
diff --git a/src/server/scripts/Kalimdor/zone_the_barrens.cpp b/src/server/scripts/Kalimdor/zone_the_barrens.cpp
index 9c09e0d8cb6..9895a06c7eb 100644
--- a/src/server/scripts/Kalimdor/zone_the_barrens.cpp
+++ b/src/server/scripts/Kalimdor/zone_the_barrens.cpp
@@ -283,7 +283,7 @@ public:
if (!creature)
continue;
creature->SetFaction(35);
- creature->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ creature->SetUninteractible(true);
creature->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
creature->HandleEmoteCommand(EMOTE_ONESHOT_ROAR);
AffrayChallenger[i] = creature->GetGUID();
@@ -320,7 +320,7 @@ public:
Creature* creature = ObjectAccessor::GetCreature(*me, AffrayChallenger[Wave]);
if (creature && (creature->IsAlive()))
{
- creature->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ creature->SetUninteractible(false);
creature->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
creature->HandleEmoteCommand(EMOTE_ONESHOT_ROAR);
creature->SetFaction(14);
@@ -352,7 +352,7 @@ public:
}
else // Makes BIG WILL attackable.
{
- creature->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ creature->SetUninteractible(false);
creature->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
creature->HandleEmoteCommand(EMOTE_ONESHOT_ROAR);
creature->SetFaction(14);
diff --git a/src/server/scripts/Maelstrom/Stonecore/boss_corborus.cpp b/src/server/scripts/Maelstrom/Stonecore/boss_corborus.cpp
index db16f1ad66d..98e2714df17 100644
--- a/src/server/scripts/Maelstrom/Stonecore/boss_corborus.cpp
+++ b/src/server/scripts/Maelstrom/Stonecore/boss_corborus.cpp
@@ -192,7 +192,7 @@ class boss_corborus : public CreatureScript
events.RescheduleEvent(EVENT_SUBMERGE, 100s);
me->SetReactState(REACT_PASSIVE);
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
DoCast(me, SPELL_CLEAR_ALL_DEBUFFS);
me->AttackStop();
@@ -217,7 +217,7 @@ class boss_corborus : public CreatureScript
break;
case EVENT_EMERGE:
me->RemoveAllAuras();
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
DoCast(me, SPELL_EMERGE);
events.ScheduleEvent(EVENT_ATTACK, 2500ms);
break;
diff --git a/src/server/scripts/Maelstrom/Stonecore/boss_slabhide.cpp b/src/server/scripts/Maelstrom/Stonecore/boss_slabhide.cpp
index 8c0f1c056c3..807d4fc7da8 100644
--- a/src/server/scripts/Maelstrom/Stonecore/boss_slabhide.cpp
+++ b/src/server/scripts/Maelstrom/Stonecore/boss_slabhide.cpp
@@ -197,7 +197,7 @@ class boss_slabhide : public CreatureScript
me->SetHover(false);
me->SetHomePosition(SlabhideIntroLandPos);
me->HandleEmoteCommand(EMOTE_ONESHOT_ROAR);
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
me->SetReactState(REACT_AGGRESSIVE);
instance->SetData(DATA_SLABHIDE_INTRO, DONE);
break;
diff --git a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_herald_volazj.cpp b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_herald_volazj.cpp
index 4ba062cdaec..f83f323ab65 100644
--- a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_herald_volazj.cpp
+++ b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_herald_volazj.cpp
@@ -152,7 +152,7 @@ struct boss_volazj : public BossAI
ResetPlayersPhaseMask();
// Cleanup
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
me->SetControlled(false, UNIT_STATE_STUNNED);
}
@@ -192,7 +192,7 @@ struct boss_volazj : public BossAI
void DamageTaken(Unit* /*pAttacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
- if (me->HasUnitFlag(UNIT_FLAG_UNINTERACTIBLE))
+ if (me->IsUninteractible())
damage = 0;
if ((GetHealthPct(0) >= 66 && GetHealthPct(damage) < 66) || (GetHealthPct(0) >= 33 && GetHealthPct(damage) < 33))
@@ -223,7 +223,7 @@ struct boss_volazj : public BossAI
Talk(SAY_INSANITY);
DoCastSelf(SPELL_WHISPER_INSANITY, true);
// Unattackable
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
me->SetControlled(true, UNIT_STATE_STUNNED);
}
// phase mask
@@ -348,7 +348,7 @@ struct boss_volazj : public BossAI
return;
_insanityHandled = 0;
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
me->SetControlled(false, UNIT_STATE_STUNNED);
me->RemoveAurasDueToSpell(INSANITY_VISUAL);
}
diff --git a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_jedoga_shadowseeker.cpp b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_jedoga_shadowseeker.cpp
index 2e1fac4c536..6c899e46faf 100644
--- a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_jedoga_shadowseeker.cpp
+++ b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_jedoga_shadowseeker.cpp
@@ -279,7 +279,7 @@ struct boss_jedoga_shadowseeker : public BossAI
switch (pointId)
{
case POINT_GROUND:
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
me->SetReactState(REACT_AGGRESSIVE);
DoZoneInCombat();
events.ScheduleEvent(EVENT_CYCLONE_STRIKE, 3s);
@@ -329,7 +329,7 @@ struct boss_jedoga_shadowseeker : public BossAI
me->SetReactState(REACT_PASSIVE);
me->AttackStop();
me->InterruptNonMeleeSpells(true);
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
me->GetMotionMaster()->MovePoint(POINT_PHASE_TWO, JedogaGroundPosition);
break;
case EVENT_FLY_DELAY:
@@ -416,7 +416,7 @@ struct npc_twilight_volunteer : public ScriptedAI
me->RemoveAurasDueToSpell(SPELL_SPHERE_VISUAL_VOLUNTEER);
Talk(SAY_CHOSEN);
me->SetStandState(UNIT_STAND_STATE_STAND);
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
me->SetWalk(true);
me->GetMotionMaster()->MovePoint(POINT_SACRIFICE, JedogaSacrificePosition);
}
diff --git a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_prince_taldaram.cpp b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_prince_taldaram.cpp
index 61b5167bcd8..668c2a21d63 100644
--- a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_prince_taldaram.cpp
+++ b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_prince_taldaram.cpp
@@ -272,7 +272,7 @@ struct boss_prince_taldaram : public BossAI
void RemovePrison()
{
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
summons.DespawnEntry(NPC_JEDOGA_CONTROLLER);
me->RemoveAurasDueToSpell(SPELL_BEAM_VISUAL);
me->SetHomePosition(me->GetPositionX(), me->GetPositionY(), PrinceTaldaramGroundPositionZ, me->GetOrientation());
diff --git a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp
index c72da7380e9..858229803b0 100644
--- a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp
+++ b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp
@@ -118,7 +118,8 @@ struct boss_anub_arak : public BossAI
void Reset() override
{
BossAI::Reset();
- me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_UNINTERACTIBLE);
+ me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ me->SetUninteractible(false);
_nextSubmerge = 75;
_petCount = 0;
}
@@ -328,7 +329,8 @@ struct boss_anub_arak : public BossAI
{
me->RemoveAurasDueToSpell(SPELL_SUBMERGE);
me->RemoveAurasDueToSpell(SPELL_IMPALE_AURA);
- me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_UNINTERACTIBLE);
+ me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ me->SetUninteractible(false);
DoCastSelf(SPELL_EMERGE);
events.SetPhase(PHASE_EMERGE);
events.ScheduleEvent(EVENT_POUND, 13s, 18s, 0, PHASE_EMERGE);
@@ -358,7 +360,8 @@ struct boss_anub_arak : public BossAI
{
if (spellInfo->Id == SPELL_SUBMERGE)
{
- me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ me->SetUninteractible(true);
me->RemoveAurasDueToSpell(SPELL_LEECHING_SWARM);
DoCastSelf(SPELL_IMPALE_AURA, true);
diff --git a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/obsidian_sanctum.cpp b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/obsidian_sanctum.cpp
index c5f211c538b..f52c2bb1625 100644
--- a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/obsidian_sanctum.cpp
+++ b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/obsidian_sanctum.cpp
@@ -794,7 +794,8 @@ struct npc_flame_tsunami : public ScriptedAI
me->SetReactState(REACT_PASSIVE);
events.ScheduleEvent(EVENT_TSUNAMI_TIMER, 100ms);
events.ScheduleEvent(EVENT_TSUNAMI_BUFF, 1s);
- me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ me->SetUninteractible(true);
}
void UpdateAI(uint32 diff) override
@@ -840,7 +841,8 @@ struct npc_twilight_fissure : public ScriptedAI
void Reset() override
{
- me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ me->SetUninteractible(true);
me->AddAura(46265, me); // Wrong, can't find proper visual
me->AddAura(69422, me);
events.ScheduleEvent(EVENT_VOID_BLAST, 5s);
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 43605254fd8..a2f3e083402 100644
--- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_general_zarithrian.cpp
+++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_general_zarithrian.cpp
@@ -73,7 +73,7 @@ struct boss_general_zarithrian : public BossAI
_Reset();
if (instance->GetBossState(DATA_SAVIANA_RAGEFIRE) == DONE && instance->GetBossState(DATA_BALTHARUS_THE_WARBORN) == DONE)
{
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
me->SetImmuneToPC(false);
}
}
diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp
index ba9282af4f2..6e063194dd3 100644
--- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp
+++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp
@@ -291,7 +291,7 @@ class boss_halion : public CreatureScript
Talk(SAY_PHASE_TWO);
me->CastStop();
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
DoCastSelf(SPELL_TWILIGHT_PHASING);
if (Creature* controller = instance->GetCreature(DATA_HALION_CONTROLLER))
@@ -673,7 +673,7 @@ class npc_halion_controller : public CreatureScript
continue;
halion->RemoveAurasDueToSpell(SPELL_TWILIGHT_PHASING);
- halion->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ halion->SetUninteractible(false);
}
// Summon Twilight portals
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 0d0635409ba..87c6da489d5 100644
--- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/instance_ruby_sanctum.cpp
+++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/instance_ruby_sanctum.cpp
@@ -184,7 +184,7 @@ 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(UNIT_FLAG_UNINTERACTIBLE);
+ zarithrian->SetUninteractible(false);
zarithrian->SetImmuneToPC(false);
}
}
diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp
index b460ce13e92..9ffe975f38e 100644
--- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp
+++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp
@@ -188,7 +188,8 @@ struct boss_anubarak_trial : public BossAI
events.ScheduleEvent(EVENT_SUMMON_FROST_SPHERE, 20s);
Initialize();
- me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_UNINTERACTIBLE);
+ me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ me->SetUninteractible(false);
// clean up spawned Frost Spheres
std::list<Creature*> FrostSphereList;
me->GetCreatureListWithEntryInGrid(FrostSphereList, NPC_FROST_SPHERE, 150.0f);
@@ -268,7 +269,8 @@ struct boss_anubarak_trial : public BossAI
{
BossAI::JustEngagedWith(who);
Talk(SAY_AGGRO);
- me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_UNINTERACTIBLE);
+ me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ me->SetUninteractible(false);
// Despawn Scarab Swarms neutral
EntryCheckPredicate pred(NPC_SCARAB);
@@ -331,7 +333,8 @@ struct boss_anubarak_trial : public BossAI
{
DoCast(me, SPELL_SUBMERGE_ANUBARAK);
DoCast(me, SPELL_CLEAR_ALL_DEBUFFS);
- me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ me->SetUninteractible(true);
Talk(EMOTE_BURROWER);
events.SetPhase(PHASE_SUBMERGED);
events.ScheduleEvent(EVENT_PURSUING_SPIKE, 2s, 0, PHASE_SUBMERGED);
@@ -367,7 +370,8 @@ struct boss_anubarak_trial : public BossAI
DoCast(SPELL_SPIKE_TELE);
summons.DespawnEntry(NPC_SPIKE);
me->RemoveAurasDueToSpell(SPELL_SUBMERGE_ANUBARAK);
- me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_UNINTERACTIBLE);
+ me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ me->SetUninteractible(false);
DoCast(me, SPELL_EMERGE_ANUBARAK);
Talk(EMOTE_EMERGE);
events.SetPhase(PHASE_MELEE);
@@ -556,14 +560,14 @@ struct npc_nerubian_burrower : public ScriptedAI
me->RemoveAurasDueToSpell(SPELL_SUBMERGE_EFFECT);
DoCast(me, SPELL_EMERGE_EFFECT);
DoCast(me, SPELL_AWAKENED);
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
}
else
{
if (!me->HasAura(SPELL_PERMAFROST_HELPER))
{
DoCast(me, SPELL_SUBMERGE_EFFECT);
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
DoCast(me, SPELL_PERSISTENT_DIRT, true);
}
}
@@ -604,7 +608,7 @@ struct npc_frost_sphere : public ScriptedAI
{
// we are close to the ground
me->GetMotionMaster()->MoveIdle();
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
me->RemoveAurasDueToSpell(SPELL_FROST_SPHERE);
DoCast(SPELL_PERMAFROST_MODEL);
DoCast(SPELL_PERMAFROST);
@@ -614,7 +618,7 @@ struct npc_frost_sphere : public ScriptedAI
{
// we are in air
me->GetMotionMaster()->MoveIdle();
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
//At hit the ground
me->HandleEmoteCommand(EMOTE_ONESHOT_FLYDEATH);
me->GetMotionMaster()->MoveFall(POINT_FALL_GROUND);
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 aa90590bff7..bc744e47769 100644
--- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_lord_jaraxxus.cpp
+++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_lord_jaraxxus.cpp
@@ -324,7 +324,7 @@ struct npc_infernal_volcano : public ScriptedAI
me->SetReactState(REACT_PASSIVE);
DoCastSelf(SPELL_INFERNAL_ERUPTION_EFFECT, true);
if (IsHeroic())
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
}
};
@@ -386,7 +386,7 @@ struct npc_nether_portal : public ScriptedAI
me->SetReactState(REACT_PASSIVE);
DoCastSelf(SPELL_NETHER_PORTAL_EFFECT, true);
if (IsHeroic())
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
}
};
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 84253a2bef4..895aa70a5d3 100644
--- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp
+++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp
@@ -380,7 +380,8 @@ struct boss_gormok : public boss_northrend_beastsAI
if (Unit* snobold = me->GetVehicleKit()->GetPassenger(i))
{
snobold->ExitVehicle();
- snobold->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_UNINTERACTIBLE);
+ snobold->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ snobold->SetUninteractible(false);
snobold->GetAI()->DoAction(ACTION_DISABLE_FIRE_BOMB);
snobold->CastSpell(me, SPELL_JUMP_TO_HAND, true);
break;
@@ -484,7 +485,8 @@ struct npc_snobold_vassal : public ScriptedAI
}
else
{
- me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_UNINTERACTIBLE);
+ me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ me->SetUninteractible(false);
_events.CancelEvent(EVENT_CHECK_MOUNT);
_events.CancelEvent(EVENT_FIRE_BOMB);
me->AttackStop();
@@ -734,20 +736,18 @@ struct boss_jormungarAI : public boss_northrend_beastsAI
{
me->SetReactState(REACT_PASSIVE);
me->AttackStop();
+ me->HandleEmoteCommand(EMOTE_ONESHOT_SUBMERGE);
if (wasMobile)
{
- me->HandleEmoteCommand(EMOTE_ONESHOT_SUBMERGE);
DoCastSelf(SPELL_SUBMERGE);
me->SetSpeedRate(MOVE_RUN, 8.0f);
DoCastSelf(SPELL_GROUND_VISUAL_0, true);
events.SetPhase(PHASE_SUBMERGED);
events.ScheduleEvent(EVENT_EMERGE, 5s, 0, PHASE_SUBMERGED);
- me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_UNINTERACTIBLE);
}
else
{
- me->HandleEmoteCommand(EMOTE_ONESHOT_SUBMERGE);
DoCastSelf(SPELL_SUBMERGE_2);
me->RemoveAurasDueToSpell(SPELL_GROUND_VISUAL_1);
me->SetSpeedRate(MOVE_RUN, 1.1111f);
@@ -755,8 +755,10 @@ struct boss_jormungarAI : public boss_northrend_beastsAI
events.SetPhase(PHASE_SUBMERGED);
me->SetControlled(false, UNIT_STATE_ROOT);
events.ScheduleEvent(EVENT_EMERGE, 6s, 0, PHASE_SUBMERGED);
- me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_UNINTERACTIBLE);
}
+
+ me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ me->SetUninteractible(true);
me->GetMotionMaster()->MovePoint(0, ToCCommonLoc[1].GetPositionX() + frand(-40.0f, 40.0f), ToCCommonLoc[1].GetPositionY() + frand(-40.0f, 40.0f), ToCCommonLoc[1].GetPositionZ() + me->GetCollisionHeight());
}
@@ -768,7 +770,8 @@ struct boss_jormungarAI : public boss_northrend_beastsAI
me->RemoveAurasDueToSpell(SPELL_GROUND_VISUAL_0);
DoCastSelf(SPELL_EMERGE);
DoCastAOE(SPELL_HATE_TO_ZERO, true);
- me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_UNINTERACTIBLE);
+ me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ me->SetUninteractible(false);
me->SetReactState(REACT_AGGRESSIVE);
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0))
AttackStart(target);
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 e0f697c5536..06eadcb3e39 100644
--- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp
+++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp
@@ -555,7 +555,8 @@ struct npc_unleashed_ballAI : public ScriptedAI
void Reset() override
{
- me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ me->SetUninteractible(true);
me->SetReactState(REACT_PASSIVE);
me->SetDisableGravity(true);
me->SetCanFly(true);
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 19ce4cb891a..5eff34cacf5 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
@@ -591,7 +591,7 @@ class instance_halls_of_reflection : public InstanceMapScript
if (Creature* temp = instance->GetCreature(guid))
{
temp->CastSpell(temp, SPELL_SPIRIT_ACTIVATE, false);
- temp->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ temp->SetUninteractible(false);
temp->SetImmuneToAll(false);
temp->AI()->DoZoneInCombat(temp);
}
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 0aa1ae99750..84b422fdf30 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp
@@ -553,7 +553,7 @@ struct BloodPrincesBossAI : public BossAI
{
case ACTION_STAND_UP:
me->RemoveAurasDueToSpell(SPELL_FEIGN_DEATH);
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
me->SetImmuneToPC(false);
me->RemoveUnitFlag3(UNIT_FLAG3_FAKE_DEAD);
me->m_Events.AddEvent(new StandUpEvent(me), me->m_Events.CalculateTime(1s));
@@ -778,7 +778,7 @@ struct boss_prince_valanar_icc : public BloodPrincesBossAI
summon->GetPosition(x, y, z);
float ground_Z = summon->GetMap()->GetHeight(summon->GetPhaseShift(), x, y, z, true, 500.0f);
summon->GetMotionMaster()->MovePoint(POINT_KINETIC_BOMB_IMPACT, x, y, ground_Z);
- summon->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ summon->SetUninteractible(false);
break;
}
case NPC_SHOCK_VORTEX:
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp
index 1b43db638bc..ca69c1d8145 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp
@@ -367,7 +367,7 @@ struct boss_deathbringer_saurfang : public BossAI
_dead = true;
_JustDied();
_EnterEvadeMode();
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
me->SetImmuneToPC(true);
me->RemoveAurasOnEvade();
DoCastAOE(SPELL_REMOVE_MARKS_OF_THE_FALLEN_CHAMPION);
@@ -464,7 +464,7 @@ struct boss_deathbringer_saurfang : public BossAI
switch (eventId)
{
case EVENT_INTRO_ALLIANCE_2:
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
me->SetFaction(FACTION_UNDEAD_SCOURGE);
Talk(SAY_INTRO_ALLIANCE_2);
break;
@@ -477,7 +477,7 @@ struct boss_deathbringer_saurfang : public BossAI
DoCastSelf(SPELL_GRIP_OF_AGONY);
break;
case EVENT_INTRO_HORDE_2:
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
me->SetFaction(FACTION_UNDEAD_SCOURGE);
Talk(SAY_INTRO_HORDE_2);
break;
@@ -732,7 +732,7 @@ struct npc_high_overlord_saurfang_icc : public ScriptedAI
if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_DEATHBRINGER_SAURFANG)))
{
deathbringer->CastSpell(me, SPELL_RIDE_VEHICLE, true); // for the packet logs.
- deathbringer->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ deathbringer->SetUninteractible(true);
deathbringer->SetUnitFlag2(UNIT_FLAG2_PLAY_DEATH_ANIM);
deathbringer->SetEmoteState(EMOTE_STATE_DROWNED);
}
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp
index 633ec1dc9f6..ae91ecb274c 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp
@@ -645,12 +645,12 @@ struct npc_cult_fanatic : public ScriptedAI
DoCastSelf(SPELL_PERMANENT_FEIGN_DEATH);
DoCastSelf(SPELL_CLEAR_ALL_DEBUFFS);
DoCastSelf(SPELL_FULL_HEAL, true);
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
})
.Schedule(Seconds(6), [this](TaskContext /*context*/)
{
me->RemoveAurasDueToSpell(SPELL_PERMANENT_FEIGN_DEATH);
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
me->SetReactState(REACT_AGGRESSIVE);
DoZoneInCombat(me);
@@ -736,12 +736,12 @@ struct npc_cult_adherent : public ScriptedAI
DoCastSelf(SPELL_PERMANENT_FEIGN_DEATH);
DoCastSelf(SPELL_CLEAR_ALL_DEBUFFS);
DoCastSelf(SPELL_FULL_HEAL, true);
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
})
.Schedule(Seconds(6), [this](TaskContext /*context*/)
{
me->RemoveAurasDueToSpell(SPELL_PERMANENT_FEIGN_DEATH);
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
me->SetReactState(REACT_AGGRESSIVE);
DoCastSelf(SPELL_SHROUD_OF_THE_OCCULT);
DoZoneInCombat(me);
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp
index e2ca321494e..f56810783f2 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp
@@ -243,7 +243,7 @@ struct boss_professor_putricide : public BossAI
if (instance->GetBossState(DATA_ROTFACE) == DONE && instance->GetBossState(DATA_FESTERGUT) == DONE)
{
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
me->SetImmuneToPC(false);
}
}
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 cbff6530c4f..14cd6145543 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp
@@ -1480,7 +1480,7 @@ struct npc_valkyr_shadowguard : public ScriptedAI
case POINT_CHARGE:
if (Player* target = ObjectAccessor::GetPlayer(*me, _grabbedPlayer))
{
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
if (GameObject* platform = ObjectAccessor::GetGameObject(*me, _instance->GetGuidData(DATA_ARTHAS_PLATFORM)))
{
std::list<Creature*> triggers;
@@ -1717,7 +1717,7 @@ struct npc_terenas_menethil : public ScriptedAI
damage = me->GetHealth() - 1;
if (!me->HasAura(SPELL_TERENAS_LOSES_INSIDE) && !IsHeroic())
{
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
DoCast(SPELL_TERENAS_LOSES_INSIDE);
_events.ScheduleEvent(EVENT_TELEPORT_BACK, 1s);
if (Creature* warden = me->FindNearestCreature(NPC_SPIRIT_WARDEN, 20.0f))
@@ -1778,7 +1778,7 @@ struct npc_terenas_menethil : public ScriptedAI
}
break;
case EVENT_DESTROY_SOUL:
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
if (Creature* warden = me->FindNearestCreature(NPC_SPIRIT_WARDEN, 20.0f))
warden->CastSpell(nullptr, SPELL_DESTROY_SOUL, TRIGGERED_NONE);
DoCast(SPELL_TERENAS_LOSES_INSIDE);
@@ -2532,7 +2532,7 @@ class spell_the_lich_king_vile_spirit_damage_target_search : public SpellScript
summoner->GetAI()->SetData(DATA_VILE, 1);
GetCaster()->CastSpell(nullptr, SPELL_SPIRIT_BURST, true);
GetCaster()->ToCreature()->DespawnOrUnsummon(3s);
- GetCaster()->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ GetCaster()->SetUninteractible(true);
}
void Register() override
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp
index c4a03791d37..b969f003271 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp
@@ -381,7 +381,7 @@ struct boss_valithria_dreamwalker : public ScriptedAI
DoCastSelf(SPELL_REPUTATION_BOSS_KILL, true);
// this display id was found in sniff instead of the one on aura
me->SetDisplayId(11686);
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
me->DespawnOrUnsummon(4s);
if (Creature* trigger = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_VALITHRIA_TRIGGER)))
Unit::Kill(me, trigger);
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp
index 4337e0c2a89..3be82407246 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp
@@ -1311,7 +1311,7 @@ class spell_icc_stoneform : public AuraScript
if (Creature* target = GetTarget()->ToCreature())
{
target->SetReactState(REACT_PASSIVE);
- target->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ target->SetUninteractible(true);
target->SetImmuneToPC(true);
target->SetEmoteState(EMOTE_STATE_CUSTOM_SPELL_02);
}
@@ -1322,7 +1322,7 @@ class spell_icc_stoneform : public AuraScript
if (Creature* target = GetTarget()->ToCreature())
{
target->SetReactState(REACT_AGGRESSIVE);
- target->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ target->SetUninteractible(false);
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 829eafd379f..c5bb7db14ad 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp
@@ -223,7 +223,7 @@ struct boss_kelthuzad : public BossAI
return;
_Reset();
me->SetReactState(REACT_PASSIVE);
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
me->SetImmuneToPC(true);
_skeletonCount = 0;
_bansheeCount = 0;
@@ -428,7 +428,7 @@ struct boss_kelthuzad : public BossAI
case EVENT_PHASE_TWO:
me->CastStop();
events.SetPhase(PHASE_TWO);
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
me->SetImmuneToPC(false);
ResetThreatList();
me->SetReactState(REACT_AGGRESSIVE);
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp b/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp
index 4a6bb76f6b3..98de9a42912 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp
@@ -99,7 +99,7 @@ struct boss_noth : public BossAI
_Reset();
me->SetReactState(REACT_AGGRESSIVE);
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
balconyCount = 0;
events.SetPhase(PHASE_NONE);
@@ -235,7 +235,7 @@ struct boss_noth : public BossAI
case EVENT_BALCONY:
events.SetPhase(PHASE_BALCONY);
me->SetReactState(REACT_PASSIVE);
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
me->AttackStop();
me->StopMoving();
me->RemoveAllAuras();
@@ -291,7 +291,7 @@ struct boss_noth : public BossAI
EnterPhaseGround();
break;
case EVENT_GROUND_ATTACKABLE:
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(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 c9c443797e8..5e45d415970 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp
@@ -298,7 +298,7 @@ public:
{
events.SetPhase(PHASE_TRANSITION);
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
events.ScheduleEvent(EVENT_TRANSITION_1, 10s, 0, PHASE_TRANSITION);
events.ScheduleEvent(EVENT_TRANSITION_2, 12s, 0, PHASE_TRANSITION);
@@ -316,8 +316,9 @@ public:
me->DespawnOrUnsummon(0s, 30s);
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE | UNIT_FLAG_STUNNED);
+ me->SetUnitFlag(UNIT_FLAG_STUNNED);
me->SetImmuneToPC(true);
+ me->SetUninteractible(true);
me->setActive(false);
me->SetFarVisible(false);
if (Creature* feugen = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_FEUGEN)))
@@ -504,7 +505,7 @@ public:
me->SetFullHealth();
me->SetStandState(UNIT_STAND_STATE_STAND);
me->SetReactState(REACT_AGGRESSIVE);
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
me->SetControlled(false, UNIT_STATE_ROOT);
Talk(EMOTE_FEIGN_REVIVE);
isFeignDeath = false;
@@ -575,7 +576,7 @@ public:
if (Creature* thaddius = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_THADDIUS)))
thaddius->AI()->DoAction(ACTION_STALAGG_DIED);
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
me->RemoveAllAuras();
me->SetReactState(REACT_PASSIVE);
me->AttackStop();
@@ -738,7 +739,7 @@ public:
me->SetFullHealth();
me->SetStandState(UNIT_STAND_STATE_STAND);
me->SetReactState(REACT_AGGRESSIVE);
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
me->SetControlled(false, UNIT_STATE_ROOT);
Talk(EMOTE_FEIGN_REVIVE);
isFeignDeath = false;
@@ -814,7 +815,7 @@ public:
if (Creature* thaddius = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_THADDIUS)))
thaddius->AI()->DoAction(ACTION_FEUGEN_DIED);
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
me->RemoveAllAuras();
me->SetReactState(REACT_PASSIVE);
me->AttackStop();
diff --git a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp
index a2c7d55454a..a9600ba6e48 100644
--- a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp
+++ b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp
@@ -369,7 +369,7 @@ struct boss_malygos : public BossAI
me->SetDisableGravity(true);
me->SetImmuneToAll(true);
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
// 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);
if (_despawned)
@@ -680,7 +680,7 @@ struct boss_malygos : public BossAI
if (!_firstCyclicMovementStarted)
{
_firstCyclicMovementStarted = true;
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
if (Creature* alexstraszaBunny = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_ALEXSTRASZA_BUNNY_GUID)))
me->SetFacingToObject(alexstraszaBunny);
events.ScheduleEvent(EVENT_SUMMON_ARCANE_BOMB, 1s, 0, PHASE_TWO);
@@ -914,7 +914,7 @@ struct boss_malygos : public BossAI
me->GetMap()->SetZoneOverrideLight(AREA_EYE_OF_ETERNITY, LIGHT_DEFAULT, LIGHT_OBSCURE_ARCANE_RUNES, 1s);
DoCast(me, SPELL_CLEAR_ALL_DEBUFFS);
DoCast(me, SPELL_IMMUNE_CURSES);
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
me->SetReactState(REACT_AGGRESSIVE);
DoZoneInCombat();
SetPhase(PHASE_THREE, true);
@@ -1129,7 +1129,7 @@ struct npc_melee_hover_disk : public VehicleAI
{
me->SetHomePosition(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), me->GetOrientation());
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
me->SetDisableGravity(false);
me->SetCanFly(false);
}
@@ -1159,7 +1159,7 @@ struct npc_melee_hover_disk : public VehicleAI
if (vehicleTemp->GetPassenger(0) && vehicleTemp->GetPassenger(0)->GetTypeId() == TYPEID_PLAYER)
{
vehicleTemp->RemoveAllPassengers();
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
}
}
diff --git a/src/server/scripts/Northrend/Nexus/Nexus/boss_magus_telestra.cpp b/src/server/scripts/Northrend/Nexus/Nexus/boss_magus_telestra.cpp
index 98cf28e81cb..5c7b7702f53 100644
--- a/src/server/scripts/Northrend/Nexus/Nexus/boss_magus_telestra.cpp
+++ b/src/server/scripts/Northrend/Nexus/Nexus/boss_magus_telestra.cpp
@@ -124,7 +124,7 @@ struct boss_magus_telestra : public BossAI
Initialize();
me->SetReactState(REACT_AGGRESSIVE);
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
if (IsHeroic() && sGameEventMgr->IsActiveEvent(GAME_EVENT_WINTER_VEIL) && !me->HasAura(SPELL_WEAR_CHRISTMAS_HAT))
me->AddAura(SPELL_WEAR_CHRISTMAS_HAT, me);
@@ -275,7 +275,7 @@ struct boss_magus_telestra : public BossAI
_unkillable = true;
// Hack, transform creature (from aura) has visible and invisible models and probability is NYI
me->SetDisplayId(15435);
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
// Not restored later, maybe after wipe
SetEquipmentSlots(false, EQUIP_UNEQUIP);
events.ScheduleEvent(EVENT_SPLIT_3, 4s);
@@ -292,7 +292,7 @@ struct boss_magus_telestra : public BossAI
me->RemoveAurasDueToSpell(SPELL_CLONE_DIES_ARCANE);
me->RemoveAurasDueToSpell(SPELL_SUMMON_CLONES);
Talk(SAY_MERGE);
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
_unkillable = false;
events.ScheduleEvent(EVENT_MERGE_2, 3s);
break;
diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_ionar.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_ionar.cpp
index 25a2de2dc50..85f73a09536 100644
--- a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_ionar.cpp
+++ b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_ionar.cpp
@@ -93,7 +93,8 @@ struct boss_ionar : public BossAI
Initialize();
- me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_UNINTERACTIBLE);
+ me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ me->SetUninteractible(false);
me->SetControlled(false, UNIT_STATE_ROOT);
if (!me->IsVisible())
@@ -129,7 +130,8 @@ struct boss_ionar : public BossAI
me->AttackStop();
me->SetVisible(false);
- me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ me->SetUninteractible(true);
me->SetControlled(true, UNIT_STATE_ROOT);
me->GetMotionMaster()->Clear();
@@ -213,7 +215,8 @@ struct boss_ionar : public BossAI
else if (summons.empty())
{
me->SetVisible(true);
- me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_UNINTERACTIBLE);
+ me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ me->SetUninteractible(false);
me->SetControlled(false, UNIT_STATE_ROOT);
DoCast(me, SPELL_SPARK_DESPAWN, 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 70e2124f508..4b5aec6dad1 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
@@ -349,7 +349,7 @@ struct boss_algalon_the_observer : public BossAI
void JustEngagedWith(Unit* who) override
{
Milliseconds introDelay = 0ms;
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
me->SetImmuneToNPC(true);
events.Reset();
events.SetPhase(PHASE_ROLE_PLAY);
@@ -472,7 +472,7 @@ struct boss_algalon_the_observer : public BossAI
events.SetPhase(PHASE_ROLE_PLAY);
me->SetReactState(REACT_PASSIVE);
me->AttackStop();
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
DoCastSelf(SPELL_SELF_STUN);
events.Reset();
summons.DespawnAll();
@@ -547,7 +547,7 @@ struct boss_algalon_the_observer : public BossAI
{
events.SetPhase(PHASE_NORMAL);
me->SetSheath(SHEATH_STATE_MELEE);
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
me->SetImmuneToNPC(false);
me->SetReactState(REACT_DEFENSIVE);
DoCastAOE(SPELL_SUPERMASSIVE_FAIL, true);
@@ -639,7 +639,7 @@ struct boss_algalon_the_observer : public BossAI
break;
case EVENT_OUTRO_4:
DoCastAOE(SPELL_SUPERMASSIVE_FAIL);
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
break;
case EVENT_OUTRO_5:
if (Creature* brann = me->SummonCreature(NPC_BRANN_BRONZBEARD_ALG, BrannOutroPos))
@@ -725,7 +725,7 @@ struct npc_living_constellation : public CreatureAI
if (Unit* target = algalon->AI()->SelectTarget(SelectTargetMethod::Random, 0, NonTankTargetSelector(algalon)))
{
me->SetReactState(REACT_AGGRESSIVE);
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
AttackStart(target);
DoZoneInCombat();
_isActive = true;
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp
index 70f54d742c1..dde0a93c49b 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp
@@ -420,7 +420,7 @@ struct npc_feral_defender : public ScriptedAI
case EVENT_RESPAWN_DEFENDER_3:
me->RemoveAurasDueToSpell(SPELL_PERMANENT_FEIGN_DEATH);
DoCastSelf(SPELL_FULL_HEAL, true);
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
me->SetReactState(REACT_AGGRESSIVE);
me->SetDisableGravity(false);
me->SetHover(false);
@@ -449,7 +449,7 @@ struct npc_feral_defender : public ScriptedAI
{
me->SetReactState(REACT_PASSIVE);
me->AttackStop();
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
me->RemoveAurasDueToSpell(SPELL_RANDOM_AGRO_PERIODIC);
DoCastSelf(SPELL_PERMANENT_FEIGN_DEATH, true);
DoCastSelf(SPELL_FERAL_ESSENCE_APPLICATION_REMOVAL, true);
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp
index a72b6682679..2151d24530d 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp
@@ -250,7 +250,8 @@ class boss_flame_leviathan : public CreatureScript
DoCast(SPELL_INVIS_AND_STEALTH_DETECT);
- me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_UNINTERACTIBLE | UNIT_FLAG_STUNNED);
+ me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_STUNNED);
+ me->SetUninteractible(true);
me->SetReactState(REACT_PASSIVE);
}
@@ -571,7 +572,8 @@ class boss_flame_leviathan : public CreatureScript
if (id != ACTION_MOVE_TO_CENTER_POSITION)
return;
me->SetReactState(REACT_AGGRESSIVE);
- me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_UNINTERACTIBLE | UNIT_FLAG_STUNNED);
+ me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_STUNNED);
+ me->SetUninteractible(false);
}
private:
@@ -645,10 +647,10 @@ class boss_flame_leviathan_seat : public CreatureScript
if (Creature* device = devicePassenger->ToCreature())
{
device->SetNpcFlag(UNIT_NPC_FLAG_SPELLCLICK);
- device->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ device->SetUninteractible(false);
}
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
}
else if (seatId == SEAT_TURRET)
{
@@ -774,7 +776,7 @@ class boss_flame_leviathan_overload_device : public CreatureScript
if (me->GetVehicle())
{
me->RemoveNpcFlag(UNIT_NPC_FLAG_SPELLCLICK);
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
if (Unit* player = me->GetVehicle()->GetPassenger(SEAT_PLAYER))
{
@@ -901,7 +903,7 @@ class npc_pool_of_tar : public CreatureScript
{
npc_pool_of_tarAI(Creature* creature) : ScriptedAI(creature)
{
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
me->SetReactState(REACT_PASSIVE);
me->CastSpell(me, SPELL_TAR_PASSIVE, true);
}
@@ -970,7 +972,7 @@ class npc_thorims_hammer : public CreatureScript
{
npc_thorims_hammerAI(Creature* creature) : ScriptedAI(creature)
{
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
me->CastSpell(me, AURA_DUMMY_BLUE, true);
}
@@ -1011,7 +1013,8 @@ public:
npc_mimirons_infernoAI(Creature* creature) : EscortAI(creature)
{
Initialize();
- me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ me->SetUninteractible(true);
me->CastSpell(me, AURA_DUMMY_YELLOW, true);
me->SetReactState(REACT_PASSIVE);
}
@@ -1071,7 +1074,7 @@ class npc_hodirs_fury : public CreatureScript
{
npc_hodirs_furyAI(Creature* creature) : ScriptedAI(creature)
{
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
me->CastSpell(me, AURA_DUMMY_GREEN, true);
}
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp
index 7fa9f4d495e..7ccc20206da 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp
@@ -1364,8 +1364,9 @@ class npc_healthy_spore : public CreatureScript
npc_healthy_sporeAI(Creature* creature) : ScriptedAI(creature)
{
SetCombatMovement(false);
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE | UNIT_FLAG_NON_ATTACKABLE);
+ me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
me->SetImmuneToPC(true);
+ me->SetUninteractible(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_general_vezax.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp
index 24ddcc66d55..a7036a1fbbb 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp
@@ -425,7 +425,8 @@ class npc_saronite_vapors : public CreatureScript
if (damage >= me->GetHealth())
{
damage = 0;
- me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ me->SetUninteractible(true);
me->SetControlled(true, UNIT_STATE_ROOT);
me->SetStandState(UNIT_STAND_STATE_DEAD);
me->SetHealth(me->GetMaxHealth());
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp
index f8ae3b65c0e..98412e00e9e 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp
@@ -180,8 +180,9 @@ class boss_ignis : public CreatureScript
{
summon->SetFaction(FACTION_MONSTER_2);
summon->SetReactState(REACT_AGGRESSIVE);
- summon->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_UNINTERACTIBLE | UNIT_FLAG_PACIFIED | UNIT_FLAG_STUNNED);
+ summon->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_PACIFIED | UNIT_FLAG_STUNNED);
summon->SetImmuneToPC(false);
+ summon->SetUninteractible(false);
summon->SetControlled(false, UNIT_STATE_ROOT);
}
@@ -382,7 +383,8 @@ class npc_scorch_ground : public CreatureScript
npc_scorch_groundAI(Creature* creature) : ScriptedAI(creature)
{
Initialize();
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE | UNIT_FLAG_PACIFIED);
+ me->SetUnitFlag(UNIT_FLAG_PACIFIED);
+ me->SetUninteractible(true);
me->SetControlled(true, UNIT_STATE_ROOT);
creature->SetDisplayId(16925); //model 2 in db cannot overwrite wdb fields
}
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp
index 946c5c004f3..49f598b35a7 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp
@@ -107,7 +107,7 @@ class boss_kologarn : public CreatureScript
boss_kologarnAI(Creature* creature) : BossAI(creature, DATA_KOLOGARN),
left(false), right(false)
{
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
me->SetControlled(true, UNIT_STATE_ROOT);
DoCast(SPELL_KOLOGARN_REDUCE_PARRY);
@@ -139,7 +139,7 @@ class boss_kologarn : public CreatureScript
void Reset() override
{
_Reset();
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
eyebeamTarget.Clear();
}
@@ -148,7 +148,7 @@ class boss_kologarn : public CreatureScript
Talk(SAY_DEATH);
DoCast(SPELL_KOLOGARN_PACIFY);
me->GetMotionMaster()->MoveTargetedHome();
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
me->SetCorpseDelay(604800); // Prevent corpse from despawning.
_JustDied();
}
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp
index 27f02b2d706..b95d606c719 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp
@@ -516,7 +516,8 @@ class boss_mimiron : public CreatureScript
{
DoCast(mkii, SPELL_SEAT_7);
mkii->RemoveAurasDueToSpell(SPELL_FREEZE_ANIM);
- mkii->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_UNINTERACTIBLE);
+ mkii->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ mkii->SetUninteractible(false);
}
events.ScheduleEvent(EVENT_INTRO_3, 2s);
break;
@@ -662,7 +663,7 @@ class boss_mimiron : public CreatureScript
break;
case EVENT_OUTTRO_3:
DoCast(me, SPELL_TELEPORT_VISUAL);
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
me->DespawnOrUnsummon(1s); // sniffs say 6 sec after, but it doesnt matter.
break;
default:
@@ -755,7 +756,8 @@ class boss_leviathan_mk_ii : public CreatureScript
break;
case DO_ASSEMBLED_COMBAT:
me->SetStandState(UNIT_STAND_STATE_STAND);
- me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_UNINTERACTIBLE);
+ me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ me->SetUninteractible(false);
me->SetReactState(REACT_AGGRESSIVE);
events.SetPhase(PHASE_VOL7RON);
@@ -804,7 +806,7 @@ class boss_leviathan_mk_ii : public CreatureScript
switch (point)
{
case WP_MKII_P1_IDLE:
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
DoCast(me, SPELL_HALF_HEAL);
if (Creature* mimiron = instance->GetCreature(DATA_MIMIRON))
@@ -831,7 +833,8 @@ class boss_leviathan_mk_ii : public CreatureScript
void Reset() override
{
_Reset();
- me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ me->SetUninteractible(true);
me->SetReactState(REACT_PASSIVE);
_fireFighter = false;
_setupMine = true;
@@ -991,8 +994,9 @@ class boss_vx_001 : public CreatureScript
events.ScheduleEvent(EVENT_FLAME_SUPPRESSANT_VX, 6s);
[[fallthrough]];
case DO_START_VX001:
- me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_UNINTERACTIBLE);
+ me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
me->SetImmuneToPC(false);
+ me->SetUninteractible(false);
me->RemoveAurasDueToSpell(SPELL_FREEZE_ANIM);
me->SetEmoteState(EMOTE_ONESHOT_NONE); // Remove emotestate.
//me->SetHover(true); // Blizzard handles hover animation like this it seems.
@@ -1005,7 +1009,8 @@ class boss_vx_001 : public CreatureScript
break;
case DO_ASSEMBLED_COMBAT:
me->SetStandState(UNIT_STAND_STATE_STAND);
- me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_UNINTERACTIBLE);
+ me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ me->SetUninteractible(false);
events.SetPhase(PHASE_VOL7RON);
events.ScheduleEvent(EVENT_ROCKET_STRIKE, 20s);
@@ -1174,8 +1179,9 @@ class boss_aerial_command_unit : public CreatureScript
case DO_START_AERIAL:
me->SetDisableGravity(false);
me->SetHover(true);
- me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_UNINTERACTIBLE);
+ me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
me->SetImmuneToPC(false);
+ me->SetUninteractible(false);
me->SetReactState(REACT_AGGRESSIVE);
events.SetPhase(PHASE_AERIAL_COMMAND_UNIT);
@@ -1194,7 +1200,8 @@ class boss_aerial_command_unit : public CreatureScript
me->SetReactState(REACT_AGGRESSIVE);
break;
case DO_ASSEMBLED_COMBAT:
- me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_UNINTERACTIBLE);
+ me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ me->SetUninteractible(false);
me->SetReactState(REACT_AGGRESSIVE);
me->SetStandState(UNIT_STAND_STATE_STAND);
events.SetPhase(PHASE_VOL7RON);
@@ -1228,7 +1235,7 @@ class boss_aerial_command_unit : public CreatureScript
if (type == POINT_MOTION_TYPE && point == WP_AERIAL_P4_POS)
{
me->SetFacingTo(VehicleRelocation[WP_AERIAL_P4_POS].GetOrientation());
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
DoCastSelf(SPELL_CLEAR_ALL_DEBUFFS);
if (Creature* mimiron = instance->GetCreature(DATA_MIMIRON))
@@ -1728,7 +1735,8 @@ class spell_mimiron_bomb_bot : public SpellScriptLoader
{
if (Creature* target = GetHitCreature())
{
- target->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE | UNIT_FLAG_PACIFIED);
+ target->SetUnitFlag(UNIT_FLAG_PACIFIED);
+ target->SetUninteractible(true);
target->DespawnOrUnsummon(1s);
}
}
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp
index 597b6bfea86..01f68586df3 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp
@@ -208,7 +208,7 @@ struct boss_xt002 : public BossAI
{
Talk(SAY_DEATH);
_JustDied();
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
}
void ExposeHeart()
@@ -239,7 +239,7 @@ struct boss_xt002 : public BossAI
DoCastSelf(SPELL_STAND);
DoCastSelf(SPELL_COOLDOWN_CREATURE_SPECIAL_2);
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
if (Creature* heart = instance->GetCreature(DATA_XT002_HEART))
{
if (heart->IsAlive())
@@ -347,7 +347,7 @@ struct boss_xt002 : public BossAI
break;
case EVENT_SUBMERGE:
DoCastSelf(SPELL_SUBMERGE);
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
Talk(EMOTE_HEART_OPENED);
if (Creature* heart = instance->GetCreature(DATA_XT002_HEART))
heart->AI()->DoAction(ACTION_START_PHASE_HEART);
@@ -410,13 +410,13 @@ struct npc_xt002_heart : public NullCreatureAI
DoCastSelf(SPELL_FULL_HEAL);
DoCast(xt002, SPELL_RIDE_VEHICLE_EXPOSED, true);
DoCastSelf(SPELL_HEART_OVERLOAD);
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
me->SetUnitFlag(UNIT_FLAG_PREVENT_EMOTES_FROM_CHAT_TEXT);
}
else if (action == ACTION_DISPOSE_HEART)
{
DoCast(xt002, SPELL_HEART_RIDE_VEHICLE, true);
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
me->RemoveUnitFlag(UNIT_FLAG_PREVENT_EMOTES_FROM_CHAT_TEXT);
}
}
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 dcf7e993bee..c4f1f0f037c 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp
@@ -1058,7 +1058,7 @@ class boss_brain_of_yogg_saron : public CreatureScript
void Reset() override
{
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
me->SetImmuneToPC(false);
DoCast(me, SPELL_MATCH_HEALTH);
_summons.DespawnAll();
@@ -1073,7 +1073,7 @@ 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->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
me->SetImmuneToPC(true);
if (Creature* voice = _instance->GetCreature(DATA_VOICE_OF_YOGG_SARON))
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp
index 02825349ad5..f18855a2708 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp
@@ -953,7 +953,7 @@ class instance_ulduar : public InstanceMapScript
if (Vehicle* vehicle = vehicleCreature->GetVehicleKit())
{
vehicle->RemoveAllPassengers();
- vehicleCreature->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ vehicleCreature->SetUninteractible(true);
vehicleCreature->DespawnOrUnsummon(5min);
}
}
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 1314a0c5e05..72db7a72bea 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
@@ -107,8 +107,9 @@ struct boss_ingvar_the_plunderer : public BossAI
{
if (me->GetEntry() != NPC_INGVAR)
me->UpdateEntry(NPC_INGVAR);
- me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_UNINTERACTIBLE);
+ me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
me->SetImmuneToPC(false);
+ me->SetUninteractible(false);
_Reset();
}
@@ -124,8 +125,9 @@ struct boss_ingvar_the_plunderer : public BossAI
me->StopMoving();
DoCast(me, SPELL_INGVAR_FEIGN_DEATH, true);
- me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
me->SetImmuneToPC(true, true);
+ me->SetUninteractible(true);
Talk(SAY_DEATH);
}
@@ -222,8 +224,9 @@ struct boss_ingvar_the_plunderer : public BossAI
events.ScheduleEvent(EVENT_SMASH, 12s, 16s, 0, PHASE_HUMAN);
break;
case EVENT_JUST_TRANSFORMED:
- me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_UNINTERACTIBLE);
+ me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
me->SetImmuneToPC(false);
+ me->SetUninteractible(false);
ScheduleSecondPhase();
Talk(SAY_AGGRO);
DoZoneInCombat();
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp
index 4794101ae14..a3589c74d7f 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp
@@ -240,10 +240,10 @@ struct npc_vrykul_skeleton : public ScriptedAI
// There are some issues with pets
// they will still attack. I would say it is a PetAI bug
- if (!me->HasUnitFlag(UNIT_FLAG_UNINTERACTIBLE))
+ if (!me->IsUninteractible())
{
// from sniffs
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
me->SetStandState(UNIT_STAND_STATE_DEAD);
events.Reset();
@@ -284,7 +284,7 @@ struct npc_vrykul_skeleton : public ScriptedAI
case EVENT_SHADOW_FISSURE:
DoCast(me, SPELL_SHADOW_FISSURE, true);
DoCastAOE(SPELL_BONE_ARMOR, true);
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
me->SetStandState(UNIT_STAND_STATE_STAND);
me->GetMotionMaster()->MoveChase(me->GetVictim());
events.ScheduleEvent(EVENT_DECREPIFY, 4s, 6s);
@@ -297,7 +297,7 @@ struct npc_vrykul_skeleton : public ScriptedAI
return;
}
- if (!me->HasUnitFlag(UNIT_FLAG_UNINTERACTIBLE))
+ if (!me->IsUninteractible())
DoMeleeAttackIfReady();
}
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_palehoof.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_palehoof.cpp
index 995b690d721..2d044443a80 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_palehoof.cpp
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_palehoof.cpp
@@ -572,7 +572,7 @@ class spell_palehoof_awaken_subboss : public SpellScript
{
Unit* target = GetHitUnit();
GetCaster()->CastSpell(target, SPELL_ORB_CHANNEL);
- target->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ target->SetUninteractible(false);
target->m_Events.AddEvent(new CombatStartEvent(target), target->m_Events.CalculateTime(8500ms));
}
@@ -590,7 +590,7 @@ class spell_palehoof_awaken_gortok : public SpellScript
void HandleDummy(SpellEffIndex /*effIndex*/)
{
Unit* target = GetHitUnit();
- target->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ target->SetUninteractible(false);
target->m_Events.AddEvent(new CombatStartEvent(target), target->m_Events.CalculateTime(8s));
}
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp
index 117e7daca4d..295e6216169 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp
@@ -224,7 +224,7 @@ struct boss_skadi : public BossAI
{
case ACTION_START_ENCOUNTER:
instance->SetBossState(DATA_SKADI_THE_RUTHLESS, IN_PROGRESS);
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
me->setActive(true);
SpawnFirstWave();
Talk(SAY_AGGRO);
@@ -259,7 +259,7 @@ struct boss_skadi : public BossAI
Talk(SAY_DRAKE_DEATH);
DoCastSelf(SPELL_SKADI_TELEPORT);
summons.DespawnEntry(NPC_WORLD_TRIGGER);
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
me->SetImmuneToPC(false);
me->SetReactState(REACT_AGGRESSIVE);
_phase = PHASE_GROUND;
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_svala.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_svala.cpp
index ed674dec990..4f3fa489b43 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_svala.cpp
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_svala.cpp
@@ -196,7 +196,8 @@ struct boss_svala : public BossAI
if (Creature* arthas = me->SummonCreature(NPC_ARTHAS, ArthasPos, TEMPSUMMON_MANUAL_DESPAWN))
{
- arthas->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_UNINTERACTIBLE);
+ arthas->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ arthas->SetUninteractible(true);
_arthasGUID = arthas->GetGUID();
}
events.ScheduleEvent(EVENT_INTRO_SVALA_TALK_0, 1s, 0, INTRO);
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_ymiron.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_ymiron.cpp
index 6e076395241..ed4e27691e0 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_ymiron.cpp
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_ymiron.cpp
@@ -169,7 +169,8 @@ struct boss_ymiron : public BossAI
{
DoCast(ancestor, SPELL_CHANNEL_YMIRON_TO_SPIRIT);
ancestor->CastSpell(me, SPELL_CHANNEL_SPIRIT_TO_YMIRON, true);
- ancestor->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_UNINTERACTIBLE);
+ ancestor->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ ancestor->SetUninteractible(true);
ancestor->SetDisableGravity(true);
ActiveAncestorGUID = ancestor->GetGUID();
}
diff --git a/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp b/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp
index 546c43245b9..ce81b58899a 100644
--- a/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp
+++ b/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp
@@ -241,7 +241,7 @@ struct npc_ichor_globule : public ScriptedAI
if (spellInfo->Id == SPELL_WATER_GLOBULE_VISUAL)
{
DoCast(me, SPELL_WATER_GLOBULE_TRANSFORM);
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
me->GetMotionMaster()->MoveFollow(unitCaster, 0.0f, 0.0f);
}
}
@@ -291,13 +291,13 @@ class spell_ichoron_drained : public AuraScript
void HandleApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
- GetTarget()->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ GetTarget()->SetUninteractible(true);
GetTarget()->SetUnitFlag2(UNIT_FLAG2_FEIGN_DEATH);
}
void HandleRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
- GetTarget()->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ GetTarget()->SetUninteractible(false);
GetTarget()->RemoveUnitFlag2(UNIT_FLAG2_FEIGN_DEATH);
if (GetTargetApplication()->GetRemoveMode() == AURA_REMOVE_BY_EXPIRE)
diff --git a/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp b/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp
index 7bbd48dfe6a..eb4b585514a 100644
--- a/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp
+++ b/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp
@@ -596,7 +596,7 @@ struct boss_illidan_stormrage : public BossAI
{
me->SetReactState(REACT_PASSIVE);
me->AttackStop();
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
me->HandleEmoteCommand(EMOTE_ONESHOT_LIFTOFF);
me->SetDisableGravity(true);
DoPlaySoundToSet(me, ILLIDAN_TAKEOFF_SOUND_ID);
@@ -626,7 +626,7 @@ struct boss_illidan_stormrage : public BossAI
summons.DoAction(ACTION_START_PHASE_4, EntryCheckPredicate(NPC_PARASITIC_SHADOWFIEND));
me->SetReactState(REACT_PASSIVE);
me->AttackStop();
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
events.ScheduleEvent(EVENT_SHADOW_PRISON_TEXT, Milliseconds(500), GROUP_PHASE_ALL);
break;
case ACTION_ILLIDAN_CAGED:
@@ -639,7 +639,7 @@ struct boss_illidan_stormrage : public BossAI
events.Reset();
specialEvents.Reset();
DoCastSelf(SPELL_DEATH, true);
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
events.ScheduleEvent(EVENT_DEFEATED_TEXT, 4s);
break;
default:
@@ -649,7 +649,7 @@ struct boss_illidan_stormrage : public BossAI
void JustDied(Unit* /*killer*/) override
{
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
instance->SetBossState(DATA_ILLIDAN_STORMRAGE, DONE);
events.Reset();
}
@@ -933,7 +933,7 @@ struct boss_illidan_stormrage : public BossAI
events.ScheduleEvent(EVENT_RESUME_COMBAT, Seconds(3), GROUP_PHASE_ALL);
break;
case EVENT_RESUME_COMBAT:
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
me->SetReactState(REACT_AGGRESSIVE);
ScheduleEvents(GROUP_PHASE_3, GROUP_PHASE_3);
if (GameObject* musicController = instance->GetGameObject(DATA_ILLIDAN_MUSIC_CONTROLLER))
@@ -997,7 +997,7 @@ struct boss_illidan_stormrage : public BossAI
events.ScheduleEvent(EVENT_RESUME_COMBAT_PHASE_4, Seconds(13), GROUP_PHASE_ALL);
break;
case EVENT_RESUME_COMBAT_PHASE_4:
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
me->SetReactState(REACT_AGGRESSIVE);
ScheduleEvents(GROUP_PHASE_4, GROUP_PHASE_4);
summons.DoAction(ACTION_RESUME_COMBAT, EntryCheckPredicate(NPC_PARASITIC_SHADOWFIEND));
@@ -2306,12 +2306,12 @@ class spell_maiev_down : public AuraScript
void HandleEffectApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
- GetTarget()->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ GetTarget()->SetUninteractible(true);
}
void HandleEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
- GetTarget()->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ GetTarget()->SetUninteractible(false);
GetTarget()->GetAI()->DoAction(ACTION_MAIEV_DOWN_FADE);
}
diff --git a/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp b/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp
index 3ecaaf5e886..399d32a19d9 100644
--- a/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp
+++ b/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp
@@ -216,7 +216,7 @@ struct boss_shade_of_akama : public BossAI
_Reset();
Initialize();
me->SetImmuneToPC(true);
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
me->SetEmoteState(EMOTE_STATE_STUN);
me->SetWalk(true);
events.ScheduleEvent(EVENT_INITIALIZE_SPAWNERS, 1s);
@@ -255,7 +255,7 @@ struct boss_shade_of_akama : public BossAI
if (_isInPhaseOne && motionType == CHASE_MOTION_TYPE)
{
_isInPhaseOne = false;
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
me->SetImmuneToPC(false);
me->SetWalk(false);
events.ScheduleEvent(EVENT_ADD_THREAT, Milliseconds(100));
@@ -317,7 +317,7 @@ struct boss_shade_of_akama : public BossAI
{
for (ObjectGuid summonGuid : summons)
if (Creature* channeler = ObjectAccessor::GetCreature(*me, summonGuid))
- channeler->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ channeler->SetUninteractible(false);
for (ObjectGuid spawnerGuid : _spawners)
if (Creature* spawner = ObjectAccessor::GetCreature(*me, spawnerGuid))
@@ -565,7 +565,7 @@ struct npc_ashtongue_channeler : public PassiveAI
{
if (Creature* shade = _instance->GetCreature(DATA_SHADE_OF_AKAMA))
{
- if (shade->HasUnitFlag(UNIT_FLAG_UNINTERACTIBLE))
+ if (shade->IsUninteractible())
DoCastSelf(SPELL_SHADE_SOUL_CHANNEL);
else
@@ -574,7 +574,7 @@ struct npc_ashtongue_channeler : public PassiveAI
channel.Repeat(Seconds(2));
});
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
}
void UpdateAI(uint32 diff) override
@@ -692,7 +692,7 @@ struct npc_ashtongue_sorcerer : public ScriptedAI
{
if (Creature* shade = _instance->GetCreature(DATA_SHADE_OF_AKAMA))
{
- if (shade->HasUnitFlag(UNIT_FLAG_UNINTERACTIBLE))
+ if (shade->IsUninteractible())
me->GetMotionMaster()->MovePoint(0, shade->GetPosition());
else if (Creature* akama = _instance->GetCreature(DATA_AKAMA_SHADE))
@@ -730,7 +730,7 @@ struct npc_ashtongue_sorcerer : public ScriptedAI
{
if (Creature* shade = _instance->GetCreature(DATA_SHADE_OF_AKAMA))
{
- if (shade->HasUnitFlag(UNIT_FLAG_UNINTERACTIBLE))
+ if (shade->IsUninteractible())
{
me->SetFacingToObject(shade);
DoCastSelf(SPELL_SHADE_SOUL_CHANNEL);
diff --git a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lurker_below.cpp b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lurker_below.cpp
index a3e16887b68..76666bd0141 100644
--- a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lurker_below.cpp
+++ b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lurker_below.cpp
@@ -138,7 +138,7 @@ struct boss_the_lurker_below : public BossAI
instance->SetData(DATA_STRANGE_POOL, NOT_STARTED);
DoCast(me, SPELL_SUBMERGE); // submerge anim
me->SetVisible(false); // we start invis under water, submerged
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
me->SetImmuneToPC(true);
}
@@ -194,7 +194,7 @@ struct boss_the_lurker_below : public BossAI
WaitTimer = 3000;
CanStartEvent = true; // fresh fished from pool
me->SetImmuneToPC(false);
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
}
else
WaitTimer -= diff;
diff --git a/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_warlord_kalithresh.cpp b/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_warlord_kalithresh.cpp
index cb5504f4345..a964059daf0 100644
--- a/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_warlord_kalithresh.cpp
+++ b/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_warlord_kalithresh.cpp
@@ -65,13 +65,13 @@ public:
void Reset() override
{
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
//hack, due to really weird spell behaviour :(
if (instance->GetData(DATA_DISTILLER) == IN_PROGRESS)
{
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
}
}
@@ -80,7 +80,7 @@ public:
void StartRageGen(Unit* /*caster*/)
{
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
DoCast(me, SPELL_WARLORDS_RAGE_NAGA, true);
diff --git a/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_ahune.cpp b/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_ahune.cpp
index 9e0128f6788..4ed1fa4af22 100644
--- a/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_ahune.cpp
+++ b/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_ahune.cpp
@@ -256,7 +256,7 @@ struct boss_ahune : public BossAI
me->RemoveAurasDueToSpell(SPELL_STAY_SUBMERGED);
DoCastSelf(SPELL_STAND);
DoCastSelf(SPELL_RESURFACE, true);
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
events.ScheduleEvent(EVENT_SYNCH_HEALTH, 3s);
}
@@ -303,7 +303,7 @@ struct npc_frozen_core : public ScriptedAI
{
if (action == ACTION_AHUNE_RETREAT)
{
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
me->SetImmuneToPC(false);
me->RemoveAurasDueToSpell(SPELL_ICE_SPEAR_CONTROL_AURA);
_events.ScheduleEvent(EVENT_SYNCH_HEALTH, 3s, 0, PHASE_TWO);
@@ -312,7 +312,7 @@ struct npc_frozen_core : public ScriptedAI
{
_events.Reset();
DoCastSelf(SPELL_ICE_SPEAR_CONTROL_AURA);
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
me->SetImmuneToPC(true);
}
}
diff --git a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_broggok.cpp b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_broggok.cpp
index 8f22136c9ca..d564283af30 100644
--- a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_broggok.cpp
+++ b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_broggok.cpp
@@ -119,7 +119,7 @@ class boss_broggok : public CreatureScript
break;
case ACTION_ACTIVATE_BROGGOK:
me->SetReactState(REACT_AGGRESSIVE);
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
DoZoneInCombat();
events.ScheduleEvent(EVENT_SLIME_SPRAY, 10s);
events.ScheduleEvent(EVENT_POISON_BOLT, 7s);
@@ -127,7 +127,7 @@ class boss_broggok : public CreatureScript
break;
case ACTION_RESET_BROGGOK:
me->SetReactState(REACT_PASSIVE);
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
summons.DespawnAll();
instance->SetBossState(DATA_BROGGOK, NOT_STARTED);
if (GameObject * lever = instance->GetGameObject(DATA_BROGGOK_LEVER))
diff --git a/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp b/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp
index 4600933b378..90d24c23b51 100644
--- a/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp
+++ b/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp
@@ -244,7 +244,7 @@ struct boss_magtheridon : public BossAI
CombatStart();
break;
case EVENT_RELEASED:
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
me->SetImmuneToPC(false);
DoZoneInCombat();
events.SetPhase(PHASE_2);
diff --git a/src/server/scripts/Outland/TempestKeep/Eye/boss_alar.cpp b/src/server/scripts/Outland/TempestKeep/Eye/boss_alar.cpp
index bc6cb55ffe0..12ae2319eb6 100644
--- a/src/server/scripts/Outland/TempestKeep/Eye/boss_alar.cpp
+++ b/src/server/scripts/Outland/TempestKeep/Eye/boss_alar.cpp
@@ -328,7 +328,7 @@ struct boss_alar : public BossAI
for (uint8 i = 0; i < 2; ++i)
DoSpawnCreature(CREATURE_EMBER_OF_ALAR, 0, 0, 0, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5s);
me->SetBoundingRadius(10);
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
me->SetDisplayId(me->GetNativeDisplayId());
DoCast(me, SPELL_REBIRTH_2, true);
break;
@@ -411,7 +411,7 @@ struct boss_alar : public BossAI
{
me->AttackStop();
me->GetMotionMaster()->MovePoint(6, waypoint[4][0], waypoint[4][1], waypoint[4][2]);
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
me->SetBoundingRadius(50);
WaitEvent = WE_METEOR;
WaitTimer = 0;
@@ -428,7 +428,7 @@ struct boss_alar : public BossAI
Creature* Summoned = me->SummonCreature(CREATURE_FLAME_PATCH_ALAR, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN, 2min);
if (Summoned)
{
- Summoned->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ Summoned->SetUninteractible(true);
Summoned->SetObjectScale(Summoned->GetObjectScale() * 2.5f);
Summoned->SetDisplayId(11686);
Summoned->SetFaction(me->GetFaction());
@@ -507,7 +507,7 @@ struct npc_ember_of_alar : public ScriptedAI
damage = 0;
DoCast(me, SPELL_EMBER_BLAST, true);
me->SetDisplayId(11686);
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
if (instance->GetBossState(DATA_ALAR) == IN_PROGRESS)
{
if (Unit* Alar = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_ALAR)))
diff --git a/src/server/scripts/Outland/TempestKeep/Eye/boss_astromancer.cpp b/src/server/scripts/Outland/TempestKeep/Eye/boss_astromancer.cpp
index bc047abe423..dee825dd272 100644
--- a/src/server/scripts/Outland/TempestKeep/Eye/boss_astromancer.cpp
+++ b/src/server/scripts/Outland/TempestKeep/Eye/boss_astromancer.cpp
@@ -141,7 +141,7 @@ struct boss_high_astromancer_solarian : public BossAI
Initialize();
_Reset();
me->SetArmor(defaultarmor, 0);
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
me->SetVisible(true);
me->SetDisplayId(MODEL_HUMAN);
@@ -206,7 +206,7 @@ struct boss_high_astromancer_solarian : public BossAI
AppearDelay = false;
if (Phase == 2)
{
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
me->SetVisible(false);
}
AppearDelay_Timer = 2s;
@@ -309,7 +309,7 @@ struct boss_high_astromancer_solarian : public BossAI
{
if (Creature* Summoned = me->SummonCreature(NPC_ASTROMANCER_SOLARIAN_SPOTLIGHT, Portals[i][0], Portals[i][1], Portals[i][2], CENTER_O, TEMPSUMMON_TIMED_DESPAWN, Phase2_Timer + Phase3_Timer + AppearDelay_Timer + 1700ms))
{
- Summoned->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ Summoned->SetUninteractible(true);
Summoned->CastSpell(Summoned, SPELL_SPOTLIGHT, false);
}
}
@@ -353,7 +353,7 @@ struct boss_high_astromancer_solarian : public BossAI
if (j != i)
SummonMinion(NPC_SOLARIUM_PRIEST, Portals[j][0], Portals[j][1], Portals[j][2]);
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
me->SetVisible(true);
Talk(SAY_SUMMON2);
@@ -388,7 +388,7 @@ struct boss_high_astromancer_solarian : public BossAI
{
Phase = 4;
//To make sure she wont be invisible or not selecatble
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
me->SetVisible(true);
Talk(SAY_VOIDA);
Talk(SAY_VOIDB);
diff --git a/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp b/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp
index c8b59784261..f0264e3599c 100644
--- a/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp
+++ b/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp
@@ -352,7 +352,7 @@ struct boss_kaelthas : public BossAI
{
Initialize();
DoAction(ACTION_PREPARE_ADVISORS);
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
me->SetEmoteState(EMOTE_ONESHOT_NONE);
me->SetDisableGravity(false);
me->SetTarget(ObjectGuid::Empty);
@@ -382,7 +382,7 @@ struct boss_kaelthas : public BossAI
{
case ACTION_START_ENCOUNTER:
Talk(SAY_INTRO);
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
_advisorGuid[ADVISOR_THALADRED] = instance->GetGuidData(DATA_THALADRED);
_advisorGuid[ADVISOR_SANGUINAR] = instance->GetGuidData(DATA_SANGUINAR);
@@ -501,7 +501,7 @@ struct boss_kaelthas : public BossAI
case POINT_TRANSITION_CENTER_ASCENDING:
me->SetFacingTo(float(M_PI));
Talk(SAY_PHASE5_NUTS);
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
me->SetDisableGravity(true);
//me->SetHover(true); -- Set in sniffs, but breaks his visual.
events.ScheduleEvent(EVENT_TRANSITION_2, 2s);
@@ -520,7 +520,7 @@ struct boss_kaelthas : public BossAI
case POINT_END_TRANSITION:
me->SetReactState(REACT_AGGRESSIVE);
me->InterruptNonMeleeSpells(false);
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
me->RemoveAurasDueToSpell(SPELL_FULLPOWER);
if (Unit* target = SelectTarget(SelectTargetMethod::MaxThreat, 0))
@@ -602,7 +602,8 @@ struct boss_kaelthas : public BossAI
// Sometimes people can collect Aggro in Phase 1-3. Reset threat before releasing Kael.
ResetThreatList();
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE | UNIT_FLAG_PACIFIED);
+ me->RemoveUnitFlag(UNIT_FLAG_PACIFIED);
+ me->SetUninteractible(false);
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0))
AttackStart(target);
@@ -779,7 +780,8 @@ struct advisorbase_ai : public ScriptedAI
me->SetStandState(UNIT_STAND_STATE_STAND);
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE | UNIT_FLAG_STUNNED);
+ me->RemoveUnitFlag(UNIT_FLAG_STUNNED);
+ me->SetUninteractible(false);
//reset encounter
if (instance->GetBossState(DATA_KAELTHAS) == IN_PROGRESS)
@@ -808,7 +810,8 @@ struct advisorbase_ai : public ScriptedAI
if (spellInfo->Id == SPELL_RESSURECTION)
{
_hasRessurrected = true;
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE | UNIT_FLAG_STUNNED);
+ me->RemoveUnitFlag(UNIT_FLAG_STUNNED);
+ me->SetUninteractible(false);
me->SetStandState(UNIT_STAND_STATE_STAND);
events.ScheduleEvent(EVENT_DELAYED_RESSURECTION, 2s);
}
@@ -829,7 +832,8 @@ struct advisorbase_ai : public ScriptedAI
me->ModifyAuraState(AURA_STATE_WOUNDED_25_PERCENT, false);
me->ModifyAuraState(AURA_STATE_WOUNDED_35_PERCENT, false);
me->ModifyAuraState(AURA_STATE_WOUND_HEALTH_20_80, false);
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE | UNIT_FLAG_STUNNED);
+ me->SetUnitFlag(UNIT_FLAG_STUNNED);
+ me->SetUninteractible(true);
me->SetTarget(ObjectGuid::Empty);
me->SetStandState(UNIT_STAND_STATE_DEAD);
me->GetMotionMaster()->Clear();
diff --git a/src/server/scripts/Outland/TempestKeep/arcatraz/boss_harbinger_skyriss.cpp b/src/server/scripts/Outland/TempestKeep/arcatraz/boss_harbinger_skyriss.cpp
index df75ec83c98..62aec2b0374 100644
--- a/src/server/scripts/Outland/TempestKeep/arcatraz/boss_harbinger_skyriss.cpp
+++ b/src/server/scripts/Outland/TempestKeep/arcatraz/boss_harbinger_skyriss.cpp
@@ -274,7 +274,8 @@ struct boss_harbinger_skyriss_illusion : public ScriptedAI
void Reset() override
{
me->SetImmuneToPC(false);
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE | UNIT_FLAG_NON_ATTACKABLE);
+ me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ me->SetUninteractible(false);
}
void JustEngagedWith(Unit* /*who*/) override { }
diff --git a/src/server/scripts/Outland/zone_blades_edge_mountains.cpp b/src/server/scripts/Outland/zone_blades_edge_mountains.cpp
index 6699be7a7d1..fe34876d400 100644
--- a/src/server/scripts/Outland/zone_blades_edge_mountains.cpp
+++ b/src/server/scripts/Outland/zone_blades_edge_mountains.cpp
@@ -184,7 +184,7 @@ public:
++NihilSpeech_Phase;
break;
case 4:
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
//take off to location above
me->GetMotionMaster()->MovePoint(0, me->GetPositionX()+50.0f, me->GetPositionY(), me->GetPositionZ()+50.0f);
++NihilSpeech_Phase;
diff --git a/src/server/scripts/Outland/zone_shadowmoon_valley.cpp b/src/server/scripts/Outland/zone_shadowmoon_valley.cpp
index b0b841d576b..4e75ab30f24 100644
--- a/src/server/scripts/Outland/zone_shadowmoon_valley.cpp
+++ b/src/server/scripts/Outland/zone_shadowmoon_valley.cpp
@@ -168,7 +168,7 @@ public:
{
if (spellInfo->Id == SPELL_SUMMON_INFERNAL)
{
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
me->SetImmuneToPC(false);
me->RemoveAurasDueToSpell(SPELL_SPAWN_AND_PACIFY);
// handle by the spell below when such auras will be not removed after evade
diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp
index 6c6f88e0ba6..7257fc43cb9 100644
--- a/src/server/scripts/Spells/spell_generic.cpp
+++ b/src/server/scripts/Spells/spell_generic.cpp
@@ -1779,7 +1779,9 @@ class spell_gen_feign_death_all_flags_uninteractible : public AuraScript
Unit* target = GetTarget();
target->SetUnitFlag3(UNIT_FLAG3_FAKE_DEAD);
target->SetUnitFlag2(UNIT_FLAG2_FEIGN_DEATH);
- target->SetUnitFlag(UNIT_FLAG_PREVENT_EMOTES_FROM_CHAT_TEXT | UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_UNINTERACTIBLE);
+ target->SetUnitFlag(UNIT_FLAG_PREVENT_EMOTES_FROM_CHAT_TEXT);
+ target->SetImmuneToAll(true);
+ target->SetUninteractible(true);
if (Creature* creature = target->ToCreature())
creature->SetReactState(REACT_PASSIVE);
@@ -1790,7 +1792,9 @@ class spell_gen_feign_death_all_flags_uninteractible : public AuraScript
Unit* target = GetTarget();
target->RemoveUnitFlag3(UNIT_FLAG3_FAKE_DEAD);
target->RemoveUnitFlag2(UNIT_FLAG2_FEIGN_DEATH);
- target->RemoveUnitFlag(UNIT_FLAG_PREVENT_EMOTES_FROM_CHAT_TEXT | UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_UNINTERACTIBLE);
+ target->RemoveUnitFlag(UNIT_FLAG_PREVENT_EMOTES_FROM_CHAT_TEXT);
+ target->SetImmuneToAll(false);
+ target->SetUninteractible(false);
if (Creature* creature = target->ToCreature())
creature->InitializeReactState();
diff --git a/src/server/scripts/World/boss_emerald_dragons.cpp b/src/server/scripts/World/boss_emerald_dragons.cpp
index 8131f134dca..cdb4ee81eaa 100644
--- a/src/server/scripts/World/boss_emerald_dragons.cpp
+++ b/src/server/scripts/World/boss_emerald_dragons.cpp
@@ -95,7 +95,8 @@ struct emerald_dragonAI : public WorldBossAI
void Reset() override
{
WorldBossAI::Reset();
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE | UNIT_FLAG_NON_ATTACKABLE);
+ me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ me->SetUninteractible(false);
me->SetReactState(REACT_AGGRESSIVE);
DoCast(me, SPELL_MARK_OF_NATURE_AURA, true);
events.ScheduleEvent(EVENT_TAIL_SWEEP, 4s);
@@ -633,7 +634,8 @@ class boss_taerar : public CreatureScript
_shades += count;
DoCast(SPELL_SHADE);
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE | UNIT_FLAG_NON_ATTACKABLE);
+ me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ me->SetUninteractible(true);
me->SetReactState(REACT_PASSIVE);
++_stage;
@@ -670,7 +672,8 @@ class boss_taerar : public CreatureScript
{
_banished = false;
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE | UNIT_FLAG_NON_ATTACKABLE);
+ me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
+ me->SetUninteractible(false);
me->RemoveAurasDueToSpell(SPELL_SHADE);
me->SetReactState(REACT_AGGRESSIVE);
}
diff --git a/src/server/scripts/World/npcs_special.cpp b/src/server/scripts/World/npcs_special.cpp
index ade17b58a2b..25d8237f808 100644
--- a/src/server/scripts/World/npcs_special.cpp
+++ b/src/server/scripts/World/npcs_special.cpp
@@ -637,7 +637,7 @@ public:
void Reset() override
{
Initialize();
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
}
void BeginEvent(Player* player)
@@ -662,7 +662,7 @@ public:
}
Event = true;
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
}
void PatientDied(Position const* point)
@@ -770,7 +770,7 @@ public:
Initialize();
//no select
- me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(false);
//no regen health
me->SetUnitFlag(UNIT_FLAG_IN_COMBAT);
@@ -811,7 +811,7 @@ public:
ENSURE_AI(npc_doctor::npc_doctorAI, doctor->AI())->PatientSaved(me, player, Coord);
//make uninteractible
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
//regen health
me->RemoveUnitFlag(UNIT_FLAG_IN_COMBAT);
@@ -848,7 +848,7 @@ public:
if (me->IsAlive() && me->GetHealth() <= 6)
{
me->RemoveUnitFlag(UNIT_FLAG_IN_COMBAT);
- me->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
+ me->SetUninteractible(true);
me->setDeathState(JUST_DIED);
me->SetUnitFlag3(UNIT_FLAG3_FAKE_DEAD);