From e8ff7bfa67b14432decc5a67f24173b1ed11dc82 Mon Sep 17 00:00:00 2001 From: hondacrx Date: Sat, 1 Oct 2022 17:00:55 -0400 Subject: [PATCH] Core/Units: Set UNIT_FLAG2_*_AOI dynamically according to the VisibilityDistanceType set on the creature Port From (https://github.com/TrinityCore/TrinityCore/commit/4b06b8ec1e3ccc153a44b3eb2e8487641cfae98d) --- Source/Framework/Constants/CreatureConst.cs | 2 +- Source/Game/Entities/Object/WorldObject.cs | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/Source/Framework/Constants/CreatureConst.cs b/Source/Framework/Constants/CreatureConst.cs index 59d132c5e..7a3ce46ca 100644 --- a/Source/Framework/Constants/CreatureConst.cs +++ b/Source/Framework/Constants/CreatureConst.cs @@ -131,7 +131,7 @@ namespace Framework.Constants MirrorImage | ForceMovement | DisarmOffhand | DisablePredStats | AllowChangingTalents | DisarmRanged | /* UNIT_FLAG2_REGENERATE_POWER | */ RestrictPartyInteraction | - PreventSpellClick | InteractWhileHostile | /* UNIT_FLAG2_CANNOT_TURN | */ + PreventSpellClick | InteractWhileHostile | /* Unk2 | */ /* UNIT_FLAG2_PLAY_DEATH_ANIM | */ AllowCheatSpells | SuppressHighlightWhenTargetedOrMousedOver | TreatAsRaidUnitForHelpfulSpells | LargeAoi | GiganticAoi | NoActions | AiWillOnlySwimIfTargetSwims | DontGenerateCombatLogWhenEngagedWithNpcs | AttackerIgnoresMinimumRanges | diff --git a/Source/Game/Entities/Object/WorldObject.cs b/Source/Game/Entities/Object/WorldObject.cs index dc8ca5573..0012319fa 100644 --- a/Source/Game/Entities/Object/WorldObject.cs +++ b/Source/Game/Entities/Object/WorldObject.cs @@ -977,6 +977,26 @@ namespace Game.Entities if (GetTypeId() == TypeId.Player) return; + Creature creature = ToCreature(); + if (creature != null) + { + creature.RemoveUnitFlag2(UnitFlags2.LargeAoi | UnitFlags2.GiganticAoi | UnitFlags2.InfiniteAoi); + switch (type) + { + case VisibilityDistanceType.Large: + creature.SetUnitFlag2(UnitFlags2.LargeAoi); + break; + case VisibilityDistanceType.Gigantic: + creature.SetUnitFlag2(UnitFlags2.GiganticAoi); + break; + case VisibilityDistanceType.Infinite: + creature.SetUnitFlag2(UnitFlags2.InfiniteAoi); + break; + default: + break; + } + } + m_visibilityDistanceOverride = SharedConst.VisibilityDistances[(int)type]; }