diff options
author | Teleqraph <nyrdeveloper@gmail.com> | 2023-07-20 19:09:27 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-07-20 19:09:27 +0200 |
commit | 88ff97c1f96381565c47f8ca1993bdc7fce19fd6 (patch) | |
tree | e2b89eb2da0a1a01e8f4eef0a37328e997cb344c /src | |
parent | d4112334142f85addcf784bf3b4fb3b04773f1cd (diff) |
Core/Units: Added helper functions to modify UNIT_FLAG_UNINTERACTIBLE (#29159)
Co-authored-by: Shauren <shauren.trinity@gmail.com>
Diffstat (limited to 'src')
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); |