Mercurial > mm7
annotate Monsters.h @ 1575:43d3536a20f7
OnInventoryItemRightClick
author | Nomad |
---|---|
date | Mon, 09 Sep 2013 20:09:01 +0200 |
parents | 7ef4b64f6329 |
children | 861ede68187a |
rev | line source |
---|---|
0 | 1 #pragma once |
2 | |
3 | |
4 | |
5 /* 334 */ | |
6 enum MONSTER_TYPE | |
7 { | |
8 MONSTER_DEVIL_1 = 0x16, | |
319 | 9 MONSTER_DEVIL_2 = 0x17, |
0 | 10 MONSTER_DEVIL_3 = 0x18, |
11 MONSTER_DRAGON_1 = 0x19, | |
319 | 12 MONSTER_DRAGON_2 = 0x1A, |
0 | 13 MONSTER_DRAGON_3 = 0x1B, |
14 MONSTER_ELEMENTAL_WATER_1 = 0x2E, | |
15 MONSTER_ELEMENTAL_WATER_3 = 0x30, | |
16 MONSTER_ELF_ARCHER_1 = 0x31, | |
17 MONSTER_ELF_ARCHER_3 = 0x33, | |
18 MONSTER_ELF_SPEARMAN_1 = 0x34, | |
19 MONSTER_ELF_SPEARMAN_3 = 0x36, | |
20 MONSTER_GHOST_1 = 0x46, | |
21 MONSTER_GHOST_3 = 0x48, | |
22 MONSTER_HARPY_1 = 0x55, | |
319 | 23 MONSTER_HARPY_2 = 0x56, |
0 | 24 MONSTER_HARPY_3 = 0x57, |
25 MONSTER_LICH_1 = 0x5B, | |
26 MONSTER_LICH_3 = 0x5D, | |
27 MONSTER_OOZE_1 = 0x70, | |
319 | 28 MONSTER_OOZE_2 = 0x71, |
0 | 29 MONSTER_OOZE_3 = 0x72, |
30 MONSTER_PEASANT_ELF_FEMALE_1_1 = 0x85, | |
31 MONSTER_PEASANT_ELF_MALE_3_3 = 0x96, | |
32 MONSTER_SKELETON_1 = 0xC7, | |
33 MONSTER_SKELETON_3 = 0xC9, | |
34 MONSTER_TITAN_1 = 0xD3, | |
35 MONSTER_TITAN_3 = 0xD5, | |
36 MONSTER_VAMPIRE_1 = 0xD9, | |
37 MONSTER_VAMPIRE_3 = 0xDB, | |
38 MONSTER_WIGHT_1 = 0xDF, | |
39 MONSTER_WIGHT_3 = 0xE1, | |
40 MONSTER_ZOMBIE_1 = 0xE5, | |
41 MONSTER_ZOMBIE_3 = 0xE7, | |
42 MONSTER_PEASANT_GOBLIN_MALE_3_3 = 0xF9, | |
319 | 43 MONSTER_TROLL_1 = 0xFA, |
44 MONSTER_TROLL_2 = 0xFB, | |
0 | 45 MONSTER_TROLL_3 = 0xFC, |
46 MONSTER_TREANT_1 = 0xFD, | |
47 MONSTER_TREANT_3 = 0xFF, | |
48 MONSTER_GHOUL_1 = 0x100, | |
49 MONSTER_GHOUL_3 = 0x102, | |
50 }; | |
51 | |
52 /* 335 */ | |
53 enum MONSTER_SPECIAL_ABILITY_TYPE | |
54 { | |
55 MONSTER_SPECIAL_ABILITY_NONE = 0x0, | |
56 MONSTER_SPECIAL_ABILITY_SHOT = 0x1, | |
57 MONSTER_SPECIAL_ABILITY_SUMMON = 0x2, | |
58 MONSTER_SPECIAL_ABILITY_EXPLODE = 0x3, | |
59 }; | |
60 | |
1456 | 61 enum MONSTER_MOVEMENT_TYPE |
62 { | |
63 MONSTER_MOVEMENT_TYPE_SHORT = 0x0, | |
64 MONSTER_MOVEMENT_TYPE_MEDIUM = 0x1, | |
65 MONSTER_MOVEMENT_TYPE_LONG = 0x2, | |
66 MONSTER_MOVEMENT_TYPE_GLOBAL = 0x3, | |
67 MONSTER_MOVEMENT_TYPE_FREE = 0x4, | |
68 MONSTER_MOVEMENT_TYPE_STAIONARY = 0x5, | |
69 }; | |
70 | |
71 | |
0 | 72 /* 336 */ |
73 enum MONSTER_SUPERTYPE | |
74 { | |
75 MONSTER_SUPERTYPE_UNDEAD = 0x1, | |
76 MONSTER_SUPERTYPE_KREEGAN = 0x2, | |
77 MONSTER_SUPERTYPE_DRAGON = 0x3, | |
78 MONSTER_SUPERTYPE_ELF = 0x4, | |
79 MONSTER_SUPERTYPE_WATER_ELEMENTAL = 0x5, | |
80 MONSTER_SUPERTYPE_TREANT = 0x6, | |
81 MONSTER_SUPERTYPE_TITAN = 0x7, | |
82 MONSTER_SUPERTYPE_8 = 0x8, | |
83 }; | |
84 | |
85 | |
86 | |
87 /* 187 */ | |
88 #pragma pack(push, 1) | |
89 struct MonsterInfo | |
90 { | |
91 enum HostilityRadius: unsigned __int8 | |
92 { | |
93 Hostility_Friendly = 0, | |
94 Hostility_Close = 1, | |
95 Hostility_Short = 2, | |
96 Hostility_Medium = 3, | |
97 Hostility_Long = 4 | |
98 }; | |
99 | |
794 | 100 inline MonsterInfo(): |
101 pName(nullptr), pPictureName(nullptr) | |
102 {} | |
103 | |
0 | 104 char *pName; |
694 | 105 char *pPictureName; |
0 | 106 unsigned __int8 uLevel; |
107 unsigned __int8 uTreasureDropChance; | |
108 unsigned __int8 uTreasureDiceRolls; | |
109 unsigned __int8 uTreasureDiceSides; | |
110 unsigned __int8 uTreasureLevel; | |
111 unsigned __int8 uTreasureType; | |
112 unsigned __int8 uFlying; | |
113 unsigned __int8 uMovementType; | |
114 unsigned __int8 uAIType; | |
115 HostilityRadius uHostilityType; | |
116 char field_12; | |
117 unsigned __int8 uSpecialAttack; | |
118 unsigned __int8 uSpecialAttackType; | |
119 unsigned __int8 uAttack1Type; | |
120 unsigned __int8 uAttack1DamageDiceRolls; | |
121 unsigned __int8 uAttack1DamageDiceSides; | |
122 unsigned __int8 uAttack1DamageBonus; | |
123 unsigned __int8 uMissleAttack1Type; | |
124 unsigned __int8 uAttack2Chance; | |
125 unsigned __int8 uAttack2Type; | |
126 unsigned __int8 uAttack2DamageDiceRolls; | |
127 unsigned __int8 uAttack2DamageDiceSides; | |
128 unsigned __int8 uAttack2DamageBonus; | |
129 unsigned __int8 uMissleAttack2Type; | |
130 unsigned __int8 uSpell1UseChance; | |
131 unsigned __int8 uSpell1ID; | |
132 unsigned __int8 uSpell2UseChance; | |
133 unsigned __int8 uSpell2ID; | |
134 unsigned __int8 uResFire; | |
135 unsigned __int8 uResAir; | |
136 unsigned __int8 uResWater; | |
137 unsigned __int8 uResEarth; | |
138 unsigned __int8 uResMind; | |
139 unsigned __int8 uResSpirit; | |
140 unsigned __int8 uResBody; | |
141 unsigned __int8 uResLight; | |
142 unsigned __int8 uResDark; | |
143 unsigned __int8 uResPhysical; | |
735 | 144 unsigned __int8 uSpecialAbilityType; // 0 SPECIAL_ABILITY_TYPE_NONE |
145 // 1 SPECIAL_ABILITY_TYPE_SHOT | |
146 // 2 SPECIAL_ABILITY_TYPE_SUMMON | |
147 // 3 SPECIAL_ABILITY_TYPE_EXPLODE | |
0 | 148 unsigned __int8 uSpecialAbilityDamageDiceRolls; |
149 unsigned __int8 uSpecialAbilityDamageDiceSides; | |
150 unsigned __int8 uSpecialAbilityDamageDiceBonus; | |
151 unsigned __int8 uNumCharactersAttackedPerSpecialAbility; | |
152 char field_33; | |
153 unsigned __int16 uID; | |
154 unsigned __int16 bQuestMonster; | |
155 unsigned __int16 uSpellSkillAndMastery1; | |
156 unsigned __int16 uSpellSkillAndMastery2; | |
157 __int16 field_3C_some_special_attack; | |
158 __int16 field_3E; | |
159 unsigned int uHP; | |
160 unsigned int uAC; | |
161 unsigned int uExp; | |
162 unsigned int uBaseSpeed; | |
711 | 163 signed int uRecoveryTime; |
0 | 164 unsigned int uAttackPreference; |
165 }; | |
166 #pragma pack(pop) | |
167 | |
168 | |
237 | 169 |
0 | 170 /* 189 */ |
171 #pragma pack(push, 1) | |
172 struct MonsterStats | |
173 { | |
174 void Initialize(); | |
175 void InitializePlacements(); | |
751 | 176 signed int FindMonsterByTextureName(const char *Str2); |
0 | 177 |
178 static bool BelongsToSupertype(unsigned int uMonsterInfoID, enum MONSTER_SUPERTYPE eSupertype); | |
179 | |
237 | 180 MonsterInfo pInfos[265]; //0 - 5b18h |
694 | 181 char *pPlaceStrings[31]; //5B18h placement counts from 1 |
237 | 182 unsigned int uNumMonsters; //5B94h |
183 unsigned int uNumPlacements; //5B98h | |
0 | 184 int field_5B9C; |
185 }; | |
186 #pragma pack(pop) | |
187 | |
188 | |
189 | |
190 #pragma pack(push, 1) | |
1477
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1456
diff
changeset
|
191 struct MonsterDesc_mm6 |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1456
diff
changeset
|
192 { |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1456
diff
changeset
|
193 unsigned __int16 uMonsterHeight; |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1456
diff
changeset
|
194 unsigned __int16 uMonsterRadius; |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1456
diff
changeset
|
195 unsigned __int16 uMovementSpeed; |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1456
diff
changeset
|
196 __int16 uToHitRadius; |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1456
diff
changeset
|
197 unsigned __int16 pSoundSampleIDs[4]; |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1456
diff
changeset
|
198 char pMonsterName[32]; |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1456
diff
changeset
|
199 char pSpriteNames[10][10]; |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1456
diff
changeset
|
200 }; |
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1456
diff
changeset
|
201 |
0 | 202 struct MonsterDesc |
203 { | |
204 unsigned __int16 uMonsterHeight; | |
205 unsigned __int16 uMonsterRadius; | |
206 unsigned __int16 uMovementSpeed; | |
207 __int16 uToHitRadius; | |
208 unsigned int uTintColor; | |
209 unsigned __int16 pSoundSampleIDs[4]; | |
210 char pMonsterName[32]; | |
211 char pSpriteNames[10][10]; | |
212 }; | |
213 #pragma pack(pop) | |
214 | |
215 | |
216 #pragma pack(push, 1) | |
217 struct MonsterList | |
218 { | |
219 inline MonsterList(): //----- (00458429) | |
220 uNumMonsters(0), pMonsters(nullptr) | |
221 {} | |
751 | 222 signed __int16 GetMonsterIDByName(const char *pMonsterName); |
0 | 223 void ToFile(); |
1477
7ef4b64f6329
* LODFile::LoadBitmaps & LODFile::LoadIconsOrEvents are merged into LODFile::Load
Nomad
parents:
1456
diff
changeset
|
224 void FromFile(void *data_mm6, void *data_mm7, void *data_mm8); |
0 | 225 bool FromFileTxt(const char *Args); |
226 | |
751 | 227 signed int uNumMonsters; |
0 | 228 struct MonsterDesc *pMonsters; |
229 }; | |
230 #pragma pack(pop) | |
231 | |
232 | |
233 extern struct MonsterStats *pMonsterStats; | |
234 extern struct MonsterList *pMonsterList; |