fix(game): resolve battles ship by ship, matching the combat rules #76
Reference in New Issue
Block a user
Delete Branch "feature/game-combat-correctness"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Что
Этап 1 сверки Правил и движка: разрешение боя приведено в соответствие с документированной моделью (
game/rules.txt, раздел «Сражения»).Исправлены три дефекта:
rand >= pуничтожал цель с вероятностью1-p; почти верное попадание почти всегда промахивалось. Теперьrand < p.Armamentвыстрелов за раунд независимо от числа кораблей, и размер флота не влиял на атаку.SingleBattleтеперь по-корабельный: каждый живой корабль стреляет раз в раунд в случайном порядке по всем группам, каждое орудие — по случайному вражескому кораблю (с весом по числу кораблей группы).Number^(1/3).FilterBattleOpponentsтеперь считает массу по одному кораблю.Заодно исправлена инициализация карты противников в
ProduceBattles, из-за которой у атакующего оставался только последний противник.Документация
Без изменений: раздел «Сражения» уже описывает эту модель; форма
BattleReportне менялась.Тесты
go test ./game/...зелёный. Новые:TestDestructionRollDirection,TestSingleBattleOneSidedWipe; обновлено ожидание массы-по-кораблю вTestFilterBattleOpponents.