| 
 
				 (17.07.2020 16:12)Bes Wrote:  может кто выложить на форуме структуру героя 
Code:
 struct _Hero_{Word   x;        //   +00  dw    = x position
 Word   y;        //   +02  dw    = y position
 Word   l;        //   +04  dw    = ? уровень старшая часть y (y<<2>>C)
 Byte   Visible;  //   +06  db    = 1 - есть на карте (внутри города или не активен)
 //  Byte  _u1[17];
 // +07 db - x
 // +08 db - (?) мусор (к x)
 // +09 db - y
 // +0A db - l(?) мусор (к y)
 Dword  PlMapItem; // MixedPos
 // +0B db - (?) l
 Byte  _u1;
 // +0C dd - тип объекта на котором герой стоял
 long   PlOType; // dd +1E с карты
 // +10 db - бит занятости во флагах поверхности 00001000
 // это бит означающий, что здесь есть/была точка входа (желтая клетка)
 Dword  Pl0Cflag;
 // +14 dd - SetUp с карты
 Dword  PlSetUp; // dd +0 с карты
 Word   SpPoints; //   +18  dw    = баллы заклинаний
 int    Number;   //   +1A  dd    = номер подтипа (конкретный герой)
 Dword  _unk_Id;       //   +1E  dd    = Id (при чём тут Id???)
 char   Owner;    //   +22  db    = нозяин (цвет)
 char   Name[13]; //*   +23  db*D  = имя,0
 long   Spec;     //   +30  dd    = str[8] str=(*[67CD08])[номер подтипа *5C]
 Byte   Pic;      //*   +34  db    = номер картинки
 // dw +35 ???
 // dw +41 ???
 // db +43 0
 Byte  _u2[15];
 // +3E db -??? 4E3BB5 - used in luck calculation
 Byte   x0;       //   +44  db    = базовый x для обегания (FF-не ограничен)
 Byte   y0;       //   +45  db    = базовый y для обегания (FF-не ограничен)
 Byte   Run;      //   +46  db    = радиус обегания (FF-не ограничен)
 Byte  _u3;       //   +47  db    = ???
 Byte   Flags;    //   +48  8*bb  (463253)
 // 01 - тип группировки юнитов
 // 02 - разрешена тактика для героя
 int    Movement0;//    +49  dd    = полное перемещение начальное
 int    Movement; //*   +4D  dd    = оставшиеся перемещения
 Dword  Exp;      //*   +51  dd    = опыт
 Word   ExpLevel; //*   +55  dw    = уровень
 //  Dword  VStones;  // +57 32 камня (1-посещен,2-нет)
 //  Dword  VMTower;  // +5B Башня Мардетто
 //  Dword  VGarden;  // +5F сад откровения
 //  Dword  VMCamp;   // +63 лагерь наемников
 //  Dword  VSAxis;   // +67 звездное колесо
 //  Dword  VKTree;   // +6B дерево знаний
 //  Dword  VUniver;  // +6F университет
 //  Dword  VArena;   // +73 арена
 //  Dword  VSMagic;  // +77 школа магов
 //  Dword  VSWar;    // +7B школа войны
 Dword  Visited[10];
 Byte  _u4[18];   // +7F
 int    Ct[7];    //   +91  dd*7  = тип существ (-1 - нет)
 int    Cn[7];    //   +AD  dd*7  = количество
 Byte   SSkill[28];//   +C9  db*1C = уровень 2-х скилов (один байт - уровень этого номера скила 1,2,3) 0-нет
 // C9=Pathfinding CA=Archery CB=Logistics CC=Scouting CD=Diplomacy CE=Navigation CF=Leadership
 // D0=Wisdom D1=Mysticism D2=Luck D3=Ballistics D4=Eagle Eye D5=Necromancy D6=Estates D7=Fire Magic
 // D8=Air Magic D9=Water Magic DA=Earth Magic DB=Scholar DC=Tactics DD=Artillery DE=Learning DF=Offence
 // E0=Armorer E1=Intelligence E2=Sorcery E3=Resistance E4=First Aid
 Byte   SShow[28]; //   +E5  db*1C = порядок отображения 2-х скилов в окне героя (1,2,3,4,5,6)
 Dword  SSNum;    //   +101 dd    = количество 2-х скилов
 //  Word  RefData1;  //   +105  4814D3+...
 //  Word  RefData2;  //   +107  4DA466
 Dword  TempMod;    // +105 временные модификаторы
 // нач. иниц. при найме 0xFFF9FFFF
 //  00000002 = конющня 3.59 ERM
 //  00000008 = лебединое озеро swan pond 3.59 ERM
 //  00000020 = (???) фонтан удачи fountain of fortune 3.59 ERM
 //  00000080 = оазис
 //  00002000 = домик фей
 //  00040000 = в лодке на воде
 //  00200000 = -3morale в вариор томб
 //  00400000 = Give Maximum Luck
 //  00800000 = Give Maximum Moral
 //  38000000 = конкретный тип фонтана удачи
 Byte  _u6[9];   // +109
 Dword _u7;      // +112
 char   DMorale;  // +116 модификаторы морали (накапливаются)
 Byte  _u60[3];
 char   DMorale1; // +11A модиф морали (оазис)
 char   DLuck;    // +11B модиф удачи до след битвы
 Byte  _u6a[17];
 int   IArt[19][2];  //+12D dd*2*13h = артифакты dd-номер,dd-номер закла(или -1) (книга 3,FF)
 Byte  FreeAddSlots;   //+1C5 количество пустых доп. слотов слева
 char  LockedSlot[14]; //+1C6
 int   OArt[64][2];  //+1D4 dd*2*40 = арт в рюкзаке dd-номер, dd-номер закла(или -1)
 Byte    OANum;   //   +3D4 db   = число артифактов в рюкзаке
 Dword  Sex;      //   +3D5 dd    = пол
 Byte   fl_B;     //   +3D9 db    = есть биография
 //  char  *Bibl;     //   +3DA dd    -> биография
 //  Byte  _u7[12];    //  +3DE
 Dword  _5b;     // +3DA
 _AMes_ Bibl;    // +3DE
 Byte   Spell[70]; //   +3EA db*46 = заклинание (есть/нет)
 Byte   LSpell[70];//   +430 db*46 = уровень заклинания (>=1)
 char   PSkill[4]; //   +476 db*4  = первичные навыки
 Byte  _u8[24];
 };
