using System; using System.Text; using Server.Network; namespace Server.Ethics.Hero { public sealed class HolySense : Power { public HolySense() => m_Definition = new PowerDefinition( 0, "Holy Sense", "Drewrok Erstok", "" ); public override void BeginInvoke(Player from) { var opposition = Ethic.Evil; var enemyCount = 0; var maxRange = 18 + from.Power; Player primary = null; foreach (var pl in opposition.Players) { var mob = pl.Mobile; if (mob == null || mob.Map != from.Mobile.Map || !mob.Alive) { continue; } if (!mob.InRange(from.Mobile, Math.Max(18, maxRange - pl.Power))) { continue; } if (primary == null || pl.Power > primary.Power) { primary = pl; } ++enemyCount; } var sb = new StringBuilder(); sb.Append("You sense "); sb.Append(enemyCount == 0 ? "no" : enemyCount.ToString()); sb.Append(enemyCount == 1 ? " enemy" : " enemies"); if (primary != null) { sb.Append(", and a strong presense"); switch (from.Mobile.GetDirectionTo(primary.Mobile)) { case Direction.West: sb.Append(" to the west."); break; case Direction.East: sb.Append(" to the east."); break; case Direction.North: sb.Append(" to the north."); break; case Direction.South: sb.Append(" to the south."); break; case Direction.Up: sb.Append(" to the north-west."); break; case Direction.Down: sb.Append(" to the south-east."); break; case Direction.Left: sb.Append(" to the south-west."); break; case Direction.Right: sb.Append(" to the north-east."); break; } } else { sb.Append('.'); } from.Mobile.LocalOverheadMessage(MessageType.Regular, 0x59, false, sb.ToString()); FinishInvoke(from); } } }