.:: LMOracle 3.4 ::.:: Что нового? ::1) Добавлен почти полноценный светофор морали и удачи для версии HoMM I 1.1 RU;
2) Добавлен монитор урона для версии HoMM I 1.1 RU;
3) Исправлены недочёты.
:: Инструкция ::1) Начните бой;
2) Задайте значения морали и удачи в меню "Settings" (Morale, Luck, Enemy's Luck);
Примечание: этот пункт очень важен, так как из-за неправильного значения удачи урон будет рассчитываться неверно.
3) Выберите режим "Without retaliation" (Без ответки), "With retaliation" (С ответкой) или "Without attack" (Без атаки);
4) Задайте дополнительное условие (оно одно для HoMM I), если нужно: "Double attack" (эльфы, паладины и т.д.);
5а) Режим "Without retaliation":
Сделайте двойной клик на надписи "Defender" и в появившееся окошечко введите защиту атакуемого отряда (не ошибётесь куда). Если атакующий отряд является стрелковым и блокирован, поставьте флажок "Blocked" (половинит урон для стрелков, игнорируется всеми остальными).
5б) Режим "With retaliation":
Здесь нужно ввести следующие параметры (сверху вниз, слева направо):
1) Точное количество воинов в атакуемом отряде, которые СМОГУТ ответить после (первого) удара атакующего (в определении этого числа поможет монитор урона, см. ниже);
2) Минимальный урон воина в атакуемом отряде;
3) Максимальный урон воина в атакуемом отряде;
4) [Уже задано] Атака воинов в Вашем текущем отряде;
5) Защита воинов в атакуемом отряде.
Примечания (5б):
1) Параметры атаки и защиты следует вводить с учётом всех бонусов (числа в скобках в окне информации);
2) Флажок "Blocked" в этом режиме установлен из-за того, что если стрелки бьют с ответкой, значит, они блокированы, а остальные юниты игнорируют этот флаг.
Программа сигнализирует зелёным цветом перед ходом любого отряда о возможности выпадения морали и/или удачи при заданных условиях.
:: Монитор урона ::Введение.
Оказывается формула k = (1 + 0.1*sign(A1-D2))^|A1-D2| не является точной, правда, довольно хорошо аппроксимирует коэффициент урона в некоторых пределах (см. ниже).
На самом деле игра рассчитывает урон следующим образом:
1) Вычисляется сумма:
base_dmg = sum[i = 1, n] (int_rand(min_dmg, max_dmg)).
Пример:
Пусть n = 10 волков (min_dmg = 3, max_dmg = 5, A1 = 6, D1 = 2) атакуют n'=50 фей (min_dmg' = 1, max_dmg' = 2, A2 = 4, D2 = 2), тогда упомянутая сумма будет выглядеть примерно так:
base_dmg = 4 + 4 + 3 + 5 + 3 + 4 + 3 + 3 + 3 + 5 = 37 (что соответствует 3,7 * 10 в классической теории, но число 3,7 нигде не генерируется, здесь приведено лишь для сравнения);
2) Полученная сумма умножается на коэффициент k (первое число - разность атаки нападающего и защиты атакуемого (A1-D2), второе есть коэффициент k):
0: 1.00
1: 1.10; 2: 1.21; 3: 1.33; 4: 1.46; 5: 1.61; 6: 1.77; 7: 1.95; 8: 2.14; 9: 2.36; 10: 2.59,
11: 2.85; 12: 3.14; 13: 3.45; 14: 3.80; 15: 4.18, 16: 4.59; 17 и выше(!): 5.00
-1: 0.90; -2: 0.81; -3: 0.73; -4: 0.66; -5: 0.59; -6: 0.53; -7: 0.48; -8: 0.43; -9: 0.39; -10: 0.35;
-11: 0.31; -12: 0.28; -13: 0.25; -14: 0.23; -15: 0.21; -16 и ниже(!): 0.20 = 1/5
Таким образом, максимальный урон наблюдается при разности A1-D2 >= 17 и в пять раз превышает базовый; минимальный - при разности A1-D2 <= -16 и в пять раз меньше базового.
Приведённые цифры хранятся в исполняемом файле игры и представляют собой округлённые до сотых значения выражения (1 + 0.1*sign(A1-D2))^|A1-D2| при различной разности A1-D2. Степень не вычисляется непосредственно!
Вернёмся к примеру. almost_right_dmg = k * base_dmg = 1.46 * 37 = 54.02
Эта величина подвергается либо делению на два (блокированные стрелки и т.п.), либо умножению на два (удача).
(almost_right_dmg:=almost_right_dmg/2; almost_right_dmg:=almost_right_dmg*2)
И, финальный штрих, right_dmg = floor(almost_right_dmg + 0.5)
Для нашего случая (пусть, например, волки бьют с удачей), right_dmg = floor(54.02 * 2 + 0.5) = floor(108,54) = 108.
:: Монитор урона ::Если все параметры заданы верно, в статусной строке Вы увидите точный урон. Для стрелков с двойной атакой можно увидеть урон при первом и втором выстрелах: при снятом флажке "Double attack" - урон при первом выстреле, иначе - при втором).
:: Ограничения ::Мораль и урон в общем случае будут предсказано неверно, если:
а) Режим "With retaliation" + "Double attack": ответка врага убивает хотя бы одного воина в отряде атакующего (а также вариации на эту тему c двойной ответкой на двойную атаку);
б) Вы выбрали режим "Double attack", а Ваш отряд убил врага первым ударом (перед такими атаками снимайте флажок "Double attack").
Пожалуйста, сообщайте о случаях неправильного предсказания морали или урона!P.S. Отряды за крепостными стенами получают бонус к защите +4 для стрелковых атак! Учтите это. Бонус исчезает, если отряд пересекает линию стен или находится на ней, а также, если Ваши стрелки находятся на одной горизонтали с отрядом противника и стена на этой горизонтали полностью разрушена.
Скачать