2498
|
1 #pragma once
|
|
2 #include "Items.h"
|
2499
|
3 #include "../Spells/Spells.h"
|
|
4 #include "../Conditions.h"
|
2498
|
5
|
|
6
|
|
7
|
|
8 enum PLAYER_BUFFS
|
|
9 {
|
|
10 PLAYER_BUFF_RESIST_AIR = 0,
|
|
11 PLAYER_BUFF_BLESS = 1,
|
|
12 PLAYER_BUFF_RESIST_BODY = 2,
|
|
13 PLAYER_BUFF_RESIST_EARTH = 3,
|
|
14 PLAYER_BUFF_FATE = 4,
|
|
15 PLAYER_BUFF_RESIST_FIRE = 5,
|
|
16 PLAYER_BUFF_HAMMERHANDS = 6,
|
|
17 PLAYER_BUFF_HASTE = 7,
|
|
18 PLAYER_BUFF_HEROISM = 8,
|
|
19 PLAYER_BUFF_RESIST_MIND = 9,
|
|
20 PLAYER_BUFF_PAIN_REFLECTION = 10,
|
|
21 PLAYER_BUFF_PRESERVATION = 11,
|
|
22 PLAYER_BUFF_REGENERATION = 12,
|
|
23 PLAYER_BUFF_SHIELD = 13,
|
|
24 PLAYER_BUFF_STONESKIN = 14,
|
|
25 PLAYER_BUFF_ACCURACY = 15,
|
|
26 PLAYER_BUFF_ENDURANCE = 16,
|
|
27 PLAYER_BUFF_INTELLIGENCE = 17,
|
|
28 PLAYER_BUFF_LUCK = 18,
|
|
29 PLAYER_BUFF_STRENGTH = 19,
|
|
30 PLAYER_BUFF_WILLPOWER = 20,
|
|
31 PLAYER_BUFF_SPEED = 21,
|
|
32 PLAYER_BUFF_RESIST_WATER = 22,
|
|
33 PLAYER_BUFF_WATER_WALK = 23
|
|
34 };
|
|
35
|
|
36
|
|
37 #define PLAYER_GUILD_BITS__SPIRIT_MEMBERSHIP 58
|
|
38 #define PLAYER_GUILD_BITS__ARCOMAGE_WIN 103
|
|
39 #define PLAYER_GUILD_BITS__ARCOMAGE_LOSE 104
|
|
40
|
|
41
|
|
42 /* 301 */
|
|
43 enum PlayerSpeech
|
|
44 {
|
|
45 SPEECH_1 = 1,
|
|
46 SPEECH_2 = 2,
|
|
47 SPEECH_3 = 3,
|
|
48 SPEECH_4 = 4,
|
|
49 SPEECH_5 = 5,
|
|
50 SPEECH_6 = 6,
|
|
51 SPEECH_7 = 7,
|
|
52 SPEECH_8 = 8,
|
|
53 SPEECH_9 = 9,
|
|
54 SPEECH_10 = 10,
|
|
55 SPEECH_11 = 11,
|
|
56 SPEECH_12 = 12,
|
|
57 SPEECH_14 = 14,
|
|
58 SPEECH_NoRoom = 15, // when placing to inventory
|
|
59 SPEECH_DO_POTION_FINE = 16,
|
|
60 SPEECH_17 = 17,
|
|
61 SPEECH_18 = 18,
|
|
62 SPEECH_19 = 19,
|
|
63 SPEECH_20 = 20,
|
|
64 SPEECH_21 = 21,
|
|
65 SPEECH_GoodDay = 22, // greets on dialogue start
|
|
66 SPEECH_GoodEvening = 23,
|
|
67 SPEECH_24 = 24,
|
|
68 SPEECH_25 = 25,
|
|
69 SPEECH_26 = 26,
|
|
70 SPEECH_27 = 27,
|
|
71 SPEECH_28 = 28,
|
|
72 SPEECH_29 = 29,
|
|
73 SPEECH_30 = 30,
|
|
74 SPEECH_31 = 31,
|
|
75 SPEECH_32 = 32,
|
|
76 SPEECH_33 = 33,
|
|
77 SPEECH_34 = 34,
|
|
78 SPEECH_35 = 35,
|
|
79 SPEECH_36 = 36,
|
|
80 SPEECH_37 = 37,
|
|
81 SPEECH_NotEnoughGold = 38,
|
|
82 SPEECH_39 = 39,
|
|
83 SPEECH_40 = 40,
|
|
84 SPEECH_41 = 41,
|
|
85 SPEECH_42 = 42,
|
|
86 SPEECH_43 = 43,
|
|
87 SPEECH_44 = 44,
|
|
88 SPEECH_45 = 45,
|
|
89 SPEECH_46 = 46,
|
|
90 SPEECH_47 = 47,
|
|
91 SPEECH_48 = 48,
|
|
92 SPEECH_49 = 49,
|
|
93 SPEECH_50 = 50,
|
|
94 SPEECH_51 = 51,
|
|
95 SPEECH_52 = 52,
|
|
96 SPEECH_53 = 53,
|
|
97 SPEECH_54 = 54,
|
|
98 SPEECH_55 = 55,
|
|
99 SPEECH_56 = 56,
|
|
100 SPEECH_57 = 57,
|
|
101 SPEECH_58 = 58,
|
|
102 SPEECH_59 = 59,
|
|
103 SPEECH_60 = 60,
|
|
104 SPEECH_61 = 61,
|
|
105 SPEECH_62 = 62,
|
|
106 SPEECH_63 = 63,
|
|
107 SPEECH_64 = 64,
|
|
108 SPEECH_Yell = 65,
|
|
109 SPEECH_Falling_scream = 66,
|
|
110 SPEECH_67 = 67,
|
|
111 SPEECH_68 = 68,
|
|
112 SPEECH_69 = 69,
|
|
113 SPEECH_70 = 70,
|
|
114 SPEECH_CarriageReady = 71, // travelling by carriage
|
|
115 SPEECH_SetSail = 72, // travelling by sea
|
|
116 SPEECH_73 = 73,
|
|
117 SPEECH_74 = 74,
|
|
118 SPEECH_75 = 75,
|
|
119 SPEECH_76 = 76,
|
|
120 SPEECH_77 = 77,
|
|
121 SPEECH_78 = 78,
|
|
122 SPEECH_79 = 79,
|
|
123 SPEECH_80 = 80,
|
|
124 SPEECH_81 = 81,
|
|
125 SPEECH_82 = 82,
|
|
126 SPEECH_83 = 83,
|
|
127 SPEECH_84 = 84,
|
|
128 SPEECH_85 = 85,
|
|
129 SPEECH_86 = 86,
|
|
130 SPEECH_87 = 87,
|
|
131 SPEECH_88 = 88,
|
|
132 SPEECH_89 = 89,
|
|
133 SPEECH_90 = 90,
|
|
134 SPEECH_91 = 91,
|
|
135 SPEECH_92 = 92,
|
|
136 SPEECH_93 = 93,
|
|
137 SPEECH_94 = 94,
|
|
138 SPEECH_95 = 95,
|
|
139 SPEECH_96 = 96,
|
|
140 SPEECH_97 = 97,
|
|
141 SPEECH_98 = 98,
|
|
142 SPEECH_99 = 99,
|
|
143 SPEECH_100 = 100,
|
|
144 SPEECH_101 = 101,
|
|
145 SPEECH_PickMe = 102,
|
|
146 SPEECH_103 = 103,
|
|
147 SPEECH_IDENTIFY_MONSTER_WEAKER = 104,
|
|
148 SPEECH_IDENTIFY_MONSTER_STRONGER = 105,
|
|
149 SPEECH_IDENTIFY_MONSTER_106 = 106,
|
|
150 SPEECH_107 = 107,
|
|
151 SPEECH_108 = 108,
|
|
152 SPEECH_109 = 109,
|
|
153 SPEECH_110 = 110,
|
|
154 };
|
|
155
|
|
156
|
|
157
|
|
158 /* 339 */
|
|
159 enum CHARACTER_RACE
|
|
160 {
|
|
161 CHARACTER_RACE_HUMAN = 0,
|
|
162 CHARACTER_RACE_ELF = 1,
|
|
163 CHARACTER_RACE_GOBLIN = 2,
|
|
164 CHARACTER_RACE_DWARF = 3,
|
|
165 };
|
|
166
|
|
167 /* 332 */
|
|
168 enum CHARACTER_ATTRIBUTE_TYPE
|
|
169 {
|
|
170 CHARACTER_ATTRIBUTE_STRENGTH = 0,
|
|
171 CHARACTER_ATTRIBUTE_INTELLIGENCE = 1,
|
|
172 CHARACTER_ATTRIBUTE_WILLPOWER = 2,
|
|
173 CHARACTER_ATTRIBUTE_ENDURANCE = 3,
|
|
174 CHARACTER_ATTRIBUTE_ACCURACY = 4,
|
|
175 CHARACTER_ATTRIBUTE_SPEED = 5,
|
|
176 CHARACTER_ATTRIBUTE_LUCK = 6,
|
|
177 CHARACTER_ATTRIBUTE_HEALTH = 7,
|
|
178 CHARACTER_ATTRIBUTE_MANA = 8,
|
|
179 CHARACTER_ATTRIBUTE_AC_BONUS = 9,
|
|
180
|
|
181 CHARACTER_ATTRIBUTE_RESIST_FIRE = 10,
|
|
182 CHARACTER_ATTRIBUTE_RESIST_AIR = 11,
|
|
183 CHARACTER_ATTRIBUTE_RESIST_WATER = 12,
|
|
184 CHARACTER_ATTRIBUTE_RESIST_EARTH = 13,
|
|
185 CHARACTER_ATTRIBUTE_RESIST_MIND = 14,
|
|
186 CHARACTER_ATTRIBUTE_RESIST_BODY = 15,
|
|
187
|
|
188 CHARACTER_ATTRIBUTE_SKILL_ALCHEMY = 16,
|
|
189 CHARACTER_ATTRIBUTE_SKILL_STEALING = 17,
|
|
190 CHARACTER_ATTRIBUTE_SKILL_TRAP_DISARM = 18,
|
|
191 CHARACTER_ATTRIBUTE_SKILL_ITEM_ID = 19,
|
|
192 CHARACTER_ATTRIBUTE_SKILL_MONSTER_ID = 20,
|
|
193 CHARACTER_ATTRIBUTE_SKILL_ARMSMASTER = 21,
|
|
194 CHARACTER_ATTRIBUTE_SKILL_DODGE = 22,
|
|
195 CHARACTER_ATTRIBUTE_SKILL_UNARMED = 23,
|
|
196
|
|
197 CHARACTER_ATTRIBUTE_LEVEL = 24,
|
|
198 CHARACTER_ATTRIBUTE_ATTACK = 25,
|
|
199 CHARACTER_ATTRIBUTE_MELEE_DMG_BONUS = 26,
|
|
200 CHARACTER_ATTRIBUTE_MELEE_DMG_MIN = 27,
|
|
201 CHARACTER_ATTRIBUTE_MELEE_DMG_MAX = 28,
|
|
202 CHARACTER_ATTRIBUTE_RANGED_ATTACK = 29,
|
|
203 CHARACTER_ATTRIBUTE_RANGED_DMG_BONUS = 30,
|
|
204 CHARACTER_ATTRIBUTE_RANGED_DMG_MIN = 31,
|
|
205 CHARACTER_ATTRIBUTE_RANGED_DMG_MAX = 32,
|
|
206 CHARACTER_ATTRIBUTE_RESIST_SPIRIT = 33,
|
|
207
|
|
208 CHARACTER_ATTRIBUTE_SKILL_FIRE = 34,
|
|
209 CHARACTER_ATTRIBUTE_SKILL_AIR = 35,
|
|
210 CHARACTER_ATTRIBUTE_SKILL_WATER = 36,
|
|
211 CHARACTER_ATTRIBUTE_SKILL_EARTH = 37,
|
|
212 CHARACTER_ATTRIBUTE_SKILL_SPIRIT = 38,
|
|
213 CHARACTER_ATTRIBUTE_SKILL_MIND = 39,
|
|
214 CHARACTER_ATTRIBUTE_SKILL_BODY = 40,
|
|
215 CHARACTER_ATTRIBUTE_SKILL_LIGHT = 41,
|
|
216 CHARACTER_ATTRIBUTE_SKILL_DARK = 42,
|
|
217 CHARACTER_ATTRIBUTE_SKILL_MEDITATION = 43,
|
|
218 CHARACTER_ATTRIBUTE_SKILL_BOW = 44,
|
|
219 CHARACTER_ATTRIBUTE_SKILL_SHIELD = 45,
|
|
220 CHARACTER_ATTRIBUTE_SKILL_LEARNING = 46
|
|
221 };
|
|
222
|
|
223 #pragma warning( push )
|
|
224 #pragma warning( disable: 4341 )
|
|
225 /* 328 */
|
|
226 enum PLAYER_SKILL_TYPE: signed __int8
|
|
227 {
|
|
228 PLAYER_SKILL_STAFF = 0,
|
|
229 PLAYER_SKILL_SWORD = 1,
|
|
230 PLAYER_SKILL_DAGGER = 2,
|
|
231 PLAYER_SKILL_AXE = 3,
|
|
232 PLAYER_SKILL_SPEAR = 4,
|
|
233 PLAYER_SKILL_BOW = 5,
|
|
234 PLAYER_SKILL_MACE = 6,
|
|
235 PLAYER_SKILL_BLASTER = 7,
|
|
236 PLAYER_SKILL_SHIELD = 8,
|
|
237 PLAYER_SKILL_LEATHER = 9,
|
|
238 PLAYER_SKILL_CHAIN = 10,
|
|
239 PLAYER_SKILL_PLATE = 11,
|
|
240 PLAYER_SKILL_FIRE = 12,
|
|
241 PLAYER_SKILL_AIR = 13,
|
|
242 PLAYER_SKILL_WATER = 14,
|
|
243 PLAYER_SKILL_EARTH = 15,
|
|
244 PLAYER_SKILL_SPIRIT = 16,
|
|
245 PLAYER_SKILL_MIND = 17,
|
|
246 PLAYER_SKILL_BODY = 18,
|
|
247 PLAYER_SKILL_LIGHT = 19,
|
|
248 PLAYER_SKILL_DARK = 20,
|
|
249 PLAYER_SKILL_ITEM_ID = 21,
|
|
250 PLAYER_SKILL_MERCHANT = 22,
|
|
251 PLAYER_SKILL_REPAIR = 23,
|
|
252 PLAYER_SKILL_BODYBUILDING = 24,
|
|
253 PLAYER_SKILL_MEDITATION = 25,
|
|
254 PLAYER_SKILL_PERCEPTION = 26,
|
|
255 PLAYER_SKILL_DIPLOMACY = 27,
|
|
256 PLAYER_SKILL_TIEVERY = 28,
|
|
257 PLAYER_SKILL_TRAP_DISARM = 29,
|
|
258 PLAYER_SKILL_DODGE = 30,
|
|
259 PLAYER_SKILL_UNARMED = 31,
|
|
260 PLAYER_SKILL_MONSTER_ID = 32,
|
|
261 PLAYER_SKILL_ARMSMASTER = 33,
|
|
262 PLAYER_SKILL_STEALING = 34,
|
|
263 PLAYER_SKILL_ALCHEMY = 35,
|
|
264 PLAYER_SKILL_LEARNING = 36,
|
|
265 PLAYER_SKILL_CLUB = 37,
|
|
266 PLAYER_SKILL_MISC = 38,
|
|
267 PLAYER_SKILL_INVALID = -1
|
|
268 };
|
|
269 #pragma warning( pop )
|
|
270
|
|
271 /* 329 */
|
|
272 enum PLAYER_CLASS_TYPE: unsigned __int8
|
|
273 {
|
|
274 PLAYER_CLASS_KNIGHT = 0,
|
|
275 PLAYER_CLASS_CHEVALIER = 1,
|
|
276 PLAYER_CLASS_CHAMPION = 2,
|
|
277 PLAYER_CLASS_BLACK_KNIGHT = 3,
|
|
278 PLAYER_CLASS_THEIF = 4,
|
|
279 PLAYER_CLASS_ROGUE = 5,
|
|
280 PLAYER_CLASS_SPY = 6,
|
|
281 PLAYER_CLASS_ASSASSIN = 7,
|
|
282 PLAYER_CLASS_MONK = 8,
|
|
283 PLAYER_CLASS_INITIATE = 9,
|
|
284 PLAYER_CLASS_MASTER = 10,
|
|
285 PLAYER_CLASS_NINJA = 11,
|
|
286 PLAYER_CLASS_PALADIN = 12,
|
|
287 PLAYER_CLASS_CRUSADER = 13,
|
|
288 PLAYER_CLASS_HERO = 14,
|
|
289 PLAYER_CLASS_VILLIAN = 15,
|
|
290 PLAYER_CLASS_ARCHER = 16,
|
|
291 PLAYER_CLASS_WARRIOR_MAGE = 17,
|
|
292 PLAYER_CLASS_MASTER_ARCHER = 18,
|
|
293 PLAYER_CLASS_SNIPER = 19,
|
|
294 PLAYER_CLASS_RANGER = 20,
|
|
295 PLAYER_CLASS_HUNTER = 21,
|
|
296 PLAYER_CLASS_RANGER_LORD = 22,
|
|
297 PLAYER_CLASS_BOUNTY_HUNTER = 23,
|
|
298 PLAYER_CLASS_CLERIC = 24,
|
|
299 PLAYER_CLASS_PRIEST = 25,
|
|
300 PLAYER_CLASS_PRIEST_OF_SUN = 26,
|
|
301 PLAYER_CLASS_PRIEST_OF_MOON = 27,
|
|
302 PLAYER_CLASS_DRUID = 28,
|
|
303 PLAYER_CLASS_GREAT_DRUID = 29,
|
|
304 PLAYER_CLASS_ARCH_DRUID = 30,
|
|
305 PLAYER_CLASS_WARLOCK = 31,
|
|
306 PLAYER_CLASS_SORCERER = 32,
|
|
307 PLAYER_CLASS_WIZARD = 33,
|
|
308 PLAYER_CLASS_ARCHMAGE = 34,
|
|
309 PLAYER_CLASS_LICH = 35
|
|
310 };
|
|
311
|
|
312
|
|
313
|
|
314
|
|
315 #pragma pack(push, 1)
|
|
316 struct LloydBeacon
|
|
317 {
|
|
318 unsigned __int64 uBeaconTime;
|
|
319 int PartyPos_X;
|
|
320 int PartyPos_Y;
|
|
321 int PartyPos_Z;
|
|
322 __int16 PartyRot_X;
|
|
323 __int16 PartyRot_Y;
|
|
324 int SaveFileID;
|
|
325 };
|
|
326 #pragma pack(pop)
|
|
327
|
|
328
|
|
329
|
|
330 #pragma pack(push, 1)
|
|
331 struct PlayerSpellbookChapter
|
|
332 {
|
|
333 std::array<char, 11> bIsSpellAvailable;
|
|
334 };
|
|
335 #pragma pack(pop)
|
|
336
|
|
337 #pragma pack(push, 1)
|
|
338 struct PlayerSpells
|
|
339 {
|
|
340 union
|
|
341 {
|
|
342 struct
|
|
343 {
|
|
344 PlayerSpellbookChapter pFireSpellbook;
|
|
345 PlayerSpellbookChapter pAirSpellbook;
|
|
346 PlayerSpellbookChapter pWaterSpellbook;
|
|
347 PlayerSpellbookChapter pEarthSpellbook;
|
|
348 PlayerSpellbookChapter pSpiritSpellbook;
|
|
349 PlayerSpellbookChapter pMindSpellbook;
|
|
350 PlayerSpellbookChapter pBodySpellbook;
|
|
351 PlayerSpellbookChapter pLightSpellbook;
|
|
352 PlayerSpellbookChapter pDarkSpellbook;
|
|
353 char _pad_0;
|
|
354 };
|
|
355 struct
|
|
356 {
|
|
357 std::array<PlayerSpellbookChapter, 9> pChapters;
|
|
358 char _pad_1;
|
|
359 };
|
|
360 struct
|
|
361 {
|
|
362 std::array<char, 99> bHaveSpell;
|
|
363 char _pad_1;
|
|
364 };
|
|
365 };
|
|
366 };
|
|
367 #pragma pack(pop)
|
|
368
|
|
369
|
|
370
|
|
371 #pragma pack(push, 1)
|
|
372 union PlayerEquipment
|
|
373 {
|
|
374 union
|
|
375 {
|
|
376 struct
|
|
377 {
|
|
378 unsigned int uShield;
|
|
379 unsigned int uMainHand;
|
|
380 unsigned int uBow;
|
|
381 unsigned int uArmor;
|
|
382 unsigned int uHelm;
|
|
383 unsigned int uBelt;
|
|
384 unsigned int uCloak;
|
|
385 unsigned int uGlove;
|
|
386 unsigned int uBoot;
|
|
387 unsigned int uAmulet;
|
|
388 std::array<unsigned int, 6> uRings;
|
|
389 //unsigned int field_2C;
|
|
390 //unsigned int field_30;
|
|
391 //unsigned int field_34;
|
|
392 //unsigned int field_38;
|
|
393 //unsigned int field_3C;
|
|
394 };
|
|
395 std::array<unsigned int, 16> pIndices;
|
|
396 };
|
|
397 };
|
|
398 #pragma pack(pop)
|
|
399
|
|
400
|
|
401
|
|
402
|
|
403
|
|
404 enum CHARACTER_EXPRESSION_ID: unsigned __int16
|
|
405 {
|
|
406 CHARACTER_EXPRESSION_INVALID = 0,
|
|
407 CHARACTER_EXPRESSION_1 = 1,
|
|
408 CHARACTER_EXPRESSION_CURSED = 2,
|
|
409 CHARACTER_EXPRESSION_WEAK = 3,
|
|
410 CHARACTER_EXPRESSION_SLEEP = 4,
|
|
411 CHARACTER_EXPRESSION_FEAR = 5,
|
|
412 CHARACTER_EXPRESSION_DRUNK = 6,
|
|
413 CHARACTER_EXPRESSION_INSANE = 7,
|
|
414 CHARACTER_EXPRESSION_POISONED = 8,
|
|
415 CHARACTER_EXPRESSION_DISEASED = 9,
|
|
416 CHARACTER_EXPRESSION_PARALYZED = 10,
|
|
417 CHARACTER_EXPRESSION_UNCONCIOUS = 11,
|
|
418 CHARACTER_EXPRESSION_PERTIFIED = 12,
|
|
419 CHARACTER_EXPRESSION_13 = 13,
|
|
420 CHARACTER_EXPRESSION_14 = 14,
|
|
421 CHARACTER_EXPRESSION_15 = 15,
|
|
422 CHARACTER_EXPRESSION_16 = 16,
|
|
423 CHARACTER_EXPRESSION_17 = 17,
|
|
424 CHARACTER_EXPRESSION_18 = 18,
|
|
425 CHARACTER_EXPRESSION_19 = 19,
|
|
426 CHARACTER_EXPRESSION_20 = 20,
|
|
427 CHARACTER_EXPRESSION_21 = 21,
|
|
428 CHARACTER_EXPRESSION_22 = 22,
|
|
429 CHARACTER_EXPRESSION_23 = 23,
|
|
430 CHARACTER_EXPRESSION_24 = 24,
|
|
431 CHARACTER_EXPRESSION_25 = 25,
|
|
432 CHARACTER_EXPRESSION_26 = 26,
|
|
433 CHARACTER_EXPRESSION_27 = 27,
|
|
434 CHARACTER_EXPRESSION_28 = 28,
|
|
435 CHARACTER_EXPRESSION_29 = 29,
|
|
436 CHARACTER_EXPRESSION_30 = 30,
|
|
437 CHARACTER_EXPRESSION_31 = 31,
|
|
438 CHARACTER_EXPRESSION_32 = 32,
|
|
439 CHARACTER_EXPRESSION_33 = 33,
|
|
440 CHARACTER_EXPRESSION_DMGRECVD_MINOR = 34,
|
|
441 CHARACTER_EXPRESSION_DMGRECVD_MODERATE = 35,
|
|
442 CHARACTER_EXPRESSION_DMGRECVD_MAJOR = 36,
|
|
443 CHARACTER_EXPRESSION_37 = 37,
|
|
444 CHARACTER_EXPRESSION_38 = 38,
|
|
445 CHARACTER_EXPRESSION_39 = 39,
|
|
446
|
|
447 // ?
|
|
448
|
|
449 CHARACTER_EXPRESSION_SCARED = 46, // like falling
|
|
450
|
|
451 CHARACTER_EXPRESSION_54 = 54,
|
|
452 CHARACTER_EXPRESSION_55 = 55,
|
|
453 CHARACTER_EXPRESSION_56 = 56,
|
|
454 CHARACTER_EXPRESSION_57 = 57,
|
|
455 CHARACTER_EXPRESSION_FALLING = 58,
|
|
456
|
|
457 // ?
|
|
458
|
|
459 CHARACTER_EXPRESSION_DEAD = 98,
|
|
460 CHARACTER_EXPRESSION_ERADICATED = 99,
|
|
461 };
|
|
462
|
|
463
|
|
464 enum PLAYER_SEX: unsigned __int8
|
|
465 {
|
|
466 SEX_MALE = 0,
|
|
467 SEX_FEMALE = 1
|
|
468 };
|
|
469
|
|
470 #pragma pack(push, 1)
|
|
471 struct Player
|
|
472 {
|
|
473 static const unsigned int INVETORYSLOTSWIDTH = 14;
|
|
474 static const unsigned int INVETORYSLOTSHEIGHT = 9;
|
|
475
|
|
476
|
|
477 Player();
|
|
478
|
|
479 void SetVariable(enum VariableType var, signed int a3);
|
|
480 void AddVariable(enum VariableType var, signed int val);
|
|
481 void SubtractVariable(enum VariableType VarNum, signed int pValue);
|
|
482 bool CompareVariable(enum VariableType VarNum, signed int pValue);
|
|
483 void UseItem_DrinkPotion_etc(signed int a2, int a3);
|
|
484 bool AddItem(struct ItemGen *pItem);
|
|
485 int GetActualAttribute(CHARACTER_ATTRIBUTE_TYPE attrId, unsigned short Player::* attrValue, unsigned short Player::* attrBonus);
|
|
486 int GetBaseStrength();
|
|
487 int GetBaseIntelligence();
|
|
488 int GetBaseWillpower();
|
|
489 int GetBaseEndurance();
|
|
490 int GetBaseAccuracy();
|
|
491 int GetBaseSpeed();
|
|
492 int GetBaseLuck();
|
|
493 int GetBaseLevel();
|
|
494 int GetActualLevel();
|
|
495 int GetActualMight();
|
|
496 int GetActualIntelligence();
|
|
497 int GetActualWillpower();
|
|
498 int GetActualEndurance();
|
|
499 int GetActualAccuracy();
|
|
500 int GetActualSpeed();
|
|
501 int GetActualLuck();
|
|
502 int GetActualAttack(bool a2);
|
|
503 int GetMeleeDamageMinimal();
|
|
504 int GetMeleeDamageMaximal();
|
|
505 int CalculateMeleeDamageTo(bool ignoreSkillBonus, bool ignoreOffhand, unsigned int uTargetActorID);
|
|
506 int GetRangedAttack();
|
|
507 int GetRangedDamageMin();
|
|
508 int GetRangedDamageMax();
|
|
509 int CalculateRangedDamageTo(int a2);
|
|
510 char *GetMeleeDamageString();
|
|
511 char *GetRangedDamageString();
|
|
512 bool CanTrainToNextLevel();
|
|
513 unsigned int GetExperienceDisplayColor();
|
|
514 int CalculateIncommingDamage(DAMAGE_TYPE dmg_type, int amount);
|
|
515 ITEM_EQUIP_TYPE GetEquippedItemEquipType(ITEM_EQUIP_TYPE uEquipSlot);
|
|
516 PLAYER_SKILL_TYPE GetEquippedItemSkillType(ITEM_EQUIP_TYPE uEquipSlot);
|
|
517 bool IsUnarmed();
|
|
518 bool HasItemEquipped(ITEM_EQUIP_TYPE uEquipIndex);
|
|
519 bool HasEnchantedItemEquipped(int uEnchantment);
|
|
520 bool WearsItem(int item_id, ITEM_EQUIP_TYPE equip_type);
|
|
521 int StealFromShop( ItemGen *itemToSteal, int a3, int reputation, int a5, int *fineIfFailed);
|
|
522 int StealFromActor(unsigned int uActorID, int _steal_perm, int reputation);
|
|
523 void Heal(int amount);
|
|
524 int ReceiveDamage(signed int amount, DAMAGE_TYPE dmg_type);
|
|
525 int ReceiveSpecialAttackEffect(int attType, struct Actor *pActor);
|
|
526 unsigned int GetSpellSchool(unsigned int uSpellID);
|
|
527 int GetAttackRecoveryTime(bool bRangedAttack);
|
|
528 int GetMaxHealth();
|
|
529 int GetMaxMana();
|
|
530 int GetBaseAC();
|
|
531 int GetActualAC();
|
|
532 unsigned int GetBaseAge();
|
|
533 unsigned int GetActualAge();
|
|
534 int GetBaseResistance(enum CHARACTER_ATTRIBUTE_TYPE a2);
|
|
535 int GetActualResistance(enum CHARACTER_ATTRIBUTE_TYPE a2);
|
|
536 void SetRecoveryTime(signed int sRecoveryTime);
|
|
537 void RandomizeName();
|
|
538 unsigned int GetMajorConditionIdx();
|
|
539 int GetParameterBonus(int player_parameter);
|
|
540 int GetSpecialItemBonus(int enchantmentId);
|
|
541 int GetItemsBonus(enum CHARACTER_ATTRIBUTE_TYPE attr, bool a3 = false);
|
|
542 int GetMagicalBonus(enum CHARACTER_ATTRIBUTE_TYPE a2);
|
|
543 int GetActualSkillLevel(PLAYER_SKILL_TYPE uSkillType);
|
|
544 int GetSkillBonus(enum CHARACTER_ATTRIBUTE_TYPE a2);
|
|
545 enum CHARACTER_RACE GetRace();
|
|
546 PLAYER_SEX GetSexByVoice();
|
|
547 void SetInitialStats();
|
|
548 void SetSexByVoice();
|
|
549 void Reset(PLAYER_CLASS_TYPE classType);
|
|
550 PLAYER_SKILL_TYPE GetSkillIdxByOrder(signed int order);
|
|
551 void DecreaseAttribute(int eAttribute);
|
|
552 void IncreaseAttribute(int eAttribute);
|
|
553 void Player::Zero();
|
|
554 unsigned int GetStatColor(int uStat);
|
|
555 bool DiscardConditionIfLastsLongerThan(unsigned int uCondition, signed __int64 uTime);
|
|
556 int SelectPhrasesTransaction(ItemGen *pItem, int building_type, int BuildID_2Events, int a5);
|
|
557 int GetBodybuilding();
|
|
558 int GetMeditation();
|
|
559 bool CanIdentify(ItemGen *pItem);
|
|
560 bool CanRepair(ItemGen *pItem);
|
|
561 int GetMerchant();
|
|
562 int GetPerception();
|
|
563 int GetDisarmTrap();
|
|
564 char GetLearningPercent();
|
|
565 bool CanFitItem(unsigned int uSlot, unsigned int uItemID);
|
|
566 int FindFreeInventoryListSlot();
|
|
567 int CreateItemInInventory(unsigned int uSlot, unsigned int uItemID);
|
|
568 int HasSkill(unsigned int uSkillType);
|
|
569 void WearItem(unsigned int uItemID);
|
|
570 int AddItem(int uSlot, unsigned int uItemID);
|
|
571 int AddItem2(int uSlot, ItemGen *Src);
|
|
572 int CreateItemInInventory2(unsigned int index, ItemGen *Src);
|
|
573 void PutItemArInventoryIndex(int uItemID, int itemListPos, int uSlot);
|
|
574 void RemoveItemAtInventoryIndex(unsigned int uSlot);
|
|
575 bool CanAct();
|
|
576 bool CanSteal();
|
|
577 bool CanEquip_RaceAndAlignmentCheck(unsigned int uItemID);
|
|
578 void SetCondition(unsigned int uConditionIdx, int a3);
|
|
579 bool ProfessionOrGuildFlagsCorrect(unsigned int uClass, int a3);
|
|
580 void PlaySound(PlayerSpeech speech, int a3);
|
|
581 void PlayEmotion(CHARACTER_EXPRESSION_ID expression, int a3);
|
|
582 void ItemsEnchant(int enchant_count);
|
|
583 unsigned int GetItemIDAtInventoryIndex(int *a2);
|
|
584 bool IsPlayerHealableByTemple();
|
|
585 int GetBaseIdentifyPrice(float a2);
|
|
586 int GetBaseRepairPrice(int a2, float a3);
|
|
587 int GetBaseBuyingPrice(int a2, float a3);
|
|
588 int GetBaseSellingPrice(int a2, float a3);
|
|
589 int GetPriceRepair(int a2, float a3);
|
|
590 int GetPriceIdentification(float a2);
|
|
591 int GetBuyingPrice(unsigned int uRealValue, float price_multiplier);
|
|
592 int GetPriceSell(int uRealValue, float price_multiplier);
|
|
593 int GetTempleHealCostModifier(float a2);
|
|
594 int GetConditionDayOfWeek(unsigned int uCondition);
|
|
595 bool NothingOrJustBlastersEquipped();
|
|
596 void SalesProcess(unsigned int inventory_idnx, int item_index, int _2devent_idx);//0x4BE2DD
|
|
597 bool Recover(signed int a2);
|
|
598 bool CanCastSpell(unsigned int uRequiredMana);
|
|
599 void PlayAwardSound();
|
|
600 void EquipBody(ITEM_EQUIP_TYPE uEquipType);
|
|
601 bool HasUnderwaterSuitEquipped();
|
|
602 bool HasItem(unsigned int uItemID, bool checkHeldItem);
|
|
603 void OnInventoryLeftClick();
|
|
604
|
|
605 bool PlayerHitOrMiss(Actor *pActor, int a3, int a4);
|
|
606
|
|
607 unsigned int GetMultiplierForSkillLevel(unsigned int skillValue, int mult1, int mult2, int mult3, int mult4);
|
|
608 int CalculateMeleeDmgToEnemyWithWeapon( ItemGen * weapon, unsigned int uTargetActorID , bool addOneDice);
|
|
609 bool WearsItemAnyWhere(int item_id);
|
|
610 float GetArmorRecoveryMultiplierFromSkillLevel( unsigned char armour_skill_type, float param2, float param3, float param4, float param5 );
|
|
611 void SetSkillByEvent(unsigned __int16 Player::* skillToSet, unsigned __int16 skillValue);
|
|
612 void AddSkillByEvent( unsigned __int16 Player::* skillToSet, unsigned __int16 addSkillValue);
|
|
613 void PlayAwardSound_Anim();
|
|
614 void PlayAwardSound_Anim_Face(PlayerSpeech speech);
|
|
615 void PlayAwardSound_Anim97();
|
|
616 void PlayAwardSound_Anim97_Face(PlayerSpeech speech);
|
|
617 void PlayAwardSound_Anim98();
|
|
618 void PlayAwardSound_Anim98_Face(PlayerSpeech speech);
|
|
619
|
|
620 bool IsWeak();
|
|
621 bool IsDead();
|
|
622 bool IsEradicated();
|
|
623 bool IsZombie();
|
|
624 bool IsCursed();
|
|
625 bool IsPertified();
|
|
626 bool IsUnconcious();
|
|
627 bool IsAsleep();
|
|
628 bool IsParalyzed();
|
|
629 bool IsDrunk();
|
|
630
|
|
631 void SetCursed(unsigned long long state);
|
|
632 void SetWeak(unsigned long long state);
|
|
633 void SetAsleep(unsigned long long state);
|
|
634 void SetAfraid(unsigned long long state);
|
|
635 void SetDrunk(unsigned long long state);
|
|
636 void SetInsane(unsigned long long state);
|
|
637 void SetPoisonWeak(unsigned long long state);
|
|
638 void SetDiseaseWeak(unsigned long long state);
|
|
639 void SetPoisonMedium(unsigned long long state);
|
|
640 void SetDiseaseMedium(unsigned long long state);
|
|
641 void SetPoisonSevere(unsigned long long state);
|
|
642 void SetDiseaseSevere(unsigned long long state);
|
|
643 void SetParalyzed(unsigned long long state);
|
|
644 void SetUnconcious(unsigned long long state);
|
|
645 void SetDead(unsigned long long state);
|
|
646 void SetPertified(unsigned long long state);
|
|
647 void SetEradicated(unsigned long long state);
|
|
648 void SetZombie(unsigned long long state);
|
|
649
|
|
650 void SetCondWeakWithBlockCheck (int blockable);
|
|
651 void SetCondInsaneWithBlockCheck (int blockable);
|
|
652 void SetCondDeadWithBlockCheck (int blockable);
|
|
653 void SetCondUnconsciousWithBlockCheck( int blockable );
|
|
654
|
|
655 inline bool IsRaceHuman() {return GetRace() == CHARACTER_RACE_HUMAN;}
|
|
656 inline bool IsRaceDwarf() {return GetRace() == CHARACTER_RACE_DWARF;}
|
|
657 inline bool IsRaceElf() {return GetRace() == CHARACTER_RACE_ELF;}
|
|
658 inline bool IsRaceGoblin() {return GetRace() == CHARACTER_RACE_GOBLIN;}
|
|
659
|
|
660 inline bool IsMale() { return GetSexByVoice() == SEX_MALE;}
|
|
661 inline bool IsFemale() { return !IsMale();}
|
|
662
|
|
663 ItemGen* GetMainHandItem();
|
|
664 ItemGen* GetOffHandItem();
|
|
665 ItemGen* GetBowItem();
|
|
666 ItemGen* GetArmorItem();
|
|
667 ItemGen* GetHelmItem();
|
|
668 ItemGen* GetBeltItem();
|
|
669 ItemGen* GetCloakItem();
|
|
670 ItemGen* GetGloveItem();
|
|
671 ItemGen* GetBootItem();
|
|
672 ItemGen* GetAmuletItem();
|
|
673 ItemGen* GetNthRingItem(int ringNum);
|
|
674 ItemGen* GetNthEquippedIndexItem(int index);
|
|
675 ItemGen* GetItem(unsigned int PlayerEquipment::* itemPos);
|
|
676 int GetPlayerIndex();
|
|
677
|
|
678 static void _42ECB5_PlayerAttacksActor();
|
|
679 static void _42FA66_do_explosive_impact(int a1, int a2, int a3, int a4, __int16 a5, signed int a6);
|
|
680
|
|
681 std::array<__int64, 20> pConditions;
|
|
682 unsigned __int64 uExperience;
|
|
683 char pName[16];
|
|
684 PLAYER_SEX uSex;
|
|
685 PLAYER_CLASS_TYPE classType;
|
|
686 unsigned __int8 uCurrentFace;
|
|
687 char field_BB;
|
|
688 unsigned __int16 uMight;
|
|
689 unsigned __int16 uMightBonus;
|
|
690 unsigned __int16 uIntelligence;
|
|
691 unsigned __int16 uIntelligenceBonus;
|
|
692 unsigned __int16 uWillpower;
|
|
693 unsigned __int16 uWillpowerBonus;
|
|
694 unsigned __int16 uEndurance;
|
|
695 unsigned __int16 uEnduranceBonus;
|
|
696 unsigned __int16 uSpeed;
|
|
697 unsigned __int16 uSpeedBonus;
|
|
698 unsigned __int16 uAccuracy;
|
|
699 unsigned __int16 uAccuracyBonus;
|
|
700 unsigned __int16 uLuck;
|
|
701 unsigned __int16 uLuckBonus;
|
|
702 __int16 sACModifier;
|
|
703 unsigned __int16 uLevel;
|
|
704 __int16 sLevelModifier;
|
|
705 __int16 sAgeModifier;
|
|
706 int field_E0;
|
|
707 int field_E4;
|
|
708 int field_E8;
|
|
709 int field_EC;
|
|
710 int field_F0;
|
|
711 int field_F4;
|
|
712 int field_F8;
|
|
713 int field_FC;
|
|
714 int field_100;
|
|
715 int field_104;
|
|
716 union
|
|
717 {
|
|
718 struct
|
|
719 {
|
|
720 unsigned __int16 skillStaff;
|
|
721 unsigned __int16 skillSword;
|
|
722 unsigned __int16 skillDagger;
|
|
723 unsigned __int16 skillAxe;
|
|
724 unsigned __int16 skillSpear;
|
|
725 unsigned __int16 skillBow;
|
|
726 unsigned __int16 skillMace;
|
|
727 unsigned __int16 skillBlaster;
|
|
728 unsigned __int16 skillShield;
|
|
729 unsigned __int16 skillLeather;
|
|
730 unsigned __int16 skillChain;
|
|
731 unsigned __int16 skillPlate;
|
|
732 unsigned __int16 skillFire;
|
|
733 unsigned __int16 skillAir;
|
|
734 unsigned __int16 skillWater;
|
|
735 unsigned __int16 skillEarth;
|
|
736 unsigned __int16 skillSpirit;
|
|
737 unsigned __int16 skillMind;
|
|
738 unsigned __int16 skillBody;
|
|
739 unsigned __int16 skillLight;
|
|
740 unsigned __int16 skillDark;
|
|
741 unsigned __int16 skillItemId;
|
|
742 unsigned __int16 skillMerchant;
|
|
743 unsigned __int16 skillRepair;
|
|
744 unsigned __int16 skillBodybuilding;
|
|
745 unsigned __int16 skillMeditation;
|
|
746 unsigned __int16 skillPerception;
|
|
747 unsigned __int16 skillDiplomacy;
|
|
748 unsigned __int16 skillThievery;
|
|
749 unsigned __int16 skillDisarmTrap;
|
|
750 unsigned __int16 skillDodge;
|
|
751 unsigned __int16 skillUnarmed;
|
|
752 unsigned __int16 skillMonsterId;
|
|
753 unsigned __int16 skillArmsmaster;
|
|
754 unsigned __int16 skillStealing;
|
|
755 unsigned __int16 skillAlchemy;
|
|
756 unsigned __int16 skillLearning;
|
|
757 };
|
|
758 std::array<unsigned __int16, 37> pActiveSkills;
|
|
759 };
|
|
760 unsigned char _achieved_awards_bits[64];
|
|
761 PlayerSpells spellbook;
|
|
762 char field__1F5[2]; // used to be [31]
|
|
763 int pure_luck_used;
|
|
764 int pure_speed_used;
|
|
765 int pure_intellect_used;
|
|
766 int pure_endurance_used;
|
|
767 int pure_willpower_used;
|
|
768 int pure_accuracy_used;
|
|
769 int pure_might_used;
|
|
770 union //214h
|
|
771 {
|
|
772 struct
|
|
773 {
|
|
774 std::array<ItemGen, 126> pInventoryItemList;
|
|
775 std::array<ItemGen, 12> pEquippedItems;
|
|
776 };
|
|
777 std::array<ItemGen, 138> pOwnItems;
|
|
778 };
|
|
779
|
|
780 std::array<int, 126> pInventoryMatrix;
|
|
781 __int16 sResFireBase;
|
|
782 __int16 sResAirBase;
|
|
783 __int16 sResWaterBase;
|
|
784 __int16 sResEarthBase;
|
|
785 __int16 field_177C;
|
|
786 __int16 sResMagicBase;
|
|
787 __int16 sResSpiritBase;
|
|
788 __int16 sResMindBase;
|
|
789 __int16 sResBodyBase;
|
|
790 __int16 sResLightBase;
|
|
791 __int16 sResDarkBase;
|
|
792 __int16 sResFireBonus;
|
|
793 __int16 sResAirBonus;
|
|
794 __int16 sResWaterBonus;
|
|
795 __int16 sResEarthBonus;
|
|
796 __int16 field_1792;
|
|
797 __int16 sResMagicBonus;
|
|
798 __int16 sResSpiritBonus;
|
|
799 __int16 sResMindBonus;
|
|
800 __int16 sResBodyBonus;
|
|
801 __int16 sResLightBonus;
|
|
802 __int16 sResDarkBonus;
|
|
803 std::array<SpellBuff, 24> pPlayerBuffs;
|
|
804 unsigned int uVoiceID;
|
|
805 int uPrevVoiceID;
|
|
806 int uPrevFace;
|
|
807 int field_192C;
|
|
808 int field_1930;
|
|
809 unsigned __int16 uTimeToRecovery;
|
|
810 char field_1936;
|
|
811 char field_1937;
|
|
812 unsigned int uSkillPoints;
|
|
813 int sHealth;
|
|
814 int sMana;
|
|
815 unsigned int uBirthYear;
|
|
816 PlayerEquipment pEquipment;
|
|
817 int field_1988[49];
|
|
818 char field_1A4C;
|
|
819 char field_1A4D;
|
|
820 char lastOpenedSpellbookPage;
|
|
821 unsigned __int8 uQuickSpell;
|
|
822 char playerEventBits[64];
|
|
823 char _some_attack_bonus;
|
|
824 char field_1A91;
|
|
825 char _melee_dmg_bonus;
|
|
826 char field_1A93;
|
|
827 char _ranged_atk_bonus;
|
|
828 char field_1A95;
|
|
829 char _ranged_dmg_bonus;
|
|
830 char field_1A97;
|
|
831 char uFullHealthBonus;
|
|
832 char _health_related;
|
|
833 char uFullManaBonus;
|
|
834 char _mana_related;
|
|
835 CHARACTER_EXPRESSION_ID expression;
|
|
836 unsigned __int16 uExpressionTimePassed;
|
|
837 unsigned __int16 uExpressionTimeLength;
|
|
838 __int16 field_1AA2;
|
|
839 int _expression21_animtime;
|
|
840 int _expression21_frameset;
|
|
841 std::array<LloydBeacon, 5> pInstalledBeacons;
|
|
842 char uNumDivineInterventionCastsThisDay;
|
|
843 char uNumArmageddonCasts;
|
|
844 char uNumFireSpikeCasts;
|
|
845 char field_1B3B;
|
|
846 };
|
|
847 #pragma pack(pop)
|
|
848
|
|
849 void __fastcall DamagePlayerFromMonster(unsigned int uObjID, int a2, struct Vec3_int_ *pPos, signed int a4);
|
|
850 bool IsDwarfPresentInParty(bool b);
|
|
851 bool ShouldLoadTexturesForRaceAndGender(unsigned int _this);
|
|
852 int PlayerCreation_GetUnspentAttributePointCount();
|
|
853 int CycleCharacter(bool backwards);
|
|
854 unsigned int SkillToMastery(unsigned int skill_value);
|
|
855
|
|
856 extern NZIArray<struct Player *, 5> pPlayers; |