Mercurial > mm7
view Engine/Objects/Monsters.h @ 2542:bacf9809126a
.
author | a.parshin |
---|---|
date | Sun, 10 May 2015 02:04:52 +0200 |
parents | 82d5d92a097c |
children |
line wrap: on
line source
#pragma once /* 334 */ enum MONSTER_TYPE { MONSTER_DEVIL_1 = 0x16, MONSTER_DEVIL_2 = 0x17, MONSTER_DEVIL_3 = 0x18, MONSTER_DRAGON_1 = 0x19, MONSTER_DRAGON_2 = 0x1A, MONSTER_DRAGON_3 = 0x1B, MONSTER_ELEMENTAL_WATER_1 = 0x2E, MONSTER_ELEMENTAL_WATER_3 = 0x30, MONSTER_ELF_ARCHER_1 = 0x31, MONSTER_ELF_ARCHER_3 = 0x33, MONSTER_ELF_SPEARMAN_1 = 0x34, MONSTER_ELF_SPEARMAN_3 = 0x36, MONSTER_GHOST_1 = 0x46, MONSTER_GHOST_3 = 0x48, MONSTER_HARPY_1 = 0x55, MONSTER_HARPY_2 = 0x56, MONSTER_HARPY_3 = 0x57, MONSTER_LICH_1 = 0x5B, MONSTER_LICH_3 = 0x5D, MONSTER_OOZE_1 = 0x70, MONSTER_OOZE_2 = 0x71, MONSTER_OOZE_3 = 0x72, MONSTER_PEASANT_ELF_FEMALE_1_1 = 0x85, MONSTER_PEASANT_ELF_MALE_3_3 = 0x96, MONSTER_SKELETON_1 = 0xC7, MONSTER_SKELETON_3 = 0xC9, MONSTER_TITAN_1 = 0xD3, MONSTER_TITAN_3 = 0xD5, MONSTER_VAMPIRE_1 = 0xD9, MONSTER_VAMPIRE_3 = 0xDB, MONSTER_WIGHT_1 = 0xDF, MONSTER_WIGHT_3 = 0xE1, MONSTER_ZOMBIE_1 = 0xE5, MONSTER_ZOMBIE_3 = 0xE7, MONSTER_PEASANT_GOBLIN_MALE_3_3 = 0xF9, MONSTER_TROLL_1 = 0xFA, MONSTER_TROLL_2 = 0xFB, MONSTER_TROLL_3 = 0xFC, MONSTER_TREANT_1 = 0xFD, MONSTER_TREANT_3 = 0xFF, MONSTER_GHOUL_1 = 0x100, MONSTER_GHOUL_3 = 0x102, }; /* 335 */ enum MONSTER_SPECIAL_ABILITY_TYPE { MONSTER_SPECIAL_ABILITY_NONE = 0x0, MONSTER_SPECIAL_ABILITY_SHOT = 0x1, MONSTER_SPECIAL_ABILITY_SUMMON = 0x2, MONSTER_SPECIAL_ABILITY_EXPLODE = 0x3, }; enum MONSTER_MOVEMENT_TYPE { MONSTER_MOVEMENT_TYPE_SHORT = 0x0, MONSTER_MOVEMENT_TYPE_MEDIUM = 0x1, MONSTER_MOVEMENT_TYPE_LONG = 0x2, MONSTER_MOVEMENT_TYPE_GLOBAL = 0x3, MONSTER_MOVEMENT_TYPE_FREE = 0x4, MONSTER_MOVEMENT_TYPE_STAIONARY = 0x5, }; /* 336 */ enum MONSTER_SUPERTYPE { MONSTER_SUPERTYPE_UNDEAD = 0x1, MONSTER_SUPERTYPE_KREEGAN = 0x2, MONSTER_SUPERTYPE_DRAGON = 0x3, MONSTER_SUPERTYPE_ELF = 0x4, MONSTER_SUPERTYPE_WATER_ELEMENTAL = 0x5, MONSTER_SUPERTYPE_TREANT = 0x6, MONSTER_SUPERTYPE_TITAN = 0x7, MONSTER_SUPERTYPE_8 = 0x8, }; enum SPECIAL_ATTACK_TYPE : unsigned __int8 { SPECIAL_ATTACK_NONE = 0, SPECIAL_ATTACK_CURSE = 1, SPECIAL_ATTACK_WEAK = 2, SPECIAL_ATTACK_SLEEP = 3, SPECIAL_ATTACK_DRUNK = 4, SPECIAL_ATTACK_INSANE = 5, SPECIAL_ATTACK_POISON_WEAK = 6, SPECIAL_ATTACK_POISON_MEDIUM = 7, SPECIAL_ATTACK_POISON_SEVERE = 8, SPECIAL_ATTACK_DISEASE_WEAK = 9, SPECIAL_ATTACK_DISEASE_MEDIUM = 10, SPECIAL_ATTACK_DISEASE_SEVERE = 11, SPECIAL_ATTACK_PARALYZED = 12, SPECIAL_ATTACK_UNCONSCIOUS = 13, SPECIAL_ATTACK_DEAD = 14, SPECIAL_ATTACK_PETRIFIED = 15, SPECIAL_ATTACK_ERADICATED = 16, SPECIAL_ATTACK_BREAK_ANY = 17, SPECIAL_ATTACK_BREAK_ARMOR = 18, SPECIAL_ATTACK_BREAK_WEAPON = 19, SPECIAL_ATTACK_STEAL = 20, SPECIAL_ATTACK_AGING = 21, SPECIAL_ATTACK_MANA_DRAIN = 22, SPECIAL_ATTACK_FEAR = 23, }; /* 187 */ #pragma pack(push, 1) struct MonsterInfo { enum HostilityRadius: unsigned __int8 { Hostility_Friendly = 0, Hostility_Close = 1, Hostility_Short = 2, Hostility_Medium = 3, Hostility_Long = 4 }; inline MonsterInfo(): pName(nullptr), pPictureName(nullptr) {} char *pName; char *pPictureName; unsigned __int8 uLevel; unsigned __int8 uTreasureDropChance; unsigned __int8 uTreasureDiceRolls; unsigned __int8 uTreasureDiceSides; unsigned __int8 uTreasureLevel; unsigned __int8 uTreasureType; unsigned __int8 uFlying; unsigned __int8 uMovementType; unsigned __int8 uAIType; HostilityRadius uHostilityType; char field_12; SPECIAL_ATTACK_TYPE uSpecialAttackType; unsigned __int8 uSpecialAttackLevel; unsigned __int8 uAttack1Type; unsigned __int8 uAttack1DamageDiceRolls; unsigned __int8 uAttack1DamageDiceSides; unsigned __int8 uAttack1DamageBonus; unsigned __int8 uMissleAttack1Type; unsigned __int8 uAttack2Chance; unsigned __int8 uAttack2Type; unsigned __int8 uAttack2DamageDiceRolls; unsigned __int8 uAttack2DamageDiceSides; unsigned __int8 uAttack2DamageBonus; unsigned __int8 uMissleAttack2Type; unsigned __int8 uSpell1UseChance; unsigned __int8 uSpell1ID; unsigned __int8 uSpell2UseChance; unsigned __int8 uSpell2ID; unsigned __int8 uResFire; unsigned __int8 uResAir; unsigned __int8 uResWater; unsigned __int8 uResEarth; unsigned __int8 uResMind; unsigned __int8 uResSpirit; unsigned __int8 uResBody; unsigned __int8 uResLight; unsigned __int8 uResDark; unsigned __int8 uResPhysical; unsigned __int8 uSpecialAbilityType; // 0 SPECIAL_ABILITY_TYPE_NONE // 1 SPECIAL_ABILITY_TYPE_SHOT // 2 SPECIAL_ABILITY_TYPE_SUMMON // 3 SPECIAL_ABILITY_TYPE_EXPLODE unsigned __int8 uSpecialAbilityDamageDiceRolls; unsigned __int8 uSpecialAbilityDamageDiceSides; unsigned __int8 uSpecialAbilityDamageDiceBonus; unsigned __int8 uNumCharactersAttackedPerSpecialAbility; char field_33; unsigned __int16 uID; unsigned __int16 bQuestMonster; unsigned __int16 uSpellSkillAndMastery1; unsigned __int16 uSpellSkillAndMastery2; __int16 field_3C_some_special_attack; __int16 field_3E; unsigned int uHP; unsigned int uAC; unsigned int uExp; unsigned int uBaseSpeed; signed int uRecoveryTime; unsigned int uAttackPreference; }; #pragma pack(pop) /* 189 */ #pragma pack(push, 1) struct MonsterStats { void Initialize(); void InitializePlacements(); signed int FindMonsterByTextureName(const char *Str2); static bool BelongsToSupertype(unsigned int uMonsterInfoID, enum MONSTER_SUPERTYPE eSupertype); MonsterInfo pInfos[265]; //0 - 5b18h char *pPlaceStrings[31]; //5B18h placement counts from 1 unsigned int uNumMonsters; //5B94h unsigned int uNumPlacements; //5B98h int field_5B9C; }; #pragma pack(pop) #pragma pack(push, 1) struct MonsterDesc_mm6 { unsigned __int16 uMonsterHeight; unsigned __int16 uMonsterRadius; unsigned __int16 uMovementSpeed; __int16 uToHitRadius; unsigned __int16 pSoundSampleIDs[4]; char pMonsterName[32]; char pSpriteNames[10][10]; }; struct MonsterDesc { unsigned __int16 uMonsterHeight; unsigned __int16 uMonsterRadius; unsigned __int16 uMovementSpeed; __int16 uToHitRadius; signed int sTintColor; unsigned __int16 pSoundSampleIDs[4]; char pMonsterName[32]; char pSpriteNames[10][10]; }; #pragma pack(pop) #pragma pack(push, 1) struct MonsterList { inline MonsterList(): //----- (00458429) uNumMonsters(0), pMonsters(nullptr) {} signed __int16 GetMonsterIDByName(const char *pMonsterName); void ToFile(); void FromFile(void *data_mm6, void *data_mm7, void *data_mm8); bool FromFileTxt(const char *Args); signed int uNumMonsters; struct MonsterDesc *pMonsters; }; #pragma pack(pop) extern struct MonsterStats *pMonsterStats; extern struct MonsterList *pMonsterList;