Взято тут:
Закончил анализ кода "боевой" процедуры абордажа.
Для версии 2.5 такой анализ частично делал dead0k, алгоритмических отличий в этой части в версии 3.0 нет, разница только в параметрах кораблей.
Первоисточник, он же источник вдохновения -
Анализ кода в версии 3.0 Cкрытый текст (кликните здесь для просмотра)
Сирокко из рассмотрения исключен, у него нестандартное количество десанта, но формулы те же самые, желающие могут пересчитать.
Константы влияющие на процесс боя: показатель защиты, количество палуб, максимальное количество десанта.
M1
M2
M7
TL
TM
M6
50
45
30
30
20
10
- показатель защиты
5
5
4
5
2
3
- количество палуб
20
20
20
20
5
5
- максимальное количество десанта
Далее для каждой палубы:
Рассчитываются потери среди нападавших. Проверки, которые никогда не сработают на оригинальной игре 3.0 из рассмотрения выкинуты.
AttackCasualties = (GetMaxMarines() + 1) / GetDeckNumber() + SE_Random(3) - 1
M1 -
3
...
5
M2 -
3
...
5
M7 -
4
...
6
TL -
3
...
5
TM -
2
...
4
M6 -
1
...
3
Считаем уровень защиты.
Для ксенонов - DefenceLevel = <показатель зашиты> * 2 + 85 * GetMaxMarines() - 80 * <количество зачищенных палуб>.
Вражеские маринки и защитные лазеры на ксенонских кораблях не учитываются.
Для землян DefenceLevel = <показатель зашиты> * 4 + <суммарный боевой уровень защищающихся>, если установлены лазеры, то еще + 200.
Для всех остальных DefenceLevel = <показатель зашиты> + <суммарный боевой уровень защищающихся>, если установлены лазеры, то еще + 200.
Результаты, без учета обороняющихся маринок:
M1
M2
M7
TL
TM
M6
50
45
30
30
20
10
- без лазеров
250
245
230
230
220
210
- с лазерами
200
180
120
120
40
- Земляне, без лазеров
400
380
320
320
240
- Земляне, с лазерами
1800
1790
1760
445
- Ксенон
Считаем уровень атаки. Это суммарный боевой уровень живых маринок.
Число абордажей в расчетах не участвует. Наличие всяческой мишуры (ручного оружия) в трюме так же ни на что не влияет.
Кидаем кубики. DefenceLevel и AttackLevel меняются +-10%.
Совсем +10% выпасть не может, максимально возможный вариант +10% -1.
-10% выпасть может.
Далее корректируется AttackCasualties(AC), в зависимости от значения DefenceLevel - AttackLevel.
Если DefenceLevel - AttackLevel меньше или равно 40, то с вероятностью 2% AttackCasualties будет увеличена на 1, в остальных случаях результат такой:
550
<
DefenceLevel - AttackLevel
AC * 3
400
<
DefenceLevel - AttackLevel
<=
550
AC * 2
150
<
DefenceLevel - AttackLevel
<=
400
AC + (AC + 1) / 2
40
<
DefenceLevel - AttackLevel
<=
150
AC + 1
-40
<=
DefenceLevel - AttackLevel
<=
40
AC
-150
<=
DefenceLevel - AttackLevel
<
-40
AC - 1
-400
<=
DefenceLevel - AttackLevel
<
-150
AC - (AC + 1) / 2
-550
<=
DefenceLevel - AttackLevel
<
-400
AC - 3
DefenceLevel - AttackLevel
<
-550
0
Если AttackCasualties больше 0, то идет игра "О счастливчик".
Каждый раунд разыгрывается только среди живых, количество раундов - AttackCasualties.
Шансы каждого десантника 10 - (GetMarineFighting() - 1) / 10.
Все шансы складываются в общую кучу и выбирается один.
"Счастливчик" выбывает.
Рассчитываются потери среди обороняющихся, количество рассчитывается по тем же формулам, но используется AttackLevel - DefenceLevel, что логично.
Шансы на выбывание для обороняющихся равны, их боевой уровень не учитывается.
Процесс повторяется снова и снова, пока не пройдены все палубы.
После того, как все палубы защищены, идет последняя перестрелка у входа в рубку.
Заново считаем DefenceLevel.
Для ксенонов формула другая DefenceLevel = <показатель зашиты> * 2 + 85 * GetMaxMarines() - 50 * <количество палуб>. M1 - 1550, M2 - 1540, M7 - 1560, M6 - 295.
Для всех остальных расчет по прежней формуле.
Заново считаем AttackLevel, формула старая.
Кидаем кубики, на этот раз DefenceLevel и AttackLevel меняются +-15%.
Максимально возможный вариант +15% -1, минимально возможный -15%.
Если DefenceLevel больше или равен AttackLevel, то абордаж провален и все маринки бесславно погибают.
Если AttackLevel больше DefenceLevel, то все оставшиеся на корабле вражеские десантники (если, конечно остались), дружно одевают скафандры и выпрыгивают в космос, а наши бравые маринки начинают ломать компьютер.
Об инженерах:
На каждой палубе корпус ломается на 60% * (100 - <средний уровень инженерной подготовки>) / 100 / GetDeckNumber()
На каждой палубе корпус ломается в 4 приема, первые три раза - случайно, а четвертый сколько осталось до заранее рассчитанной величины.
После каждого повреждения корпуса проверка - если осталось меньше 5%, то делаем ноги.
Больше инженерия ни на что не влияет. Cохранность оружия от нее не зависит, при захвате малых и больших кораблей вызывается одна и та же функция. Маринки в ней никак не учитываются, только тупой рандом (лазеры, шиты, ракеты - 10% сохранности, кионки - 50%, остальной груз не смотрел).
Результаты анализа
Выстелить дорогу к рубке трупами маринок не знающих, с какой стороны у ружья приклад, не получится. Если после зачистки последней палубы не наберется нужное количество суммарного боевого опыта - умрут все.
Базовые значения для кораблей без десантников, с поправкой на рандом для прохода к рубке надо набрать от 74% до 135%.
M1
M2
M7
TL
TM
M6
50
45
30
30
20
10
- без лазеров
250
245
230
230
220
210
- с лазерами
200
180
120
120
40
- Земляне, без лазеров
400
380
320
320
240
- Земляне, с лазерами
1550
1540
1560
295
- Ксенон
Таблица суммарного боевого уровня, необходимая для уверенного (98%) прохождения палубы без потерь.
M1
M2
M7
TL
TM
M6
673
667
648
648
469
457
- без лазеров
917
911
893
893
714
702
- с лазерами
856
832
758
758
494
- Земляне, без лазеров
1100
1076
1003
1003
738
- Земляне, с лазерами
Таблица суммарного боевого уровня, начиная с которого возможно прохождение палубы без потерь. На практике этими значениями обольщатся не надо - вероятность прохождения палубы без потерь для них составляет доли процента. Таблица приведена, в основном, для оценки, что можно захватить с M6.
M1
M2
M7
TL
TM
M6
405
401
525
389
380
45
- без лазеров
569
565
689
552
554
209
- с лазерами
528
511
599
462
70
- Земляне, без лазеров
691
675
762
626
233
- Земляне, с лазерами
1839
1830
1942
402
- Ксенон
Результаты, мягко говоря, озадачивают. Из них следует, что 5 полностью прокаченных маринок имеют шансы взять корабли содружества без потерь (при условии, что там нет лазеров, обороняющихся и это не M7), а так же попытать счастья на любых M6.
Экспериментально эти результаты пока не проверял, займусь, когда будет время.
Полезные ссылки по теме:
Прорезка корпуса by vivere. В 3.0 без изменений.
https://x3tc.net/x3_forum/message.php?mid=94324
Бой на палубах by dead0k (2.5), без учета перестрелки у рубки В 3.0 изменились параметры кораблей.
Взлом компьютера by vivere. В 3.0 без изменений.
https://x3tc.net/x3_forum/message.php?mid=95304