// ПРАВИЛА БОЯ: все числа боевой системы в одном месте. Документ: Docs/Modules/Battle.md // Без Unity. В игре значения приходят из таблицы App/BattleConfig (Assets/Resources/BattleConfig.asset), // App/GameModules переводит её в BattleRules. Без таблицы (тесты, сервер) -- значения по умолчанию ниже. // // Числа -- стартовые для тестирования (план от 27.10.2026). Изменил правила -- подними Version: // итог боя запоминает версию, по которой посчитан. public sealed class BattleRules { public int Version = 2; // 2 -- добавлены голод и усталость // Сила одного воина каждого типа. В игре -- из GameData.Troops (там же цена и время обучения). public int[] UnitPower = { 4, 5, 9, 16 }; public int CounterPercent = 25; // контра: пехота > кавалерия > лучники > пехота public int WallsPercent = 20; // защитникам за стенами public int SiegeVsWallsPercent = 50; // осадным при штурме стен public int SiegeInFieldPercent = -25; // осадным в поле и в обороне public int LoserLossPercent = 50; // потери проигравшего (не окончательная формула) public int RandomPercent = 5; // случайность каждой стороны: от -5% до +5% // Состояния (утверждено 27.10.2026): сколько силы остаётся. Применяются последовательно: 50% x 80% = 40% public int FamineStrengthPercent = 50; // голод: -50% public int FatigueStrengthPercent = 80; // усталость: -20% public static BattleRules Default => new BattleRules(); // Без случайности: для тестов, где важен точный итог public static BattleRules NoRandom => new BattleRules { RandomPercent = 0 }; }