Руководство «Мораль (Боевой Дух)». (версия 0.1) Автор: alexrom66
Характеристика «мораль». Характеристика «мораль» есть у каждого стека существ. Значение характеристики рассчитывается отдельно для каждого стека, т.е. у стеков в одной армии может быть разное значение «морали».
Например, значение «морали» = +4 дает 40% шанс «выпадения высокой морали».
«Выпадение высокой морали» может произойти сразу после хода стека. В этом случае стек смещается в середину ATB-шкалы (в обычном случае стек смещается в конец шкалы). Т.е. стек получит право следующего хода в 2 раза быстрее.
«Выпадение низкой морали» может произойти непосредственно перед ходом стека. В этом случае стек пропускает ход и смещается в середину ATB-шкалы. Т.е., следующий ход стека откладывается на половину обычного времени хода.
Тип фракции «нейтралы» является «союзником» любой фракции – «доброй» или «злой». Например, стек фениксов будет «союзником» стека из Haven и «союзником» стека из Inferno.
Вычисление характеристики стека «мораль». Мораль стека зависит от: 1) значения характеристики героя «Мораль» (это значение зависит от скилла Leadership, артефактов, временных бонусов от построек на карте и т.д.); 2) отношений между фракцией стека и фракцией героя; 3) отношений между фракцией стека и фракциями других стеков в армии героя; 4) абилок существ из стека (например, мораль не влияет на существ с абилкой Undead – всех существ замка Necropolis).
Мораль стека НЕ зависит от типа местности, на которой проходит сражение.
Модификаторы «морали» из первых 3-х пунктов приведенного выше списка складываются между собой для получения итогового значения «морали» стека. Но на это значение может повлиять абилки существ из стека – 4-й пункт списка.
Зависимость «морали» стека от фракции героя. «Мораль» стека зависит от отношения фракции стека к фракции героя:
Модификаторы, полученные из этого списка, применяются ко всем стекам в армии героя. «Прочие варианты» сводятся к тому, что в армии есть стеки из, как минимум, 3 фракций, причем среди них есть пара врагов.
Всё это можно представить в виде таблицы.
«Союзники 1» и «Союзники 2» являются разными фракциями. Так же как и «Враги 1» и «Враги 2».
Если в армии находятся стеки только из двух фракций, то используется только первая строка таблицы. Если в армии находятся стеки из 3-х и более фракций – используется вся таблица.
Таким образом вычисляется «мораль» для каждого из стеков в армии – с учетом «своих», «союзников» и «врагов» этого стека.
Зависимость «морали» стека от его абилок. Следующие абилки существ влияют на «мораль».
Undead (все существа из Necropolis и Death Knight): значение «морали» всегда = 0.
Mechanical (все боевые машины, Iron Golem/Steel Golem): значение «морали» = 0. Исключение – если у героя есть абилка Artificial Glory – в этом случае «мораль» может быть >0 (если «мораль» Пример вычисления морали армии героя. Условие. Герой из Haven со скиллом Expert Leadership (+3 «мораль»). Армия героя: стек Archangels (Haven); стек Devils (Inferno); стек Nightmares (Inferno); стек Unicorns (Sylvan).
Расчет. Мораль рассчитывается отдельно для каждого из стеков:
Есть в Героях такой файл, вроде heroes.hlp Вот там вся подобная бня и написана. Также вызывается при нажатии «F1» при запущенных героях.
Each army has a morale rating which acts as a bonus to the individual morale of its troops. Troops in an army with positive morale have a chance for a second action during their action phase. Troops with
negative morale have a chance of freezing each round. The morale rating for an army is normally zero but is affected thusly:
-1 if undead creatures are mixed with living creatures
+1 if all creatures are of the same town type (except Necropolis)
-1 for each town type mixed beyond two town types
Undead creatures and elementals have a morale of zero, independent of their army’s morale rating. Various creatures, spells, hero skills, town buildings, adventure sites, and artifacts can permanently, or temporarily affect morale.
Troop Morale Effect on Troop
+3 12.5% chance of acting again +2 8.3% chance of acting again +1 4.2% chance of acting again
0 Nothing -1 4.2% chance of freezing -2 8.3% chance of freezing -3 12.5% chance of freezing
Luck Each army has a luck rating. Troops in armies with good luck (a positive luck rating) have a chance to inflict double damage when they strike. Various spells, hero skills, town buildings, adventure sites, and artifacts can permanently or temporarily affect the luck of armies or individual creatures.
«…что сейчас будет мораль» — не совсем верно, верно — «что именно сейчас может быть мораль»; «…она не увеличивает шанс морали», но «она увеличивает шанс найти мораль в нужном месте».
«Мораль и удача при ППБ никогда не выпадут монстру, если алгоритм при определенных ходах человека строго регламентирован. Если его изменить, то можно изменить и выпадение, что вполне логично и закономерно»
Основные моменты по морали, удачи и урону приведены в соответствующих разделах. В данном разделе, прежде всего, будут отражены алгоритмы, а так же условия и вероятности их выпадения во время той или иной битвы в Героях Меча и Магии I.
13.1Мораль монстров во время боя
Отряд с отрицательной моралью с некоторой вероятностью может пропустить свой ход. Отряд с положительной моралью — наоборот: походить дважды. Отряд с моралью 0 не пропускает ходы, но и не может совершить более одного действия за один раунд.
13.1.1 Отрицательная мораль
В каждом раунде отряды с отрицательной моралью непосредственно перед их ходом проходят проверку боевого духа:
В дальнейшем, говоря о вероятностях, будем полагать, что генератор псевдослучайных чисел игры Герои Меча и Магии I является «идеальным равномерным», т.е. имеет бесконечный период(последовательность псевдослучайных чисел не имеет цикла) и генерирует любые числа из заданного диапазона равновероятно. На самом деле, любой ГПСЧ не идеален, поэтому приведённые здесь вероятности следует принимать как ориентировочные.
Отряд пропускает ход, если выполняется условие (1). Для нашего случая условие (1) будет выглядеть следующим образом:
Левая часть неравенства данного может принимать значения: 1, 2, 3, …, 12, но неравенство выполняется только при трёх значениях левой части: 1, 2 и 3 (1 mod(R, 12)
Стоит также отметить, что существует 25% шанс, несмотря на обычную вероятность, избежать отрицательной морали. Так вот, этот шанс есть только у компьютерных игроков. Итого, вероятность выпадения отрицательной морали у компьютерных игроков составляет:
что является ещё одним подтверждением, что комп — читер.
Примечание — Отряд, начинающий битву, никогда не пропустит свой ход из-за отрицательной морали, какой бы плохой она ни была!
13.1.2 Положительная мораль
Отряды с положительной моралью проходят проверку боевого духа непосредственно после их хода:
mod(R, 24) + 1 или mod(R, 24)
Если условие (2) выполняется, отряд получает возможность сделать дополнительный ход. Остатков от деления на 24 в два раза больше, чем остатков от деления на 12, поэтому вероятность выпадения положительной морали ровно в два раза меньше вероятности выпадения отрицательной (при равных значениях |m|) и равна:
Например, при морали m = +3 у отряда в каждом раунде есть шанс P(+3) = 3/24 = 1/8 = 12,5% походить дважды.
13.1.3 Таблицы вероятностей (округление до десятых)
Вероятности пропустить ход (походить дважды) P(m) и P'(m) для игрока-человека и компьютерного игрока соответственно при заданной морали m:
Вероятности P1/5(m) и P’1/5(m) того, что хотя бы один отряд из пяти пропустит ход (походит дважды) за один раунд при заданной морали m:
Примечание — P1/5(m) = 1 — (1 — P(m))5.
13.2Удача монстров во время боя
Может принимать семь значений:
Отряд с положительной удачей может рассчитывать на возможность нанести двойной урон при атаке и ответном ударе.
13.2.1 Положительная удача
Условие выпадения положительной удачи:
mod(R, 12) + 1 или mod(R, 12)
Вероятность нанести двойной урон равна P(L) = L/12, где L = 0, 1, 2 или 3. Отсюда видно, что удача выпадает в два раза чаще, чем положительная мораль при равных значениях m и L (m = L).
13.2.2 Отрицательная удача
Примечание — в TE вероятность выпадения неудачи равна P(L) = –L/12, т.е. неудача будет выпадать даже при L = –1 (аналогично удаче).
Посмотреть на игру с отрицательной удачей на ориганальной версии игры (либо на Буке), можно скачав сейв-задачу, в которой необходимо освободить Агара от невезения, за наименьшее количество дней.
13.3 Подробнее о числе R
R — это псевдослучайное число, которое используется для нужд алгоритмов, отвечающих за «случайные» события в игре (в том числе и за выпадение морали и удачи). Данное число порождает последовательность псевдослучайных чисел по известному алгоритму, поэтому достаточно знать текущее (или начальное) значение R, чтобы можно было вычислить любое другое. Безусловно, существуют алгоритмы, позволяющие получить следующее в последовательности значение R по заданному значению R0. Для вычисления нового значения R, кроме арифметических операций, используются также и логические, поэтому предсказание морали и удачи без использования специальных программ — неблагодарное занятие.
Примечание — Узнать значение R без специальных утилит или программ невозможно.
13.4Полностью повторяемые битвы (ППБ)
ППБ — это битва, которую можно повторить точь-в-точь по описанию, при этом действия противника, уроны, наносимые отрядами, а также события, такие как мораль, удача и выпадение спецабилок, повторяются при одинаковых действиях игрока от загрузки к загрузке одной и той же битвы и поэтому становятся полностью предсказуемыми. Формирование ППБ возможно только со второй битвы любой сессии, при условии получения одного или нескольких уровней одним из героев противостоящих сторон.
Объясняется это просто: игра фиксирует R, если любой герой получает уровень (уровни) после окончания битвы. Причем не важно, как закончилась битва, победой, поражением, либо сбеганием одной из сторон.
Введем дополнительные обозначения не приведенные ранее:
Сессия — промежуток времени между загрузкой исполняемого файла героев (heroes.exe) и выходом из игры в операционную систему;
Карта битвы — это совокупность последовательности действий отрядов и героев противостоящих сторон и сопутствующих этим действиям событий и величин.
Выпадающие битвы (ВБ) — битвы, не попадающие под определение ППБ;
Вырожденная ППБ — битва, обладающая свойствами ППБ (повторяемость уронов, событий и т.п. при одних и тех же действиях игрока), но появляющаяся только единожды между предыдущей ВБ и последующими отличными от неё ППБ. Свойства вырожденной ППБ: — Вырожденная ППБ может появиться только после ВБ, закончившейся моралью; — Вырожденная ППБ не повторяется от попытки к попытке, но обладает удивительным свойством полностью повторяться после любой ВБ, закончившейся моралью! Разумеется, аббревиатура требует соблюдения всех условий выпадения ППБ; — Сама же вырожденная ППБ не может закончиться моралью, т.к. иначе она превратится в обычную ППБ.
Попытка — это промежуток времени между двумя последовательными загрузками одного и того же сейва в течение одной сессии;
Игровой раунд — это отрезок битвы, в течение которого каждый отряд противостоящих сторон может совершить какое-либо действие (перемещение из одной точки игровой арены в другую, выстрел и т.п.) единожды или дважды (при выпадении положительной морали). Продолжительность битвы может быть измерена в игровых раундах.
Примечание — парализованные, ослепленные, а также не прошедшие проверку боевого духа отряды автоматически пропускают ход.
13.4.1 Выпадающие битвы (ВБ).
ВБ — это битва, проводимая в течение первой попытки любой сессии (может быть какой угодно с точки зрения выпадения морали, удачи и урона), а также любая другая битва, не попадающая под условия выпадения ППБ.
Верхняя граница количества возможных карт ВБ равна 1000. Т.е. в начале битвы игра генерирует число от 1 до 1000, которое используется в качестве «затравки» («семени») для генерации уронов и событий, таких, например, как выпадения морали и удачи. В действительности же, на практике, таких карт намного меньше.
Помимо этого, выпадающие битвы будут также формироваться в том случае, если герои под управлением игрока либо компа не получают один или несколько уровней во время битвы либо после её окончания.
Таким образом, при ВБ проконтролировать выпадения морали, удачи и урона невозможно или, другими словами, эти составляющие при таких битвах могут выпасть кому угодно и когда угодно! В сложных же битвах сделать описание ВБ крайне затруднительно.
13.4.2 Условия выпадения ППБ
Начиная со второй попытки любой сессии можно получить ППБ, которая будет формироваться постоянно от попытки к попытке, если в предыдущей битве:
1) Герой под управлением игрока после окончания боя набирает достаточное количество Exp (опыта) для перехода на следующий уровень. Распространяется на все бои, т.е. с героями врага, при осаде замка и нейтралами.
2) Вражеский герой при битве с героем под управлением игрока после окончания боя, набирает достаточное количество Exp (опыта), убивая достаточное количество монстров для перехода на следующий уровень.
При любой битве, и при достаточном количестве Exp (опыта) для перехода на следующий уровень, возможны случаи, когда могут сформироваться две различные ППБ, которые будут чередоваться в строгой последовательности друг за другом!
т.е: — начинающий битву отряд не будет проходить проверку морали в первом раунде (т.е. не получит возможность походить дважды в этом раунде), если предыдущая битва закончилась гибелью одного отряда после морали другого;
— если выпадающая битва (первая битва сессии) закончилась гибелью одного отряда после морали другого, то вторая битва НЕ будет являться ППБ (исключение: если и вторая битва закончится «на моральном ходу», то она будет являться ППБ и притом единственной).
— вторая ППБ появится только если первая закончилась «на моральном ходу» и, кроме того, третья битва закончилась не «на моральном ходу».
Примечания: Если и третья битва закончится моралью, то ППБ будет всего одна, а предыдущая вторая окажется «вырожденной» ппб, т.е. повторяться не будет; От перестановки мест монстров под управлением игрока в начале боя, ППБ не меняется!
13.4.2.1 Возможные варианты выпадения ППБ
Любой битве можно поставить в соответствие два числа: значение R и состояние флага проверки морали F (0 или 1) в начале битвы. Пара чисел (R, F) однозначно определяет битву.
Пусть нас интересуют две битвы (R1, F1) и (R2, F2). Очевидно, что если R1 = R2, F1 = F2, то рассматриваемые битвы являются эквивалентными, в противном случае — нет. В частности, все ппб одного вида эквивалентны.
Как получаются ППБ?
Первая битва любой сессии является случайной (ВБ): (R, 1), где R — случайное число, а F = 1, т.е. начинающий битву отряд будет проходить проверку морали (разумеется, если мораль этого отряда положительна).
Если после битвы герой получает один или несколько уровней, значение R фиксируется R = R[fix]. Т.о. какой бы ни была битва в сессии, в случае получения героем одного или нескольких уровней после неё, следующая обязательно будет иметь вид (R[fix], 0) или (R[fix], 1). Где F = 1, если предыдущая битва завершилась обычно, т.е. последний походивший отряд не получил мораль, и F = 0, если получил.
Отсюда и следует максимальное число ППБ равное ДВУМ: (R[fix], 0), (R[fix], 1).
Возможные варианты ППБ:
1. Первая и вторая битвы сессии закончились обычно: вб : (R, 1) — заканчивается обычно: F = 1; ппб : (R[fix], 1) — заканчивается обычно: F = 1; ппб : (R[fix], 1) — заканчивается обычно: F = 1; и т.д.
2. Первая и третья битвы сессии закончились обычно, вторая — моралью: вб : (R, 1) — заканчивается обычно: F = 1; ппб1+ : (R[fix], 1) — заканчивается моралью: F = 0; ппб2 : (R[fix], 0) — заканчивается обычно: F = 1; ппб1+ : (R[fix], 1) — заканчивается моралью: F = 0; ппб2 : (R[fix], 0) — заканчивается обычно: F = 1; и т.д.
3. Первая битва закончилась моралью, вторая и третья — обычно: вб+ : (R, 1) — заканчивается моралью: F = 0; выр. ппб : (R[fix], 0) — заканчивается обычно: F = 1; ппб : (R[fix], 1) — заканчивается обычно: F = 1; ппб : (R[fix], 1) — заканчивается обычно: F = 1; и т.д.
4. Первая и третья битвы закончились моралью, вторая — обычно: вб+ : (R, 1) — заканчивается моралью: F = 0; ппб1 : (R[fix], 0) — заканчивается обычно: F = 1; ппб2+ : (R[fix], 1) — заканчивается моралью: F = 0; ппб1 : (R[fix], 0) — заканчивается обычно: F = 1; ппб2+ : (R[fix], 1) — заканчивается моралью: F = 0; и т.д.
5. Первая и вторая битвы закончились моралью: вб+ : (R, 1) — заканчивается моралью: F = 0; ппб+ : (R[fix], 0) — заканчивается моралью: F = 0; ппб+ : (R[fix], 0) — заканчивается моралью: F = 0; и т.д.
Примечание — Варианты 3, 4 и 5 маловероятны из-за низкой вероятности получить мораль последним ходом в выпадающей битве.
13.5Наносимый урон в бою
Урон, наносимый отрядами, может помочь отличить ВБ от ППБ, а также одну ППБ от другой, буквально за несколько первых ходов, благодаря тому, что уроны при ППБ повторяются. Ещё одно свойство ППБ заключается в повторении выпадения морали, удачи и спецабилок.
Поэтому эти события при ППБ можно предсказывать по нанесённому урону. Например, феи нанесли x hp урона, стрелковая башня — y hp. Тогда с высокой долей вероятности можно узнать, какая перед нами битва, только по этой паре уронов (x, y), а также утверждать о будущем выпадении морали, удачи и спецабилок.
Нападение на вражеского героя, с победой и получением 8 уровней.
1 раунд Расмонт колдует «Замедление» на паладинов; Друиды сносят 12 паладинов; Джинны пропускают; Фениксы пропускают; Эльфы сносят 3 + 7 паладинов, с удачей на 2 выстреле; Кентавры убивают 5 паладинов; Эктор колдует «ослепление» на фениксов; Паладины на клетку вперед.
2 раунд Расмонт колдует «Благословление» на эльфов; Друиды сносят 12 паладинов; Моралятся; Друиды сносят 13 паладинов; Джинны пропускают; Фениксы пропускают; Эльфы сносят 8 + 4 паладинов, с удачей на 1 выстреле; Кентавры убивают 5 паладинов; Эктор колдует «Замедление» на фениксов; Паладины на клетку вперед. Моралятся. Продолжают движение вперед.
3 раунд Расмонт колдует «Благословление» на джиннов; Друиды с удачей сносят 25 паладинов; Джинны по-прямой сносят 40 паладинов; На ответке умирает 35 джиннов. Моралятся; Джинны по-прямой сносят половину паладинов, применив спецабилку; Фениксы по диагонали снизу сносят последних 45 паладинов.
После победы Расмонт получает 8 уровней (Защита +1, Сила магии +4, Знания +3).
Нападение на нейтралов, с победой и получением 1 уровня.
1 раунд Фениксы атакуют 3 стек гидр по-диагонали, снизу; Друиды с удачей добивают 3 стек гидр. Мораляться; Друиды с удачей стреляют по 5-му стеку гидр. Эльфы выносят 1 гидру во 2-ом стеке; Гоблины вперед.
3 раунд Фениксы атакуют 1 стек гидр; Друиды с удачей убивают 1 гидру в оставшемся стеке; Эльфы с удачей на 2-ом выстреле добивают последную гидру.
После победы Эргон получает 1 уровней (Защита +1).
Нападение на вражеского героя в гарнизоне замка, со сбеганием, на примере задачки от Fireball.
Всадники — Берсерк на горгулий и Защита; Мечники — становятся перед крестьянами; Копейщики — становятся по диагонали вправо вниз от мечников; Крестьяне — по диагонали бьют по драконам с Удачей.
Примечание — стилистическое описание битвы, оставил в неизменном виде, т.е. автор Fireball.
В первом раунде Агар (герой компа), убивает достаточное количество монстров Крег Хега, HP которых, хватает для повышения уровня. Сбегаем Крег Хэгом (героем под управлением игрока), на начало 2 раунда, когда ходят всадники.
Нападение героя на нейтралов с формированием двух ППБ.
1 раунд Джинны сносят 5-ый стек гномов; Кентавры стреляют по 4-му стеку гномов; Эльфы атакуют 4-ый стек гномов; На ответке от джиннов умирает 3 стек гномов.
2 раунд Джинны сносят 4-ый стек гномов; Кентавры стреляют по 2-му стеку гномов с удачей; Эльфы атакуют 2-ой стек гномов.