Разделы:   Вводная часть Описание типов объектов Заключение

Исследование «контрольных слов» объектов карты.

Миханик © 2008 г.

Что такое контрольное слово?

Контрольное слово – это 32-битовое число (-2147483648..2147483647) («слово» в ассемблере как раз означает такой объём памяти), являющееся одним из параметров каждой клетки поля и редактирующееся командой OB:C. В отличие от таких параметров, как тип почвы или проходимость, он, подобно ресиверу PO, задаёт не характеристики самой почвы, а характеристики стоящего на ней объекта (и поэтому-то для доступа к нему используется !!OB). Как известно, в Героях 3 существует более двухсот типов объектов, и только 62 из них имеют такие характеристики. Данное исследование ставит целью разобрать, какие параметры задаёт контрольное слово в каждом из этих 62-х случаев. В принципе, почти ничего нового здесь не содержится, т. к. некоторые ERM-команды, помимо OB:C, также редактируют контрольное слово. Чуть ниже это будет указано. Но немного нового всё же есть.

Двоичное представление чисел в ассемблере

Прежде чем начать, нужно дать тем из читателей, кто не знаком с ассемблером, представление о двоичном формате чисел в нём. Кратко затрону эту тему чисто с практической стороны. (Я думаю, что уж двоичную систему счисления все знают.) В WoG'е используются преимущественно 32-битные числа, т. е. числа с длиной не больше 32 двоичных знаков. (В дальнейшем "бит" как раз будет обозначать двоичный знак. Как принято в ассемблере, биты нумеруются справа налево, начиная с 0.) Но дело в том, что последний бит используется для записи знака числа ("+" или "-"), и на само число реально отводится только 31 бит. Но это ещё не всё! Если 863 записывается как 1101011111, или 00000000000000000000001101011111, то -863 записывается не как 10000000000000000000001101011111, а как 11111111111111111111110010100001, что есть ни что иное, как число 000000000000000000001101011110 = 862, в котором единицы заменили нулями и наоборот. Так записываются все отрицательные числа, в частности -1 записывается как 32 единицы, поскольку противоположное ему число есть 0. Это позволяет уместить в 32 бита число -2147483648, которое в обычном двоичном формате записалось бы как -10000000000000000000000000000000, т. е. 32 цифры и знак "-", и в 32 бита бы не влезло. Кроме того (и это главное), такой формат значительно упрощает вычисления компьютеру. Но нам это неважно.

Логические битовые операции в WoG

Также необходимо объяснить, как обращаться с двоичными числами. Для того, чтобы заменить, скажем, биты с 5 по 12 и не затронуть остальные (в дальнейшем это понадобится), пользуются логическими операциями. В WoG'е их три: VR:&, VR:| (знак | здесь - не i прописное, а специальная вертикальная палочка, в английской раскладке - Shift+\) и VR:X. Они, соответственно, у программистов называются AND, OR и XOR, а по научному – конъюнкция, дизъюнкция и исключающая дизъюнкция. Работают они так: берётся два числа (здесь - одно из переменной, другое как параметр, напр. !!VRy12:S86 |12; - здесь исходными числами будут 86 и 12), потом берутся их первые биты, обрабатываются по определённому правилу, то, что получилось, записывается в первый бит результата. Аналогично происходит со вторыми битами, третьими и всеми остальными. (У нас результат опять записывается в переменную.) Правила эти таковы:

ANDORXOR
0 и 0 → 00 и 0 → 00 и 0 → 0
0 и 1 → 00 и 1 → 10 и 1 → 1
1 и 0 → 01 и 0 → 11 и 0 → 1
1 и 1 → 11 и 1 → 11 и 1 → 0

Теперь - как использовать их в данном случае.
Покажем это всё на том же примере - записать в число y1 число y2 в биты с 5 по 12.

  1. Сначала подготовим число y2.
    Поскольку под его запись отведено 8 битов, оно не должно быть длиннее их. На всякий случай "обрежем" его. Как это сделать? Применим команду: Что она делает? В двоичной записи число 255 выглядит как 00000000000000000000000011111111. Очевидно, что первые 8 битов числа y2 не изменятся - см. выше, а остальные превратятся в нули вне зависимости от первоначального значения. Но это нам и надо!
  2. Теперь подготовим y1.
    В нём нужно "расчистить место" для y2. Сделаем это аналогичным образом:
  3. Можно вставлять y2 в y1.
    Для этого сначала переделаем y2 так, чтобы нужные нам биты располагались не с 1 по 8, а с 5 по 12, там же, где они и должны быть в y1. Это равнозначно приписыванию к y2 четырёх нулей, т. е. умножению его на 10000 = 16:
  4. И, наконец, объединяем y1 и y2.
    Для этого обратим внимание, что в команде VR:| при соединении с нулём биты не изменяются.
    (В принципе VR:X обладает тем же свойством, но его не принято так использовать.)
    А у нас с 1 по 4 и с 13 по 32 биты в y2 нули, и нули же в y1 с 5 по 12 биты. Таким образом, после команды: … в y1 1..4 и 6..32 биты не изменятся, а 5..12 заместятся битами из y2. А это нам и надо.
    Получаем итоговый скрипт:

Поставим более общую задачу: записать в y1 y2 в биты с №a по №b.
Соответствующий скрипт выглядит так: где f = 2(b-a+1)-1, g=2(a-1), h=-f×g-1=2(a-1)-2b-1.
Этим скриптом и пользуйтесь.

Структура контрольных слов разных типов объектов

Вот мы и подошли к основной части исследования. Здесь подробно разобраны все 62 типа объектов, содержащих контрольные слова. В случае необходимости указаны первоисточники или соответствующие команды ERM. Надо заметить, что кое-что я раскопал сам, и если эту информацию кто-то добыл независимо от меня, не обижайтесь. Итак…

Тип 4. Арена
Контрольное слово представляет собой номер от 0 до 31, занимающий первые 5 битов, остальные игнорируются и обычно пусты. Сама Арена параметров не имеет, но, как известно, каждый герой может посетить каждую Арену только раз в жизни, поэтому их необходимо различать. Посетил ли герой Арену или нет, редактируется командой HE:V7.

Тип 5. Артефакт
В контрольное слово записывается несколько параметров:
Биты 0-14: соответствует команде AR:V: номер заклинания в свитке (0..32767) или (!) тип подбора артефакта (раскопал ShadowTheAge):
   0 – свободный подбор,
   1 – за 2000 золотых,
   2 – требуется мудрость,
   3 – требуется лидерство,
   4 – 2500 золотых и 3 дерева,
   5 – 3000 золотых и 5 дерева,
   6 – включается охрана (вне зависимости от значения AR:X), подробнее (показать)

Дополнение от XEPOMAHT'а: для этого типа подбора артефакта в контрольном слове кодируется флаг, номер монстров и их кол-во.
Формат такой (по битам):
0..3: тип подбора (6)
4..11: номер монстра (0..255)
12..16: не используется
17..28: количество монстров (0..4096)
29..31: не используется

   значения больше 6 – артефакт не поднимается.
При отсутствии охраны пытается запуститься бой с нулём Церберов, который автоматически выигрывается (раскопал feanor). Где-то в справке к редактору карт SoD’а написано, что в начале игры выбирается 10-15% артефактов и им устанавливается определённая цена. Или что-то вроде этого.
Биты 15-18: по-видимому, ничего не значат. Обычно там стоит 0.

Замечание от XEPOMAHT'а: биты 15-18 на самом деле содержат тип ресурса (для значений типа подбора артефакта равных 4 или 5), берущийся так же из Контрольного слова битовым сдвигом (по умолчанию там 0 → дерево).

Биты 19-30: персональный номер артефакта (0..4095). Каждому номеру соответствует своя отдельная область данных, где хранятся данные, доступ к которым обеспечивается командами AR:G M X.
Бит 31: есть ли этот номер (1) или его нет (0). Номера может и не быть, если у артефакта нет ни охраны, ни сообщения. В таком случае команды AR:G M X не работают.
31 бит определяет знак числа, поэтому есть простой признак: если контрольное слово отрицательное, то эти команды работают, нет – не работают. (Первым такой признак раскопал GrayFace)

Тип 6. Ящик Пандоры
Биты 0-9: персональный номер (0..1023). Опять же, соответствует области данных с командами LE:A B C E F G M N O P R S U X.
Биты 10-31 игнорируются.

Тип 12. Костёр покинутого лагеря
Биты 0-3:тип ресурса (0..15). Соответствует первому параметру команды FR:B. Интересно, что хотя ресурсы имеют номера с 0 по 7 (3 бита), 4ый бит не игнорируется. Устанавливая значения с 8 по 15, мы можем получать в сообщении вместо картинки ресурса картинки артефактов, заклинаний, флагов, удачи и морали – нумерация, как в IF:Q. Конечно же, на самом деле артефакты и прочее герою не добавляются, но их можно добавить с помощью ERM. Вторым параметром для картинок является кол-во ресурса.
Биты 4-19:кол-во ресурса. Может быть отрицательным: от -32768 до +32767. Соответствует второму параметру FR:B.
Биты 20-31 игнорируются и обычно пусты.