edited by igrik 
Code:
 NOALIGN struct _Hero_: _Struct_{
 _int16_ x; // +0
 _int16_ y; // +2
 _int16_ z; // +4
 _byte_ visible; // +6
 _dword_ mui_xyz; // +7
 _byte_ miu_is; // +11
 // miu = map_item under hero
 _dword_ miu_object_type; // +12
 _dword_ miu_object_c_flag; // +16
 _dword_ miu_UnderHero; // +20
 _word_ spell_points; // +24
 _dword_ id; // +26
 _dword_ id_wtf; // +30
 _int8_ owner_id; // +34
 _char_ name[13]; // +35
 _dword_ _class; // +48
 _byte_ pic; // +52
 _dword_ targetX; // +53
 _dword_ targetY; // +57
 _dword_ targetZ; // +61
 _word_ last_magic_school_level; // +65
 _byte_ target_is_critical; // +67
 _byte_ patrol_x; // +68
 _byte_ patrol_y; // +69
 _byte_ patrolRadius; // +70
 _byte_ facing; // +71
 _byte_ flags; // +72
 _dword_ movement_max; // +73
 _dword_ movement_curr; // +77
 _dword_ expa; // +81
 _word_ level; // +85
 _dword_ visited[10]; // +87 (0-learningStones, 1-marlettoTower, 2-gardenRevelation, 3-mercenaryCamp, 4-starAxis, 5-treeKnowldge, 6-libraryEnlightenment, 7-arena, 8-schoolMagic, 9-schoolWar)
 _dword_ shrineFlags[4]; // +127
 _byte_ levelSeed; // +143
 _byte_ lastWisdom; // +144
 _Army_ army; // +145
 _byte_ second_skill[28]; // +201
 _byte_ second_skill_show[28]; // +229 // secSkillPosition[28]
 _dword_ second_skill_count; // +257
 _dword_ temp_mod_flags; // + 261
 // _HeroFlags_ temp_mod_flags; // + 261
 float turnExperienceToRVRatio; // +265
 _byte_ dd_cast_this_turn; // +269
 _int32_ disguise_cast_power; // +270
 _int32_ fly_cast_power; // +274
 _int32_ waterwalk_cast_power; // +278
 _byte_ moraleBonus; // +282
 _byte_ luckBonus; // +283
 _byte_ is_sleeping; // +284
 _int32_ bounty; // +285
 _byte_ TownSpecialGrantedMask[8]; // +289 std::bitset<48> TownSpecialGrantedMask;
 _int32_ VisionsPower; // +297
 _Artifact_ doll_art[19]; // +301
 _byte_ free_add_slots; // +453
 _byte_ locked_slot[14]; // +454
 _Artifact_ backpack_art[64]; // +468
 _byte_ backpack_arts_count; // +980
 _dword_ female; // +981
 _bool8_ is_castom_biography; // +985
 _HStringF_ biography; // +986 std::string biography;
 _byte_ spells_spellbook[70]; // +1002
 _byte_ spells_available[70]; // +1072
 _byte_ primary_skill[4]; // +1142
 _int32_ aggression; // +1146
 _int32_ value_of_power; // +1150
 _int32_ value_of_duration; // +1154
 _int32_ value_of_knowledge; // +1158
 _int32_ value_of_spring; // +1162
 _int32_ value_of_well; // +1166
Code:
 // * Hero structure on the adventure mapstruct H3Hero
 {
 // * +0
 INT16   x;
 // * +2
 INT16   y;
 // * +4
 INT16   z;
 // * +6
 // * used when the current hero is active and appears on H3MapItem
 BOOL8    isVisible;
 // * +7
 // * used to show / hide active hero
 H3Position  mixedPosition;
 // * +B
 // * true if there is an object below the hero
 BOOL8    objectBelow;
 // * +C
 // * the type of H3MapItem under hero
 INT32   objectTypeUnder;
 protected:
 // * +10
 // * ??? related to H3MapItem under hero
 UINT32  _flag;
 public:
 // * +14
 // * setup of H3MapItem under the hero
 UINT32  objectBelowSetup;
 // * +18
 // * the number of spellpoints
 INT16   spellPoints;
 public:
 // * +1A
 // * 0~156, has to match class, cannot be used to change specialty
 INT32    id;
 protected:
 h3unk    _f_1E[4]; // set at 4D8DB1, unknown
 public:
 // * +22
 // * 0 ~ 7 Red ~ Pink
 INT8    owner;
 // * +23
 // * the hero's name
 CHAR    name[13];
 // * +30
 // * 0 ~ 0x11 Knight ~ Elementalist
 // * 0x12 boat sprite no class - can't navigate water (more sprites after but can crash)
 INT32   hero_class;
 // * +34
 // * the id of the hero's portrait, 0 ~ 156
 UINT8   picture;
 // * +35
 // * the planned x destination
 INT32    dest_x;
 // * +39
 // * the planned y destination
 INT32    dest_y;
 // * +3D
 // * the planned z destination
 INT32    dest_z;
 protected:
 h3unk    _f_41[3];
 public:
 // * +44
 // * starting x position
 UINT8   patrol_x;
 // * +45
 // * starting y position
 UINT8   patrol_y;
 // * +46
 // * the radius for patrolling, -1 means no range limit
 UINT8   patrolRadius;
 protected:
 h3unk    _u3;       // +47 = ???
 UINT8   _flags;    // +48 = ???
 public:
 // * +49
 // * the maximum movement points of the hero on a given turn
 INT32   maxMovement;
 // * +4D
 // * the remaining movement points of the hero on a given turn
 INT32   movement;
 // * +51
 // * the current experience of the hero
 INT32    experience;
 // * +55
 // * the current level of the hero
 INT16   level;
 protected:
 // * +57
 // * bitfields of 32 visited object types per hero
 H3Bitfield  learningStones;
 // * +5B
 // * bitfields of 32 visited object types per hero
 H3Bitfield  marlettoTower;
 // * +5F
 // * bitfields of 32 visited object types per hero
 H3Bitfield  gardenRevelation;
 // * +63
 // * bitfields of 32 visited object types per hero
 H3Bitfield  mercenaryCamp;
 // * +67
 // * bitfields of 32 visited object types per hero
 H3Bitfield  starAxis;
 // * +6B
 // * bitfields of 32 visited object types per hero
 H3Bitfield  treeKnowldge;
 // * +6F
 // * bitfields of 32 visited object types per hero
 H3Bitfield  libraryEnlightenment;
 // * +73
 // * bitfields of 32 visited object types per hero
 H3Bitfield  arena;
 // * +77
 // * bitfields of 32 visited object types per hero
 H3Bitfield  schoolMagic;
 // * +7B
 // * bitfields of 32 visited object types per hero
 H3Bitfield  schoolWar;
 UINT8    _7F[16];
 public:
 // * +8F
 // * the seed for skill tree, 1~255
 UINT8    levelSeed; // +8F
 protected:
 UINT8    _f90;
 public:
 // * +91
 // * the creatures of the hero
 H3Army army;
 // * +C9
 // * the level of each secondary skill
 INT8   secSkill[28];
 // * +E5
 // * the order in which to display SSkills (1,2,3,...)
 INT8   secSkillPosition[28];
 // * +101
 // * the number of secondary skills the hero has
 INT32  secSkillCount;
 // * +105
 // * temporary hero flags
 H3HeroFlags  flags;
 protected:
 UINT8  _u6[4];   // +109
 public:
 // * +10D
 // * the number of times dimension door was cast this day
 INT8    dimDoorCastCount; // +10D
 // * +10E
 // * the spell expertise of disguise that was cast
 INT32   disguisePower;  // +10E
 // * +112
 // * the spell expertise of fly that was cast
 INT32    flyPower;    // +112
 // * +116
 // * the spell expertise of waterwalk that was cast
 INT32    waterwalkPower; // +116
 protected:
 INT8    _DMorale1; // +11A ???
 INT8    _DLuck;    // +11B
 INT8    isSleeping;    // +11C
 UINT8  _u7[12]; // 11D
 INT32    visionPower; // +129
 public:
 // * +12D
 // * the 19 artifacts on a hero
 H3Artifact bodyArtifacts[19];
 protected:
 // * +1C5
 // * ?
 UINT8    freeAddSlots;
 public:
 // * +1C6
 // * whether an artifact slot is blocked or not
 UINT8    blockedArtifacts[14];
 // * +1D4
 // * the 64 artifacts in the backpack
 H3Artifact backpackArtifacts[64];
 // * +3D1
 // * the number of artifacts in the backpack
 UINT8    backpackCount;
 // * +3D5
 // * male or female
 INT32    gender;
 // * +3D9
 // * has custom bibliography?
 BOOL8    customBiblio;
 // * +3DA
 // * custom bibliography
 H3String bibliography;
 // * +3EA
 // * Spells the hero has learned
 INT8   learned_spell[70];
 // * +430
 // * Spells the hero has access to through artifacts
 INT8   available_spell[70];
 // * +476
 // * the four primary skills, attack, defense, spell power, knowledge
 INT8   primarySkill[4];
 protected:
 // * +47A
 // * AI stuff
 UINT8  _u8[24];
Code:
 struct _Hero_Word  X                        ;    00
 Word  Y                        ;    02
 Word  L                        ;    04
 Byte  Visible                    ;    06    1 - есть на карте (внутри города или не активен)
 Dword MapItemXYZ                ;    07    mui_xyz - used to show / hide active hero
 Byte  objectBelow                ;    0B    true if there is an object below the hero
 Dword Тип_объекта_в_котором_стоит_герой        ;    0C    miu_object_type
 Dword Маска_доступа                ;    10    miu_object_c_flag (бит 10h - вход)
 Dword Контрольное_слово_объекта_в_котором_стоит_герой;    14    miu_setup
 Word  Баллы_заклинаний                ;    18    spell_points
 Dword Номер                    ;    1A    id
 Dword Индекс                    ;    1E    hero_code
 Byte  Хозяин                    ;    22    owner_id
 Char  Имя, 13                    ;    23    name[13]
 Dword Класс                    ;    30    class
 Byte  Номер_портрета                ;    34    pic
 Dword dest_x                    ;    35    aim_x - the planned x destination - targetX
 Dword dest_y                    ;    39    aim_y - the planned y destination - targetY
 Word dest_z                    ;    3D    aim_z - the planned z destination - targetZ
 Word last_magic_school_level            ;    3F    last_magic_school_level - Последний из уровней, на переходе на который предложили магию стихии
 db ?,?,?                    ;    41    target_is_critical
 Byte patrol_x                    ;    44    starting x position
 Byte patrol_y                    ;    45    starting y position
 Byte patrolRadius                ;    46    the radius for patrolling, -1 means no range limit
 Byte facing                    ;    47
 Byte formation                    ;    48    flags
 Dword Полные_MovePoints                ;    49    movement_points_max - maxMobility
 Dword Оставшиеся_MovePoints            ;    4D    movement_points - currMobility
 Dword Опыт                    ;    51    expa - experience
 Word  Уровень                    ;    55    level
 Dword Биты_посещённости_Камней_Знаний        ;    57    visited.learningStones - TrainingGroundFlags
 Dword Биты_посещённости_Башен_Марлетто        ;    5B    visited.marlettoTower - DefenseTowerFlags
 Dword Биты_посещённости_Садов_Откровения    ;    5F    visited.gardenRevelation - GardenOfRevelationFlags
 Dword Биты_посещённости_Лагерей_Наёмников    ;    63    visited.mercenaryCamp - MercCampFlags
 Dword Биты_посещённости_Звёздных_Колёс        ;    67    visited.starAxis - starAxisFlags
 Dword Биты_посещённости_Древ_Знаний        ;    6B    visited.treeKnowldge - treeOfKnowledgeFlags
 Dword Биты_посещённости_Библиотек_Просвещения    ;    6F    visited.libraryEnlightenment - libraryOfEnlightmentFlags
 Dword Биты_посещённости_Арен            ;    73    visited.arena - ArenaFlags
 Dword Биты_посещённости_Школ_Магии        ;    77    visited.schoolMagic - MagicSchoolFlags
 Dword Биты_посещённости_Школ_Войны        ;    7B    visited.schoolWar - WarSchoolFlags
 Dword Биты_посещённости_Колизеев_Магов        ;    7F    UniversityFlags
 Dword Биты_посещённости_Беседки            ;    83    Shrine1Flags
 Dword Биты_посещённости_Толкователя_Снов    ;    87    Shrine2Flags
 Dword Биты_посещённости_Лачуги_Отшельника    ;    8B    Shrine3Flags
 Byte random_number_for_level_up_seed        ;    8F    iLevelSeed
 Byte last_wisdom_level                ;    90    lastWisdom - Последний из уровней, на переходе на который предложили мудрость
 Dword Тип_существ_в_слоте_0            ;    91    heroArmy
 Dword Тип_существ_в_слоте_1
 Dword Тип_существ_в_слоте_2
 Dword Тип_существ_в_слоте_3
 Dword Тип_существ_в_слоте_4
 Dword Тип_существ_в_слоте_5
 Dword Тип_существ_в_слоте_6
 Dword Количество_существ_в_слоте_0
 Dword Количество_существ_в_слоте_1
 Dword Количество_существ_в_слоте_2
 Dword Количество_существ_в_слоте_3
 Dword Количество_существ_в_слоте_4
 Dword Количество_существ_в_слоте_5
 Dword Количество_существ_в_слоте_6
 Byte  Уровень_Поиска_Пути            ;    C9    second_skill[28] - SSLevel[28]
 Byte  Уровень_Меткости                ;    CA
 Byte  Уровень_Логистики                ;    CB
 Byte  Уровень_Разведки                ;    CC
 Byte  Уровень_Дипломатии            ;    CD
 Byte  Уровень_Навигации                ;    CE
 Byte  Уровень_Лидерства                ;    CF
 Byte  Уровень_Мудрости                ;    D0
 Byte  Уровень_Мистицизма            ;    D1
 Byte  Уровень_Удачи                ;    D2
 Byte  Уровень_Осадное_дело            ;    D3
 Byte  Уровень_Зоркости                ;    D4
 Byte  Уровень_Некромантии            ;    D5
 Byte  Уровень_Имущества                ;    D6
 Byte  Уровень_Магии_Огня            ;    D7
 Byte  Уровень_Магии_Воздуха            ;    D8
 Byte  Уровень_Магии_Воды            ;    D9
 Byte  Уровень_Магии_Земли            ;    DA
 Byte  Уровень_Грамотности            ;    DB
 Byte  Уровень_Тактики                ;    DC
 Byte  Уровень_Артиллерии            ;    DD
 Byte  Уровень_Обучаемости            ;    DE
 Byte  Уровень_Нападения                ;    DF
 Byte  Уровень_Обороны                ;    E0
 Byte  Уровень_Интеллекта            ;    E1
 Byte  Уровень_Волшебства            ;    E2
 Byte  Уровень_Сопротивления            ;    E3
 Byte  Уровень_Первой_Помощи            ;    E4
 Порядок_отображения_вторичных_навыков db 28 dup (?)    ;E5    second_skill_show[28] - SSOrder[28]
 Dword Количество_вторичных_навыков        ;    101    second_skill_count - numSSs
 Dword Временные_модификаторы            ;    105    temp_mod_flags (HE:R7) - flags
 dd ?                        ;    109    turnExperienceToRVRatio
 Byte  dimDoorCastCount                ;    10D    dWalkSpellsCast - the number of times dimension door was cast this day
 Dword disguisePower                ;    10E    disguiseLevel - the spell expertise of disguise that was cast
 Dword flyPower                    ;    112    flightLevel - the spell expertise of fly that was cast
 Dword waterwalkPower                ;    116    waterWalkPower - the spell expertise of waterwalk that was cast
 Byte  Мораль_до_следующей_битвы            ;    11A    d_morale_1 - moraleBonus
 Byte  Удача_до_следующей_битвы            ;    11B    d_luck_1 - luckBonus
 Byte  isSleeping                ;    11C    IsSleeping
 dd ?                        ;    11D    bounty
 dd ?                        ;    121    std::bitset<48> TownSpecialGrantedMask
 dd ?
 Dword visionPower                ;    129    visionsPower
 Dword Артефакт_в_слоте_головы            ;    12D    doll_art[19] - type_artifact equipped[19]
 Dword CustomData_в_слоте_головы
 Dword Артефакт_в_слоте_плеч
 Dword CustomData_в_слоте_плеч
 dd ?; слот амулет
 dd ?
 dd ?; слот оружия
 dd ?
 dd ?; слот щит
 dd ?
 dd ?; слот доспех
 dd ?
 Dword Артефакт_в_слоте_правого_кольца
 Dword CustomData_в_слоте_правого_кольца
 Dword Артефакт_в_слоте_левого_кольца
 Dword CustomData_в_слоте_левого_кольца
 Dword Артефакт_в_слоте_ног
 Dword CustomData_в_слоте_ног
 Dword Артефакт_в_слоте_разного_1
 Dword CustomData_в_слоте_разного_1
 Dword Артефакт_в_слоте_разного_2
 Dword CustomData_в_слоте_разного_2
 Dword Артефакт_в_слоте_разного_3
 Dword CustomData_в_слоте_разного_3
 Dword Артефакт_в_слоте_разного_4
 Dword CustomData_в_слоте_разного_4
 Dword Артефакт_в_слоте_Баллисты
 Dword CustomData_в_слоте_Баллисты
 Dword Артефакт_в_слоте_Подводы
 Dword CustomData_в_слоте_Подводы
 Dword Артефакт_в_слоте_Палатки
 Dword CustomData_в_слоте_Палатки
 Dword Артефакт_в_слоте_Катапульты
 Dword CustomData_в_слоте_Катапульты
 Dword Артефакт_в_слоте_Книги
 Dword CustomData_в_слоте_Книги
 Dword Артефакт_в_слоте_разного_5
 Dword CustomData_в_слоте_разного_5
 Byte  Количество_пустых_доп_слотов_слева    ;    1C5    freeAddSlots
 Маска_заблокированных_слотов db 14 dup (?)    ;    1C6    locked_slot[14] - whether an artifact slot is blocked or not
 Артефакты_рюкзака dd 64*2 dup (?)        ;    1D4    type_artifact artifacts[64] - the 64 artifacts in the backpack
 Byte  Количество_артефактов_в_рюкзаке        ;    3D4    backpackArtsAmount - the number of artifacts in the backpack
 Dword Пол                    ;    3D5    gender - female
 Byte  Есть_пользовательская_биография        ;    3D9    has_biography - bioCustomized
 Dword Биография_строка                ;    3DA    std::string biography
 Dword Биография_строка_                ;    3DE
 Dword Биография_строка__            ;    3E2
 Dword Биография_строка___            ;    3E6
 Заклинания_в_книге_магии db 70 dup (?)        ;    3EA    available_spells_in_spellbook[70]
 Заклинания_от_артов db 70 dup (?)        ;    430    available_spells_with_arts[70]
 Byte  Атака                    ;    476    primarySkill[4]
 Byte  Защита                    ;    477
 Byte  Колдовская_Сила                ;    478
 Byte  Знание                    ;    479
 db 24 dup (?)                    ;    47A    aggression
 ends
Попросили выложить сюда и структуру стека  - выкладываю.
 
Code:
 struct _CombatMon_{  // размер 0x548// +00 db (1) когда отаковал уже(?)
 // +01 db
 // +02 db (0C) 44188C
 // +03 db
 // +08 dd = полное число стеков у игрока
 // +10 dd =-1 после атаки и/или ответа(????)
 // +1С dd = позиция на поле боя (куда бежать/стрелять)
 // +20 db = огненный щит
 // +28 dd = -1 (номер стэка клона этого)
 // +30 db 43E33C
 int   Type;        // +34 dd = тип монстра
 int   Pos;         // +38 dd = позиция монстра на поле боя (куда атакует)
 // +3C dd = заклинания
 // +40 dd 43E236
 // +44 dd (=1) сдвиг в сторону второй занятой клетки для монстра с двумя клетками
 int   MonNum;      // +4C - число монстров
 // +50 - число монстров до удара по ним в тек. атаку
 int   LostLastHP;  // +58 - потери здоровья последнего монстра
 // +5C - номер слота героя (0...6), -1 - будет удален после битвы
 int   MonNum0;     // +60 - число монстров в начале битвы
 // +6C - полное здоровье (исп. как база для лечения)
 // +70 dd 44150F 441744
 // +74 dd -1 для продвинутых элементалей
 // +78 dd = уровень существа (0...6)
 Dword Flags;       // +84
 // 00000001 - 0x00 DOUBLE_WIDE - занимает 2 клетки
 // 00000002 - 0x01 летает
 // 00000004 - 0x02 стреляет
 // 00000008 - 0x03 расширенный радиус атаки (на две клетки)
 // 00000010 - 0x04 живое существо (можно восстанавливаться вампиру)
 // 00000020 - 0x05 CATAPULT - может разрушать стены
 // 00000040 - 0x06 SIEGE_WEAPON - осадное оружие - не двигается (5508CB)
 // 00000080 - 0x07 KING_1
 // 00000100 - 0x08 KING_2
 // 00000200 - 0x09 KING_3
 // 00000400 - 0x0A ??? 00020000 + 40,41,83 - не чуствителен к псих атаке
 // 00000800 - 0x0B нет описания (35,74,75)
 // 00001000 - 0x0C в ближнем бою бьет как в дальнем
 // 00002000 - 0x0D ----
 // 00004000 - 0x0E ??? IMMUNE_TO_FIRE_SPELLS
 // 00008000 - 0x0F стреляет дважды
 // 00010000 - 0x10 атака без ответа
 // 00020000 - 0x11 ... не подвержен низкой морали (?)
 // 32,33,56-69,112-117,120,121,123,,125,127,129,141,145-149
 // 00040000 - 0x12 нечисть
 // 00080000 - 0x13 бьет всех врагов рядом
 // 00100000 - 0x14 расширенный радиус стреляющих юнитов
 // 00200000 - 0x15 стэк убит? 41E617 чародей,firebird - может еще кастовать?
 // 00400000 - 0x16 421BDC,421FC4 (что-то с вызовом)
 // 00800000 - 0x17 копия стэку - умирает сразу
 // 01000000 - 0x18 гарпии-ведьмы
 // 02000000 - 0x19 остался(уже) ждать СБРОСИТЬ - МОЖЕТ ЖДАТЬ СНОВА
 // 04000000 - 0x1A уст. после атаки СБРОСИТЬ - ВНОВЬ МОЖЕТ ОТАКОВАТЬ
 // 08000000 - 0x1B - выбрал защиту
 // 10000000 - 0x1C - не может быть ресуректен ???
 // 20000000 - 0x1D + 43DFAF
 // 40000000 - 0x1E + 43E06F
 // 80000000 - 0x1F дракон
 //  int   FullHP;      // +B0 dd = ???
 int   HitPoints;   // +C0 dd = здоровье монстра
 int   Speed;       // +С4 dd = скорость монстра
 int   Attack;      // +C8 dd = атака с бонусами
 int   Defence;     // +CC dd = защита с бонусами
 // +D0 dd = мин. дамэдж
 // +D4 dd = макс. дамэдж
 // +D8 dd = количество выстрелов
 // +DC dd = количество заклинаний 0=нет ДЛЯ ВОСКРЕШЕНИЯ УВЕЛИЧИТЬ
 // +E8 db =
 // +E9 db = 1, если умирал хоть один
 // +EA db = 1, если был убит весь стэк
 // +EC dd = номер заклинания существа в тек раунде 0x50 Acid breath
 // +F0 db=1 перед атакой на него 441434
 // +F4 dd (0,1) индекс игрока 0 или 1 4414AF 443D69
 // +F8 dd = номер стэка у стороны на поле боя
 // +FC dd = ? что-то с магией
 // +100 dd 43DEA4
 // +104 dd 43DEAD
 // +108 dd
 // +158 dd =?
 // +164 dd -> ctroll.def (троль)
 Byte *ShootDef;    // +168 - загруж.деф. для стреляющих (иниц в 43DA8E)
 // +16C
 // +194 dd = количество уже наложенных заклинаний
 // +198 dd*? (есть заклинание (длительность) или нет по номерам)
 //  +198 dd = Summon Boat
 //  +19C dd = Scuttle Boat
 //  +1A0 dd = Visions
 //  +1A4 dd = View Earth
 //  +1A8 dd = Disguise
 //  +1AC dd = View Air
 //  +1B0 dd = Fly
 //  +1B4 dd = Water Walk
 //  +1B8 dd = Dimension Door
 //  +1BC dd = Town Portal
 
 //  +1C0 dd = Quicksand
 //  +1C4 dd = Land Mine
 //  +1C8 dd = Force Field
 //  +1CC dd = Fire Wall
 //  +1D0 dd = Earthquake
 //  +1D4 dd = Magic Arrow
 //  +1D8 dd = Ice Bolt
 //  +1DC dd = Lightning Bolt
 //  +1E0 dd = Implosion
 //  +1E4 dd = Chain Lightning
 //  +1E8 dd = Frost Ring
 //  +1EC dd = Fireball
 //  +1F0 dd = Inferno
 //  +1F4 dd = Meteor Shower
 //  +1F8 dd = Death Ripple
 //  +1FC dd = Destroy Undead
 //  +200 dd = Armageddon
 //  +204 dd = Shield
 //  +208 dd = Air Shield
 //  +20C dd = fire Shield
 //  +210 dd = Protection from Air
 //  +214 dd = Protection from Fire
 //  +218 dd = Protection from Water
 //  +21C dd = Protection from Earth
 //  +220 dd = Anti-Magic
 //  +224 dd = Dispel
 //  +228 dd = Magic Mirror
 //  +22C dd = Cure
 //  +230 dd = Resurrection
 //  +234 dd = Animate Dead
 //  +238 dd = Sacrifice
 //  +23C dd = Bless
 //  +240 dd = Curse
 //  +244 dd = Bloodlust
 //  +248 dd = Precision
 //  +24C dd = Weakness
 //  +250 dd = Stone Skin
 //  +254 dd = Disrupting Ray
 //  +258 dd = Prayer
 //  +25C dd = Mirth
 //  +260 dd = Sorrow
 //  +264 dd = Fortune
 //  +268 dd = Misfortune
 //  +26C dd = Haste
 //  +270 dd = Slow
 //  +274 dd = Slayer
 //  +278 dd = Frenzy
 //  +27C dd = Titan's Lightning Bolt
 //  +280 dd = Counterstrike
 //  +284 dd = Berserk
 //  +288 dd = Hypnotize
 //  +28C dd = Forgetfulness
 //  +290 dd = Blind
 //  +294 dd = Teleport
 //  +298 dd = Remove Obstacle
 //  +29C dd = Clone
 //  +2A0 dd = Fire Elemental
 //  +2A4 dd = Earth Elemental
 //  +2A8 dd = Water Elemental
 //  +2AC dd = Air Elemental
 
 //  +2B0 dd = Stone   443D3A 43E0EB 441B0D (!= не отв. на атаку)
 //  +2B4 dd = Poison
 //  +2B8 dd = Bind
 //  +2BC dd = Desease
 //  +2C0 dd = Paralyze
 //  +2C4 dd = Aging
 //  +2C8 dd = Death Cloud
 //  +2CC dd = Thunderbolt
 //  +2D0 dd = Dispel
 //  +2D4 dd = Death Stare
 //  +2D8 dd = Acid Breath
 // +2DC dd*? (сила действия заклинания)
 //  +2DC dd = Summon Boat
 //  +2E0 dd = Scuttle Boat
 //  +2E4 dd = Visions
 //  +2E8 dd = View Earth
 //  +2EC dd = Disguise
 //  +2F0 dd = View Air
 //  +2F4 dd = Fly
 //  +2F8 dd = Water Walk
 //  +2FC dd = Dimension Door
 //  +300 dd = Town Portal
 
 //  +304 dd = Quicksand
 //  +308 dd = Land Mine
 //  +30C dd = Force Field
 //  +310 dd = Fire Wall
 //  +314 dd = Earthquake
 //  +318 dd = Magic Arrow
 //  +31C dd = Ice Bolt
 //  +320 dd = Lightning Bolt
 //  +324 dd = Implosion
 //  +328 dd = Chain Lightning
 //  +32C dd = Frost Ring
 //  +330 dd = Fireball
 //  +334 dd = Inferno
 //  +338 dd = Meteor Shower
 //  +33C dd = Death Ripple
 //  +340 dd = Destroy Undead
 //  +344 dd = Armageddon
 //  +348 dd = Shield
 //  +34C dd = Air Shield
 //  +350 dd = fire Shield
 //  +354 dd = Protection from Air
 //  +358 dd = Protection from Fire
 //  +35C dd = Protection from Water
 //  +360 dd = Protection from Earth
 //  +364 dd = Anti-Magic
 //  +368 dd = Dispel
 //  +36C dd = Magic Mirror
 //  +370 dd = Cure
 //  +374 dd = Resurrection
 //  +378 dd = Animate Dead
 //  +37C dd = Sacrifice
 //  +380 dd = Bless
 //  +384 dd = Curse
 //  +388 dd = Bloodlust
 //  +38C dd = Precision
 //  +390 dd = Weakness
 //  +394 dd = Stone Skin
 //  +398 dd = Disrupting Ray
 //  +39C dd = Prayer
 //  +3A0 dd = Mirth
 //  +3A4 dd = Sorrow
 //  +3A8 dd = Fortune
 //  +3AC dd = Misfortune
 //  +3B0 dd = Haste
 //  +3B4 dd = Slow
 //  +3B8 dd = Slayer
 //  +3BC dd = Frenzy
 //  +3C0 dd = Titan's Lightning Bolt
 //  +3C4 dd = Counterstrike
 //  +3C8 dd = Berserk
 //  +3CC dd = Hypnotize
 //  +3D0 dd = Forgetfulness
 //  +3D4 dd = Blind
 //  +3D8 dd = Teleport
 //  +3DC dd = Remove Obstacle
 //  +3E0 dd = Clone
 //  +3E4 dd = Fire Elemental
 //  +3E8 dd = Earth Elemental
 //  +3EC dd = Water Elemental
 //  +3F0 dd = Air Elemental
 
 //  +3F4 dd = Stone   443D3A 43E0EB 441B0D (!= не отв. на атаку)
 //  +3F8 dd = Poison
 //  +3FC dd = Bind
 //  +400 dd = Desease
 //  +404 dd = Paralyze
 //  +408 dd = Aging
 //  +40C dd = Death Cloud
 //  +410 dd = Thunderbolt
 //  +414 dd = Dispel
 //  +418 dd = Death Stare
 //  +41C dd = Acid Breath
 
 // +444 dd ->
 // +448 dd (2)
 // +44C dd
 // +454 dd 441B17 (кол-во ответов на атаку 0= не отв. на атаку)
 // настройка для грифонов 46D6A0
 // КОЛИЧЕСТВО ОТВЕТОВ НВ АТАКУ
 // +458 dd Bless добавка к Max. Damage
 // +45C dd Curse убавка к Min. Damage
 // +464 dd Bloodlast добавка к Атаке с бонусами
 // +468 dd Precision добавка к Атаке с бонусами
 // +48C dd KING_123 тип (1=KING_1,2=KING_2,3=KING_3)
 //   исп для расчета Slayer. Бонус 8 к Атаке: 0x4421D2
 // +490 dd номер атакера по порядку??? уже атаковал??? (сбрасывается после первого удара)
 // +494 dd кол. доп. ответов на атаку, добавленных Counerstrike заклом
 // +4A4 dd
 // +4C0 db Blinded - снизить защиту (сбросить после?) при атаке на него (уст. перед ударом)
 // +4C1 db Paralized - снизить защиту (сбросить после?) при атаке на него (уст. перед ударом)
 // +4C2 dd Forgetfulness - уровень (>2 - не может стрелять)
 // +4DC dd = величина бонуса при выборе защиты
 // +4E0 dd заклинание для сказ дракона
 // +4EC dd 44152A
 // +4F1 db 43DF88
 
 // +514 dd
 // +518 dd -> dd first \ adjusted stacks pointers
 // +51C dd -> dd last  /
 
 // +524 dd
 // +528 dd -> dd first \ adjusted to wich stacks pointers
 // +52C dd -> dd last  /
 };
Code:
 bm+54CC Монстры (42 штуки) (см. _CombatMon_)размер 548h
 +00 db (1) когда отаковал уже(?)
 +01 db
 +02 db (0C) 44188C
 +03 db
 +08 dd = полное число стеков у игрока
 +08 db = Видимость существа (4 - виден, 8 - не виден)
 Комментарий DracoLich'а: Отряды теряют невидимость при любом действии на поле боя. Но ее межно восстановить в триггере !?BG1 - ShadowTheAge
 // +10 dd =-1 после атаки и/или ответа(????)
 // +1С dd = позиция на поле боя (куда бежать/стрелять)
 // +20 db = огненный щит
 +10 dd = ? (-1 когда существо может атаковать стены замка и курсор над стеной, когда курсор над клеткой)
 +14 dd = ? (255 когда существо может атаковать стены замка и курсор над стеной)
 +20 db = Анимация закла показывается на этом монстре
 +21 db = В движении??
 +24 dd = ?
 +28 dd = Номер стека-клона
 +2C dd = ?
 // +30 db 43E33C
 +30 dd? = Есть ли цифры количества существ? 0-есть, 1-нет.
 Комментарий DracoLich'а: отряд не имеет обозначения кол-ва существ, пока не походит. При этом на него можно колдовать магию и бить. Кол-во показывается при щелчке правой кнопки в нижнем правом углу картинки (где обычно, в общем). Аналогичное возражение - ShadowTheAge
 +34 dd = Тип существа
 Комментарий DracoLich'а: параметры отряда становятся как у существа, номер которого поставлен, но сразу же снижаются до стандартных параметров сущ-ва, которое меняют. имя отряда в меню при щелчке правой кнопкой по существу меняется; когда его бьют - имя остается измененным. когда битва окончена - на картинке будет показан настроенный отряд, а не старый. Если изменить тип существа, битву становится невозможно выиграть (вроде как комп требует убить того, на кого нападал, и изменения типа существ = вызову изменнного существа). Действительно проблема, делающая параметр почти бесполезным - ShadowTheAge
 +38 dd = Позиция существа (если сменить, на старом месте останется стоять копия. Копия не может ходить и быть атакованой, занимает место)
 +3C dd = Номер анимации
 Комментарий DracoLich'а: при значение 2,6,9... (много еще где) игра выдает черный экран; кадры берутся в том порядке, как и при создании (надо бы найти хелп по дефмейкеру, где описан каждый шаг, и выдрать оттуда). Не сталкивался почему-то... - ShadowTheAge
 +40 dd = Номер кадра в анимации
 Анимация возвращается к нормальной, если навести мышкой
 // +44 dd (=1) сторона сдвига второй занятой клетки для монстра с двумя клетками
 +48 dd = ?
 +4C dd = Количество существ
 +50 dd = Число монстров до удара по ним в тек. атаку.  Количество существ для отображения (может не совпадать с количеством. В этом случае написано будет одно, а реально другое). По умолчанию -1 - значит "полностью совпадает с реальным".
 Комментарий DracoLich'а: после того, как любое сущ-во попадет под атаку, данному значению станет равно количество реальное; в итогах битвы показывается реальное количество убитых; при атаке измененного существа фантомные монстры не учитываются (т.е. если изменить 10 монстров на 100 этой командой, то урон будет нанесен именно этим 10). Поступаем как и с невидимостью - ShadowTheAge
 +54 dd = безвозвратные потери. Количество существ после выигранной битвы (или после откупа) равно "текущее количество существ" минус "безвозвратные потери". Потери могут быть записаны в безвозвратные при использовании, например, после воскрешения на уровне none или basic. - by Demiurg
 +58 dd = Разница между текущим здоровьем и полным. Если 0 значит стек здоров.
 +5C dd = номер слота героя (0...6), -1 - будет удален после битвы
 +60 dd = Количество существ в начале боя
 +64 dd = ?
 +68 dd = ?
 +6C dd = полное здоровье (исп. как база для лечения)
 +70 dd = выпала удача
 +74 dd = Город-владелец
 +78 dd = Уровень существа
 +7C dd = У ShadowTheAge тут флаги существа
 +80 dd = ?
 +84 dd = Флаги существа (BM:F)
 +88 dd = Название существа
 +8C dd = Название существа (множественное число)
 +90 dd = Строка состояния (например "Нет штрафа рукопашной")
 
 +C0 dd = Здоровье (полное)
 +C4 dd = Скорость
 +C8 dd = Атака
 +CC dd = Защита
 +D0 dd = Мин. урон
 +D4 dd = Макс. урон
 +D8 dd = Боезапас
 +DC dd = Casts left
 +E0 dd = ?
 +E4 dd = ?
 +E8 dd = ? монстра нужно ударить Fire Shield'ом
 +E9 db = 1, если хоть раз монстра били
 +EA db = 1, если умирал хоть один
 +EB db = ? (возможно, 1, если был убит весь стэк)
 // +EC dd = номер заклинания существа в тек раунде 0x50 Acid breath
 // +F0 db=1 перед атакой на него 441434, 44016F
 +F4 dd = Сторона (BM:I)
 +F8 dd = Номер стэка у стороны на поле боя
 // +FC dd = ? что-то с магией
 +100 dd = Смещение существа по Y
 +104 dd = Смещение существа по X
 От того места где должен быть. В пикселях
 
 +14C dd = Смещение по оси OX прямоугольника с количеством существ.
 +150 dd = ?
 +154 dd = Частота проигрывания случайной анимации.
 Чем меньше тем чаще. Поставьте 200, будет без перерыва
 +158 dd = ?
 +15C dd = ?
 +160 dd = ?
 +164 dd = Анимация существа (загруженный def?)
 +168 dd = Анимация снаряда (загруженный def?)
 +16C dd = ?
 +170 dd = Звук перемещения (загруженный wav?)
 +174 dd = Звук атаки (загруженный wav?)
 +178 dd = Звук урона (загруженный wav?)
 +17C dd = Звук выстрела (загруженный wav?)
 +180 dd = Звук смерти (загруженный wav?)
 +184 dd = Звук защиты (загруженный wav?)
 +188 dd = ?
 +18C dd = ?
 +190 dd = ?
 +194 dd = Кол-во активных заклинаний (для отображения цвета кол-ва существ)
 +198 dd*51h = Spells duration (81 spell)
 +2DC dd*51h = Spells level (81 spell)
 +420 dd = ?
 
 +44C dd = Кол-во активных заклинаний (Для отображения при щелчке правой кнопкой)
 
 +454 dd = Number of retaliations
 +458 dd Bless добавка к Max. Damage
 +45C dd Curse убавка к Min. Damage
 +460 dd AntiMagicEffect
 +464 dd Bloodlust добавка к Атаке с бонусами
 +468 dd Precision добавка к Атаке с бонусами
 +46C dd WeaknessAddedEffect
 +470 dd StoneSkinAddedBonus
 +478 dd PrayerAddedBonus
 +47C dd MirthEffect
 +480 dd SorrowEffect
 +484 dd FortuneEffect
 +488 dd MisfortuneEffect
 +48C dd KING_123 тип (1=KING_1, 2=KING_2, 3=KING_3) исп для расчета Slayer. Бонус 8 к Атаке: 0x4421D2
 +490 dd Кол-во пройденных клеток до удара
 +494 dd кол. доп. ответов на атаку, добавленных Counerstrike заклом
 +49C float = BlindCounterattackDamageMul
 +4A0 float = Fire Shield multiplier
 +4A8 float = ProtAirMul
 +4AC float = ProtFireMul
 +4B0 float = ProtWaterMul
 +4B4 float = ProtEarthMul
 +4B8 float = ShieldMul
 +4BC float = AirShieldMul
 +4C0 db Blinded - снизить дамаг удара при оживании (сбросить после?) при атаке на него (уст. перед ударом)
 +4C1 db Paralized - снизить дамаг удара при оживании (сбросить после?) при атаке на него (уст. перед ударом)
 
 +4C4 dd = forgetfulness level (>2 - не может стрелять)
 +4C8 float = slow multiplier
 +4CC dd = HasteAddedBonus (вычитается из скорости при снятии)
 +4D0 dd = DeseaseAddedEffect_Defence
 +4D4 dd = DeseaseAddedEffect_Attack
 // +4DC dd = величина бонуса при выборе защиты
 // +4E0 dd заклинание для сказ дракона
 +4E4 dd = MagicMirrorEffect
 +4E8 dd = Мораль существа
 +4EC dd = Удача существа  (44152A)
 Комментарий Demiurg'а: Мораль и удача пересчитывается при передаче хода другому существу. Поэтому полезно только для получения или проверки. Если очень нужно менять то можно делать это или перед атакой, или каждый ход - ShadowTheAge
 // +4F1 db 43DF88
 +508 dd = используется при снятии корней Дендроидов
 +50C dd = используется при снятии корней Дендроидов
 // +514 dd
 // +518 dd -> dd first \ adjusted stacks pointers
 // +51C dd -> dd last  /
 
 // +524 dd
 // +528 dd -> dd first \ adjusted to wich stacks pointers (used when Hypnotize is removed)
 // +52C dd -> dd last  /
edited by igrik 
Code:
 NOALIGN struct _BattleStack_ : _Struct_  // размер 0x548 = 1352 байта{
 _byte_ bShowAttackFrames;          // +0
 _byte_ bShowRangeFrames;           // +1
 _byte_ iShowAttackFrameType;       // +2
 _byte_ iNextFrameType;             // +3
 _byte_ iRemainingFrames;           // +4
 _byte_ field_05[3];  // +5 выравнивание стуктуры
 
 _int32_ iDrawPriority;             // +8
 _byte_ bShowTroopCount;            // +12 0x0C
 _byte_ field_0D[3];                // +13 0x0D выравнивание стуктуры
 
 _dword_ targetStackSide;           // +16 0x10
 _dword_ targetStackIndex;          // +20 0x14
 _dword_ targetAttackLimit;         // +24 0x18
 
 _int32_ targetGexID;               // 28 +0x1C  позициякуда бежать/стрелять
 
 _byte_ isFireshield;               // +32 0x20 огненный щит
 _byte_ field_21[3];  // +33 0x21  выравнивание стуктуры
 
 _int32_ clone_owner_stack_ix;          //+36
 _int32_ clone_index;                   // +40 0x28 (номер стэка клона этого)
 // _List_<_int32_>* clones;            // Заменяем поле. Теперь это список клонов стека.
 _dword_ clone_rounds_left_to_vanish;   // +44 0x2C (число раундов до исчезновения)
 
 _byte_ isMoving;  // +48 0x30
 _byte_ letsPretendImNotHere;       // +49 0x31
 _byte_ field_32[2];  // +50 0x30  выравнивание стуктуры
 
 _int32_ creature_id;               // +52 0x34 (тип монстра)
 _int32_ hex_ix;                    // +56 0x38  (позиция на поле боя)
 _int32_ def_group_ix;              // +60 0x3C
 _int32_ def_frame_ix;              // +64 0x40
 
 _dword_ orientation;               // +68 0x44 направление монстра (0-как атакующий, 1-как защитник)
 _dword_ walkDirection;             // +72 0x48 ?
 
 _int32_ count_current;             // +76 0x4C (число монстров)
 _int32_ count_before_attack;       // +80 0x50 (число монстров до удара по ним в тек. атаку)
 
 _dword_ count_battle_resurrected;  // +84 0x54
 
 _int32_ lost_hp;                   // +88 0x58 потери здоровья последнего монстра
 _int32_ army_slot_ix;              // +92 0x5C номер слота of _Army_ (0...6), -1 - будет удален после битвы
 _int32_ count_at_start;            // +96 0x60 число монстров в начале битвы
 
 _dword_ base_speed;                // +100 0x64 базовая скорость с бонусами земли, спецов и т.д. По ней видимо вычисляются ускорение и замедление
 
 _dword_ anim_value;                // +104 0x68 = cranim.f[15] при инициализации
 _int32_ full_hp;                   // +108 0x6C полное здоровье (исп. как база для лечения)
 
 _bool32_ isLucky;                  // +112 0x70 в этом раунде была удача
 
 //////////////////////////////////////////////////////////////////////////////////
 _CreatureInfo_ creature;
 //////////////////////////////////////////////////////////////////////////////////
 //_int_ town;  //+116 0x74
 //_int_ level;  //+120 0x78
 //_char_* sound_name;  //+124 0x7C
 //_char_* def_name;  //+128 0x80
 //_int_ flags;  //+132 0x84
 //_char_* name_single;  //+136 0x88
 //_char_* name_plural;  //+140 0x8C
 //_char_* specification_description;  //+144 0x90
 //_int_ cost_wood;  //+148 0x94
 //_int_ cost_mercury;  //+152 0x98
 //_int_ cost_ore;  //+156 0x9C
 //_int_ cost_sulfur;  //+160 0xA0
 //_int_ cost_crystal;  //+164 0xA4
 //_int_ cost_jems;  //+168 0xA8
 //_int_ cost_gold;  //+172 0xAC
 //_int_ fight_value;  //+176 0xB0
 //_int_ AI_value;  //+180 0xB4
 //_int_ growth;  //+184 0xB8
 //_int_ horde_growth;  //+188 0xBC
 //_int_ hit_points;  //+192 0xC0
 //_int_ speed;  //+196 0xC4
 //_int_ attack;  //+200 0xC8
 //_int_ defence;  //+204 0xCC
 //_int_ damage_min;  //+208 0xD0
 //_int_ damage_max;  //+212 0xD4
 //_int_ shots;  //+216 0xD8
 //_int_ spells_count;  //+220 0xDC
 //_int_ advmap_low;  //+224 0xE0
 //_int_ advmap_high;  //+228 0xE4
 ///////////////////////////////////////////////////////////////////////////////
 
 _byte_ show_fire_shield;       // +232 0xE8  (например у Ифритов он не отображается)
 _bool8_ isSomeKilled;          // +233 0xE9   =1, если умирал хоть один
 _bool8_ isAllKilled;           // +234 0xEA   =1, если был убит весь стэк
 
 _byte_ field_EB;  // +235 0xEB  выравнивание структуры
 
 _int32_ spellAfterAttack;    // +236 0xEC  номер заклинания существа в тек раунде 0x50 Acid breath
 
 _int32_ hitByCreature;         // +240 0xF0  _byte_=1 перед атакой на него 441434
 
 _int32_ side;                  // +244 0xF4  0 - attacker, 1 - defender
 _dword_ index_on_side;         // +248 F8 dd = номер стэка у стороны на поле боя
 
 _dword_ iLastFidgetTime;       // +252 FC dd = ? что-то с магией
 _dword_ ySpecialMod;           // +256 100 dd 43DEA4
 _dword_ xSpecialMod;           // +260 104 dd 43DEAD
 _dword_ bPowSequenceComplete;  // +264 108 dd
 _dword_ yModify;               // +268 10C dd
 
 _CreatureAnim_ cr_anim;        // +272 0x110
 _Def_* def;                    // +356 0x164 def монстра, загрузка: 43DA8E
 _Def_* def_shot;               // +360 0x168 def выстрела, загрузка: 43DA8E
 _dword_ image_height;          // +364 0x16С
 _Wav_* wav_move;               // +368 0x170 звук перемещения (move), загрузка: 43DA8E
 _Wav_* wav_attack;             // +372 0x174 звук атаки (attk/wnce/shot), загрузка: 43DA8E
 _Wav_* wav_wnce;               // +376 0x178 звук 'колдует' (wnce), загрузка: 43DA8E
 _Wav_* wav_shot;               // +380 0x17C звук выстрела (shot), загрузка: 43DA8E
 _Wav_* wav_kill;               // +384 0x180 звук смерти (kill), загрузка: 43DA8E
 _Wav_* wav_defend;             // +388 0x184 звук обороны (wnce/dfnd), загрузка: 43DA8E
 _Wav_* wav_ext1;               // +392 0x188 звук дополнительный 1 (ext1), загрузка: 43DA8E
 _Wav_* wav_ext2;               // +396 0x18С звук дополнительный 2 (ext2), загрузка: 43DA8E
 
 _dword_ turnsToNextMove;   // +400 0x190
 
 _int32_ active_spells_count;   // +404 0x194 dd = количество уже наложенных заклинаний
 _int32_ active_spell_duration[81]; // +408 0x198  есть заклинание (длительность) или нет
 _int32_ active_spells_power[81];   // +732 0x2DC (сила действия заклинания)
 
 _byte_ SpellInfluenceQueue[48];    // +1056 0x420 std::deque
 
 _int32_ PaletteEffect;         // +1104 0x450
 _int32_ retaliations;          // +1108 0x454 // 441B17 (кол-во ответов на атаку 0= не отв. на атаку)// настройка для грифонов 46D6A0
 _int32_ bless_value;           // +1112 0x458 Bless добавка к Max. Damage
 _int32_ curse_value;           // +1116 0x45C Curse убавка к Min. Damage
 _int32_ antimagic_value;       // +1120 0x460
 _int32_ bloodlast_value;       // +1124 0x464 Bloodlast добавка к Атаке с бонусами
 _int32_ precision_value;       // +1128 0x468 Precision добавка к Атаке с бонусами
 _int32_ weaknessPenalty;       // +1132 0x46C
 _int32_ stoneSkinBonus;        // +1136 0x470
 _int32_ disruptiverayPenalty;  // +1140 0x474
 _int32_ prayerBonus;           // +1144 0x478
 _int32_ mirthBonus;            // +1148 0x47C
 _int32_ sorrowPenalty;         // +1152 0x480
 _int32_ fortuneBonus;          // +1156 0x484
 _int32_ misfortunePenalty;     // +1160 0x488
 _int32_ slayerLevel;           // +1164 0x48C
 
 _int32_ steps_to_target;       // +1168 0x490 dd (шаги до цели)
 _int32_ counerstrike_retaliations; // +1172 0x494 dd кол. доп. ответов на атаку, добавленных Counerstrike заклом
 
 _int32_ frenzyAdjust;          // +1176 0x498
 _int32_ blindFactor;           // +1180 0x49C
 _int32_ fire_shield_strength;  // +1184 0x4A0
 _int32_ poison_penalty;        // +1188 0x4A4
 
 _int32_ protectionFromAirFactor;     // +1192 0x4A8
 _int32_ protectionFromFireFactor;    // +1196 0x4AC
 _int32_ protectionFromWaterFactor;   // +1200 0x4B0
 _int32_ protectionFromEarthFactor;   // +1204 0x4B4
 
 _int32_ shieldDamageFactor;    // +1208 0x4B8
 _int32_ airShieldDamageFactor; // +1212 0x4BC
 
 _bool8_ residualBlindness;     // +1216 0x4C0 db Blinded - снизить защиту (сбросить после?) при атаке на него (уст. перед ударом)
 _bool8_ residualParalyze;      // +1217 0x4C1 db Paralized - снизить защиту (сбросить после?) при атаке на него (уст. перед ударом)
 
 _bool8_ field4C2[2];  // +1218 0x4C2 выравнивание структур
 
 _int32_ forgetfulness_level;   // +1220 0x4C4 dd Forgetfulness - уровень (>2 - не может стрелять)
 _int32_ slowPenalty;           // +1224 0x4C8
 _int32_ hasteBonus;          // +1228 0x4CС
 
 _int32_ diseaseDefensePenalty; // +1232 0x4D0
 _int32_ diseaseAttackPenalty;  // +1236 0x4D4
 
 _byte_ isNativeTerrain;        // +1240 0x4D8
 _byte_ field_4C9[3]; // +1241 0x4D9 выравнивание структуры
 
 _int32_ defend_bonus;          // +1244 0x4DC dd = величина бонуса при выборе защиты
 _int32_ faerie_dragon_spell;   // +1248 0x4E0 dd заклинание для сказ дракона
 
 _int32_ magicMirrorChance;     // +1252 0x4E4
 _int32_ morale;                // +1256  0x4E8
 _int32_ luck;                  // +1260  0x4EC
 
 _byte_ resetOnThisRound;       // +1264 0x4F0
 _byte_ isAreaEffectTarget;   // +1265 0x4F1
 
 _byte_ field_4F2[2]; // +1266 0x4F2 выравнивание структуры
 
 _List_<_int32_> binder_clients;         // +1268 0x4F4 (bound_armies std::vector)
 _List_<_int32_> binder_sources;         // +1284 0x504 (binder std::vector)
 _List_<_int32_> aura_clients;           // +1300 0x514 (aura_clients std::vector)
 _List_<_int32_> aura_sources;           // +1316 0x524 (aura_clients std::vector)
 
 _int32_ AI_expected_damage;    // +1332 0x534
 _int32_ AI_target;             // +1336 0x538
 _int32_ AI_target_value;       // +1340 0x53C
 _int32_ AI_target_distance;    // +1344 0x540
 _int32_ AI_possible_targets;   // +1348 0x544
Code:
     // * monster information on battlefieldstruct H3CombatMonster
 {
 protected:
 h3unk _f_000[52];
 public:
 // * +34
 INT32 type;
 // * +38
 // * position on battlefield
 INT32 position;
 // * +3C
 INT32 animation;
 // * +40
 INT32 animationFrame;
 // * +44
 // * left or right
 INT32 secondHexOrientation;
 protected:
 h3unk _f_048[4];
 public:
 // * +4C
 // the number of creatures that are currently alive
 INT32 numberAlive;
 // * +50
 INT32 previousNumber;
 protected:
 h3unk _f_054[4];
 public:
 // * +58
 // * the number of lost hitpoints of top creature in stack
 INT32 healthLost;
 // * +5C
 // * ?reference to position on side?
 INT32 slotIndex;
 // * +60
 // * the number of creatures in this stack to compare against resurrection
 INT32 numberAtStart;
 protected:
 h3unk _f_064[8];
 public:
 // * +6C
 // * maximum hit points
 INT32 baseHP;
 // * +70
 INT32 isLucky;
 public:
 // * +74
 // * a copy of H3CreatureInformation using combat values in some places
 H3CreatureInformation info;
 protected:
 h3unk _f_0E8[4];
 public:
 // * +EC
 // * set in After-Hit spell subroutine 0x440220
 INT32 spellToApply;
 protected:
 h3unk _f_0F0[4];
 public:
 // * +F4
 // * left or right
 INT32 side;
 // * +F8
 //  * reference to position on side
 INT32 sideIndex;
 protected:
 // * +FC
 UINT32 last_animation_time;
 // * +100
 INT32 yOffset;
 // * +104
 INT32 xOffset;
 h3unk _f_108[8];
 // * +110 from cranim
 H3MonsterAnimation cranim;
 public:
 // * +164
 H3LoadedDef* def;
 protected:
 // * +168
 H3LoadedDef* shootingDef;
 h3unk _f_16C[4];
 // * +170
 UINT32 moveSound;
 // * +174
 UINT32 attackSound;
 // * +178
 UINT32 getHitSound;
 // * +17C
 UINT32 shotSound;
 // * +180
 UINT32 deathSound;
 // * +184
 UINT32 defendSound;
 // * +188
 UINT32 extraSound1;
 // * +18C
 UINT32 extraSound2;
 h3unk _f_190[4];
 public:
 // * +194
 // * the number of spells currently active
 INT32 activeSpellsNumber;
 // * +198
 // * the remaining number of turns of any spells
 INT32 activeSpellsDuration[81];
 // * +2DC
 // * the secondary skill level of applied spells
 INT32 activeSpellsLevel[81];
 protected:
 h3unk _f_420[52];
 public:
 // * +454
 // * number of retaliations left
 INT32 retaliations;
 // * +458
 // * information about some spell effects
 INT32 bless_damage;            // 0x458
 INT32 curse_damage;            // 0x45C
 INT32 anti_magic;              // 0x460
 INT32 bloodlust_effect;        // 0x464
 INT32 precision_effect;        // 0x468
 INT32 weakness_effect;         // 0x46C
 INT32 stone_skin_effect;       // 0x470
 INT32 unknown13;               // 0x474
 INT32 prayer_effect;           // 0x478
 INT32 mirth_effect;            // 0x47C
 INT32 sorrow_effect;           // 0x480
 INT32 fortune_effect;          // 0x484
 INT32 misfortune_effect;       // 0x488
 INT32 slayer_type;             // 0x48C - called KING_1/2/3
 INT32 unknown14;               // 0x490 - Max traversed cells before hitting?
 INT32 counterstrike_effect;    // 0x494
 FLOAT frenzyMultiplier;        // 0x498
 INT32 blind_effect;            // 0x49C - for calculating damage retaliation damage?
 FLOAT fire_shield_effect;      // 0x4A0
 INT32 unknown16;               // 0x4A4
 FLOAT protection_air_effect;   // 0x4A8 - in % as below
 FLOAT protection_fire_effect;  // 0x4AC
 FLOAT protection_water_effect; // 0x4B0
 FLOAT protection_earth_effect; // 0x4B4
 INT32 shield_effect;           // 0x4B8
 INT32 air_shield_effect;       // 0x4BC
 INT8 blinded;                  // 0x4C0 - to reduce damage?
 INT8 paralyzed;                // 0x4C1 - to reduce damage?
 h3unk _f_4C2[2];               // 0x4C2-0x4C3
 INT32 forgetfulness_level;     // 0x4C4
 FLOAT slow_effect;             // 0x4C8
 INT32 haste_effect;            // 0x4CC - value added/removed
 INT32 disease_attack_effect;   // 0x4D0
 INT32 disease_defense_effect;  // 0x4D4
 h3unk _f_4D8[8];               // 0x4D8-0x4DC
 INT32 faerie_dragon_spell;     // +4E0
 INT32 magic_mirror_effect;     // 0x4E4
 INT32 morale;                  // +4E8
 INT32 luck;                    // +4EC
 h3unk _f_4F0[4];
 H3Vector<H3CombatMonster*> dendroidBinder;  // +4F4 which dendroids have binded the current target (used for animation requirement)
 H3Vector<H3CombatMonster*> dendroidBinds;   // +504 a list of H3CombatMonsters binded by this dendroid
 h3unk _f_514[20];
 INT32 Hypnotize_528;
 INT32 Hypnotize_52C;
 h3unk _f_530[24];
 |