Перед тем, как приступить к бою перед рубкой, попробуем слегка поизвра...
X3 Terran Conflict / X3 Земной конфликт
 
X3 Terran conflict  
 

На сайте онлайн (человек): 344



 



Перед тем, как приступить к бою перед рубкой, попробуем слегка поизвра...

Terran Conflict (X3TC) / Форум / Форум по игре X3 Terran Conflict (X3TC) / X3 Земной конфликт / Абордаж. Продолжение.

Абордаж. Продолжение.
(http://x3tc.net/x3_forum/?tid=1039)
Автор: eliseeff
(04.11.2013 01:59:17)

Перед тем, как приступить к бою перед рубкой, попробуем слегка поизвращаться с расчетом пороговых значений. Например, при известных данных DefenceLevel (включая расовый модификатор и прочие примочки), какой суммарный боевой навык нашего десанта является минимально необходимым для возможного прохода палубы без потерь, а какой - гарантирует нам отсутствие потерь на палубе с вероятностью 98% (два процента все равно будут с потерями, это гарантировано алгоритмом).

Что ж, попробуем. У нас есть рассчитанный уровень DefenceLevel, считаем его пределы:

DefenceLevelmax = DefenceLevel + [0.1 * DefenceLevel] - 1

DefenceLevelmin = DefenceLevel - [0.1 * DefenceLevel]



Начнем с минимально достаточного уровня для прохода без потерь. Этот уровень будет в первую очередь зависеть от класса корабля.

Для М6 вероятность нулевых потерь начинается с появления вероятности выпадения Шанс6, для М1 / М2 / TL и ТМ - Шанс8, а для М7 - только в случае Шанс9 (см. таблицы выше). Когда такие шансы перестают быть нулевыми? Очевидно, когда параметр MIN (равный (DefenceLevelmin - AttackLevelmax)) хотя бы на единицу меньше X, где Х для Шанс6 равен -40, для Шанс8 равен -400, а для Шанс9 равен -550.

При каких условиях мы этого достигаем?

(DefenceLevelmin - AttackLevelmax) = Х - 1

AttackLevelmax = DefenceLevelmin - Х + 1

Но нам нужен сам уровень атаки, при котором мы получим нужный нам AttackLevelmax.

И вот тут зарыта собака. Нам надо отнять не 10%. Отнять надо 1/11. Почему? А вот почему:

AttackLevelmax = AttackLevel + AttackLevel / 10

AttackLevelmax = 11 AttackLevel / 10

AttackLevel = 10 * AttackLevelmax / 11 = AttackLevelmax - AttackLevelmax / 11

Поэтому:


AttackLevel(min needed) = (DefenceLevelmin + X + 1) - (DefenceLevelmin + X + 1) / 11,

где Х = 40 для М6, Х = 400 для М1 / М2 / TL и ТМ и Х = 550 для М7. (Минусы я убрал для упрощения, изменив знак перед Х.)

Здесь зарыта еще одна собака. Где? А вот она: AttackLevelmax = AttackLevel + [AttackLevel / 10] - 1


Так что в окончательную формулу надо добавить эту единичку, которая вычитается при расчете AttackLevelmax:


 
AttackLevel(min needed) = DefenceLevelmin + X + 2 - [(DefenceLevelmin + X + 2) / 11]

где Х = 40 для М6, Х = 400 для М1 / М2 / TL и ТМ и Х = 550 для М7.
 





С уровнем, достаточным для гарантированного на 98% прохождения палубы без потерь, дело обстоит примерно аналогично, только на этот раз нам необходимо уже, чтобы минимальный уровень атаки гарантированно превосходил максимальный уровень защиты на нужную нам величину. Конкретно - на 400 для М6 и на 550 для всех остальных классов кораблей. Не буду тянуть резину. Все просто.

 
AttackLevel(guarranteed 98%) = DefenceLevelmax + X + [(DefenceLevelmax + X) / 9],

где Х = 400 для М6 и Х = 550 для всех остальных.
 






Продолжаем тему. Теперь рассмотрим механику. Поэтому первым делом высчитываем HullDefence в зависимости от расы, класса и наличия поляризатора, а потом - его мин. и макс. значения.

Какой суммарный навык двух механиков достаточен для гарантированной прорезки корпуса?

Для этого должно соблюдаться условие: HullAttackmin >= HullDefencemax

Вот и считаем:

 
HullAttack(guarranteed) = HullDefencemax + [HullDefencemax / 9]

Если [Используется аб. капсула] = TRUE, то HullAttack(guarranteed) = HullAttack(guarranteed) / 2

Если (HullAttack(guarranteed) - [HullAttack(guarranteed)]) > 0, то HullAttack(guarranteed) = [HullAttack(guarranteed)] +1
 




Теперь считаем минимальный уровень, с которого прорезка вообще возможна. Данный параметр на практике нужен не столько для того, чтобы пытаться с ним прорезаться, сколько для того, чтобы знать, что ниже этого уровня прорезаться невозможно в принципе. Здесь пляшем уже от минимального уровня защиты.


 
HullAttack(min needed) = HullDefencemin + 1 - [(HullDefencemin + 1) / 11]

Если [Используется аб. капсула] = TRUE, то HullAttack(min needed) = HullAttack(min needed) / 2

Если (HullAttack(min needed) - [HullAttack(min needed)]) > 0, то HullAttack(min needed) = [HullAttack(min needed)] +1
 





Переходим к взлому компьютера. Здесь не может быть ни гарантированной удачи, ни гарантированного провала. Таков уж алгоритм. Мы можем посчитать только уровни, достаточные для максимального и минимального шанса удачи. А в остальном принцип тот же, только в этот раз совсем все просто.

Считаем DefenceLevel(min) и DefenceLevel(max) для данного корабля с учетом всех примочек.

 
AttackLevel(guarranteed 95%) = DefenceLevel(max)

AttackLevel(min needed for > 2%) = DefenceLevel(min)
 

дерево темы → Абордаж. Продолжение. Абордаж. Продолжение. »
Список игр