╔╦╦╦════════════════════════════════════════════════════════════════╦╦╦╗
   ║║║║                                                                ║║║║
   ║║║║  Описание формата карт для игры Heroes of Might and Magic III  ║║║║
   ║║║║       (C) Oleg Antoshkiv 2:4623/55.37@fidonet.org              ║║║║
   ║║║║           (кто дополнит добавьте сюда свое имя)                ║║║║
   ╚╩╩╩════════════════════════════════════════════════════════════════╩╩╩╝

   Внимание: файлы карт (*.h3m) запакованы архиватором GZIP

   Условные обозначения:
   Первое число в строке указывает размер элемента.

   1     { длина элемента в байтах
   ├─ 1  { эти элементы присутствуют только при некоторых значениях
   └─ 1  { предыдущего элемента, количество их тоже может быть различным

   *     { длина элемента указана в предыдущем элементе
   ???   { назначение неизвестно, в скобках значение по умолчанию
  (???)  { изменение элемента не влияет на игру

██████████████████████████████████████████████████████████████████████████████
██                            Основные параметры карты                      ██
██████████████████████████████████████████████████████████████████████████████

 Длина Описание (код)

   1   ??? (0E)
   1   ??? (00)
   1   ??? (00)
   1   ??? (00)
   1   ??? (01)
   4   Высота и ширина карты в клетках (карта квадратная)
   1   0-Одноуровневая карта, 1-Двухуровневая
   4   Длина названия карты в байтах
   *   Название карты
   4   Длина описания карты
   *   Описание карты
   1   Сложность карты (0-Easy,1-Normal,2-Hard,3-Expert,4-Impossible)

██████████████████████████████████████████████████████████████████████████████
██                           Атрибуты игроков                               ██
██████████████████████████████████████████████████████████████████████████████

   Тут идут параметры всех игроков в таком порядке:
   Red, Blue, Tan, Green, Orange, Purple, Teal, Pink

   Для каждого игрока присутствует последовательность байт:

   1   Может ли играть челоовек:  1 - ДА, 0 - НЕТ
   1   Может ли играть компьютер: 1 - ДА, 0 - НЕТ
   1   Behavior: 0-Random, 1-Warrior, 2-Buider, 3-Explorer
   1   Какими типами городов игрок владеет: Bit=1 - владеет, Bit=0 - не владеет
           Bit0 Castle
           Bit1 Rampart          ┌───────────────────────────────╖
           Bit2 Tower            │если игрок владеет Random Town,║
           Bit3 Inferno          │то считается что он владеет    ║
           Bit4 Necropolis       │всеми видами городов           ║
           Bit5 Dungeon          ╘═══════════════════════════════╝
           Bit6 Stronghold
           Bit7 Fortress
   1   Владеет ли игрок Random Town: 1-ДА, 0-НЕТ
   1   Генерируется ли в начале игры герой в городе: 1-ДА 0-НЕТ
   ├─ 1   X-координата замка в котором генерируется герой
   ├─ 1   Y-координата замка в котором генерируется герой
   └─ 1   Z-координата замка в котором генерируется герой

   1  Есть ли Random Hero: 1-Да, 0-Нет
   1  Тип героя от 00 до 7F (всего есть 128 типов героев)
   │  (если FF - героя нет) и следующие байты отсутствуют:
   ├─ 1   Номер рожи героя (всего есть 128 типов)
   │      (если FF - рожа стандартная)
   ├─ 4   длина имени героя (если 0, то имени нет - стандартное)
   └─ #   имя героя

██████████████████████████████████████████████████████████████████████████████
██                         Special Victory Condition                        ██
██████████████████████████████████████████████████████████████████████████████

   1   Есть ли Special Victory Condition:
   │   ■ FF - НЕТ
   │   ■ 00 - Acquire a specific artifact
   │   ■ 01 - Accumulate creatures
   │   ■ 02 - Accumulate resources
   │   ■ 03 - Upgrade a specific town
   │   ■ 04 - Build the grail structure
   │   ■ 05 - Defeat a specific Hero
   │   ■ 06 - Capture a specific town
   │   ■ 07 - Defeat a specific monster
   │   ■ 08 - Flag all creature dwelling
   │   ■ 09 - Flag all mines
   │   ■ 0A - Transport a specific artifact

   ■ Acquire a specific artifact
   ├─ 1   Также возможно обычное окончание: 1-Да, 0-Нет (не работает)
   ├─ 1   Доступно ли для компьютера
   └─ 1   Код артефакта

   ■ Accumulate creatures
   ├─ 1   Также возможно обычное окончание: 1-Да, 0-Нет
   ├─ 1   Доступно ли для компьютера: 1-Да, 0-Нет
   ├─ 1   Код юнита
   └─ 4   Количество

   ■ Accumulate resources
   ├─ 1  Также возможно обычное окончание: 1-Да, 0-Нет
   ├─ 1  Доступно ли для компьютера: 1-Да, 0-Нет
   ├─ 1  Код ресурса: ┌────────────────────────╖
   │                  │0 - Wood     4 - Crystal║
   │                  │1 - Mercury  5 - Gems   ║
   │                  │2 - Ore      6 - Gold   ║
   │                  │3 - Sulfur              ║
   │                  ╘════════════════════════╝
   └─ 4  Количество

   ■ Upgrade a specific town
   ├─ 1  Также возможно обычное окончание: 1-Да, 0-Нет
   ├─ 1  Доступно ли для компьютера: 1-Да, 0-Нет (???)
   ├─ 1  X-координата города
   ├─ 1  Y-координата города
   ├─ 1  Z-координата города
   ├─ 1  Hall Level:   0-Town, 1-City,    2-Capitol
   └─ 1  Castle Level: 0-Fort, 1-Citadel, 2-Castle

   ■ Build the grail structure
   ├─ 1  Также возможно обычное окончание: 1-Да, 0-Нет (???)
   ├─ 1  Доступно ли для компьютера: 1-Да, 0-Нет (???)
   ├─ 1  X-координата города
   ├─ 1  Y-координата города
   └─ 1  Z-координата города

   ■ Defeat a specific Hero
   ├─ 1  Также возможно обычное окончание: 1-Да, 0-Нет (???)
   ├─ 1  Доступно ли для компьютера: 1-Да, 0-Нет (???)
   ├─ 1  X-координата героя
   ├─ 1  Y-координата героя
   └─ 1  Z-координата героя

   ■ Capture a specific town
   ├─ 1  Также возможно обычное окончание: 1-Да, 0-Нет (???)
   ├─ 1  Доступно ли для компьютера: 1-Да, 0-Нет (???)
   ├─ 1  X-координата города
   ├─ 1  Y-координата города
   └─ 1  Z-координата города

   ■ Defeat a specific monster
   ├─ 1  Также возможно обычное окончание: 1-Да, 0-Нет
   ├─ 1  Доступно ли для компьютера: 1-Да, 0-Нет (???)
   ├─ 1  X-координата города
   ├─ 1  Y-координата города
   └─ 1  Z-координата города

   ■ Flag all creature dwelling
   ├─ 1  Также возможно обычное окончание: 1-Да, 0-Нет
   └─ 1  Доступно ли для компьютера: 1-Да, 0-Нет

   ■ Flag all mines
   ├─ 1  Также возможно обычное окончание: 1-Да, 0-Нет
   └─ 1  Доступно ли для компьютера: 1-Да, 0-Нет

   ■ Transport a specific artefact
   ├─ 1  Также возможно обычное окончание: 1-Да, 0-Нет (???)
   ├─ 1  Доступно ли для компьютера: 1-Да, 0-Нет
   ├─ 1  Код артефакта
   ├─ 1  X-координата города
   ├─ 1  Y-координата города
   └─ 1  Z-координата города

██████████████████████████████████████████████████████████████████████████████
██                         Special loss condition                           ██
██████████████████████████████████████████████████████████████████████████████

   1   Есть ли Special Loss Condition
   │   ■ FF - None
   │   ■ 00 - Lose a specific town
   │   ■ 01 - Lose a specific hero
   │   ■ 02 - Time expires

   ■ Lose a specific town
   ├─ 1  X-координата города
   ├─ 1  Y-координата города
   └─ 1  Z-координата города

   ■ Lose a specific hero
   ├─ 1  X-координата героя
   ├─ 1  Y-координата героя
   └─ 1  Z-координата героя

   ■ Time expires
   └─ 2  Количество дней

██████████████████████████████████████████████████████████████████████████████
██                           Команды (Teams)                                ██
██████████████████████████████████████████████████████████████████████████████

   1  Количество команд, 0 - нет команд
   │
   │      Если команд нет, следующие 8 байт отсутствуют:
   │
   ├─ 1   Номер команды для Red    (красный)
   ├─ 1   Номер команды для Blue   (синий)
   ├─ 1   Номер команды для Tan    (коричневый)
   ├─ 1   Номер команды для Green  (зеленый)
   ├─ 1   Номер команды для Orange (оранжевый)
   ├─ 1   Номер команды для Purple (пурпурный)
   ├─ 1   Номер команды для Teal   (голубой)
   └─ 1   Номер команды для Pink   (розовый)

██████████████████████████████████████████████████████████████████████████████
██                          Свободные герои                                 ██
██████████████████████████████████████████████████████████████████████████████

  16 байт. В игре всего существует 128 типов героев, в этих 16 байтах
  содержится информация о том есть ли этот герой в игре или нет
  (чтобы не допустить одновременного присутствия одинаковых героев)

  В каждом байте информация о 8 героях
  (бит=0 - герой занят, бит=1 - герой свободен)

    Номер байта  -  Тип героя

             00  -  Knight
             01  -  Cleric
             02  -  Ranger
             03  -  Druid
             04  -  Alchemist
             05  -  Wizard
             06  -  Demoniac
             07  -  Heretic
             08  -  Death Knight
             09  -  Necromancer
             0a  -  Overlord
             0b  -  Warlock
             0c  -  Barbarian
             0d  -  Battle Mage
             0e  -  Beastmaster
             0f  -  Witch

██████████████████████████████████████████████████████████████████████████████
██                             ??????                                       ██
██████████████████████████████████████████████████████████████████████████████

   31 байт заполнены 00 (наверное зарезервированы для новых версий ?)
   (наблюдается во всех стандарных картах, и в кампаниях вроде тоже)

██████████████████████████████████████████████████████████████████████████████
██                             Rumors                                       ██
██████████████████████████████████████████████████████████████████████████████

   4   Количество Rumors
   │
   ├─ 4   Длина названия 1-го Rumor
   ├─ #   Название 1-го Rumor
   ├─ 4   Длина 1-го Rumor
   ├─ #   1-й Rumor
   │
   ├─ 4   Длина названия 2-го Rumor
   ├─ #   Название 2-го Rumor
   ├─ 4   Длина 2-го Rumor
   ├─ #   2-й Rumor
   .      ...  (и так до конца всех Rumors)

██████████████████████████████████████████████████████████████████████████████
██                             Карта земли                                  ██
██████████████████████████████████████████████████████████████████████████████

   Размер: (размер_карты)^2 * 7
   (Описание дальше)

██████████████████████████████████████████████████████████████████████████████
██                           Карта подземелья                               ██
██████████████████████████████████████████████████████████████████████████████

   Размер: (размер_карты)^2 * 7
   Если карта одноуровневая, то этот раздел отсутствует.
   (Описание дальше)

██████████████████████████████████████████████████████████████████████████████
██                     Формат карты земли и подземелья                      ██
██████████████████████████████████████████████████████████████████████████████

  Первый байт - коды поверхности:
   00 - Dirt            (коричневый)        (0F 3F 50) (RGB цвета на карте)
   01 - Sand            (светло-желтый)     (8F CF DF)
   02 - Grass           (темно-зеленый)     (00 40 00)
   03 - Snow            (белый)             (C0 C0 B0)
   04 - Swamp           (светло-зеленый)    (6F 80 4F)
   05 - Rough           (темно-желтый)      (30 70 80)
   06 - Subterranean    (красный)           (30 80 00)
   07 - Lava            (темно-серый)       (4F 4F 4F)
   08 - Water           (синий)             (90 50 0F)
   09 - Rock            (черный)            (00 00 00)

  Второй байт - тип рисунка поверхности (их очень много)

  Третий байт - тип речки:
   01 - Clear
   02 - Icy
   03 - Muddy
   04 - Lava

  Четвертый байт - конфигурация речки:
                                        ┌───┐
   00, 01, 02, 03 - 4 варианта сегмента │ ╔═╡
                            ┌─╥─┐       └─╨─┘
   04             - сегмент ╞═╬═╡
                            └─╨─┘       ┌───┐
   05, 06         - 2 варианта сегмента ╞═╦═╡
                                        └─╨─┘
                                        ┌─╥─┐
   07, 08         - 2 варианта сегмента │ ╠═╡
                                        └─╨─┘
                                        ┌─╥─┐
   09, 0A         - 2 варианта сегмента │ ║ │
                                        └─╨─┘
                                        ┌───┐
   0B, 0C         - 2 варианта сегмента ╞═══╡
                                        └───┘

  Пятый байт - тип дороги:
   01 - Dirt
   02 - Gravel
   03 - Cobblestone

  Шестой байт - конфигурация дороги:
                                            ┌───┐
   00,01,02,03,04,05 - 6 вариантов сегмента │ ╔═╡
                                            └─╨─┘
                                        ┌─╥─┐
   06, 07         - 2 варианта сегмента │ ╠═╡
                                        └─╨─┘
                                        ┌───┐
   08, 09         - 2 варианта сегмента ╞═╦═╡
                                        └─╨─┘
                                        ┌─╥─┐
   0A, 0B         - 2 варианта сегмента │ ║ │
                                        └─╨─┘
                                        ┌───┐
   0C, 0D         - 2 варианта сегмента ╞═══╡
                                        └───┘
                            ┌───┐
   0E             - сегмент │ ║ │
                            └─╨─┘
                            ┌───┐
   0F             - сегмент │ ══╡
                            └───┘
                            ┌─╥─┐
   10             - сегмент ╞═╬═╡
                            └─╨─┘

  Седьмой байт - задает зеркальные отображения клеток

   Значение битов: 76543210
                   --CcBbAa     (биты помеченные '-' могут быть любыми)

   a - включает зеркальное отображение сегмента земли по вертикальной оси
   A - включает зеркальное отображение сегмента земли по горизонтальной оси
       (не для всех участков земли действует зеркало).
   b - включает зеркальное отображение сегмента речки по вертикальной оси
   B - включает зеркальное отображение сегмента речки по горизонтальной оси
   c - включает зеркальное отображение сегмента дороги по вертикальной оси
   C - включает зеркальное отображение сегмента дороги по горизонтальной оси

██████████████████████████████████████████████████████████████████████████████
██                      Атрибуты объектов стоящих на карте                  ██
██████████████████████████████████████████████████████████████████████████████

   (На данный момент этот раздел не изучен)

   Тут находятся характеристики всех объектов стоящих на карте
   в том числе замков и героев, (кроме самой земли, речек и дорог)
   а так же события (Events) - те что расположены на карте, и
   глобальные события (задаются в "Map Specifications")

██████████████████████████████████████████████████████████████████████████████