Тип 14. Лебединое озеро
Нужно отметить о таком широко распространённом заблуждении, будто лебединое озеро имеет параметры. Почему-то WoG Team создала ресивер, редактирующий его контрольное слово, с возможностью задания кол-ва удачи и персонального номера. На самом деле номера у озера нет, да и зачем он ему? А удача всегда +2. Ресивер всё равно пытается редактировать контрольное слово, но бесполезно. Вообще-то в нём (в слове) всегда стоит -1, но тем не менее приведём его состав, каким он предстаёт в воображении разработчиков ERM:
Биты 0-4 содержат номер пруда (0..31), что соответствует SW:N.
Биты 5-12 игнорируются и обычно пусты. (То есть на самом-то деле они по умолчанию заполнены, как и все, однако при изменении бонуса удачи они зачем-то обнуляются. Возможно, здесь должна была быть информация о посещении игроками.)
Биты 13-16 соответствуют бонусу удачи – то ли от 0 до 15, то ли от -8 до +7. (Хотя в справке указаны предельные значения от 1 до 3.)
Биты 17-31 игнорируются и обычно заполнены.

Тип 16. Банк существ
Биты 0-4 игнорируются и обычно заполнены.
Биты 5-12 содержат информацию о посещении игроками (побитно), что соответствует CB:V. Если посещено, то в подсказке выводится охрана.
Биты 13-24 содержат персональный номер (от 0 до 4095), ссылающийся на CB:A G M R.
Бит 25 содержит, убиты ли стражи или ещё нет, и редактируется командой CB:T.
Биты 26-31 игнорируются и обычно заполнены.

Типы 17-20. Генератор существ
Биты 0-28 содержат персональный номер (от 0 до 536870911) со всеми параметрами DW.
Биты 29-30 игнорируются и обычно пусты.

Тип 22. Скелет
Биты 0-4: номер скелета (0..31) – SC:N.
Бит 5 игнорируется и обычно заполнен.
Биты 6-15: номер артефакта (0..1023) – SC:A.
Бит 16: есть ли артефакт – SC:S.
Биты 17-31 игнорируются и обычно заполнены.

Тип 23. Башня Марлетто
Так же, как Арена, биты 0-4 – номер, остальные игнорируются и обычно пусты. У героя посещение башни Марлетто редактируется командой HE:V1.

Тип 24. Ветхий корабль
Структура контрольного слова полностью идентична с типом 16. Интересно, что, хотя обычно, если посетить ветхий корабль и отказаться от битвы, после этого, в отличие от банка существ, в подсказке к кораблю информации об охране не появляется. А если установить CB:V на «посещено» для текущего игрока, эта информация появится.

Тип 25. Утопия драконов
И опять полное совпадение с типом 16. Можно не описывать.

Тип 26. Событие
Событие и Ящик Пандоры описываются одним ресивером, а Ящик Пандоры я уже описывал. Можно было бы сослаться на него, но у события есть несколько дополнительных параметров, причём все они в контрольном слове.
Биты 0-9: персональный номер (0..1023). Как и у ящика Пандоры. Соответствует командам LE:A B C E F G M N O P R S U X.
Биты 10-17 содержат информацию о том, каким игрокам НЕЛЬЗЯ активировать событие (побитно) Соответствует LE:D.
Бит 18: разрешать ли ИИ активировать событие. Соответствует LE:I.
Бит 19: отменять ли событие после первого посещения. Соответствует LE:L.
Биты 20-31 игнорируются и обычно пусты.

