diff --git a/%D0%9E-%D0%BC%D0%B0%D0%B3%D0%B8%D0%B8.md b/%D0%9E-%D0%BC%D0%B0%D0%B3%D0%B8%D0%B8.md index fffef3a..6b58ff8 100644 --- a/%D0%9E-%D0%BC%D0%B0%D0%B3%D0%B8%D0%B8.md +++ b/%D0%9E-%D0%BC%D0%B0%D0%B3%D0%B8%D0%B8.md @@ -56,4 +56,36 @@ function smallHealingPotion($caster) # Зелье лечения $baseDamage = 1 castDamage($caster, $manaCost, $baseDamage, $caster); } +``` + +```PHP +# Псевдокод +function getUnitForEffect($effect) + { + $aliveUnits = []; + + foreach ($this->units as $unit) { + if ($unit->isAlive()) { + $aliveUnits[] = $unit; + } + } + + // Если живых юнитов нет - возвращаем null + if (count($aliveUnits) === 0) { + return null; + } + + // Чтобы эффект накладывался случайному юниту, а не первому - перемешиваем массив + shuffle($aliveUnits); + + // Проходим по юнитам и проверяем, у кого указанного эффекта нет + foreach ($aliveUnits as $unit) { + if (!$unit->getEffects()->exist($effect)) { + return $unit; + } + } + + return null; + } + ``` \ No newline at end of file