ВНИМАНИЕ: формулу я не проверял. Подсказываю предполагаемый мной вариант. Баги и ошибки не исключены. Используемые обозначения ПЗ - полное здоровье, ОЗ - оставшееся, ПЗО - полное здоровье отряда (количество юнитов*ПЗ), ФЗО - финальное здоровье отряда, ФЗЮ - финальное здоровье юнита, ФКЮ - финальное количество юнитов.
Хронология действий: Основные действия
1. Запомним разницу между ПЗ и ОЗ (в данном случае равна 7). Назовём её Р.
2. Восстановим отряду здоровье полностью (так, на 17 копейщиков будет уже не 163 очка, а 170 очков - то есть так, будто их и не трогали). Получим ПЗО.
3. Нанесём урон У нашему отряду. Далее возможны несколько вариантов. Вариант А. У<ПЗО
1.Найдём ФЗО (оно равно ПЗО-У). Поделим ФЗО на ПЗ. Получим число. Это количество невредимых юнитов. Установим это количество и полностью восстановим отряд (количество равно ФКЮ). Остаток от деления запомним.
2. Если остаток от деления отличен от нуля, то запомним его. Добавим юнита в ФКЮ. Установим ему ОЗ из остатка деления ФЗО на ПЗ. Это будет ФЗЮ.
3. Вычтем Р из здоровья полученного юнита. Если Р<ФЗЮ, то установим ФЗЮ на значение ФЗЮ-Р. Если Р>ФЗЮ, то вычтем 1 из количества юнитов. Посчитаем Р-ФЗЮ. Установим здоровье юниту на ПЗ-полученное число. Если Р=ФЗЮ, то вычтем 1 из количества юнитов и установим юниту ОЗ=ПЗ.
Κακῆς ἀπ' ἀρχῆς γίγνεται τέλος κακόν.
(This post was last modified: 26.08.2009 16:33 by GhostManSD.)