Тип 29. Обломки
Для этого объекта ресивер пока не придумали.
Контрольное слово Обломков может принимать следующие значения:
0 – ничего нет, выдаётся сообщение, что ничего не найдено.
1 – 5 дерева.
2 – 5 дерева и 200 золота.
3 – 10 дерева и 500 золота.
Другие значения в игре не встречаются, а если установить число, большее 3 (или меньшее 0), то обломки будут исчезать без всякого сообщения или прибавления ресурсов. Это можно использовать в ERM, если нужно, чтобы объект плавно исчез при подборе: берём обломки, делаем им в редакторе (пропатченом) другой DEF, ставим им скриптом контрольное слово больше 3, например, 4, делаем им другую подсказку, и в триггере на их посещение делаем нужное нам сообщение или действие. Ничего особенно сложного. (Здесь надо заметить, что такое же поведение можно настроить сундукам командой UN:B. Но, сравните алгоритмы:

Второй явно короче.

Тип 30. Фонтан удачи
Опять же для этого типа нет ресивера. Поскольку мне не приходилось встречать ничего на эту тему, я сам разобрал контрольное слово этого типа, и вот что у меня вышло:
Биты 0-4 игнорируются и обычно заполнены.
Биты 5-12 содержат информацию о посещении игроками (побитно). Если игрок посетил фонтан, в подсказке выводится, что он делает.
Биты 13-16: кол-во удачи – от -8 до +7.
Биты 17-31 игнорируются и обычно заполнены.

Тип 32. Сад откровения
Так же, как Арена: биты 0-4 – номер, остальные игнорируются и обычно пусты. Посетил ли герой Сад откровения, определяет команда HE:V2.

Тип 33. Гарнизон
Биты 0-25: персональный номер (0..67108863). Ему соответствуют все команды GR.
Биты 26-30 игнорируются и обычно пусты.

Тип 34. Герой
Контрольное слово содержит номер героя. Учитываются все биты.
К сожалению, сменить героя сменой номера нельзя. Поставив произвольной жёлтой клетке тип 34 и контрольное слово некоего героя, мы создадим клон героя, которым невозможно управлять, а если этой клеткой будет другой герой, клон исчезнет при его выделении.
Зато мы можем обмениваться с ним армиями, даже если настоящий герой на другом конце карты.
Можно также "вызвать" вражеского или ненанятого героя и сразиться с ним. Причём клоны после поражения исчезают только визуально, но с ними можно сразиться ещё раз (хотя они будут нейтральными, и у них будет типичная армия убитого героя – 1 существо 1го уровня). А "оригинальный" вражеский герой, где бы он ни был, также визуально исчезнет (это происходит оттого, что в игре нет графики для нейтральных героев), но с ним можно будет сражаться. Правда, в отличие от клона, всего один раз.
Создавая клоны своих героев, мы можем добиться их раздвоения: так, если создать клон героя, сидящего в гарнизоне, и выделить его мышкой (иконка "шлем"), то герой появится у входа в замок, т.е. в гостевом слоте, оставаясь в то же время в гарнизоне. Вообще, игра мало предназначена для такого рода экспериментов.

Тип 39. Чей-то погреб / Навес
Биты 0-4: персональный номер (0-31). Соответствует LN:N.
Бит 5 игнорируется и обычно заполнен.
Биты 6-9: кол-во ресурса(0-15). Если 0, погреб считается посещённым. Соответствует второму параметру LN:B.
Биты 10-13: тип ресурса (0-15). Соответствует первому параметру LN:B. О некорректных типах см. Костёр покинутого лагеря.
Биты 14-31 игнорируются и обычно заполнены.

Тип 41. Библиотека Просвещения
Так же, как Арена: биты 0-4 – номер, остальные игнорируются и обычно пусты. Посетил ли герой Библиотеку, определяет команда HE:V6.

Тип 42. Маяк
Биты 0-25: персональный номер (0..67108863). Номер ссылается на ту же область данных, что и у Шахты, и Маяк редактируется командами MN. Тип ресурса для него - 100, однако если поставить что-либо другое, хранитель Маяка начнёт это "что-либо" усердно добывать. Охрана игнорируется. (За эту информацию спасибо sergroj`у.)
Биты 26-31 игнорируются (как и охрана).

Тип 44. Монолит выхода
Контрольное слово представляет собой номер монолита. Каждый подтип нумеруется отдельно. Неизвестно, на что он влияет, поэтому трудно определить, сколько битов используется. Единственное, что ясно – это то, что, если поставить -1, монолит перестаёт работать. При всех остальных значениях он работает. Это заставляет предположить, что читаются все биты.

Тип 45. Двусторонний монолит
Опять же, контрольное слово – персональный номер с отдельной нумерацией подтипов. Учитываются все биты. Назначение номера в игре в том, чтобы монолит не телепортировал сам в себя. Таким образом, если поставить двум монолитам одинаковый номер, они не будут друг в друга телепортировать.

Тип 47. Школа магии
Так же, как Арена: биты 0-4 – номер, остальные игнорируются и обычно пусты.
Посетил ли герой Школу магии, определяет команда HE:V8.

Тип 48. Магический источник
Биты 0-4: номер источника (0..31) – SP:N. Зачем он нужен – непонятно.
Бит 5 игнорируется и обычно заполнен.
Бит 6: посещён (1) или нет (0) – SP:S.
Биты 7-31 игнорируются и обычно заполнены.

Тип 51. Лагерь наёмников
Так же, как Арена: биты 0-4 – номер, остальные игнорируются и обычно пусты. Посетил ли герой Лагерь, определяет команда HE:V3.

Тип 53. Шахта
Биты 0-25: персональный номер (0..67108863) со всеми командами MN. Обращу внимание, что Шахты нумеруются параллельно с Маяками, как один тип.
Биты 26-31 игнорируются и обычно пусты.

Тип 54. Монстр
Биты 0-11: кол-во монстров (0..4095) – MO:G. Интересно, что, если поставить значение 4095, при щелчке появляется предложение убрать этот отряд с карты, т. к. он чересчур велик.
Биты 12-15: вероятность неприсоединения монстра в десятках % (0..10) – MO:R с 2 параметрами; если больше 10 – то же, что и 10.
Бит 16: присоединится ли монстр – MO:R с 1 параметром (причём перевёрнутое); если пуст, действует присоединение с вероятностью (предыдущий пункт).
Бит 17: если заполнен, монстр никогда не убегает – MO:U.
Бит 18: кол-во монстров не увеличивается – MO:O.
Биты 19-26: персональный номер (0..255) с командами MO:A B M.
Биты 27-30 игнорируются и обычно пусты.
Бит 31: есть ли номер. Аналогично с артефактом, если нет ни артефакта, ни ресурса, ни сообщения, номер не устанавливается. Тогда MO:A B M не работают. Это также упомянуто в описании ресивера MO, и проверка на отрицательность здесь также уместна.
Тип монстра задаётся в подтипе объекта.

Тип 55. Мистический сад
Биты 0-4: персональный номер (0..31) – GD:N.
Бит 5 игнорируется и обычно заполнен.
Биты 6-9: тип бонусного ресурса (0..15) – GD:B. Если поставить 8..15, игра вылетает.
Бит 10: есть ли бонус – GD:T.
Биты 11-31 игнорируются и обычно заполнены.

Тип 57. Обелиск
Контрольное слово являет собой персональный номер от 0 до 47, что соответствует MT:N. Если указать число, большее 47, программа залезает в не предназначенную для Обелисков память, поэтому обелиск может оказаться посещённым, а если и нет, то при посещении Обелиска карта загадки всё равно не меняется. Кроме того, если указать очень большое значение – порядка десятков миллионов и больше (предельное значение каждый раз разное) – игра вылетает. Какие Обелиски посетил тот или иной игрок, контролирует UN:L.

Тип 59. Океанская бутыль
Биты 0-29: персональный номер (0..1073741823) с командой SG:M. Нужно заметить, что, если текст не введён или стёрт (SG:M-1), то в качестве сообщения берётся случайное из RANDSIGN.TXT, находящегося в h3bitmap.lod. При этом текст генерируется непосредственно перед посещением на основе координат Бутыли, и, если поставить двум бутылкам одинаковый номер, соответствующий случайному тексту, то текст при посещении почти наверняка будет разный.
Биты 30-31 игнорируются и обычно пусты.

Тип 61. Звёздное колесо
Так же, как Арена: биты 0-4 – номер, остальные игнорируются и обычно пусты. Посетил ли герой Колесо, определяет команда HE:V4.

Тип 62. Тюрьма
Контрольное слово представляет собой номер заключённого героя. При этом можно ставить только номера заключённых в других тюрьмах героев: если поставить номер свободного или ненанятого героя, то выводится сообщение, что здесь когда-то сидел герой, но потом король его освободил. (По-видимому, где-то в параметрах героя есть байт, определяющий, сидит он или на свободе.) То же выводится при небольших некорректных номерах. При очень больших номерах (порядка десятков миллионов и больше) игра вылетает.

Тип 63. Пирамида
Бит 0: есть ли стражи – PM:V.
Биты 1-4 игнорируются и обычно заполнены.
Биты 5-12: какими игроками посещено (побитно) – PM:P.
Биты 13-20: номер заклинания (0..255) – PM:S.
Биты 21-31 игнорируются и обычно заполнены.

Тип 78. Лагерь беженцев
Биты 0-15: число монстров (-32768..32767).
Биты 16-31 игнорируются и обычно пусты.
Тип монстров задаётся в подтипе лагеря.

Тип 79. Ресурс
Контрольное слово устроено точно так же, как и у артефакта, только биты 0-14, соответствующие AR:V, содержат кол-во ресурса.

Тип 81. Учёный
Биты 0-2: тип бонуса (0..7) – SC:T:
0 – первичный навык; 1 – вторичный навык; 2 – заклинание;
3..7 – Учёный ничего не даёт и плавно исчезает без сообщения. Это можно использовать так же, как и аналогичное свойство Обломков.
Биты 3-5: тип первичного навыка (0..7) – SC:P. Если поставить от 4 до 7, первичные навыки не меняются, а Учёный, судя по картинкам, обучает вас строить Гильдии Магов 2 уровня в Темнице, Цитадели, Крепости и Сопряжении, соответственно.
Биты 6-12: номер вторичного навыка (0..127) – SC:S. Если поставить некорректное заклинание и установить SC:T1, игра при посещении вылетает.
Биты 13-22: номер заклинания (0..1023) – SC:L. Если поставить некорректное, уже изученное или неизучаемое данным героем заклинание – будет изучаться первичный навык.
Бит 23 игнорируется и обычно пуст.
Биты 24-31 игнорируются и обычно заполнены.

Тип 82. Морской сундук
Для этого типа ресивера нет, но бдительные форумчане, носящие гордые имена Demiurg, DracoLich и Чёртос-2 (или кто-то один из них; или двое; все трое писали про это посты, но никто не претендовал на авторство), расшифровали-таки значение его контрольного слова. Привожу здесь их открытие. Естественно, своими словами.
Биты 0-2: тип подбора сундука (0..7): 0 – пусто, 1 – 1500 золота, 2 – 1000 золота и артефакт. Если установлено значение от 3 до 7, то сундук плавно исчезает безо всякого сообщения, и этому можно найти применение – см. Обломки.
Биты 3-12: номер артефакта (0..1023). Если поставить некорректное значение и установить тип подбора 2, то при подборе игра вылетает. Если поставлен тип подбора 0 или 1, здесь по умолчанию стоит -1, т. е. 1023.
Биты 13-31 игнорируются и обычно заполнены.

Тип 83. Хижина провидца
Контрольное слово представляет собой персональный номер, ссылающийся на недоступную нам область данных, где и находятся все параметры хижины.
Учитываются все биты.

Тип 84. Склеп
Структура контрольного слова полностью идентична типу 16.
Здесь уместно то же замечание, что и для Ветхого корабля.

Тип 85. Кораблекрушение
То же, что Ветхий корабль.

Тип 86. Потерпевший кораблекрушение
Опять же, здесь меня опередил Demiurg. Тем не менее запишем:
Биты 0-29: номер артефакта (0..1073741823). Если поставить очень большие некорректные значения, вроде [228+номер артефакта], то этот артефакт даже получится поднять без вылета. Правда, кликать на него после этого или пытаться передвинуть в другой слот я бы не советовал.
Биты 30-31 игнорируются и обычно пусты.

Тип 87. Верфь
Биты 0-7: владелец верфи (0..255) – SY:O. Некорректные значения могут окрасить флаг в самые неожиданные цвета, хотя обычно этот цвет – белый.
Биты 8-15: X-координата для постройки корабля (0..255) – SY:P.
Биты 16-23: Y-координата для постройки корабля (0..255) – SY:P. Нужно заметить, что, когда лодка покупается дистанционно, кликом по верфи, то эти параметры игнорируются и лодка строится в ближайшей водной клетке. Если поставить выходящие за край карты значения, вылетать не будет, просто лодка нигде не построится. Скорее всего вместо этого изменятся другие совершенно посторонние данные.

Типы 88-90. Святыни магического воплощения, жеста и мысли
Биты 0-4 игнорируются и обычно заполнены.
Биты 5-12: какие игроки посетили Святыню (побитно). Если игрок посетил Святыню, он знает, что в ней изучают.
Биты 13-22: номер изучаемого заклинания (0..1024) – SR:S. Если поставить некорректное значение, пишут, что вы уже изучили это заклинание. Хотя я не проверял все значения.
Биты 23-31 игнорируются и обычно пусты.

Тип 91. Знак
Аналогично с Океанской бутылью. Только Знак не исчезает после подбора.

Тип 93. Свиток с заклинанием
Контрольное слово представляет собой номер заклинания.
Учитываются все биты.

Тип 98. Город
Биты 0-28: персональный номер (0..536870911) со всеми параметрами.
Биты 29-31 игнорируются и обычно пусты.
Если поставить одному городу номер другого, произойдёт следующее:

  1. Если номер сменён не на входе:
    1. Сменится подсказка по щелчку на этой клетке города, но не на других; подсказка по наведении останется неизменной.
    2. При клике на эту клетку выделится город, номер которого поставлен; если он уже выделен, откроется меню города, однако, если город не ваш, при наведении на эту клетку курсор на иконку замка не изменится. Город не будет выделяться (самое начало предложения), если он принадлежит не вам и выделен какой-либо герой, а не город.
  2. Если номер сменён на входе:
    1. В дополнение к предыдущему изменится также подсказка при наведении (на любую клетку города): сменится имя города. Тип города останется неизменным, он зависит от подтипа клетки при входе.
    2. Также сменится цвет флажков.
    3. Если зайти в изменённый вход, сначала совершатся некоторые проверки, связанные с исходным городом: так, если он принадлежит не вам и там есть охрана, вас заставят сражаться; после победы, или если не было охраны, хозяином города станете вы, в чём можно убедиться, поставив на вход исходный номер.
    4. После чего откроется меню исходного города. Зашедшего героя там не будет, т.к. он будет находиться в гостевом слоте сменённого города.
    5. Если переместить зашедшего героя в гарнизон и обратно, то он переместится в сменённый город уже на глобальной карте.
    6. Если попытаться нанять в исходном городе героя, игра вылетит.
    7. Самые жестокие глюки получаются, если обменять номера у двух городов. Герой-посетитель может уйти из города и одновременно остаться в гостевом слоте, может попасть в гостевые слоты и гарнизоны обоих городов сразу, оказаться в гостевом слоте и гарнизоне одного города одновременно и раздвоиться… ещё тысячей других способов.

Тип 100. Камень знаний
Так же, как Арена: биты 0-4 – номер, остальные игнорируются и обычно пусты. Посетил ли герой Камень, определяет команда HE:V0.

Тип 101. Сундук с сокровищами
Биты 0-9: номер артефакта (0..1023) – CH:A.
Бит 10: тип бонуса (0 – золото, 1 – артефакт) – CH:S.
Биты 11-14: показатель кол-ва золота (0..15) – CH:B. Кол-во золота = [показатель] * 500.
Биты 15-31 игнорируются и обычно заполнены.

Тип 102. Древо знаний
Биты 0-4: номер Древа (0..31) – KT:N. Посетил ли герой Древо, определяет команда HE:V5.
Биты 5-12: информация о посещении игроками (побитно). Игрок, посетивший Древо, видит в подсказке для него тип получения уровня.
Биты 13-15: тип получения уровня (0..3) – KT:S. Если поставить тип подбора 3, при посещении Древа игра зависает, а в подсказке (если поставить в биты 5-12, что Дерево уже посещали) пишется, что Древо это ни что иное, как улучшенный генератор существ 4 уровня.
Биты 16-31 игнорируются и обычно заполнены.

Тип 103. Врата подземного мира
Биты 0-29: персональный номер Врат (0..1073741823). Номер ссылается на область данных, где записаны координаты целевых врат или отсутствие оных – если на одном уровне врат больше, часть отключается.
Биты 30-31 игнорируются и обычно пусты.

Тип 104. Университет
Биты 0-4 игнорируются и обычно заполнены.
Биты 5-12 игнорируются и обычно пусты. Эти биты обычно содержат информацию о посещении игроками, но я не заметил ни каких-либо изменений в контрольном слове Университета при посещении, ни каких-либо изменений в подсказке Университета при заполнении этих битов.
Биты 13-24: персональный номер Университета (0..4095) с командой UR:S.
Биты 25-31 игнорируются и обычно пусты.

Тип 105. Телега
Биты 0-4: кол-во ресурсов (0..31) – второй параметр WG:R.
Биты 5-12: какие игроки посетили телегу (побитно).
Бит13: есть ли что-то в телеге – WG:S.
Бит14: тип бонуса (0 – ресурсы, 1 – артефакт) – WG:B.
Биты 15-24: номер артефакта (0..1023) – WG:A.
Биты 25-28: тип ресурса (0..15) – первый параметр WG:R.
Биты 29-31 игнорируются и обычно заполнены.

Тип 107. Школа войны
Так же, как Арена: биты 0-4: – номер, остальные игнорируются и обычно пусты. Посетил ли герой Школу, определяет команда HE:V9.

Тип 108. Могила воина
Бит 0: есть ли артефакт – WT:S.
Биты 1-4 игнорируются и обычно заполнены.
Биты 5-12: какие игроки посетили могилу (побитно).
Биты 13-22: номер артефакта (0..1023) – WT:A. Если поставить некорректный номер, при попытке обыскать могилу игра вылетает.
Биты 23-31 игнорируются и обычно заполнены.

Тип 109. Водяное колесо
Биты 0-4: показатель кол-ва золота (0..15) – WM:B. Кол-во золота = [показатель] * 500. Если показатель равен 0, то мельник говорит, что золота нет.
Биты 5-12: какие игроки посетили колесо (побитно). Если игрок посетил колесо, в подсказке для него пишется, заходил ли он туда на этой неделе.
Биты 13-31 игнорируются и обычно заполнены.

Тип 112. Ветряная мельница
Биты 0-3: тип ресурса (0..15) – первый параметр ML:B. Если поставить некорректное значение, игра вылетает.
Бит 4 игнорируется и обычно пуст.
Биты 5-12: какие игроки посетили мельницу (побитно). Если игрок посетил мельницу, в подсказке для него пишется, заходил ли он туда на этой неделе.
Биты 13-16: кол-во ресурсов (0..15) – второй параметр ML:B. Если 0, мельник говорит, что ресурсов нет.
Биты 17-31 игнорируются и обычно пусты.

Тип 113. Хижина ведьмы
Биты 5-12: информация о посещении игроками (побитно). Игрок, посетивший хижину, видит в подсказке для неё изучаемый навык.
Биты 13-19: изучаемый навык (0..127). Если поставить некорректное значение в подсказке навык будет именоваться как (null), а при посещении игра вылетит.
Биты 20-31 игнорируются и обычно пусты.

Тип 215. Страж прохода
Контрольное слово представляет собой персональный номер Стража.
Учитываются все биты.
Мы пока не можем изменять параметры Стражей прохода и Хижин провидца, но можем менять их номера как готовые наборы параметров. К сожалению, после открытия прохода задание у Стража (по аналогии с Хижиной провидца) стирается, и если мы поставим двум Стражам одинаковый номер, то открыть можно будет лишь один из них: после открытия одного второй превратится в каменный столб и не будет выдавать сообщений при посещении, как то случается с ненастроенными Стражами. В принципе, и это можно использовать.
Например, в "Жизни приключений", когда герою предстоит выбрать две из четырёх стихий магии, можно было бы поставить Cтражам прохода, требующим одинаковые брелки, одинаковый номер. Тогда не осталось бы лишних записей в журнале и можно было бы поставить недоступному после выбора Cтражу сообщение типа "Вы уже сделали свой выбор.".

Зачем это всё нужно?

Как можно заметить, я несколько абзацев сначала объяснял, как правильно складывать 10 и 10, чтобы получить 100, а не 110101 (и не 20), а затем долго и нудно излагал, где какие биты что означают. У читателя, прочитавшего это всё целиком, если такие есть (на что я не надеюсь; я всё-таки пишу не беллетристику, а своего рода справочник), или хотя бы бегло всё просмотревшего, складывается впечатление, что автор страдает гибридом графомании и трудоголии и ему некуда девать свои созидательные усилия, кроме как на всякого рода макулатуру.
Короче, читатель задаёт себе вопрос: а зачем это всё нужно?
Отвечаю. В исследовании есть немного полезной и действительно новой информации. Например, контрольное слово для Фонтана удачи и расположения персональных номеров и информации о посещении, для которой зачастую нет команды ERM. В тех же случаях, когда я разбирал, скажем, Магический источник, все параметры которого задаются через ERM, я также сделал немного полезного. Из приведённого расположения можно выковырять целых 27 свободных для записи битов для тех, кто не знает, что такое !!PO или просто экономит.
Кроме того, систематизация – великая вещь. Авось кому-либо пригодится.
Наконец, у меня чётко указан диапазон возможных значений параметра. Во-первых, в ERM Help он не всегда указан, во-вторых, часто бывают некорректные значения, которые иногда дают интересный эффект, и, наконец, всегда можно сказать, сколько артефактов, заклинаний или чего-то ещё в этом роде может "выдержать" игра. Так, артефакту почти везде отводится 10 бит (за исключением Потерпевшего кораблекрушение: там номер артефакта занимает аж 30 бит!), и поэтому будет достаточно сложно сделать 1025 и более артефактов (придётся привлекать ERM), а вот 1024 – пожалуйста. Заклинанию также обычно уделяется 10 бит, только в Пирамиде под него отводится лишь 8. Но последнее можно устранить лёгким исправлением exe-шника (хотя 256 заклинаний можно наделать и без него), а вот 1025 и более разных магий – это уже проблематично.

А что у нас нового?

Но, возможно, не все захотят вылавливать клецки истины из супа словоблудия, и специально для этих лентяев я выпишу ту самую полезную и новую информацию сжато и конспективно в небольшом списке. Читайте на здоровье. Итак, у нас в программе:

А также многое другое, что я посчитал ненужным вылавливать.

На этом позвольте закончить.