コード例 #1
0
        public List <int> PickEnemies(Team group, int max = 1)
        {
            IWeightedRandomizer <int> randomizer = new DynamicWeightedRandomizer <int>();

            for (int i = 0; i < Characters.Count; i++)
            {
                if (Characters[i].Group != group && Characters[i].Alive)
                {
                    randomizer.Add(i, Characters[i].HighValueTarget ? 8 : 1);
                }
            }

            List <int> result = new List <int>();

            int total = randomizer.Count;

            if (total > 0)
            {
                if (max > total)
                {
                    max = total;
                }
                if (max > 1)
                {
                    max = ClampMax(max);
                }

                for (int j = 0; j < max; j++)
                {
                    result.Add(randomizer.NextWithRemoval());
                }
            }

            return(result);
        }
コード例 #2
0
        private int ClampMax(int max)
        {
            IWeightedRandomizer <int> randomizer = new DynamicWeightedRandomizer <int>();

            for (int i = 0; i < max; i++)
            {
                randomizer.Add(i + 1, max - i);
            }

            return(randomizer.NextWithRemoval());
        }
コード例 #3
0
        public int PickHealTarget(Team group)
        {
            IWeightedRandomizer <int> randomizer = new DynamicWeightedRandomizer <int>();

            for (int i = 0; i < Characters.Count; i++)
            {
                if (Characters[i].Group == group && Characters[i].Alive && Characters[i].Priority != HealPriority.Dont)
                {
                    if (Characters[i].Health <= Characters[i].HealingThreshold)
                    {
                        randomizer.Add(i, (int)Characters[i].Priority);
                    }
                }
            }

            if (randomizer.Count > 0)
            {
                return(randomizer.NextWithRemoval());
            }

            return(-1);
        }