Отступление быстрых юнитов и сохранение случайного состояния
Дата проверки: 26.10.2026. Область источника: Windows Conquests 1.22, исследование Antal1987, май 2014.
Что автор действительно исследовал
В Useful Patches, страница 4, сообщение №62 автор воспроизвёл бой кавалерии с гоплитом и поставил breakpoint в Combat Controller. После потери HP до одного проверяется, что у противника больше одного HP, затем сравниваются random(бонус_отступления_защитника + 50) и бонус_отступления_атакующего. В его примере оба Regular имеют бонус 50: значение 17 приводит к отходу, вручную подставленное 51 — к гибели. Автор также обнаружил сохранение состояния генератора случайных чисел в save: повторная загрузка давала то же число. В обсуждении прямо указано, что этот фрагмент ещё не раскрывает все проверки скорости/доступности отступления.
Вывод для восстановления правил
Нельзя задавать всем быстрым юнитам один неизменный процент спасения: в найденном сравнении участвуют уровни опыта обоих бойцов. Нельзя также считать пример полным алгоритмом отступления защищающегося юнита или армии.
Независимые проверки, которые нужны нам
Сначала собрать матрицу: атакующий/защитник, базовая скорость 1/2/3, остаток движения 0/дробный/полный, опыт, HP второго участника 1/2+. Затем повторить на ровной клетке, в городе, при окружении и через реку. Проверять возможность отхода и вероятность броска отдельно.
Для воспроизводимости нашей веб-версии полезно сохранять seed и состояние PRNG вместе с партией. Это проектное решение по мотивам наблюдения автора; идентичность генератору Firaxis здесь не установлена.