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
|
|
61 /* 336 */
|
|
62 enum MONSTER_SUPERTYPE
|
|
63 {
|
|
64 MONSTER_SUPERTYPE_UNDEAD = 0x1,
|
|
65 MONSTER_SUPERTYPE_KREEGAN = 0x2,
|
|
66 MONSTER_SUPERTYPE_DRAGON = 0x3,
|
|
67 MONSTER_SUPERTYPE_ELF = 0x4,
|
|
68 MONSTER_SUPERTYPE_WATER_ELEMENTAL = 0x5,
|
|
69 MONSTER_SUPERTYPE_TREANT = 0x6,
|
|
70 MONSTER_SUPERTYPE_TITAN = 0x7,
|
|
71 MONSTER_SUPERTYPE_8 = 0x8,
|
|
72 };
|
|
73
|
|
74
|
|
75
|
|
76 /* 187 */
|
|
77 #pragma pack(push, 1)
|
|
78 struct MonsterInfo
|
|
79 {
|
|
80 enum HostilityRadius: unsigned __int8
|
|
81 {
|
|
82 Hostility_Friendly = 0,
|
|
83 Hostility_Close = 1,
|
|
84 Hostility_Short = 2,
|
|
85 Hostility_Medium = 3,
|
|
86 Hostility_Long = 4
|
|
87 };
|
|
88
|
794
|
89 inline MonsterInfo():
|
|
90 pName(nullptr), pPictureName(nullptr)
|
|
91 {}
|
|
92
|
0
|
93 char *pName;
|
694
|
94 char *pPictureName;
|
0
|
95 unsigned __int8 uLevel;
|
|
96 unsigned __int8 uTreasureDropChance;
|
|
97 unsigned __int8 uTreasureDiceRolls;
|
|
98 unsigned __int8 uTreasureDiceSides;
|
|
99 unsigned __int8 uTreasureLevel;
|
|
100 unsigned __int8 uTreasureType;
|
|
101 unsigned __int8 uFlying;
|
|
102 unsigned __int8 uMovementType;
|
|
103 unsigned __int8 uAIType;
|
|
104 HostilityRadius uHostilityType;
|
|
105 char field_12;
|
|
106 unsigned __int8 uSpecialAttack;
|
|
107 unsigned __int8 uSpecialAttackType;
|
|
108 unsigned __int8 uAttack1Type;
|
|
109 unsigned __int8 uAttack1DamageDiceRolls;
|
|
110 unsigned __int8 uAttack1DamageDiceSides;
|
|
111 unsigned __int8 uAttack1DamageBonus;
|
|
112 unsigned __int8 uMissleAttack1Type;
|
|
113 unsigned __int8 uAttack2Chance;
|
|
114 unsigned __int8 uAttack2Type;
|
|
115 unsigned __int8 uAttack2DamageDiceRolls;
|
|
116 unsigned __int8 uAttack2DamageDiceSides;
|
|
117 unsigned __int8 uAttack2DamageBonus;
|
|
118 unsigned __int8 uMissleAttack2Type;
|
|
119 unsigned __int8 uSpell1UseChance;
|
|
120 unsigned __int8 uSpell1ID;
|
|
121 unsigned __int8 uSpell2UseChance;
|
|
122 unsigned __int8 uSpell2ID;
|
|
123 unsigned __int8 uResFire;
|
|
124 unsigned __int8 uResAir;
|
|
125 unsigned __int8 uResWater;
|
|
126 unsigned __int8 uResEarth;
|
|
127 unsigned __int8 uResMind;
|
|
128 unsigned __int8 uResSpirit;
|
|
129 unsigned __int8 uResBody;
|
|
130 unsigned __int8 uResLight;
|
|
131 unsigned __int8 uResDark;
|
|
132 unsigned __int8 uResPhysical;
|
735
|
133 unsigned __int8 uSpecialAbilityType; // 0 SPECIAL_ABILITY_TYPE_NONE
|
|
134 // 1 SPECIAL_ABILITY_TYPE_SHOT
|
|
135 // 2 SPECIAL_ABILITY_TYPE_SUMMON
|
|
136 // 3 SPECIAL_ABILITY_TYPE_EXPLODE
|
0
|
137 unsigned __int8 uSpecialAbilityDamageDiceRolls;
|
|
138 unsigned __int8 uSpecialAbilityDamageDiceSides;
|
|
139 unsigned __int8 uSpecialAbilityDamageDiceBonus;
|
|
140 unsigned __int8 uNumCharactersAttackedPerSpecialAbility;
|
|
141 char field_33;
|
|
142 unsigned __int16 uID;
|
|
143 unsigned __int16 bQuestMonster;
|
|
144 unsigned __int16 uSpellSkillAndMastery1;
|
|
145 unsigned __int16 uSpellSkillAndMastery2;
|
|
146 __int16 field_3C_some_special_attack;
|
|
147 __int16 field_3E;
|
|
148 unsigned int uHP;
|
|
149 unsigned int uAC;
|
|
150 unsigned int uExp;
|
|
151 unsigned int uBaseSpeed;
|
711
|
152 signed int uRecoveryTime;
|
0
|
153 unsigned int uAttackPreference;
|
|
154 };
|
|
155 #pragma pack(pop)
|
|
156
|
|
157
|
237
|
158
|
0
|
159 /* 189 */
|
|
160 #pragma pack(push, 1)
|
|
161 struct MonsterStats
|
|
162 {
|
|
163 void Initialize();
|
|
164 void InitializePlacements();
|
751
|
165 signed int FindMonsterByTextureName(const char *Str2);
|
0
|
166
|
|
167 static bool BelongsToSupertype(unsigned int uMonsterInfoID, enum MONSTER_SUPERTYPE eSupertype);
|
|
168
|
237
|
169 MonsterInfo pInfos[265]; //0 - 5b18h
|
694
|
170 char *pPlaceStrings[31]; //5B18h placement counts from 1
|
237
|
171 unsigned int uNumMonsters; //5B94h
|
|
172 unsigned int uNumPlacements; //5B98h
|
0
|
173 int field_5B9C;
|
|
174 };
|
|
175 #pragma pack(pop)
|
|
176
|
|
177
|
|
178
|
|
179 #pragma pack(push, 1)
|
|
180 struct MonsterDesc
|
|
181 {
|
|
182 unsigned __int16 uMonsterHeight;
|
|
183 unsigned __int16 uMonsterRadius;
|
|
184 unsigned __int16 uMovementSpeed;
|
|
185 __int16 uToHitRadius;
|
|
186 unsigned int uTintColor;
|
|
187 unsigned __int16 pSoundSampleIDs[4];
|
|
188 char pMonsterName[32];
|
|
189 char pSpriteNames[10][10];
|
|
190 };
|
|
191 #pragma pack(pop)
|
|
192
|
|
193
|
|
194 #pragma pack(push, 1)
|
|
195 struct MonsterList
|
|
196 {
|
|
197 inline MonsterList(): //----- (00458429)
|
|
198 uNumMonsters(0), pMonsters(nullptr)
|
|
199 {}
|
751
|
200 signed __int16 GetMonsterIDByName(const char *pMonsterName);
|
0
|
201 void ToFile();
|
|
202 void FromFile(void *pSerialized);
|
|
203 bool FromFileTxt(const char *Args);
|
|
204
|
751
|
205 signed int uNumMonsters;
|
0
|
206 struct MonsterDesc *pMonsters;
|
|
207 };
|
|
208 #pragma pack(pop)
|
|
209
|
|
210
|
|
211 extern struct MonsterStats *pMonsterStats;
|
|
212 extern struct MonsterList *pMonsterList; |