diff --git a/Source/Game/AI/CoreAI/CreatureAI.cs b/Source/Game/AI/CoreAI/CreatureAI.cs index 191d69eec..dac94db2c 100644 --- a/Source/Game/AI/CoreAI/CreatureAI.cs +++ b/Source/Game/AI/CoreAI/CreatureAI.cs @@ -374,7 +374,7 @@ namespace Game.AI point.SetUnitFlag(UnitFlags.Stunned); point.SetImmuneToAll(true); if (!hasOutOfBoundsNeighbor) - point.SetUnitFlag(UnitFlags.Uninteractible); + point.SetUninteractible(true); } Q.Remove(front); } diff --git a/Source/Game/AI/SmartScripts/SmartScript.cs b/Source/Game/AI/SmartScripts/SmartScript.cs index df4c3c063..664847775 100644 --- a/Source/Game/AI/SmartScripts/SmartScript.cs +++ b/Source/Game/AI/SmartScripts/SmartScript.cs @@ -2408,15 +2408,8 @@ namespace Game.AI case SmartActions.SetUninteractible: { foreach (var target in targets) - { if (IsUnit(target)) - { - if (e.Action.setUninteractible.uninteractible != 0) - target.ToUnit().SetUnitFlag(UnitFlags.Uninteractible); - else - target.ToUnit().RemoveUnitFlag(UnitFlags.Uninteractible); - } - } + target.ToUnit().SetUninteractible(e.Action.setUninteractible.uninteractible != 0); break; } case SmartActions.ActivateGameobject: diff --git a/Source/Game/BattleFields/BattleField.cs b/Source/Game/BattleFields/BattleField.cs index 7fec054f8..e229bd485 100644 --- a/Source/Game/BattleFields/BattleField.cs +++ b/Source/Game/BattleFields/BattleField.cs @@ -461,7 +461,8 @@ namespace Game.BattleFields { creature.CombatStop(); creature.SetReactState(ReactStates.Passive); - creature.SetUnitFlag(UnitFlags.NonAttackable | UnitFlags.Uninteractible); + creature.SetUnitFlag(UnitFlags.NonAttackable); + creature.SetUninteractible(true); creature.DisappearAndDie(); creature.SetVisible(false); } @@ -469,7 +470,8 @@ namespace Game.BattleFields public void ShowNpc(Creature creature, bool aggressive) { creature.SetVisible(true); - creature.RemoveUnitFlag(UnitFlags.NonAttackable | UnitFlags.Uninteractible); + creature.RemoveUnitFlag(UnitFlags.NonAttackable); + creature.SetUninteractible(false); if (!creature.IsAlive()) creature.Respawn(true); if (aggressive) diff --git a/Source/Game/BattleGrounds/Zones/StrandofAncients.cs b/Source/Game/BattleGrounds/Zones/StrandofAncients.cs index c51fc7e78..d2005644e 100644 --- a/Source/Game/BattleGrounds/Zones/StrandofAncients.cs +++ b/Source/Game/BattleGrounds/Zones/StrandofAncients.cs @@ -629,9 +629,15 @@ namespace Game.BattleGrounds.Zones if (dem) { if (start) - dem.SetUnitFlag(UnitFlags.NonAttackable | UnitFlags.Uninteractible); + { + dem.SetUnitFlag(UnitFlags.NonAttackable); + dem.SetUninteractible(true); + } else - dem.RemoveUnitFlag(UnitFlags.NonAttackable | UnitFlags.Uninteractible); + { + dem.RemoveUnitFlag(UnitFlags.NonAttackable); + dem.SetUninteractible(false); + } } } } diff --git a/Source/Game/Entities/Creature/Creature.cs b/Source/Game/Entities/Creature/Creature.cs index e85aafa7e..749f5e69b 100644 --- a/Source/Game/Entities/Creature/Creature.cs +++ b/Source/Game/Entities/Creature/Creature.cs @@ -373,7 +373,7 @@ namespace Game.Entities // trigger creature is always not selectable and can not be attacked if (IsTrigger()) - SetUnitFlag(UnitFlags.Uninteractible); + SetUninteractible(true); InitializeReactState(); @@ -2305,7 +2305,7 @@ namespace Game.Entities if (IsCivilian()) return false; - if (HasUnitFlag(UnitFlags.NonAttackable | UnitFlags.Uninteractible) || IsImmuneToNPC()) + if (HasUnitFlag(UnitFlags.NonAttackable) || IsImmuneToNPC() || IsUninteractible()) return false; // skip fighting creature diff --git a/Source/Game/Entities/Object/WorldObject.cs b/Source/Game/Entities/Object/WorldObject.cs index 35f1fa684..bead19d40 100644 --- a/Source/Game/Entities/Object/WorldObject.cs +++ b/Source/Game/Entities/Object/WorldObject.cs @@ -2557,7 +2557,7 @@ namespace Game.Entities if ((bySpell == null || !bySpell.HasAttribute(SpellAttr6.CanTargetUntargetable)) && unitTarget != null && unitTarget.HasUnitFlag(UnitFlags.NonAttackable2)) return false; - if (unitTarget != null && unitTarget.HasUnitFlag(UnitFlags.Uninteractible)) + if (unitTarget != null && unitTarget.IsUninteractible()) return false; Player playerAttacker = ToPlayer(); @@ -2714,7 +2714,7 @@ namespace Game.Entities if ((bySpell == null || !bySpell.HasAttribute(SpellAttr6.CanTargetUntargetable)) && unitTarget != null && unitTarget.HasUnitFlag(UnitFlags.NonAttackable2)) return false; - if (unitTarget != null && unitTarget.HasUnitFlag(UnitFlags.Uninteractible)) + if (unitTarget != null && unitTarget.IsUninteractible()) return false; // check flags for negative spells diff --git a/Source/Game/Entities/Player/Player.cs b/Source/Game/Entities/Player/Player.cs index 9e686bd8e..0f7c1d67b 100644 --- a/Source/Game/Entities/Player/Player.cs +++ b/Source/Game/Entities/Player/Player.cs @@ -3371,7 +3371,7 @@ namespace Game.Entities { Creature creature = GetMap().GetCreature(guid); // Update fields of triggers, transformed units or unselectable units (values dependent on GM state) - if (creature == null || (!creature.IsTrigger() && !creature.HasAuraType(AuraType.Transform) && !creature.HasUnitFlag(UnitFlags.Uninteractible))) + if (creature == null || (!creature.IsTrigger() && !creature.HasAuraType(AuraType.Transform) && !creature.IsUninteractible())) continue; creature.m_values.ModifyValue(m_unitData).ModifyValue(m_unitData.DisplayID); diff --git a/Source/Game/Entities/Unit/Unit.Combat.cs b/Source/Game/Entities/Unit/Unit.Combat.cs index e2c33978a..dc565de89 100644 --- a/Source/Game/Entities/Unit/Unit.Combat.cs +++ b/Source/Game/Entities/Unit/Unit.Combat.cs @@ -147,7 +147,7 @@ namespace Game.Entities if (!IsAlive()) return false; - if (HasUnitFlag(UnitFlags.NonAttackable | UnitFlags.Uninteractible)) + if (HasUnitFlag(UnitFlags.NonAttackable) || IsUninteractible()) return false; if (IsTypeId(TypeId.Player) && ToPlayer().IsGameMaster()) diff --git a/Source/Game/Entities/Unit/Unit.cs b/Source/Game/Entities/Unit/Unit.cs index 94a05a034..b98b40dc2 100644 --- a/Source/Game/Entities/Unit/Unit.cs +++ b/Source/Game/Entities/Unit/Unit.cs @@ -3209,6 +3209,16 @@ namespace Game.Entities public virtual void SetImmuneToNPC(bool apply) { SetImmuneToNPC(apply, false); } + public bool IsUninteractible() { return HasUnitFlag(UnitFlags.Uninteractible); } + + public void SetUninteractible(bool apply) + { + if (apply) + SetUnitFlag(UnitFlags.Uninteractible); + else + RemoveUnitFlag(UnitFlags.Uninteractible); + } + public virtual float GetBlockPercent(uint attackerLevel) { return 30.0f; } void UpdateReactives(uint p_time) diff --git a/Source/Game/Entities/Vehicle.cs b/Source/Game/Entities/Vehicle.cs index fab3f6699..2bed06358 100644 --- a/Source/Game/Entities/Vehicle.cs +++ b/Source/Game/Entities/Vehicle.cs @@ -365,7 +365,7 @@ namespace Game.Entities // Remove UNIT_FLAG_NOT_SELECTABLE if passenger did not have it before entering vehicle if (seat.Value.SeatInfo.HasFlag(VehicleSeatFlags.PassengerNotSelectable) && !seat.Value.Passenger.IsUninteractible) - unit.RemoveUnitFlag(UnitFlags.Uninteractible); + unit.SetUninteractible(false); seat.Value.Passenger.Reset(); @@ -642,7 +642,7 @@ namespace Game.Entities Passenger.SetVehicle(Target); Seat.Value.Passenger.Guid = Passenger.GetGUID(); - Seat.Value.Passenger.IsUninteractible = Passenger.HasUnitFlag(UnitFlags.Uninteractible); + Seat.Value.Passenger.IsUninteractible = Passenger.IsUninteractible(); Seat.Value.Passenger.IsGravityDisabled = Passenger.HasUnitMovementFlag(MovementFlag.DisableGravity); if (Seat.Value.SeatInfo.CanEnterOrExit()) { diff --git a/Source/Scripts/Argus/AntorusTheBurningThrone/GarothiWorldbreaker.cs b/Source/Scripts/Argus/AntorusTheBurningThrone/GarothiWorldbreaker.cs index 636304689..d09783ecb 100644 --- a/Source/Scripts/Argus/AntorusTheBurningThrone/GarothiWorldbreaker.cs +++ b/Source/Scripts/Argus/AntorusTheBurningThrone/GarothiWorldbreaker.cs @@ -205,7 +205,7 @@ namespace Scripts.Argus.AntorusTheBurningThrone.GarothiWorldbreaker _events.Reset(); _events.ScheduleEvent(EventIds.ReengagePlayers, TimeSpan.FromSeconds(3.5)); HideCannons(); - me.RemoveUnitFlag(UnitFlags.Uninteractible); + me.SetUninteractible(false); break; default: break; @@ -229,14 +229,14 @@ namespace Scripts.Argus.AntorusTheBurningThrone.GarothiWorldbreaker DoCastSelf(SpellIds.ApocalypseDriveFinalDamage); Talk(TextIds.SayAnnounceApocalypseDrive); Talk(TextIds.SayApocalypseDrive); - me.SetUnitFlag(UnitFlags.Uninteractible); + me.SetUninteractible(true); Creature decimator = instance.GetCreature(DataTypes.Decimator); if (decimator) { instance.SendEncounterUnit(EncounterFrameType.Engage, decimator, 2); decimator.SetUnitFlag(UnitFlags.InCombat); - decimator.RemoveUnitFlag(UnitFlags.Uninteractible); + decimator.SetUninteractible(false); } Creature annihilator = instance.GetCreature(DataTypes.Annihilator); @@ -244,7 +244,7 @@ namespace Scripts.Argus.AntorusTheBurningThrone.GarothiWorldbreaker { instance.SendEncounterUnit(EncounterFrameType.Engage, annihilator, 2); annihilator.SetUnitFlag(UnitFlags.InCombat); - annihilator.RemoveUnitFlag(UnitFlags.Uninteractible); + annihilator.SetUninteractible(false); } ++_apocalypseDriveCount; } @@ -279,7 +279,7 @@ namespace Scripts.Argus.AntorusTheBurningThrone.GarothiWorldbreaker case CreatureIds.Annihilator: me.InterruptNonMeleeSpells(true); me.RemoveAurasDueToSpell(SpellIds.ApocalypseDrive); - me.RemoveUnitFlag(UnitFlags.Uninteractible); + me.SetUninteractible(false); if (summon.GetEntry() == CreatureIds.Annihilator) _searingBarrageSpellId = SpellIds.SearingBarrageAnnihilator; @@ -411,14 +411,16 @@ namespace Scripts.Argus.AntorusTheBurningThrone.GarothiWorldbreaker if (decimator) { instance.SendEncounterUnit(EncounterFrameType.Disengage, decimator); - decimator.SetUnitFlag(UnitFlags.Uninteractible | UnitFlags.Immune); + decimator.SetUninteractible(true); + decimator.SetUnitFlag(UnitFlags.Immune); } Creature annihilator = instance.GetCreature(DataTypes.Annihilator); if (annihilator) { instance.SendEncounterUnit(EncounterFrameType.Disengage, annihilator); - annihilator.SetUnitFlag(UnitFlags.Uninteractible | UnitFlags.Immune); + annihilator.SetUninteractible(true); + annihilator.SetUnitFlag(UnitFlags.Immune); } } } diff --git a/Source/Scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/PyroguardEmberseer.cs b/Source/Scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/PyroguardEmberseer.cs index c97e0c2e7..c399145ca 100644 --- a/Source/Scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/PyroguardEmberseer.cs +++ b/Source/Scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/PyroguardEmberseer.cs @@ -46,7 +46,7 @@ namespace Scripts.EasternKingdoms.BlackrockMountain.BlackrockSpire.PyroguardEmbe public override void Reset() { - me.SetUnitFlag(UnitFlags.Uninteractible); + me.SetUninteractible(true); me.SetImmuneToPC(true); _scheduler.CancelAll(); // Apply auras on spawn and reset @@ -172,7 +172,7 @@ namespace Scripts.EasternKingdoms.BlackrockMountain.BlackrockSpire.PyroguardEmbe me.CastSpell(me, SpellIds.EmberseerFullStrength); Talk(TextIds.EmoteFreeOfBonds); Talk(TextIds.YellFreeOfBonds); - me.RemoveUnitFlag(UnitFlags.Uninteractible); + me.SetUninteractible(false); me.SetImmuneToPC(false); _scheduler.Schedule(TimeSpan.FromSeconds(2), task => { diff --git a/Source/Scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/Nefarian.cs b/Source/Scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/Nefarian.cs index e52c9cd79..91beb9bf4 100644 --- a/Source/Scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/Nefarian.cs +++ b/Source/Scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/Nefarian.cs @@ -204,7 +204,7 @@ namespace Scripts.EasternKingdoms.BlackrockMountain.BlackwingLair.VictorNefarius if (summon.GetEntry() != BWLCreatureIds.Nefarian) { summon.UpdateEntry(CreatureIds.BoneConstruct); - summon.SetUnitFlag(UnitFlags.Uninteractible); + summon.SetUninteractible(true); summon.SetReactState(ReactStates.Passive); summon.SetStandState(UnitStandStateType.Dead); } @@ -561,7 +561,7 @@ namespace Scripts.EasternKingdoms.BlackrockMountain.BlackwingLair.VictorNefarius { creature.Respawn(); DoZoneInCombat(creature); - creature.RemoveUnitFlag(UnitFlags.Uninteractible); + creature.SetUninteractible(false); creature.SetReactState(ReactStates.Aggressive); creature.SetStandState(UnitStandStateType.Stand); } diff --git a/Source/Scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/Vaelastrasz.cs b/Source/Scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/Vaelastrasz.cs index 244dbed4c..f7c7eec2e 100644 --- a/Source/Scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/Vaelastrasz.cs +++ b/Source/Scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/Vaelastrasz.cs @@ -43,7 +43,7 @@ namespace Scripts.EasternKingdoms.BlackrockMountain.BlackwingLair.Vaelastrasz Initialize(); creature.SetNpcFlag(NPCFlags.Gossip); creature.SetFaction((uint)FactionTemplates.Friendly); - creature.RemoveUnitFlag(UnitFlags.Uninteractible); + creature.SetUninteractible(false); } void Initialize() diff --git a/Source/Scripts/EasternKingdoms/BlackrockMountain/MoltenCore/Ragnaros.cs b/Source/Scripts/EasternKingdoms/BlackrockMountain/MoltenCore/Ragnaros.cs index c51f6c269..dc4212df8 100644 --- a/Source/Scripts/EasternKingdoms/BlackrockMountain/MoltenCore/Ragnaros.cs +++ b/Source/Scripts/EasternKingdoms/BlackrockMountain/MoltenCore/Ragnaros.cs @@ -161,7 +161,7 @@ namespace Scripts.EasternKingdoms.BlackrockMountain.MoltenCore //Become unbanished again me.SetReactState(ReactStates.Aggressive); me.SetFaction((uint)FactionTemplates.Monster); - me.RemoveUnitFlag(UnitFlags.Uninteractible); + me.SetUninteractible(false); me.SetEmoteState(Emote.OneshotNone); me.HandleEmoteCommand(Emote.OneshotEmerge); Unit target = SelectTarget(SelectTargetMethod.Random, 0); @@ -240,7 +240,7 @@ namespace Scripts.EasternKingdoms.BlackrockMountain.MoltenCore //Root self //DoCast(me, 23973); me.SetFaction((uint)FactionTemplates.Friendly); - me.SetUnitFlag(UnitFlags.Uninteractible); + me.SetUninteractible(true); me.SetEmoteState(Emote.StateSubmerged); me.HandleEmoteCommand(Emote.OneshotSubmerge); instance.SetData(MCMiscConst.DataRagnarosAdds, 0); diff --git a/Source/Scripts/EasternKingdoms/Karazhan/Curator.cs b/Source/Scripts/EasternKingdoms/Karazhan/Curator.cs index 57271d6bd..3e9939178 100644 --- a/Source/Scripts/EasternKingdoms/Karazhan/Curator.cs +++ b/Source/Scripts/EasternKingdoms/Karazhan/Curator.cs @@ -131,7 +131,7 @@ namespace Scripts.EasternKingdoms.Karazhan.Curator _scheduler.Schedule(TimeSpan.FromSeconds(2), task => { me.SetReactState(ReactStates.Aggressive); - me.RemoveUnitFlag(UnitFlags.Uninteractible); + me.SetUninteractible(false); DoZoneInCombat(); }); } diff --git a/Source/Scripts/EasternKingdoms/Karazhan/Nightbane.cs b/Source/Scripts/EasternKingdoms/Karazhan/Nightbane.cs index 6bf08c8d9..2b4ef2ef9 100644 --- a/Source/Scripts/EasternKingdoms/Karazhan/Nightbane.cs +++ b/Source/Scripts/EasternKingdoms/Karazhan/Nightbane.cs @@ -118,7 +118,7 @@ namespace Scripts.EasternKingdoms.Karazhan.Nightbane phase = NightbanePhases.Intro; me.SetActive(true); me.SetFarVisible(true); - me.RemoveUnitFlag(UnitFlags.Uninteractible); + me.SetUninteractible(false); me.GetMotionMaster().MoveAlongSplineChain(PointIds.IntroStart, SplineChainIds.IntroStart, false); HandleTerraceDoors(false); } diff --git a/Source/Scripts/EasternKingdoms/Karazhan/Opera.cs b/Source/Scripts/EasternKingdoms/Karazhan/Opera.cs index 53331beab..6abdf849f 100644 --- a/Source/Scripts/EasternKingdoms/Karazhan/Opera.cs +++ b/Source/Scripts/EasternKingdoms/Karazhan/Opera.cs @@ -150,7 +150,7 @@ namespace Scripts.EasternKingdoms.Karazhan.EsOpera creature.InterruptNonMeleeSpells(true); creature.RemoveAllAuras(); creature.SetHealth(0); - creature.SetUnitFlag(UnitFlags.Uninteractible); + creature.SetUninteractible(true); creature.GetMotionMaster().Clear(); creature.GetMotionMaster().MoveIdle(); creature.SetStandState(UnitStandStateType.Dead); @@ -158,7 +158,7 @@ namespace Scripts.EasternKingdoms.Karazhan.EsOpera public static void Resurrect(Creature target) { - target.RemoveUnitFlag(UnitFlags.Uninteractible); + target.SetUninteractible(false); target.SetFullHealth(); target.SetStandState(UnitStandStateType.Stand); target.CastSpell(target, SpellIds.ResVisual, true); @@ -1070,7 +1070,7 @@ namespace Scripts.EasternKingdoms.Karazhan.EsOpera Creature Romulo = ObjectAccessor.GetCreature(me, RomuloGUID); if (Romulo) { - Romulo.RemoveUnitFlag(UnitFlags.Uninteractible); + Romulo.SetUninteractible(false); Romulo.GetMotionMaster().Clear(); Romulo.SetDeathState(DeathState.JustDied); Romulo.CombatStop(true); @@ -1320,7 +1320,7 @@ namespace Scripts.EasternKingdoms.Karazhan.EsOpera Creature Julianne = ObjectAccessor.GetCreature(me, JulianneGUID); if (Julianne) { - Julianne.RemoveUnitFlag(UnitFlags.Uninteractible); + Julianne.SetUninteractible(false); Julianne.GetMotionMaster().Clear(); Julianne.SetDeathState(DeathState.JustDied); Julianne.CombatStop(true); diff --git a/Source/Scripts/EasternKingdoms/Karazhan/PrinceMalchezaar.cs b/Source/Scripts/EasternKingdoms/Karazhan/PrinceMalchezaar.cs index ecada959b..c0f3eb4fc 100644 --- a/Source/Scripts/EasternKingdoms/Karazhan/PrinceMalchezaar.cs +++ b/Source/Scripts/EasternKingdoms/Karazhan/PrinceMalchezaar.cs @@ -89,7 +89,7 @@ namespace Scripts.EasternKingdoms.Karazhan.PrinceMalchezaar if (spellInfo.Id == SpellIds.InfernalRelay) { me.SetDisplayId(me.GetNativeDisplayId()); - me.SetUnitFlag(UnitFlags.Uninteractible); + me.SetUninteractible(true); _scheduler.Schedule(TimeSpan.FromSeconds(4), task => DoCast(me, SpellIds.Hellfire)); _scheduler.Schedule(TimeSpan.FromSeconds(170), task => @@ -402,7 +402,7 @@ namespace Scripts.EasternKingdoms.Karazhan.PrinceMalchezaar Creature axe = me.SummonCreature(MiscConst.MalchezarsAxe, me.GetPositionX(), me.GetPositionY(), me.GetPositionZ(), 0, TempSummonType.TimedDespawnOutOfCombat, TimeSpan.FromSeconds(1)); if (axe) { - axe.SetUnitFlag(UnitFlags.Uninteractible); + axe.SetUninteractible(true); axe.SetFaction(me.GetFaction()); axes[i] = axe.GetGUID(); if (target) diff --git a/Source/Scripts/EasternKingdoms/MagistersTerrace/FelbloodKaelthas.cs b/Source/Scripts/EasternKingdoms/MagistersTerrace/FelbloodKaelthas.cs index 39720b9c4..0ac843acf 100644 --- a/Source/Scripts/EasternKingdoms/MagistersTerrace/FelbloodKaelthas.cs +++ b/Source/Scripts/EasternKingdoms/MagistersTerrace/FelbloodKaelthas.cs @@ -378,7 +378,7 @@ namespace Scripts.EasternKingdoms.MagistersTerrace.FelbloodKaelthas me.AttackStop(); me.SetReactState(ReactStates.Passive); me.RemoveAllAuras(); - me.SetUnitFlag(UnitFlags.Uninteractible); + me.SetUninteractible(true); DoCastSelf(SpellIds.EmberBlast); // DoCastSelf(SpellSummonPhoenixEgg); -- We do a manual summon for now. Feel free to move it to spelleffect_dbc Creature egg = DoSummon(CreatureIds.PhoenixEgg, me.GetPosition(), TimeSpan.FromSeconds(0)); @@ -407,7 +407,7 @@ namespace Scripts.EasternKingdoms.MagistersTerrace.FelbloodKaelthas _isInEgg = false; DoCastSelf(SpellIds.FullHeal); DoCastSelf(SpellIds.Burn); - me.RemoveUnitFlag(UnitFlags.Uninteractible); + me.SetUninteractible(false); engageTask.Schedule(TimeSpan.FromSeconds(2), task => me.SetReactState(ReactStates.Aggressive)); }); }); diff --git a/Source/Scripts/EasternKingdoms/MagistersTerrace/SelinFireheart.cs b/Source/Scripts/EasternKingdoms/MagistersTerrace/SelinFireheart.cs index 2bdcea646..789f06d12 100644 --- a/Source/Scripts/EasternKingdoms/MagistersTerrace/SelinFireheart.cs +++ b/Source/Scripts/EasternKingdoms/MagistersTerrace/SelinFireheart.cs @@ -139,7 +139,7 @@ namespace Scripts.EasternKingdoms.MagistersTerrace.SelinFireheart Unit CrystalChosen = Global.ObjAccessor.GetUnit(me, CrystalGUID); if (CrystalChosen != null && CrystalChosen.IsAlive()) { - CrystalChosen.RemoveUnitFlag(UnitFlags.Uninteractible); + CrystalChosen.SetUninteractible(false); CrystalChosen.CastSpell(me, SpellIds.ManaRage, true); _events.ScheduleEvent(EventIds.Empower, TimeSpan.FromSeconds(10), PhaseIds.Drain); } diff --git a/Source/Scripts/Spells/Generic.cs b/Source/Scripts/Spells/Generic.cs index 1d7edc740..1e32f338e 100644 --- a/Source/Scripts/Spells/Generic.cs +++ b/Source/Scripts/Spells/Generic.cs @@ -1916,7 +1916,9 @@ namespace Scripts.Spells.Generic Unit target = GetTarget(); target.SetUnitFlag3(UnitFlags3.FakeDead); target.SetUnitFlag2(UnitFlags2.FeignDeath); - target.SetUnitFlag(UnitFlags.PreventEmotesFromChatText | UnitFlags.ImmuneToPc | UnitFlags.ImmuneToNpc | UnitFlags.Uninteractible); + target.SetUnitFlag(UnitFlags.PreventEmotesFromChatText); + target.SetImmuneToAll(true); + target.SetUninteractible(true); target.ToCreature()?.SetReactState(ReactStates.Passive); } @@ -1926,7 +1928,9 @@ namespace Scripts.Spells.Generic Unit target = GetTarget(); target.RemoveUnitFlag3(UnitFlags3.FakeDead); target.RemoveUnitFlag2(UnitFlags2.FeignDeath); - target.RemoveUnitFlag(UnitFlags.PreventEmotesFromChatText | UnitFlags.ImmuneToPc | UnitFlags.ImmuneToNpc | UnitFlags.Uninteractible); + target.RemoveUnitFlag(UnitFlags.PreventEmotesFromChatText); + target.SetImmuneToAll(false); + target.SetUninteractible(false); target.ToCreature()?.InitializeReactState(); } diff --git a/Source/Scripts/World/EmeraldDragons.cs b/Source/Scripts/World/EmeraldDragons.cs index 4c2fcfca2..75cde3ab0 100644 --- a/Source/Scripts/World/EmeraldDragons.cs +++ b/Source/Scripts/World/EmeraldDragons.cs @@ -87,7 +87,8 @@ namespace Scripts.World.EmeraldDragons public override void Reset() { base.Reset(); - me.RemoveUnitFlag(UnitFlags.Uninteractible | UnitFlags.NonAttackable); + me.RemoveUnitFlag(UnitFlags.NonAttackable); + me.SetUninteractible(false); me.SetReactState(ReactStates.Aggressive); DoCast(me, SpellIds.MarkOfNatureAura, new CastSpellExtraArgs(true)); @@ -439,7 +440,8 @@ namespace Scripts.World.EmeraldDragons _shades += (byte)SpellIds.TaerarShadeSpells.Length; DoCast(SpellIds.Shade); - me.SetUnitFlag(UnitFlags.Uninteractible | UnitFlags.NonAttackable); + me.SetUnitFlag(UnitFlags.NonAttackable); + me.SetUninteractible(true); me.SetReactState(ReactStates.Passive); ++_stage; @@ -458,7 +460,8 @@ namespace Scripts.World.EmeraldDragons { _banished = false; - me.RemoveUnitFlag(UnitFlags.Uninteractible | UnitFlags.NonAttackable); + me.RemoveUnitFlag(UnitFlags.NonAttackable); + me.SetUninteractible(false); me.RemoveAurasDueToSpell(SpellIds.Shade); me.SetReactState(ReactStates.Aggressive); } diff --git a/Source/Scripts/World/NpcSpecial.cs b/Source/Scripts/World/NpcSpecial.cs index d0ac632f4..6e995ac5b 100644 --- a/Source/Scripts/World/NpcSpecial.cs +++ b/Source/Scripts/World/NpcSpecial.cs @@ -779,7 +779,7 @@ namespace Scripts.World.NpcSpecial public override void Reset() { Initialize(); - me.RemoveUnitFlag(UnitFlags.Uninteractible); + me.SetUninteractible(false); } public void BeginEvent(Player player) @@ -804,7 +804,7 @@ namespace Scripts.World.NpcSpecial } Event = true; - me.SetUnitFlag(UnitFlags.Uninteractible); + me.SetUninteractible(true); } public void PatientDied(Position point) @@ -961,7 +961,7 @@ namespace Scripts.World.NpcSpecial Initialize(); //no select - me.RemoveUnitFlag(UnitFlags.Uninteractible); + me.SetUninteractible(false); //no regen health me.SetUnitFlag(UnitFlags.InCombat); @@ -1007,7 +1007,7 @@ namespace Scripts.World.NpcSpecial } //make not selectable - me.SetUnitFlag(UnitFlags.Uninteractible); + me.SetUninteractible(true); //regen health me.RemoveUnitFlag(UnitFlags.InCombat); @@ -1044,7 +1044,7 @@ namespace Scripts.World.NpcSpecial if (me.IsAlive() && me.GetHealth() <= 6) { me.RemoveUnitFlag(UnitFlags.InCombat); - me.SetUnitFlag(UnitFlags.Uninteractible); + me.SetUninteractible(true); me.SetDeathState(DeathState.JustDied); me.SetUnitFlag3(UnitFlags3.FakeDead);