Exemple #1
0
        public ActionResult DoSpecialAction(int position, IArmy myArmy, IArmy enemyArmy, Random random = null)
        {
            if (random == null)
            {
                random = new Random();
            }

            double probability = random.NextDouble();

            //для лечения сгенерированная вероятность должна принадлежать промежутку [0, HealingProbability)
            if (probability >= HealingProbability)
            {
                return(ActionResult.Empty);
            }

            List <ICanBeHealed> availibleForHealing = GetAvailibleForHealing(position, myArmy);

            if (availibleForHealing.Count == 0)
            {
                return(ActionResult.Empty);
            }

            ICanBeHealed unitForHealing = availibleForHealing[random.Next(0, availibleForHealing.Count)];

            unitForHealing.TakeHealth(HealingPower);

            return(new ActionResult(this, (IUnit)unitForHealing, ActionResultType.Healing));
        }
Exemple #2
0
        public string DoAbility(List <IUnit> Allies, List <IUnit> Enemies, int position)
        {
            string AbilityResult = "Cleric at position " + position;

            for (int i = Range; i > -Range; i--)
            {
                if (i + position >= Allies.Count || position + i < 0)
                {
                    continue;
                }
                if (Allies[position + i] is ICanBeHealed)
                {
                    ICanBeHealed HealetUnit = Allies[position + i] as ICanBeHealed;
                    if (HealetUnit.MaxHealth > Allies[position + i].Health)
                    {
                        Allies[position + i].GetHit(AbilityDamage);
                        AbilityResult += string.Format(" cured the {0} at position {1} by {2} points\n", Allies[position + i].Name, position + i, AbilityDamage);
                        return(AbilityResult);
                    }
                }
            }

            return(AbilityResult + string.Format(" can't heal\n"));
        }