namespace Server
{
    public delegate int NotorietyHandler(Mobile source, Mobile target);

    public static class Notoriety
    {
        public const int Innocent = 1;
        public const int Ally = 2;
        public const int CanBeAttacked = 3;
        public const int Criminal = 4;
        public const int Enemy = 5;
        public const int Murderer = 6;
        public const int Invulnerable = 7;

        public static NotorietyHandler Handler { get; set; }

        public static int[] Hues { get; set; } =
        {
            0x000,
            0x059,
            0x03F,
            0x3B2,
            0x3B2,
            0x090,
            0x022,
            0x035
        };

        public static int GetHue(int noto) => noto < 0 || noto >= Hues.Length ? 0 : Hues[noto];

        public static int Compute(Mobile source, Mobile target) => Handler?.Invoke(source, target) ?? CanBeAttacked;
    }
}
