diff --git a/Projects/UOContent/Mobiles/BaseCreature.cs b/Projects/UOContent/Mobiles/BaseCreature.cs index f64a289f4..c7ed1b5da 100644 --- a/Projects/UOContent/Mobiles/BaseCreature.cs +++ b/Projects/UOContent/Mobiles/BaseCreature.cs @@ -252,6 +252,8 @@ namespace Server.Mobiles private bool _summoned; + private bool _isLosHidden; + private bool m_bTamable; private int m_ColdResistance; @@ -3656,6 +3658,45 @@ namespace Server.Mobiles { var tc = Core.TickCount; + if (!Controlled && !Summoned && Region is Server.Regions.DungeonRegion) + { + if (Combatant == null) + { + bool someoneSeesMe = false; + + foreach (Mobile m in Map.GetMobilesInRange(Location, 18)) + { + if (m is PlayerMobile { Alive: true, AccessLevel: AccessLevel.Player } player) + { + if (player.InLOS(this)) + { + someoneSeesMe = true; + break; + } + } + } + + if (!someoneSeesMe && !Hidden) + { + _isLosHidden = true; + Hidden = true; + CantWalk = true; + } + else if (someoneSeesMe && Hidden && _isLosHidden) + { + _isLosHidden = false; + Hidden = false; + CantWalk = false; + } + } + else if (Hidden && _isLosHidden) + { + _isLosHidden = false; + Hidden = false; + CantWalk = false; + } + } + if (EnableRummaging && CanRummageCorpses && !Summoned && !Controlled && tc - m_NextRummageTime >= 0) { double min, max;