- Ядро (Bogatyri.Core): контракты модулей, EventBus, GameServices, SaveRegistry - Модули: Экономика, Поселение, Армия, Глобальный мир, Боевая система, Сохранения (каждый — отдельный asmdef, видит только ядро) - App/GameModules: регистрация модулей и связь с GameProgress/Казармами - Сохранения v2 по секциям модулей, перенос старого save.json и походов из progress.json - Сброс сохранений: ISaveSystem.ResetAll, ResetState у модулей, меню Tools - EditMode-тесты модулей, документы по каждому модулю с журналом изменений Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
45 lines
2.5 KiB
Markdown
45 lines
2.5 KiB
Markdown
# Боевая система
|
||
|
||
Урон, потери, исход боя. Модуль только считает: кто победил и сколько погибло. Кто идёт в бой и что делать с итогом, решают другие модули.
|
||
|
||
- **Сборка:** `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` перенесён в ядро. Правила не изменились. |
|