# Боевая система Урон, потери, исход боя. Модуль только считает: кто победил и сколько погибло. Кто идёт в бой и что делать с итогом, решают другие модули. - **Сборка:** `Bogatyri.Battle` (без Unity — тот же код будет считать бои на сервере). - **Папка:** `Assets/Scripts/Modules/Battle`. - **Зависит от:** ядра. ## Контракт `IBattleSystem` `BattleOutcome Resolve(BattleRequest request)` | `BattleRequest` | `BattleOutcome` | | --- | --- | | `Attackers` — атакующих | `Victory` — победил атакующий | | `Defenders` — защитников | `AttackerLosses`, `DefenderLosses`, `Survivors` | Регистрирует `App/GameModules`. Мир получает модуль при создании симуляции, не через реестр — так симуляцию можно запустить на сервере. ## Текущие правила - Побеждает тот, у кого больше солдат; ничья — победа защитника. - Проигравший теряет половину своего войска, победитель — столько же. Пример: 30 против 20 — победа, погибает 10 атакующих и 10 защитников, домой идут 20. ## События Нет: исход возвращается вызвавшему модулю. ## Сохранение Нет данных. ## Решения и план - **Этап 6:** формула с типами войск — кто кого контрит и как делятся потери. Сначала записать правила в документ экономики. - **Решение команды от 19.10.2026:** при голоде сильные дебаффы на боевую эффективность, включая гарнизон и походы. В `BattleRequest` для этого появятся модификаторы силы сторон; проценты — из `EconomyConfig`. ## Журнал изменений | Дата | Кто | Что | | --- | --- | --- | | 19.10.2026 | Claude | Модуль выделен: `BattleResolver` из `WorldSimulation.cs` стал `BattleSystem` с контрактом `IBattleSystem`; `BattleOutcome` перенесён в ядро. Правила не изменились. |