comparison Engine/mm7_data.cpp @ 2499:68cdef6879a0

engine folder
author Ritor1
date Fri, 19 Sep 2014 02:57:42 +0600
parents
children a77c34acdbc9
comparison
equal deleted inserted replaced
2498:92eeeb5200f2 2499:68cdef6879a0
1 #define _CRTDBG_MAP_ALLOC
2 #include <stdlib.h>
3 #include <crtdbg.h>
4
5 #define _CRT_SECURE_NO_WARNINGS
6 #include "mm7_data.h"
7
8 #include "GUIWindow.h"
9 #include "Party.h"
10
11
12 void ErrHR(HRESULT hr, const char *pAPI, const char *pFunction, const char *pFile, int line)
13 {
14 if (SUCCEEDED(hr))
15 return;
16
17 char msg[4096];
18 sprintf(msg, "%s error (%08X) in\n\t%s\nin\n\t%s:%u",
19 pAPI, hr, pFunction, pFile, line);
20
21 char caption[1024];
22 sprintf(caption, "%s error", pAPI);
23
24 MessageBoxA(nullptr, msg, caption, MB_ICONEXCLAMATION);
25 }
26
27
28
29
30 #include "OurMath.h"
31 struct stru193_math *stru_5C6E00 = new stru193_math;
32
33 #include "MapInfo.h"
34 struct MapStats *pMapStats;
35
36 #include "Engine/Graphics/Viewport.h"
37 struct Viewport *pViewport = new Viewport;
38 struct ViewingParams *viewparams = new ViewingParams;
39
40
41
42 #include "stru123.h"
43 stru123 stru_5E4C90_MapPersistVars;
44
45 #include "stru298.h"
46 stru298 AttackerInfo; // weak
47
48 #include "Engine/Autonotes.h"
49 std::array<Autonote, 196> pAutonoteTxt; // weak
50
51 #include "Engine/Awards.h"
52 std::array<Award, 105> pAwards;
53 std::array<AwardType, 1000> achieved_awards;
54 int num_achieved_awards;
55 int full_num_items_in_book;
56
57 #include "stru160.h"
58 std::array<stru160, 66> array_4EB8B8 =
59 {{
60 stru160( 0.0000000f, 0.0000000f, 1.0000000f),
61 stru160( 0.0000000f, 0.3826830f, 0.9238799f),
62 stru160( 0.3826830f, 0.0000000f, 0.9238799f),
63 stru160( 0.4082480f, 0.4082480f, 0.8164970f),
64 stru160( 0.0000000f, 0.7071070f, 0.7071070f),
65 stru160( 0.7071070f, 0.0000000f, 0.7071070f),
66 stru160( 0.4082480f, 0.8164970f, 0.4082480f),
67 stru160( 0.8164970f, 0.4082480f, 0.4082480f),
68 stru160( 0.7071070f, 0.7071070f, 0.0000000f),
69 stru160( 0.0000000f, 0.9238799f, 0.3826830f),
70 stru160( 0.3826830f, 0.9238799f, 0.0000000f),
71 stru160( 0.0000000f, 1.0000000f, 0.0000000f),
72 stru160( 0.9238799f, 0.3826830f, 0.0000000f),
73 stru160( 0.9238799f, 0.0000000f, 0.3826830f),
74 stru160( 1.0000000f, 0.0000000f, 0.0000000f),
75 stru160( 0.0000000f, -0.3826830f, 0.9238799f),
76 stru160( 0.4082480f, -0.4082480f, 0.8164970f),
77 stru160( 0.0000000f, -0.7071070f, 0.7071070f),
78 stru160( 0.8164970f, -0.4082480f, 0.4082480f),
79 stru160( 0.4082480f, -0.8164970f, 0.4082480f),
80 stru160( 0.7071070f, -0.7071070f, 0.0000000f),
81 stru160( 0.9238799f, -0.3826830f, 0.0000000f),
82 stru160( 0.3826830f, -0.9238799f, 0.0000000f),
83 stru160( 0.0000000f, -0.9238799f, 0.3826830f),
84 stru160( 0.0000000f, -1.0000000f, 0.0000000f),
85 stru160(-0.3826830f, 0.0000000f, 0.9238799f),
86 stru160(-0.4082480f, -0.4082480f, 0.8164970f),
87 stru160(-0.7071070f, 0.0000000f, 0.7071070f),
88 stru160(-0.4082480f, -0.8164970f, 0.4082480f),
89 stru160(-0.8164970f, -0.4082480f, 0.4082480f),
90 stru160(-0.7071070f, -0.7071070f, 0.0000000f),
91 stru160(-0.3826830f, -0.9238799f, 0.0000000f),
92 stru160(-0.9238799f, -0.3826830f, 0.0000000f),
93 stru160(-0.9238799f, 0.0000000f, 0.3826830f),
94 stru160(-1.0000000f, 0.0000000f, 0.0000000f),
95 stru160(-0.4082480f, 0.4082480f, 0.8164970f),
96 stru160(-0.8164970f, 0.4082480f, 0.4082480f),
97 stru160(-0.4082480f, 0.8164970f, 0.4082480f),
98 stru160(-0.7071070f, 0.7071070f, 0.0000000f),
99 stru160(-0.9238799f, 0.3826830f, 0.0000000f),
100 stru160(-0.3826830f, 0.9238799f, 0.0000000f),
101 stru160( 0.0000000f, 0.0000000f, -1.0000000f),
102 stru160( 0.0000000f, 0.3826830f, -0.9238799f),
103 stru160( 0.3826830f, 0.0000000f, -0.9238799f),
104 stru160( 0.4082480f, 0.4082480f, -0.8164970f),
105 stru160( 0.0000000f, 0.7071070f, -0.7071070f),
106 stru160( 0.7071070f, 0.0000000f, -0.7071070f),
107 stru160( 0.4082480f, 0.8164970f, -0.4082480f),
108 stru160( 0.8164970f, 0.4082480f, -0.4082480f),
109 stru160( 0.0000000f, 0.9238799f, -0.3826830f),
110 stru160( 0.9238799f, 0.0000000f, -0.3826830f),
111 stru160( 0.0000000f, -0.3826830f, -0.9238799f),
112 stru160( 0.4082480f, -0.4082480f, -0.8164970f),
113 stru160( 0.0000000f, -0.7071070f, -0.7071070f),
114 stru160( 0.8164970f, -0.4082480f, -0.4082480f),
115 stru160( 0.4082480f, -0.8164970f, -0.4082480f),
116 stru160( 0.0000000f, -0.9238799f, -0.3826830f),
117 stru160(-0.3826830f, 0.0000000f, -0.9238799f),
118 stru160(-0.4082480f, -0.4082480f, -0.8164970f),
119 stru160(-0.7071070f, 0.0000000f, -0.7071070f),
120 stru160(-0.4082480f, -0.8164970f, -0.4082480f),
121 stru160(-0.8164970f, -0.4082480f, -0.4082480f),
122 stru160(-0.9238799f, 0.0000000f, -0.3826830f),
123 stru160(-0.4082480f, 0.4082480f, -0.8164970f),
124 stru160(-0.8164970f, 0.4082480f, -0.4082480f),
125 stru160(-0.4082480f, 0.8164970f, -0.4082480f)
126 }};
127 std::array<stru160, 128> array_4EBBD0;
128 std::array<__int32, 128*3> array_4EBBD0_x =
129 {{
130 0x00000000, 0x00000001, 0x00000002, 0x00000001,
131 0x00000003, 0x00000002, 0x00000001, 0x00000004,
132 0x00000003, 0x00000003, 0x00000005, 0x00000002,
133 0x00000004, 0x00000006, 0x00000003, 0x00000006,
134 0x00000007, 0x00000003, 0x00000006, 0x00000008,
135 0x00000007, 0x00000007, 0x00000005, 0x00000003,
136 0x00000004, 0x00000009, 0x00000006, 0x00000009,
137 0x0000000A, 0x00000006, 0x00000009, 0x0000000B,
138 0x0000000A, 0x0000000A, 0x00000008, 0x00000006,
139 0x00000008, 0x0000000C, 0x00000007, 0x0000000C,
140 0x0000000D, 0x00000007, 0x0000000C, 0x0000000E,
141 0x0000000D, 0x0000000D, 0x00000005, 0x00000007,
142 0x00000000, 0x00000002, 0x0000000F, 0x00000002,
143 0x00000010, 0x0000000F, 0x00000002, 0x00000005,
144 0x00000010, 0x00000010, 0x00000011, 0x0000000F,
145 0x00000005, 0x00000012, 0x00000010, 0x00000012,
146 0x00000013, 0x00000010, 0x00000012, 0x00000014,
147 0x00000013, 0x00000013, 0x00000011, 0x00000010,
148 0x00000005, 0x0000000D, 0x00000012, 0x0000000D,
149 0x00000015, 0x00000012, 0x0000000D, 0x0000000E,
150 0x00000015, 0x00000015, 0x00000014, 0x00000012,
151 0x00000014, 0x00000016, 0x00000013, 0x00000016,
152 0x00000017, 0x00000013, 0x00000016, 0x00000018,
153 0x00000017, 0x00000017, 0x00000011, 0x00000013,
154 0x00000000, 0x0000000F, 0x00000019, 0x0000000F,
155 0x0000001A, 0x00000019, 0x0000000F, 0x00000011,
156 0x0000001A, 0x0000001A, 0x0000001B, 0x00000019,
157 0x00000011, 0x0000001C, 0x0000001A, 0x0000001C,
158 0x0000001D, 0x0000001A, 0x0000001C, 0x0000001E,
159 0x0000001D, 0x0000001D, 0x0000001B, 0x0000001A,
160 0x00000011, 0x00000017, 0x0000001C, 0x00000017,
161 0x0000001F, 0x0000001C, 0x00000017, 0x00000018,
162 0x0000001F, 0x0000001F, 0x0000001E, 0x0000001C,
163 0x0000001E, 0x00000020, 0x0000001D, 0x00000020,
164 0x00000021, 0x0000001D, 0x00000020, 0x00000022,
165 0x00000021, 0x00000021, 0x0000001B, 0x0000001D,
166 0x00000000, 0x00000019, 0x00000001, 0x00000019,
167 0x00000023, 0x00000001, 0x00000019, 0x0000001B,
168 0x00000023, 0x00000023, 0x00000004, 0x00000001,
169 0x0000001B, 0x00000024, 0x00000023, 0x00000024,
170 0x00000025, 0x00000023, 0x00000024, 0x00000026,
171 0x00000025, 0x00000025, 0x00000004, 0x00000023,
172 0x0000001B, 0x00000021, 0x00000024, 0x00000021,
173 0x00000027, 0x00000024, 0x00000021, 0x00000022,
174 0x00000027, 0x00000027, 0x00000026, 0x00000024,
175 0x00000026, 0x00000028, 0x00000025, 0x00000028,
176 0x00000009, 0x00000025, 0x00000028, 0x0000000B,
177 0x00000009, 0x00000009, 0x00000004, 0x00000025,
178 0x00000029, 0x0000002A, 0x0000002B, 0x0000002A,
179 0x0000002C, 0x0000002B, 0x0000002A, 0x0000002D,
180 0x0000002C, 0x0000002C, 0x0000002E, 0x0000002B,
181 0x0000002D, 0x0000002F, 0x0000002C, 0x0000002F,
182 0x00000030, 0x0000002C, 0x0000002F, 0x00000008,
183 0x00000030, 0x00000030, 0x0000002E, 0x0000002C,
184 0x0000002D, 0x00000031, 0x0000002F, 0x00000031,
185 0x0000000A, 0x0000002F, 0x00000031, 0x0000000B,
186 0x0000000A, 0x0000000A, 0x00000008, 0x0000002F,
187 0x00000008, 0x0000000C, 0x00000030, 0x0000000C,
188 0x00000032, 0x00000030, 0x0000000C, 0x0000000E,
189 0x00000032, 0x00000032, 0x0000002E, 0x00000030,
190 0x00000029, 0x0000002B, 0x00000033, 0x0000002B,
191 0x00000034, 0x00000033, 0x0000002B, 0x0000002E,
192 0x00000034, 0x00000034, 0x00000035, 0x00000033,
193 0x0000002E, 0x00000036, 0x00000034, 0x00000036,
194 0x00000037, 0x00000034, 0x00000036, 0x00000014,
195 0x00000037, 0x00000037, 0x00000035, 0x00000034,
196 0x0000002E, 0x00000032, 0x00000036, 0x00000032,
197 0x00000015, 0x00000036, 0x00000032, 0x0000000E,
198 0x00000015, 0x00000015, 0x00000014, 0x00000036,
199 0x00000014, 0x00000016, 0x00000037, 0x00000016,
200 0x00000038, 0x00000037, 0x00000016, 0x00000018,
201 0x00000038, 0x00000038, 0x00000035, 0x00000037,
202 0x00000029, 0x00000033, 0x00000039, 0x00000033,
203 0x0000003A, 0x00000039, 0x00000033, 0x00000035,
204 0x0000003A, 0x0000003A, 0x0000003B, 0x00000039,
205 0x00000035, 0x0000003C, 0x0000003A, 0x0000003C,
206 0x0000003D, 0x0000003A, 0x0000003C, 0x0000001E,
207 0x0000003D, 0x0000003D, 0x0000003B, 0x0000003A,
208 0x00000035, 0x00000038, 0x0000003C, 0x00000038,
209 0x0000001F, 0x0000003C, 0x00000038, 0x00000018,
210 0x0000001F, 0x0000001F, 0x0000001E, 0x0000003C,
211 0x0000001E, 0x00000020, 0x0000003D, 0x00000020,
212 0x0000003E, 0x0000003D, 0x00000020, 0x00000022,
213 0x0000003E, 0x0000003E, 0x0000003B, 0x0000003D,
214 0x00000029, 0x00000039, 0x0000002A, 0x00000039,
215 0x0000003F, 0x0000002A, 0x00000039, 0x0000003B,
216 0x0000003F, 0x0000003F, 0x0000002D, 0x0000002A,
217 0x0000003B, 0x00000040, 0x0000003F, 0x00000040,
218 0x00000041, 0x0000003F, 0x00000040, 0x00000026,
219 0x00000041, 0x00000041, 0x0000002D, 0x0000003F,
220 0x0000003B, 0x0000003E, 0x00000040, 0x0000003E,
221 0x00000027, 0x00000040, 0x0000003E, 0x00000022,
222 0x00000027, 0x00000027, 0x00000026, 0x00000040,
223 0x00000026, 0x00000028, 0x00000041, 0x00000028,
224 0x00000031, 0x00000041, 0x00000028, 0x0000000B,
225 0x00000031, 0x00000031, 0x0000002D, 0x00000041
226 }};
227
228 #include "MapsLongTimer.h"
229 MapsLongTimer MapsLongTimersList[100];
230
231 #include "Engine/Objects/ObjectList.h"
232 struct ObjectList *pObjectList;
233
234 #include "Engine/Tables/IconFrameTable.h"
235 struct IconFrameTable *pIconsFrameTable;
236
237 struct
238 {
239 struct UIAnimation _pUIAnim_Food;
240 struct UIAnimation _pUIAnim_Gold;
241 struct UIAnimation _pUIAnum_Torchlight;
242 struct UIAnimation _pUIAnim_WizardEye;
243 } _uianim;
244
245 struct UIAnimation *pUIAnim_Food = &_uianim._pUIAnim_Food;
246 struct UIAnimation *pUIAnim_Gold = &_uianim._pUIAnim_Gold;
247 struct UIAnimation *pUIAnum_Torchlight = &_uianim._pUIAnum_Torchlight;
248 struct UIAnimation *pUIAnim_WizardEye = &_uianim._pUIAnim_WizardEye;
249
250 std::array<struct UIAnimation *, 4> pUIAnims =
251 {
252 &_uianim._pUIAnim_Food,
253 &_uianim._pUIAnim_Gold,
254 &_uianim._pUIAnum_Torchlight,
255 &_uianim._pUIAnim_WizardEye
256 };
257
258
259
260 #include "Engine/Tables/PlayerFrameTable.h"
261 struct PlayerFrameTable *pPlayerFrameTable; // idb
262
263 #include "MM7.h"
264
265
266 std::array<stat_coord, 26> stat_string_coord = //4E2940
267 {{
268 {0x1A, 0x39, 0xDC, 0x12},
269 {0x1A, 0x4A, 0xDC, 0x12},
270 {0x1A, 0x5B, 0xDC, 0x12},
271 {0x1A, 0x6C, 0xDC, 0x12},
272 {0x1A, 0x7D, 0xDC, 0x12},
273 {0x1A, 0x8E, 0xDC, 0x12},
274 {0x1A, 0x9F, 0xDC, 0x12},
275 {0x1A, 0xC6, 0xDC, 0x12},
276 {0x1A, 0xD7, 0xDC, 0x12},
277 {0x1A, 0xE8, 0xDC, 0x12},
278 {0x1A, 0x10C, 0xDC, 0x12},
279 {0x1A, 0x11E, 0xDC, 0x12},
280 {0x111, 0x36, 0xBA, 0x12},
281 {0x111, 0x47, 0xBA, 0x12},
282 {0x111, 0x58, 0xBA, 0x12},
283 {0x111, 0x7E, 0xBA, 0x12},
284 {0x111, 0x8F, 0xBA, 0x12},
285 {0x111, 0xA0, 0xBA, 0x12},
286 {0x111, 0xB1, 0xBA, 0x12},
287 {0x111, 0xCA, 0xBA, 0x12},
288 {0x111, 0xDD, 0xBA, 0x12},
289 {0x111, 0xF0, 0xBA, 0x12},
290 {0x111, 0x103, 0xBA, 0x12},
291 {0x111, 0x116, 0xBA, 0x12},
292 {0x111, 0x129, 0xBA, 0x12},
293 {0x13E, 0x12, 0x89, 0x12},
294 }
295 };
296
297
298
299
300
301 #include "stru314.h"
302 #include "stru367.h"
303
304
305
306 //-------------------------------------------------------------------------
307 // Data declarations
308
309 int game_starting_year = 0;
310 unsigned int game_viewport_width;
311 unsigned int game_viewport_height;
312 int game_viewport_x;
313 int game_viewport_y;
314 int game_viewport_z;
315 int game_viewport_w;
316
317
318
319 std::array<unsigned int, 2> saveload_dlg_xs = {82, 0};
320 std::array<unsigned int, 2> saveload_dlg_ys = {60, 0};
321 std::array<unsigned int, 2> saveload_dlg_zs = {460, 640};
322 std::array<unsigned int, 2> saveload_dlg_ws = {344, 480};
323 int pWindowList_at_506F50_minus1_indexing[1];
324 int dword_4C9890[10]; // weak
325 int dword_4C9920[16]; // weak
326 char byte_4D864C; // weak
327 float flt_4D86CC = 1.0f; // weak
328 int dword_4D86D8 = 0x40000000; // weak
329
330
331
332
333
334
335
336 float flt_4D84E8 = 0.0f;
337
338 int pCurrentScreen = SCREEN_VIDEO; // 004E28F8
339 unsigned int uGammaPos;
340 std::array<int, 8> BtnTurnCoord =
341 {{
342 0xA4, 0x5D, 0x16, 0xB, 0x5, 0xD, 0x7, 0x3B,
343 }}; // weak
344 std::array<__int16, 4> RightClickPortraitXmin={{0x14, 0x83, 0xF2, 0x165}};
345 std::array<__int16, 4> RightClickPortraitXmax={{0x53, 0xC6, 0x138, 0x1A7}};
346
347 std::array<unsigned int, 4> pHealthBarPos = {{22, 137, 251, 366}};
348 std::array<unsigned int, 4> pManaBarPos = {{102, 217, 331, 447}};
349
350 std::array<char, 88> monster_popup_y_offsets =
351 {{
352 -20, 20, 0, -40, 0, 0, 0, 0, 0, 0, -50,
353 20, 0, -10, -10, -20, 10, -10, 0, 0, 0, -20,
354 10, -10, 0, 0, 0, -20, -10, 0, 0, 0, -40,
355 -20, 0, 0, 0, -50, -30, -30, -30, -30, -30, -30,
356 0, 0, 0, 0, 0, 0, -20, -20, -20, 20, 20,
357 20, 10, 10, 10, 10, 10, 10, -90, -60, -40, -20,
358 -20, -80, -10, 0, 0, -40, 0, 0, 0, -20, 10,
359 0, 0, 0, 0, 0, 0, -60, 0, 0, 0, 0
360 }};
361 unsigned char hourglass_icon_idx = 12; // weak
362
363
364 const char *format_4E2D80 = "\f%05d%s\f00000\n";
365 //const char *format_4E2DC8 = "\f%05d";
366 const char *format_4E2DE8 = "\f%05d%s\f00000 - ";
367 const char *Stat_string_format_2_column_text = "%s\f%05u\r180%s\n";
368 const char *Stat_string_format_2_column_less_100 = "%s\f%05u\t110%d\f00000 / %d\n";
369 const char *Stat_string_format_2_column_over_100 = "%s\f%05u\r180%d\f00000 / %d\n";
370 int dword_4E455C; // weak
371 std::array<int, 6> dword_4E4560;
372 std::array<int, 6> dword_4E4578;
373 std::array<int, 6> dword_4E4590;
374 std::array<int, 6> dword_4E45A8;
375 std::array<float, 10> flt_4E4A80 =
376 {
377 0.050000001, 0.1, 0.30000001, 0.5, 0.60000002,
378 1.0, 6.0, 25.0, 50.0, 100.0
379 };
380
381
382 std::array< std::array<int, 2>, 14> pPartySpellbuffsUI_XYs =
383 {{
384 {477, 247}, {497, 247}, {522, 247}, {542, 247}, {564, 247}, {581, 247}, {614, 247},
385 {477, 279}, {497, 279}, {522, 279}, {542, 279}, {564, 279}, {589, 279}, {612, 279}
386 }};
387 std::array<unsigned char, 14> byte_4E5DD8 =
388 {{
389 PARTY_BUFF_FEATHER_FALL, PARTY_BUFF_RESIST_FIRE, PARTY_BUFF_RESIST_AIR, PARTY_BUFF_RESIST_WATER, PARTY_BUFF_RESIST_MIND, PARTY_BUFF_RESIST_EARTH, PARTY_BUFF_RESIST_BODY,
390 PARTY_BUFF_HEROISM, PARTY_BUFF_HASTE, PARTY_BUFF_SHIELD, PARTY_BUFF_STONE_SKIN, PARTY_BUFF_PROTECTION_FROM_MAGIC, PARTY_BUFF_IMMOLATION, PARTY_BUFF_DAY_OF_GODS
391 }};
392 std::array<unsigned __int8, 14> pPartySpellbuffsUI_smthns =
393 {{
394 14, 1, 10, 4, 7, 2, 9,
395 3, 6, 15, 8, 3, 12, 0
396 }};
397
398 std::array< std::array<int, 6>, 6> pNPCPortraits_x = // 004E5E50
399 {{
400 {521, 0, 0, 0, 0, 0},
401 {521, 521, 0, 0, 0, 0},
402 {521, 521, 521, 0, 0, 0},
403 {521, 486, 564, 521, 0, 0},
404 {521, 486, 564, 486, 564, 0},
405 {486, 564, 486, 564, 486, 564}
406 }};
407 std::array< std::array<int, 6>, 6> pNPCPortraits_y = // 004E5EE0
408 {{
409 {38, 0, 0, 0, 0, 0},
410 {38, 165, 0, 0, 0, 0},
411 {38, 133, 228, 0, 0, 0},
412 {38, 133, 133, 228, 0, 0},
413 {38, 133, 133, 228, 228, 0},
414 {38, 38, 133, 133, 228, 228}
415 }};
416 std::array<const char *, 11> pHouse_ExitPictures=
417 {
418 "",
419 "ticon01",
420 "ticon02",
421 "ticon03",
422 "ticon04",
423 "ticon05",
424 "istairup",
425 "itrap",
426 "outside",
427 "idoor",
428 "isecdoor"
429 };
430
431 std::array<__int16, 11> word_4E8152 = {0, 0, 0, 90, 8, 2, 70, 20, 10, 50, 30};
432
433 char _4E94D0_light_type = 5; // weak
434 char _4E94D2_light_type = 6; // weak
435 char _4E94D3_light_type = 10; // weak
436 int dword_4E98BC_bApplicationActive; // weak
437 //char *off_4EB080; // idb
438 std::array<char*, 465> pTransitionStrings = {"", nullptr}; // 004EB080
439 std::array<const char*, 25> pPlayerPortraitsNames =
440 {{
441 "pc01-", "pc02", "pc03", "pc04", "pc05-",
442 "pc06", "pc07", "pc08", "pc09-", "pc10",
443 "pc11-", "pc12", "pc13", "pc14", "pc15",
444 "pc16", "pc17-", "pc18", "pc19", "pc20",
445 "pc21-", "pc22-", "pc23", "pc24-", "pc25-"
446 }};
447
448
449
450 std::array< std::array<unsigned char, 25>, 48> byte_4ECF08 = // 4ECF08
451 {{
452 {2, 1, 2, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 1, 1},//1
453 {2, 1, 2, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2},//2
454 {2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2},//3
455 {2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2},//4
456 {2, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2},//5
457 {2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2},//6
458 {2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2},//7
459 {2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 1, 1},//8
460 {2, 1, 2, 2, 2, 2, 1, 2, 1, 2, 2, 2, 1, 2, 2, 1, 2, 2, 1, 2, 2, 2, 2, 2, 2},//9
461 {2, 1, 2, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2},//10
462 {2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 1, 1, 2, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2},//11
463 {1, 1, 2, 1, 2, 1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2},//12
464 {2, 1, 2, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2},//13
465 {1, 1, 2, 1, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 1, 2, 2, 1, 2, 1, 2, 1, 2, 2},//14
466 {2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 2, 1, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 2, 2, 2},//15
467 {1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 1, 1},//16
468 {1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},//17
469 {1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 2, 1, 2, 1, 1, 1, 2, 1, 2, 1, 1},//18
470 {1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},//19
471 {1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},//20
472 {1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},//21
473 {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},//22
474 {2, 2, 2, 1, 2, 2, 2, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1},//23
475 {2, 2, 2, 1, 2, 2, 2, 2, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2},//24
476 {1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 1, 1, 1, 1, 2, 2, 2, 1, 2, 1, 1},//25
477 {2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2},//26
478 {2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 1, 2, 1, 2, 2, 2, 2, 2, 2, 2},//27
479 {1, 2, 2, 1, 2, 2, 2, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},//28
480 {2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 1, 2, 2, 1, 2, 1, 1},//29
481 {1, 2, 2, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1},//30
482 {1, 1, 2, 1, 2, 1, 2, 2, 2, 2, 2, 1, 2, 1, 2, 1, 2, 2, 2, 2, 2, 1, 2, 1, 1},//31
483 {1, 1, 2, 1, 1, 2, 2, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2},//32
484 {1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1},//33
485 {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1},//34
486 {1, 1, 1, 2, 1, 2, 2, 1, 1, 2, 2, 1, 2, 2, 1, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2},//35
487 {1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2},//36
488 {2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2},//37
489 {2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 1, 2, 1, 1},//38
490 {1, 1, 1, 1, 2, 2, 1, 2, 1, 1, 1, 1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1},//39
491 {1, 2, 2, 1, 2, 2, 2, 2, 2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},//40
492 {2, 1, 2, 1, 2, 1, 2, 2, 2, 1, 1, 2, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1},//41
493 {1, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 1},//42
494 {1, 2, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},//43
495 {1, 2, 1, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 2, 1, 1, 2, 1, 2, 1, 1, 2, 1, 2, 2},//44
496 {2, 1, 1, 1, 2, 2, 1, 1, 2, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2, 2, 1, 2, 1, 2, 2},//45
497 {1, 1, 1, 2, 2, 2, 1, 1, 2, 1, 2, 1, 2, 2, 2, 2, 2, 1, 1, 2, 1, 2, 1, 2, 2},//46
498 {1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 2, 2, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1},//47
499 {1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 2, 2, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1},//48
500 }};
501 std::array<std::array<unsigned char, 8>, 110> SoundSetAction = // 4ED3D8
502 {{
503 { 0, 0, 0, 0, 0, 0, 0, 0},
504 {38, 0, 0, 37, 38, 45, 0, 0},
505 {37, 0, 0, 47, 53, 0, 0, 0},
506 { 2, 0, 0, 25, 0, 0, 0, 0},
507 { 1, 0, 0, 47, 0, 0, 0, 0},
508 { 3, 0, 0, 41, 42, 0, 0, 0},
509 { 0, 0, 0, 33, 0, 0, 0, 0},
510 { 5, 0, 0, 21, 22, 23, 24, 45},
511 { 6, 0, 0, 47, 0, 0, 0, 0},
512 { 7, 0, 0, 43, 48, 0, 0, 0},
513 { 8, 0, 0, 38, 0, 0, 0, 0},
514 { 9, 0, 0, 39, 0, 0, 0, 0},
515 {13, 0, 0, 37, 38, 0, 0, 0},
516 {23, 0, 0, 25, 0, 0, 0, 0},
517 { 0, 0, 0, 37, 38, 45, 0, 0},
518 {25, 0, 0, 25, 0, 0, 0, 0},
519 {26, 0, 0, 38, 47, 0, 0, 0},
520 {27, 0, 0, 41, 42, 0, 0, 0},
521 {28, 0, 0, 25, 0, 0, 0, 0},
522 { 0, 0, 0, 51, 0, 0, 0, 0},
523 {30, 0, 0, 25, 0, 0, 0, 0},
524 {29, 0, 0, 27, 0, 0, 0, 0},
525 {32, 33, 0, 37, 38, 0, 0, 0},
526 {34, 0, 0, 53, 0, 0, 0, 0},
527 {15, 0, 0, 34, 35, 36, 0, 0},
528 { 0, 0, 0, 3, 0, 0, 0, 0},
529 {22, 0, 0, 5, 0, 0, 0, 0},
530 {20, 0, 0, 8, 0, 0, 0, 0},
531 {20, 0, 0, 9, 0, 0, 0, 0},
532 {19, 0, 0, 7, 0, 0, 0, 0},
533 {21, 0, 0, 2, 0, 0, 0, 0},
534 {18, 0, 0, 6, 0, 0, 0, 0},
535 { 0, 0, 0, 11, 0, 0, 0, 0},
536 {17, 0, 0, 0, 0, 0, 0, 0},
537 { 0, 0, 0, 12, 0, 0, 0, 0},
538 {17, 0, 0, 0, 0, 0, 0, 0},
539 { 0, 0, 0, 37, 0, 0, 0, 0},
540 { 0, 0, 0, 49, 0, 0, 0, 0},
541 {24, 0, 0, 25, 0, 0, 0, 0},
542 {31, 0, 0, 25, 0, 0, 0, 0},
543 { 0, 0, 0, 41, 42, 0, 0, 0},
544 { 0, 0, 0, 39, 48, 0, 0, 0},
545 { 0, 0, 0, 46, 0, 0, 0, 0},
546 { 0, 0, 0, 39, 48, 0, 0, 0},
547 { 0, 0, 0, 41, 42, 0, 0, 0},
548 { 0, 0, 0, 39, 48, 0, 0, 0},
549 {41, 0, 0, 21, 0, 0, 0, 0},
550 {40, 0, 0, 21, 0, 0, 0, 0},
551 {16, 0, 0, 46, 0, 0, 0, 0},
552 { 0, 0, 0, 40, 0, 0, 0, 0},
553 { 0, 0, 0, 39, 0, 0, 0, 0},
554 { 0, 0, 0, 37, 38, 0, 0, 0},
555 { 0, 0, 0, 48, 49, 50, 0, 0},
556 { 0, 0, 0, 44, 0, 0, 0, 0},
557 { 0, 0, 0, 48, 0, 0, 0, 0},
558 { 0, 0, 0, 37, 38, 45, 0, 0},
559 { 0, 0, 0, 41, 42, 0, 0, 0},
560 { 0, 0, 0, 47, 0, 0, 0, 0},
561 { 0, 0, 0, 39, 48, 0, 0, 0},
562 { 0, 0, 0, 39, 48, 0, 0, 0},
563 { 0, 0, 0, 37, 38, 0, 0, 0},
564 { 0, 0, 0, 37, 38, 0, 0, 0},
565 { 0, 0, 0, 37, 38, 0, 0, 0},
566 { 0, 0, 0, 31, 0, 0, 0, 0},
567 { 0, 0, 0, 32, 0, 0, 0, 0},
568 {47, 0, 0, 46, 0, 0, 0, 0},
569 {22, 0, 0, 5, 0, 0, 0, 0},
570 { 0, 0, 0, 25, 0, 0, 0, 0},
571 { 0, 0, 0, 37, 0, 0, 0, 0},
572 { 0, 0, 0, 52, 0, 0, 0, 0},
573 { 0, 0, 0, 45, 0, 0, 0, 0},
574 { 0, 0, 0, 27, 0, 0, 0, 0},
575 { 0, 0, 0, 37, 38, 0, 0, 0},
576 { 0, 0, 0, 49, 0, 0, 0, 0},
577 { 0, 0, 0, 48, 0, 0, 0, 0},
578 { 0, 0, 0, 37, 38, 45, 0, 0},
579 { 0, 0, 0, 48, 0, 0, 0, 0},
580 { 0, 0, 0, 37, 38, 45, 0, 0},
581 { 0, 0, 0, 47, 0, 0, 0, 0},
582 { 0, 0, 0, 48, 0, 0, 0, 0},
583 {44, 0, 0, 39, 48, 0, 0, 0},
584 { 0, 0, 0, 48, 49, 0, 0, 0},
585 { 0, 0, 0, 38, 0, 0, 0, 0},
586 { 0, 0, 0, 31, 0, 0, 0, 0},
587 {32, 33, 0, 37, 38, 0, 0, 0},
588 { 0, 0, 0, 37, 38, 0, 0, 0},
589 { 0, 0, 0, 37, 38, 0, 0, 0},
590 { 0, 0, 0, 47, 0, 0, 0, 0},
591 { 0, 0, 0, 38, 0, 0, 0, 0},
592 { 0, 0, 0, 48, 0, 0, 0, 0},
593 { 0, 0, 0, 0, 0, 0, 0, 0},
594 { 0, 0, 0, 38, 0, 0, 0, 0},
595 { 0, 0, 0, 47, 0, 0, 0, 0},
596 { 0, 0, 0, 38, 0, 0, 0, 0},
597 { 0, 0, 0, 0, 0, 0, 0, 0},
598 { 0, 0, 0, 0, 0, 0, 0, 0},
599 { 0, 0, 0, 38, 0, 0, 0, 0},
600 { 0, 0, 0, 38, 0, 0, 0, 0},
601 { 0, 0, 0, 5, 0, 0, 0, 0},
602 { 0, 0, 0, 37, 38, 0, 0, 0},
603 { 0, 0, 0, 44, 0, 0, 0, 0},
604 { 0, 0, 0, 48, 0, 0, 0, 0},
605 { 4, 0, 0, 0, 0, 0, 0, 0},
606 { 0, 0, 0, 58, 0, 0, 0, 0},
607 {10, 0, 0, 45, 0, 0, 0, 0},
608 {11, 0, 0, 47, 0, 0, 0, 0},
609 {12, 0, 0, 43, 48, 0, 0, 0},
610 {39, 0, 0, 48, 0, 0, 0, 0},
611 {14, 0, 0, 48, 0, 0, 0, 0},
612 {17, 0, 0, 0, 0, 0, 0, 0}
613 }};
614 std::array<__int16, 4> pPlayerPortraitsXCoords_For_PlayerBuffAnimsDrawing = {34, 149, 264, 379};
615 std::array< std::array<char, 37>, 36> byte_4ED970_skill_learn_ability_by_class_table =
616 {{
617 2, 3, 2, 3, 3, 2, 3, 4, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 3, 0, 2, 1, 0, 1, 2, 2, 0, 3, 0, 0, 1,//Knight
618 2, 3, 2, 3, 3, 2, 3, 4, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 3, 0, 2, 1, 0, 1, 2, 2, 0, 3, 0, 0, 1,
619 2, 4, 2, 3, 4, 2, 3, 4, 4, 3, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 0, 2, 1, 0, 1, 2, 2, 0, 4, 0, 0, 1,
620 2, 4, 2, 3, 4, 2, 3, 4, 4, 3, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 0, 2, 1, 0, 1, 2, 2, 0, 4, 0, 0, 1,
621
622 0, 3, 3, 0, 0, 2, 2, 4, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 1, 2, 0, 3, 0, 0, 3, 3, 2, 0, 3, 3, 2, 2,//Thief
623 0, 3, 3, 0, 0, 2, 2, 4, 1, 3, 2, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 3, 3, 1, 2, 0, 3, 0, 0, 3, 3, 2, 0, 3, 3, 2, 2,
624 0, 3, 4, 0, 0, 2, 2, 4, 1, 4, 2, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 3, 3, 1, 2, 0, 3, 0, 0, 4, 3, 2, 0, 3, 4, 2, 2,
625 0, 3, 4, 0, 0, 2, 2, 4, 1, 4, 2, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 3, 3, 1, 2, 0, 3, 0, 0, 4, 3, 2, 0, 3, 4, 2, 2,
626
627 3, 2, 2, 0, 2, 1, 0, 4, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 2, 1, 0, 1, 3, 3, 2, 3, 1, 0, 3,//Monk
628 3, 2, 2, 0, 2, 1, 0, 4, 0, 3, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 3, 0, 2, 1, 0, 2, 3, 3, 2, 3, 1, 0, 3,
629 4, 2, 2, 0, 2, 1, 0, 4, 0, 3, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 4, 0, 2, 1, 0, 2, 4, 4, 2, 3, 1, 0, 4,
630 4, 2, 2, 0, 2, 1, 0, 4, 0, 3, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 4, 0, 2, 1, 0, 3, 4, 4, 2, 3, 2, 0, 4,
631
632 1, 3, 2, 2, 2, 2, 3, 4, 3, 2, 2, 3, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 2, 3, 3, 2, 1, 3, 0, 0, 1, 1, 0, 2, 0, 0, 1,//Paladin
633 1, 3, 2, 2, 2, 2, 3, 4, 3, 2, 2, 3, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 2, 3, 3, 2, 1, 3, 0, 0, 1, 1, 0, 2, 0, 0, 1,
634 1, 3, 2, 2, 2, 2, 4, 4, 4, 2, 2, 3, 0, 0, 0, 0, 3, 3, 3, 1, 0, 0, 2, 4, 3, 2, 1, 4, 0, 0, 1, 1, 0, 2, 0, 0, 1,
635 1, 3, 2, 2, 2, 2, 4, 4, 4, 2, 2, 3, 0, 0, 0, 0, 3, 3, 3, 0, 1, 0, 2, 4, 3, 2, 1, 4, 0, 0, 1, 1, 0, 2, 0, 0, 1,
636
637 1, 2, 2, 2, 3, 3, 0, 4, 0, 3, 3, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 3, 0, 0, 1, 2, 1, 0, 2, 0, 0, 3,//Archer
638 1, 2, 2, 2, 3, 3, 0, 4, 0, 3, 3, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 3, 0, 0, 1, 2, 1, 0, 2, 0, 0, 3,
639 1, 2, 2, 2, 3, 4, 0, 4, 0, 3, 4, 0, 3, 3, 3, 3, 0, 0, 0, 1, 0, 0, 2, 2, 2, 2, 4, 0, 0, 2, 2, 1, 0, 2, 0, 0, 3,
640 1, 2, 2, 2, 3, 4, 0, 4, 0, 3, 4, 0, 3, 3, 3, 3, 0, 0, 0, 0, 1, 0, 2, 2, 2, 2, 4, 0, 0, 2, 2, 1, 0, 2, 0, 0, 3,
641
642 1, 2, 2, 3, 2, 3, 0, 4, 2, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 2, 1, 3, 2, 0, 2, 2, 1, 3, 2, 2, 1, 2,//Ranger
643 1, 2, 2, 3, 2, 3, 0, 4, 2, 3, 3, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 2, 1, 3, 2, 0, 2, 2, 1, 3, 2, 2, 1, 2,
644 1, 2, 2, 4, 2, 3, 0, 4, 2, 3, 3, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 1, 1, 1, 2, 1, 3, 2, 0, 2, 2, 1, 4, 2, 2, 1, 2,
645 1, 2, 2, 4, 2, 3, 0, 4, 2, 3, 3, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 1, 1, 1, 2, 1, 3, 2, 0, 2, 2, 1, 4, 2, 2, 1, 2,
646
647 1, 0, 0, 0, 0, 2, 3, 4, 3, 2, 2, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 3, 3, 1, 3, 2, 3, 0, 0, 0, 0, 2, 0, 0, 2, 3,//Cleric
648 1, 0, 0, 0, 0, 2, 3, 4, 3, 2, 2, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 3, 3, 1, 3, 2, 3, 0, 0, 0, 0, 2, 0, 0, 2, 3,
649 1, 0, 0, 0, 0, 2, 3, 4, 3, 2, 2, 0, 0, 0, 0, 0, 4, 4, 4, 4, 0, 0, 4, 3, 1, 3, 2, 3, 0, 0, 0, 0, 2, 0, 0, 2, 3,
650 1, 0, 0, 0, 0, 2, 3, 4, 3, 2, 2, 0, 0, 0, 0, 0, 4, 4, 4, 0, 4, 0, 4, 3, 1, 3, 2, 3, 0, 0, 0, 0, 2, 0, 0, 2, 3,
651
652 1, 0, 3, 0, 0, 1, 2, 4, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 0, 0, 3, 2, 0, 0, 0, 0, 0, 2, 1, 0, 3, 3,//Druid
653 1, 0, 3, 0, 0, 1, 2, 4, 2, 2, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 0, 2, 2, 0, 0, 3, 2, 0, 0, 0, 0, 0, 2, 1, 0, 3, 3,
654 1, 0, 3, 0, 0, 1, 2, 4, 2, 2, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 0, 2, 2, 0, 0, 4, 2, 0, 0, 0, 0, 0, 2, 1, 0, 4, 3,
655 1, 0, 3, 0, 0, 1, 2, 4, 2, 2, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 0, 2, 2, 0, 0, 4, 2, 0, 0, 0, 0, 0, 2, 1, 0, 4, 3,
656
657 3, 0, 2, 0, 0, 1, 0, 4, 0, 2, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 3, 1, 2, 0, 3, 2, 1, 0, 0, 0, 0, 3, 0, 0, 3, 3,//Sorcerer
658 3, 0, 2, 0, 0, 1, 0, 4, 0, 2, 0, 0, 3, 3, 3, 3, 0, 0, 0, 0, 0, 3, 1, 2, 0, 3, 2, 1, 0, 0, 0, 0, 3, 0, 0, 3, 3,
659 3, 0, 2, 0, 0, 1, 0, 4, 0, 2, 0, 0, 4, 4, 4, 4, 0, 0, 0, 4, 0, 4, 1, 2, 0, 3, 2, 1, 0, 0, 0, 0, 4, 0, 0, 3, 3,
660 3, 0, 2, 0, 0, 1, 0, 4, 0, 2, 0, 0, 4, 4, 4, 4, 0, 0, 0, 0, 4, 4, 1, 2, 0, 3, 2, 1, 0, 0, 0, 0, 4, 0, 0, 3, 3,
661 }};
662 std::array<unsigned int, 2> pHiredNPCsIconsOffsetsX = {489, 559};
663 std::array<unsigned int, 2> pHiredNPCsIconsOffsetsY = {152, 152};
664 std::array<int, 2> Party_Spec_Motion_status_ids = {7, 18}; //dword_4EE07C
665 std::array<__int16, 101> word_4EE088_sound_ids =
666 {{
667 0, 10000, 10010, 10020, 10030, 10040, 10050, 10060, 10070, 10080,
668 10090, 10100, 11000, 11010, 11020, 11030, 11040, 11050, 11060, 11070,
669 11080, 11090, 11100, 12000, 12010, 12020, 12030, 12040, 12050, 12060,
670 12070, 12080, 12090, 12100, 13000, 13010, 13020, 13030, 13040, 13050,
671 13060, 13070, 13080, 13090, 13100, 14000, 14010, 14020, 14030, 14040,
672 14050, 14060, 14070, 14080, 14090, 14100, 15000, 15010, 15020, 15030,
673 15040, 15050, 15060, 15070, 15080, 15090, 15100, 16000, 16010, 16020,
674 16030, 16040, 16050, 16060, 16070, 16080, 16090, 16100, 17000, 17010,
675 17020, 17030, 17040, 17050, 17060, 17070, 17080, 17090, 17100, 18000,
676 18010, 18020, 18030, 18040, 18050, 18060, 18070, 18080, 18090, 18100,
677 1
678 }};
679 std::array<short, 28> word_4EE150 =
680 {{
681 1, 2, 3, 4, 5, 7, 32, 33, 36, 37, 38, 40, 41, 42, 43, 45, 46,
682 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 60
683 }};
684
685 int ScreenshotFileNumber; // dword_4EFA80
686 std::array<const char *, 19> off_4F03B8 =
687 {{
688 "", "WEPNTABL", "ARMORY", "MAGSHELF",
689 "MAGSHELF", "MAGSHELF", "MAGSHELF", "MAGSHELF",
690 "MAGSHELF", "MAGSHELF", "MAGSHELF", "MAGSHELF",
691 "MAGSHELF", "MAGSHELF", "MAGSHELF", "MAGSHELF",
692 "MAGSHELF", "MAGSHELF", "MAGSHELF"
693 }};
694
695 std::array<int, 32> guild_mambership_flags={{
696 54, 54, 54, 54, 52, 52, 52, 52, 55, 55, 55, 55, 53, 53,
697 53, 53, 58, 58, 58, 58, 57, 57, 57, 57, 56, 56,
698 56, 56, 59, 59, 60, 60}};
699 std::array<__int16, 49> word_4F0754;
700 std::array<__int16, 54> _4F0882_evt_VAR_PlayerItemInHands_vals =
701 {{
702 0x0D4, 0x270, 0x0D5, 0x21C, 0x0D6, 0x2BE, 0x0D7, 0x2BD, 0x0D8, 0x289,
703 0x0D9, 0x258, 0x0DA, 0x2AB, 0x0DB, 0x281, 0x0DC, 0x280, 0x0DD,
704 0x284, 0x0DE, 0x285, 0x0DF, 0x283, 0x0E0, 0x282, 0x0E1, 0x27F,
705 0x0E2, 0x1E7, 0x0E3, 0x287, 0x0E4, 0x272, 0x0E5, 0x267, 0x0E6,
706 0x275, 0x0E7, 0x25A, 0x0E8, 0x2A4, 0x0E9, 0x2A5, 0x0EA, 0x2A3,
707 0x0EB, 0x25C, 0x0EC, 0x25D, 0x0ED, 0x259, 0x0F1, 0x21E
708 }};
709 std::array<unsigned short, 6> pMaxLevelPerTrainingHallType = {5, 15, 25, 25, 200, 200};
710
711 std::array<int, 11> price_for_membership={100, 100, 50, 50, 50, 50, 50, 50, 50, 1000, 1000}; // weak
712
713
714 std::array<__int16, 32> word_4F0F30 ={{ 4, 7, 10, 11,
715 4, 7, 10, 11,
716 4, 7, 10, 11,
717 4, 7, 10, 11,
718 4, 7, 10, 11,
719 4, 7, 10, 11,
720 4, 7, 10, 11,
721 7, 11,
722 7, 11}};
723 std::array<int, 500> ai_array_4F5E68;
724 std::array<int, 500> ai_array_4F6638_actor_ids;
725 std::array<int, 500> ai_near_actors_targets_pid;
726 int ai_arrays_size; // weak
727 std::array<int, 500> ai_near_actors_distances;
728 std::array<unsigned int, 500> ai_near_actors_ids;
729 std::array<int, 182> dword_4F8580 = {}; // weak
730
731 char byte_4FAA24; // weak
732 //HWND dword_4FAA28; // idb
733
734 std::array<unsigned int, 480> pSRZBufferLineOffsets;
735 int areWeLoadingTexture; // weak
736 std::array<char, 777> books_num_items_per_page; // weak
737 int lloyds_beacon_spell_id; // dword_506338
738 int lloyds_beacon_sound_id; // dword_50633C
739 signed int sRecoveryTime; // idb
740 unsigned int uRequiredMana; // idb
741 int _506348_current_lloyd_playerid; // weak
742 __int64 lloyds_beacon_spell_level; // qword_506350
743 char byte_506360; // weak
744 int dword_506364; // weak
745 unsigned int uExitCancelTextureId;
746 int books_page_number; // weak
747 int books_primary_item_per_page; // weak
748 int Autonotes_Instructors_page_flag; // dword_50652C
749 int Autonotes_Misc_page_flag; //dword_506530
750 int Book_PageBtn6_flag; //dword_506534
751 int Book_PageBtn5_flag; //dword_506538
752 int Book_PageBtn4_flag; // dword_50653C
753 int Book_PageBtn3_flag; //dword_506540
754 int BtnDown_flag; //BtnDown_flag
755 int BtnUp_flag; //BtnUp_flag
756 int quick_spell_at_page; // weak
757 char byte_506550; // weak
758 std::array<const char *, 5> aMoonPhaseNames;
759 int _506568_autonote_type; // weak
760 char bRecallingBeacon; // weak
761 int uLastPointedObjectID; // weak
762 //unsigned __int8 bMonsterInfoUI_bDollInitialized;
763 std::array<const char *, 44> aSpellNames;
764 int pMainScreenNum; // weak
765 int dword_506980_uW; // weak
766 int dword_506984_uZ; // weak
767 int dword_506988_uY; // weak
768 int dword_50698C_uX; // weak
769 int uGameMenuUI_CurentlySelectedKeyIdx; // 506E68
770 std::array<unsigned int, 28> pPrevVirtualCidesMapping;
771 int KeyboardPageNum; // weak
772 int uRestUI_FoodRequiredToRest;
773 int dword_506F14; // weak
774 int _506F18_num_minutes_to_sleep; // weak
775 int dword_506F1C; // weak
776 std::array<int, 20> pVisibleWindowsIdxs; // weak
777 int uNumVisibleWindows;
778 char bFlashHistoryBook; // weak
779 char bFlashAutonotesBook; // weak
780 char bFlashQuestBook; // weak
781 int uTextureID_PlayerBuff_PainReflection; // weak
782 int uTextureID_PlayerBuff_Hammerhands; // weak
783 int uTextureID_PlayerBuff_Preservation; // weak
784 int uTextureID_PlayerBuff_Bless; // weak
785 int uTextureID_Btn_QuickReference; // weak
786 int uTextureID_Compas; // dword_5079B4
787 int dword_5079C8; // weak
788 int dword_5079CC; // weak
789 int dword_5079D0; // weak
790 int uTextureID_Minimap_Loop; // dword_5079D8
791 struct GUIButton *pBtn_ZoomOut; // idb
792 struct GUIButton *pBtn_ZoomIn; // idb
793 unsigned int uGameUIFontShadow;
794 unsigned int uGameUIFontMain;
795 int dword_507B00_spell_info_to_draw_in_popup; // weak
796 std::array<const char *, 12> aMonthNames;
797 std::array<const char *, 7> aDayNames;
798 std::array<const char *, 9> aSpellSchoolNames;
799 std::array<const char *, 7> aAttributeNames;
800 unsigned int uActiveCharacter;
801 int dword_507BF0_is_there_popup_onscreen; // weak
802 int awards_scroll_bar_created; // weak
803 int dword_507CC0_activ_ch; // weak
804 __int64 GameUI_RightPanel_BookFlashTimer; // weak
805 int _507CD4_RestUI_hourglass_anim_controller; // weak
806 bool OpenedTelekinesis;
807 std::array<int, 50> dword_50B570; // weak
808 std::array<int, 50> dword_50B638; // weak
809 stru367 PortalFace;
810 std::array<int, 100> dword_50BC10; // weak
811 std::array<int, 100> dword_50BDA0; // weak
812 std::array<int, 100> _50BF30_actors_in_viewport_ids; // weak
813 char town_portal_caster_id; // weak
814 int some_active_character; // weak
815 std::array<unsigned int, 5> pIconIDs_Turn;
816 unsigned int uIconID_TurnStop;
817 unsigned int uIconID_TurnHour;
818 int uIconID_CharacterFrame; // idb
819 unsigned int uIconID_TurnStart;
820 int dword_50C994 = 0; // weak
821 int dword_50C998_turnbased_icon_1A = 0; // weak
822 int uSpriteID_Spell11; // idb
823 bool _50C9A0_IsEnchantingInProgress; // weak
824 int _50C9A8_item_enchantment_timer = 0; // weak
825 int _50C9D0_AfterEnchClickEventId; // weak
826 int _50C9D4_AfterEnchClickEventSecondParam; // weak
827 int _50C9D8_AfterEnchClickEventTimeout; // weak
828 int dword_50C9DC; // weak
829 struct NPCData *ptr_50C9E0;
830 //int dword_50C9E8; // idb
831 //int dword_50C9EC[120]; // weak
832 int dword_50CDC8;
833 Vec3_int_ layingitem_vel_50FDFC;
834 char pStartingMapName[32]; // idb
835 std::array<unsigned __int8, 5> IsPlayerWearingWatersuit;
836 std::array<char, 54> party_has_equipment;
837 std::array<char, 17> byte_5111F6_OwnedArtifacts;
838
839 unsigned int uNumBlueFacesInBLVMinimap;
840 std::array<unsigned __int16, 50> pBlueFacesInBLVMinimapIDs;
841 std::array<int, 14> pTextureIDs_PartyBuffIcons;
842 unsigned int uIconIdx_FlySpell;
843 unsigned int uIconIdx_WaterWalk;
844 int dword_576E28; // weak
845 int _576E2C_current_minimap_zoom; // weak
846 __int64 _5773B8_event_timer; // weak
847
848
849 int dword_591084; // weak
850 struct Actor *pDialogue_SpeakingActor;
851 unsigned int uDialogueType;
852 int sDialogue_SpeakingActorNPC_ID;
853 struct LevelDecoration *_591094_decoration;
854 std::array<char, 200> sHouseName; // idb
855 int uCurrentHouse_Animation; // weak
856 char *dword_591164_teleport_map_name; // idb
857 int dword_591168_teleport_speedz; // weak
858 int dword_59116C_teleport_directionx; // weak
859 int dword_591170_teleport_directiony; // weak
860 int dword_591174_teleportz; // weak
861 int dword_591178_teleporty; // weak
862 int dword_59117C_teleportx; // weak
863 std::array<std::array<char, 100>, 6> byte_591180; // idb
864 std::array<struct NPCData *, 7> HouseNPCData;//0 zero element holds standart house npc
865 GUIButton* HouseNPCPortraitsButtonsList[6];//dword_5913F4
866 struct Texture *pTexture_591428;
867 struct Texture *pTexture_outside; // idb
868 struct Texture *pTexture_Dialogue_Background;
869 std::array<char, 2000> byte_5B0938;
870 int EvtTargetObj; // 0x5B5920
871 int _unused_5B5924_is_travel_ui_drawn = false; // 005B5924
872 int _5B65A8_npcdata_uflags_or_other; // weak
873 int _5B65AC_npcdata_fame_or_other; // weak
874 int _5B65B0_npcdata_rep_or_other; // weak
875 int _5B65B4_npcdata_loword_house_or_other; // weak
876 int _5B65B8_npcdata_hiword_house_or_other; // weak
877 int dword_5B65BC; // weak
878 int dword_5B65C0; // weak
879 int dword_5B65C4_cancelEventProcessing; // weak
880 int MapsLongTimers_count; // dword_5B65C8 ������� �������� ��� ��������, ���������-�������
881 int npcIdToDismissAfterDialogue; // weak
882 signed int dword_5B65D0_dialogue_actor_npc_id; // weak
883 int dword_5C3418; // weak
884 int dword_5C341C; // weak
885 //std::array<char, 777> byte_5C3427; // weak
886 std::array<char, 200> GameUI_Footer_TimedString;
887 std::array<char, 200> pFooterString;
888 unsigned int GameUI_Footer_TimeLeft;
889 int bForceDrawFooter; // weak
890 int _5C35C0_force_party_death = false; // weak
891 int bDialogueUI_InitializeActor_NPC_ID; // weak
892 char *p2DEventsTXT_Raw;
893
894 int dword_5C35D4; // weak
895 std::array<const char *, 2> aAMPMNames;
896 char byte_5C45AF[777]; // weak
897
898 std::array<char, 4096> pFinalMessage; // idb
899 std::array<char, 2000> pTmpBuf;
900 std::array<char, 2000> pTmpBuf2;
901 std::array<char, 100> Journal_limitation_factor; // weak
902 int ui_current_text_color; // weak
903 __int64 qword_5C6DF0; // weak
904 int dword_5C6DF8; // weak
905 std::array<char, 104> item__getname_buffer; // idb
906 std::array<char *, 36> pClassDescriptions;
907 std::array<char *, 7> pAttributeDescriptions;
908 std::array<char *, 38> pGrandSkillDesc;
909 std::array<char *, 38> pMasterSkillDesc;
910 std::array<char *, 38> pExpertSkillDesc;
911 std::array<char *, 38> pNormalSkillDesc;
912 std::array<char *, 38> pSkillDesc;
913 char *pHealthPointsAttributeDescription;
914 char *pSpellPointsAttributeDescription;
915 char *pArmourClassAttributeDescription;
916 char *pPlayerConditionAttributeDescription; // idb
917 char *pFastSpellAttributeDescription;
918 char *pPlayerAgeAttributeDescription;
919 char *pPlayerLevelAttributeDescription;
920 char *pPlayerExperienceAttributeDescription;
921 char *pAttackBonusAttributeDescription;
922 char *pAttackDamageAttributeDescription;
923 char *pMissleBonusAttributeDescription;
924 char *pMissleDamageAttributeDescription;
925 char *pFireResistanceAttributeDescription;
926 char *pAirResistanceAttributeDescription;
927 char *pWaterResistanceAttributeDescription;
928 char *pEarthResistanceAttributeDescription;
929 char *pMindResistanceAttributeDescription;
930 char *pBodyResistanceAttributeDescription;
931 char *pSkillPointsAttributeDescription;
932 char *pClassTXT_Raw;
933 char *pStatsTXT_Raw;
934 char *pSkillDescTXT_Raw;
935
936 struct FactionTable *pFactionTable;
937 //std::array<char, 777> byte_5C8D1A; // weak
938
939 std::array<char, 777> byte_5E4C15; // weak
940 std::array<const char *, 14> pSomeItemsNames;
941
942 char *pMonstersTXT_Raw;
943 char *pMonsterPlacementTXT_Raw;
944 char *pSpellsTXT_Raw;
945 char *pMapStatsTXT_Raw;
946 char *pHostileTXT_Raw;
947 char *pPotionsTXT_Raw;
948 char *pPotionNotesTXT_Raw;
949
950 std::array<int, 777> _6807B8_level_decorations_ids; // idb
951 int _6807E0_num_decorations_with_sounds_6807B8; // weak
952 std::array<int, 3000> event_triggers; // 6807E8
953 size_t num_event_triggers; // 6836C8
954 std::array<int, 64> dword_69B010;
955 float flt_69B138_dist; // weak
956 char byte_69BD41_unused; // weak
957 unsigned int uTextureID_x_u;
958 unsigned int uTextureID_LS_saveU;
959 unsigned int uTextureID_LS_loadU;
960 unsigned int uTextureID_AR_DN_DN;
961 unsigned int uTextureID_AR_UP_DN;
962 unsigned int uTextureID_LS_;
963 unsigned int uTextureID_x_d;
964 unsigned int uTextureID_save_up;
965 unsigned int uTextureID_load_up;
966 unsigned int uTextureID_loadsave;
967 int pSaveListPosition; // weak
968 unsigned int uLoadGameUI_SelectedSlot;
969 HWND hInsertCDWindow; // idb
970 int uCPUSpeed; // weak
971 char cMM7GameCDDriveLetter; // idb
972 MENU_STATE sCurrentMenuID;
973 unsigned int uGameState;
974 int uDefaultTravelTime_ByFoot; // weak
975 int day_attrib; // weak
976 int day_fogrange_1; // weak
977 int day_fogrange_2; // weak
978 struct TileTable *pTileTable; // idb
979 int outdoor_grid_band_1; // idb
980 int outdoor_grid_band_2; // idb
981 int outdoor_grid_band_3; // idb
982 std::array<char, 777> pDefaultSkyTexture; // idb
983 std::array<char, 16> byte_6BE124_cfg_textures_DefaultGroundTexture; // idb
984 int _6BE134_odm_main_tile_group; // weak
985 int dword_6BE138; // weak
986 int dword_6BE13C_uCurrentlyLoadedLocationID; // weak
987 float fWalkSpeedMultiplier = 1.0f; // weak
988 float fBackwardWalkSpeedMultiplier = 1.0f; // weak
989 float fTurnSpeedMultiplier = 1.0f; // weak
990 float flt_6BE150_look_up_down_dangle = 1.0f; // weak
991 //HWND hWnd; // idb
992 bool FORCE_16_BITS = false;
993 class OSWindow *window = nullptr;
994 char pCurrentMapName[32]; // idb
995 unsigned int uLevelMapStatsID;
996 int dword_6BE364_game_settings_1 = 0;
997 int dword_6BE368_debug_settings_2 = 0;
998 unsigned __int8 bCanLoadFromCD = false;
999 int bShowDamage; // idb
1000 unsigned int bAlwaysRun;
1001 unsigned int bFlipOnExit;
1002 unsigned int uTurnSpeed;
1003 float flt_6BE3A0 = 0.55000001f; // weak
1004 float flt_6BE3A4_debug_recmod1;
1005 float flt_6BE3A8_debug_recmod2;
1006 float flt_6BE3AC_debug_recmod1_x_1_6;
1007 std::array<char, 20> byte_6BE3B0; // idb
1008 char bUnderwater = false; // weak
1009 char bNoNPCHiring = false; // weak
1010 unsigned int bNoVideo = false;
1011 bool bNoIntro = false;
1012 bool bNoLogo = false;
1013 bool bNoCD = false;
1014 bool bNoSound = false;
1015 std::array<int, 100> dword_720020_zvalues;
1016 std::array<int, 299> dword_7201B0_zvalues;
1017 int uTextureID_720980; // weak
1018 std::array<__int16, 104> word_7209A0_intercepts_ys_plus_ys;
1019 std::array<__int16, 104> word_720A70_intercepts_xs_plus_xs;
1020 std::array<__int16, 104> word_720B40_intercepts_zs;
1021 std::array<__int16, 102> word_720C10_intercepts_xs;
1022 std::array<__int16, 777> word_720CE0_ys; // idb
1023 std::array<__int16, 777> word_720DB0_xs; // idb
1024 std::array<int, 20> dword_720E80;
1025 std::array<int, 20> dword_720ED0;
1026 std::array<int, 20> ceiling_height_level;
1027 std::array<__int16, 104> odm_floor_face_vert_coord_Y; // word_720F70
1028 std::array<__int16, 104> odm_floor_face_vert_coord_X; // word_721040
1029 std::array<int, 20> current_Face_id; // dword_721110
1030 std::array<int, 20> current_BModel_id; // dword_721160
1031 std::array<int, 20> odm_floor_level; // idb
1032 int blv_prev_party_x; // weak
1033 int blv_prev_party_z; // weak
1034 int blv_prev_party_y; // weak
1035 std::array<NPCTopic, 789> pNPCTopics;
1036 std::array<const char *, 513> pQuestTable;
1037 char *dword_723718_autonote_related; // idb
1038 std::array<const char *, 82> pScrolls;
1039 int dword_7241C8; // weak
1040 std::array<const char *, 59> aNPCProfessionNames;
1041 char *pAwardsTXT_Raw;
1042 char *pScrollsTXT_Raw;
1043 char *pMerchantsTXT_Raw;
1044 std::array<const char *, 7> pMerchantsBuyPhrases;
1045 std::array<const char *, 7> pMerchantsSellPhrases;
1046 std::array<const char *, 7> pMerchantsRepairPhrases;
1047 std::array<const char *, 7> pMerchantsIdentifyPhrases;
1048 char *pTransitionsTXT_Raw;
1049 char *pAutonoteTXT_Raw;
1050 char *pQuestsTXT_Raw;
1051 unsigned int uNumTerrainNormals;
1052 struct Vec3_float_ *pTerrainNormals;
1053 std::array<unsigned short, 128 * 128 * 2> pTerrainNormalIndices;
1054 std::array<unsigned int, 128 * 128 * 2> pTerrainSomeOtherData;
1055 int dword_A74C88; // weak
1056 unsigned int uPlayerCreationUI_SkySliderPos;
1057 int uPlayerCreationUI_ArrowAnim;
1058 unsigned int uPlayerCreationUI_SelectedCharacter;
1059 int dword_A74CDC; // weak
1060 struct Texture *pTexture_PlayerFaceMask;
1061 struct Texture *pTexture_PlayerFaceEradicated;
1062 struct Texture *pTexture_PlayerFaceDead;
1063 std::array< std::array<struct Texture *, 56>, 4> pTextures_PlayerFaces;
1064 __int64 _A750D8_player_speech_timer; // qword_A750D8
1065 enum PlayerSpeech PlayerSpeechID;
1066 int uSpeakingCharacter; // weak
1067 std::array<const char *, 36> pClassNames;
1068 std::array<const char *, 19> aCharacterConditionNames;
1069 std::array<const char *, 38> pSkillNames;
1070 char byte_AE5B91; // weak
1071 std::array<int, 32> dword_F1B430; // weak
1072 //int dword_F8B144; // nexindex [-1] to the following
1073 std::array<int, 4> player_levels = {{1, 1, 1, 1}};
1074 std::array<__int16, 6> weapons_Ypos; // word_F8B158
1075 struct Texture *ShopTexture; // idb
1076 std::array<struct Texture *, 12> ItemsInShopTexture;
1077 __int16 bountyHunting_monster_id_for_hunting; // word_F8B1A0
1078 const char *bountyHunting_text; // word_F8B1A4
1079 int contract_approved; // weak
1080 int dword_F8B1AC_award_bit_number; // idb
1081 int dword_F8B1B0_MasteryBeingTaught; // weak
1082 int gold_transaction_amount; // F8B1B4
1083 std::array<char *, 4> pShopOptions;
1084 int dword_F8B1D8; // weak
1085 int dword_F8B1E0; // weak
1086 int dword_F8B1E4; // weak
1087 const char *current_npc_text; // idb
1088 char dialogue_show_profession_details = false; // F8B1EC
1089 std::array<char, 777> byte_F8B1EF; // weak
1090 std::array<char, 4> byte_F8B1F0;
1091
1092 int bGameoverLoop = 0; // weak
1093 std::array<__int16, 104> intersect_face_vertex_coords_list_a; // word_F8BC48
1094 std::array<__int16, 104> intersect_face_vertex_coords_list_b; // word_F8BD18