Модернизация наземных юнитов Atlants
Продолжение 4.7–4.9 и конструктора типов из 4.8. Собственный движок исполняет одиночный приказ UPGRADE_UNIT и групповой UPGRADE_ALL; интерфейс и ИИ используют те же проверку, цену и применение. На этом этапе использовалась схема состояния 20; следующая итерация производства вводит схему 21 с точной миграцией.
Управление
Выберите отряд в своём городе. Кнопка модернизации или U открывает подтверждение с исходным типом, заменой и ценой. Shift+U показывает количество и общую цену подходящих отрядов того же исходного типа во всех собственных городах. Отмена не меняет партию. До подтверждения не списываются деньги, не снимается укрепление и не расходуется движение. Подтверждение повторно проверяется ядром.
Недоступная кнопка объясняет причину. Для массового приказа достаточно наличия подходящих отрядов данного типа; не каждый однотипный отряд обязан находиться в городе. Отряды в поле, с исчерпанным движением, без военного центра или необходимых ресурсов пропускаются. Если не хватает денег на полную сумму выбранной группы, приказ не меняет ни один отряд.
Сохранён пользовательский запрет отмены рабочего задания: занятый рабочий не модернизируется; попытка выдать приказ выбранному занятому рабочему возвращает WORKER_BUSY.
Правила и данные
Проверяется исходный флаг Special Actions «Upgrade» — байт 5, бит 0 совокупного action_flags_hex. Его можно переключать в конструкторе. Одной ссылки upgrade_to недостаточно.
В таблице Atlants цепочки содержат национальные варианты. Поиск проходит всю цепочку и выбирает самую дальнюю доступную замену, используя общую проверку производства: цивилизация, технология и ресурсы текущей сети города. Недоступные промежуточные варианты не обрывают поиск. В подготовленном российском примере воин 20 пропускает чужие варианты 21–23 и становится мечником 30. Дальнейшая доступная пехота может быть выбрана непосредственно; число промежуточных записей не увеличивает цену.
Прежний каталог девяти типов расширен до 126 наземных записей в связанных цепочках исходных типов; собственные типы и их цепочки входят в тот же каталог. Казармы 15 доступны для производства. Пригодность военного центра определяется действующим флагом подготовки наземных ветеранов, включая бесплатные здания через существующую систему предоставлений. У исходного Дворца Atlants этот флаг включён, поэтому столица проходит проверку без отдельного здания казарм. Совпадение этого обобщённого условия с Windows-исполнением ещё требует контрольного случая.
Цена: max(0, щиты_замены − щиты_исходного) × RULE.upgrade_cost_factor; у закреплённой поставки коэффициент 3. Действующий имперский флаг cheapUpgrade уменьшает цену вдвое; собственный расчёт округляет вниз. Денежная цена берётся из исходных стоимостей, без производственной скидки сложности. Отдельные крайние случаи нулевой/нечётной стоимости и скидки ИИ требуют оригинальных наблюдений.
Применение сохраняет ID, владельца, координаты и происхождение отряда. Регулярный, ветеранский и рекрутский уровни сохраняются; элитный становится ветераном. Здоровье восстанавливается до максимума нового типа. Остаток движения становится нулевым, маршрут и укрепление снимаются, случайность не расходуется. После перезагрузки получается тот же отряд и казна. Основные эффекты подтверждаются опубликованными описаниями игры; точные Windows-переходы и крайние случаи отдельно не измерялись.
ИИ выбирает обычный приказ, если отряд уже находится в подходящем городе, замена увеличивает сумму атаки, защиты и движения, хватает золота и остаётся покрытие прогнозируемого дефицита ближайшего хода. Самостоятельное планирование поездок в центры модернизации и оценка стратегической ценности замены остаются развитием 4.9.
Ресурсы
В существующий набор добавлены 12 исходных анимаций мечника и средневековой пехоты: покой, движение, атака, гибель, укрепление и победа. Подготовлены исходные цветовые ссылки NTP01/NTP09 с существующим восстановлением остальных палитр, звуковые привязки и иконка казарм. Комплект содержит 543 базовых графических ресурса и 271 WAV. Файлы поставки не изменялись; PNG/WAV размещаются в прежнем комплекте.
Кнопка использует исходную ячейку атласа приказов (5,4) с тремя состояниями. Выбор именно этой ячейки для модернизации — прототип; геометрию размещения и её назначение ещё надо сверить с экраном Windows. Не все 126 типов имеют подготовленные изображения, и добавление в каталог не исполняет все унаследованные специальные способности.
Проверка
12 новых проверок ядра покрывают национальную цепочку, дальнюю замену, цену, активную/устаревшую скидку, опыт и здоровье, движения, неизменяемость входа и PRNG, отказы, групповую атомарность, рабочего, собственный тип, флаг и решение ИИ. Общий набор содержит 479 JavaScript-проверок и 27 Python, всего 506, отдельно DOM.
Браузерный сценарий проверяет U/Shift+U, подтверждение/отмену, реальные цену и количество, применение в точности как у ядра, исходный спрайт мечника, сохранение/перезагрузку и причины отказа. Итоговый отчёт фиксирует опубликованную сборку и результаты остальных сценариев. Снимок окна.
Источники и оставшаяся работа
- Оригинальное руководство, Upgrading и горячие клавиши: U, Shift+U, город с казармами и возможность создать замену.
- Предоставленные
Conquests/conquests.biqиConquests/Text/Script.txt, секции UPGRADE, UPGRADE_ALL, NO_UNITS_TO_UPGRADE_ALL, NO_GOLD_TO_UPGRADE_ALL: поля, коэффициент и оригинальные подтверждения. - C3X, закреплённые определения: Special Actions Upgrade и флаг половинной цены. Это результаты обратного анализа внешнего проекта, а не исходный код Firaxis.
- CivFanatics, FAQ и Info Center: цена Conquests, требования ресурсов, восстановление здоровья и элитный уровень. Вторичные сведения используются с явно незавершённой проверкой оригинала.
Автоматическая замена устаревшего производства/очередей подключена следующей итерацией. Полноценные армии и лидеры, морская/воздушная модернизация, полный контент и графика, оригинальные округления, порядок фаз и точная стратегия ИИ ещё не закрыты. Весь MVP остаётся в работе. План.