Esempio n. 1
0
        public static bool Award(Mobile from, VirtueName virtue, int amount, ref bool gainedPath)
        {
            int current = from.Virtues.GetValue((int)virtue);

            int maxAmount = GetMaxAmount(virtue);

            if (current >= maxAmount)
            {
                return(false);
            }

            if ((current + amount) >= maxAmount)
            {
                amount = maxAmount - current;
            }

            VirtueLevel oldLevel = GetLevel(from, virtue);

            from.Virtues.SetValue((int)virtue, current + amount);

            VirtueLevel newLevel = GetLevel(from, virtue);

            gainedPath = (newLevel != oldLevel);

            if (gainedPath)
            {
                EventSink.InvokeOnVirtueLevelChange(from, (int)oldLevel, (int)newLevel, (int)virtue);
            }

            return(true);
        }