diff Engine/mm7_data.cpp @ 2499:68cdef6879a0

engine folder
author Ritor1
date Fri, 19 Sep 2014 02:57:42 +0600
parents
children a77c34acdbc9
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Engine/mm7_data.cpp	Fri Sep 19 02:57:42 2014 +0600
@@ -0,0 +1,1094 @@
+#define _CRTDBG_MAP_ALLOC
+#include <stdlib.h>
+#include <crtdbg.h>
+
+#define _CRT_SECURE_NO_WARNINGS
+#include "mm7_data.h"
+
+#include "GUIWindow.h"
+#include "Party.h"
+
+
+void ErrHR(HRESULT hr, const char *pAPI, const char *pFunction, const char *pFile, int line)
+{
+  if (SUCCEEDED(hr))
+    return;
+
+  char msg[4096];
+  sprintf(msg, "%s error (%08X) in\n\t%s\nin\n\t%s:%u",
+          pAPI, hr, pFunction, pFile, line);
+
+  char caption[1024];
+  sprintf(caption, "%s error", pAPI);
+
+  MessageBoxA(nullptr, msg, caption, MB_ICONEXCLAMATION);
+}
+
+
+
+
+#include "OurMath.h"
+struct stru193_math *stru_5C6E00 = new stru193_math;
+
+#include "MapInfo.h"
+struct MapStats *pMapStats;
+
+#include "Engine/Graphics/Viewport.h"
+struct Viewport *pViewport = new Viewport;
+struct ViewingParams *viewparams = new ViewingParams;
+
+
+
+#include "stru123.h"
+stru123 stru_5E4C90_MapPersistVars;
+
+#include "stru298.h"
+stru298 AttackerInfo; // weak
+
+#include "Engine/Autonotes.h"
+std::array<Autonote, 196> pAutonoteTxt; // weak
+
+#include "Engine/Awards.h"
+std::array<Award, 105> pAwards;
+std::array<AwardType, 1000> achieved_awards;
+int num_achieved_awards;
+int full_num_items_in_book;
+
+#include "stru160.h"
+std::array<stru160, 66> array_4EB8B8 =
+{{
+  stru160( 0.0000000f,  0.0000000f,  1.0000000f),
+  stru160( 0.0000000f,  0.3826830f,  0.9238799f),
+  stru160( 0.3826830f,  0.0000000f,  0.9238799f),
+  stru160( 0.4082480f,  0.4082480f,  0.8164970f),
+  stru160( 0.0000000f,  0.7071070f,  0.7071070f),
+  stru160( 0.7071070f,  0.0000000f,  0.7071070f),
+  stru160( 0.4082480f,  0.8164970f,  0.4082480f),
+  stru160( 0.8164970f,  0.4082480f,  0.4082480f),
+  stru160( 0.7071070f,  0.7071070f,  0.0000000f),
+  stru160( 0.0000000f,  0.9238799f,  0.3826830f),
+  stru160( 0.3826830f,  0.9238799f,  0.0000000f),
+  stru160( 0.0000000f,  1.0000000f,  0.0000000f),
+  stru160( 0.9238799f,  0.3826830f,  0.0000000f),
+  stru160( 0.9238799f,  0.0000000f,  0.3826830f),
+  stru160( 1.0000000f,  0.0000000f,  0.0000000f),
+  stru160( 0.0000000f, -0.3826830f,  0.9238799f),
+  stru160( 0.4082480f, -0.4082480f,  0.8164970f),
+  stru160( 0.0000000f, -0.7071070f,  0.7071070f),
+  stru160( 0.8164970f, -0.4082480f,  0.4082480f),
+  stru160( 0.4082480f, -0.8164970f,  0.4082480f),
+  stru160( 0.7071070f, -0.7071070f,  0.0000000f),
+  stru160( 0.9238799f, -0.3826830f,  0.0000000f),
+  stru160( 0.3826830f, -0.9238799f,  0.0000000f),
+  stru160( 0.0000000f, -0.9238799f,  0.3826830f),
+  stru160( 0.0000000f, -1.0000000f,  0.0000000f),
+  stru160(-0.3826830f,  0.0000000f,  0.9238799f),
+  stru160(-0.4082480f, -0.4082480f,  0.8164970f),
+  stru160(-0.7071070f,  0.0000000f,  0.7071070f),
+  stru160(-0.4082480f, -0.8164970f,  0.4082480f),
+  stru160(-0.8164970f, -0.4082480f,  0.4082480f),
+  stru160(-0.7071070f, -0.7071070f,  0.0000000f),
+  stru160(-0.3826830f, -0.9238799f,  0.0000000f),
+  stru160(-0.9238799f, -0.3826830f,  0.0000000f),
+  stru160(-0.9238799f,  0.0000000f,  0.3826830f),
+  stru160(-1.0000000f,  0.0000000f,  0.0000000f),
+  stru160(-0.4082480f,  0.4082480f,  0.8164970f),
+  stru160(-0.8164970f,  0.4082480f,  0.4082480f),
+  stru160(-0.4082480f,  0.8164970f,  0.4082480f),
+  stru160(-0.7071070f,  0.7071070f,  0.0000000f),
+  stru160(-0.9238799f,  0.3826830f,  0.0000000f),
+  stru160(-0.3826830f,  0.9238799f,  0.0000000f),
+  stru160( 0.0000000f,  0.0000000f, -1.0000000f),
+  stru160( 0.0000000f,  0.3826830f, -0.9238799f),
+  stru160( 0.3826830f,  0.0000000f, -0.9238799f),
+  stru160( 0.4082480f,  0.4082480f, -0.8164970f),
+  stru160( 0.0000000f,  0.7071070f, -0.7071070f),
+  stru160( 0.7071070f,  0.0000000f, -0.7071070f),
+  stru160( 0.4082480f,  0.8164970f, -0.4082480f),
+  stru160( 0.8164970f,  0.4082480f, -0.4082480f),
+  stru160( 0.0000000f,  0.9238799f, -0.3826830f),
+  stru160( 0.9238799f,  0.0000000f, -0.3826830f),
+  stru160( 0.0000000f, -0.3826830f, -0.9238799f),
+  stru160( 0.4082480f, -0.4082480f, -0.8164970f),
+  stru160( 0.0000000f, -0.7071070f, -0.7071070f),
+  stru160( 0.8164970f, -0.4082480f, -0.4082480f),
+  stru160( 0.4082480f, -0.8164970f, -0.4082480f),
+  stru160( 0.0000000f, -0.9238799f, -0.3826830f),
+  stru160(-0.3826830f,  0.0000000f, -0.9238799f),
+  stru160(-0.4082480f, -0.4082480f, -0.8164970f),
+  stru160(-0.7071070f,  0.0000000f, -0.7071070f),
+  stru160(-0.4082480f, -0.8164970f, -0.4082480f),
+  stru160(-0.8164970f, -0.4082480f, -0.4082480f),
+  stru160(-0.9238799f,  0.0000000f, -0.3826830f),
+  stru160(-0.4082480f,  0.4082480f, -0.8164970f),
+  stru160(-0.8164970f,  0.4082480f, -0.4082480f),
+  stru160(-0.4082480f,  0.8164970f, -0.4082480f)
+}};
+std::array<stru160, 128> array_4EBBD0;
+std::array<__int32, 128*3> array_4EBBD0_x =
+{{
+  0x00000000, 0x00000001, 0x00000002, 0x00000001,
+  0x00000003, 0x00000002, 0x00000001, 0x00000004,
+  0x00000003, 0x00000003, 0x00000005, 0x00000002,
+  0x00000004, 0x00000006, 0x00000003, 0x00000006,
+  0x00000007, 0x00000003, 0x00000006, 0x00000008,
+  0x00000007, 0x00000007, 0x00000005, 0x00000003,
+  0x00000004, 0x00000009, 0x00000006, 0x00000009,
+  0x0000000A, 0x00000006, 0x00000009, 0x0000000B,
+  0x0000000A, 0x0000000A, 0x00000008, 0x00000006,
+  0x00000008, 0x0000000C, 0x00000007, 0x0000000C,
+  0x0000000D, 0x00000007, 0x0000000C, 0x0000000E,
+  0x0000000D, 0x0000000D, 0x00000005, 0x00000007,
+  0x00000000, 0x00000002, 0x0000000F, 0x00000002,
+  0x00000010, 0x0000000F, 0x00000002, 0x00000005,
+  0x00000010, 0x00000010, 0x00000011, 0x0000000F,
+  0x00000005, 0x00000012, 0x00000010, 0x00000012,
+  0x00000013, 0x00000010, 0x00000012, 0x00000014,
+  0x00000013, 0x00000013, 0x00000011, 0x00000010,
+  0x00000005, 0x0000000D, 0x00000012, 0x0000000D,
+  0x00000015, 0x00000012, 0x0000000D, 0x0000000E,
+  0x00000015, 0x00000015, 0x00000014, 0x00000012,
+  0x00000014, 0x00000016, 0x00000013, 0x00000016,
+  0x00000017, 0x00000013, 0x00000016, 0x00000018,
+  0x00000017, 0x00000017, 0x00000011, 0x00000013,
+  0x00000000, 0x0000000F, 0x00000019, 0x0000000F,
+  0x0000001A, 0x00000019, 0x0000000F, 0x00000011,
+  0x0000001A, 0x0000001A, 0x0000001B, 0x00000019,
+  0x00000011, 0x0000001C, 0x0000001A, 0x0000001C,
+  0x0000001D, 0x0000001A, 0x0000001C, 0x0000001E,
+  0x0000001D, 0x0000001D, 0x0000001B, 0x0000001A,
+  0x00000011, 0x00000017, 0x0000001C, 0x00000017,
+  0x0000001F, 0x0000001C, 0x00000017, 0x00000018,
+  0x0000001F, 0x0000001F, 0x0000001E, 0x0000001C,
+  0x0000001E, 0x00000020, 0x0000001D, 0x00000020,
+  0x00000021, 0x0000001D, 0x00000020, 0x00000022,
+  0x00000021, 0x00000021, 0x0000001B, 0x0000001D,
+  0x00000000, 0x00000019, 0x00000001, 0x00000019,
+  0x00000023, 0x00000001, 0x00000019, 0x0000001B,
+  0x00000023, 0x00000023, 0x00000004, 0x00000001,
+  0x0000001B, 0x00000024, 0x00000023, 0x00000024,
+  0x00000025, 0x00000023, 0x00000024, 0x00000026,
+  0x00000025, 0x00000025, 0x00000004, 0x00000023,
+  0x0000001B, 0x00000021, 0x00000024, 0x00000021,
+  0x00000027, 0x00000024, 0x00000021, 0x00000022,
+  0x00000027, 0x00000027, 0x00000026, 0x00000024,
+  0x00000026, 0x00000028, 0x00000025, 0x00000028,
+  0x00000009, 0x00000025, 0x00000028, 0x0000000B,
+  0x00000009, 0x00000009, 0x00000004, 0x00000025,
+  0x00000029, 0x0000002A, 0x0000002B, 0x0000002A,
+  0x0000002C, 0x0000002B, 0x0000002A, 0x0000002D,
+  0x0000002C, 0x0000002C, 0x0000002E, 0x0000002B,
+  0x0000002D, 0x0000002F, 0x0000002C, 0x0000002F,
+  0x00000030, 0x0000002C, 0x0000002F, 0x00000008,
+  0x00000030, 0x00000030, 0x0000002E, 0x0000002C,
+  0x0000002D, 0x00000031, 0x0000002F, 0x00000031,
+  0x0000000A, 0x0000002F, 0x00000031, 0x0000000B,
+  0x0000000A, 0x0000000A, 0x00000008, 0x0000002F,
+  0x00000008, 0x0000000C, 0x00000030, 0x0000000C,
+  0x00000032, 0x00000030, 0x0000000C, 0x0000000E,
+  0x00000032, 0x00000032, 0x0000002E, 0x00000030,
+  0x00000029, 0x0000002B, 0x00000033, 0x0000002B,
+  0x00000034, 0x00000033, 0x0000002B, 0x0000002E,
+  0x00000034, 0x00000034, 0x00000035, 0x00000033,
+  0x0000002E, 0x00000036, 0x00000034, 0x00000036,
+  0x00000037, 0x00000034, 0x00000036, 0x00000014,
+  0x00000037, 0x00000037, 0x00000035, 0x00000034,
+  0x0000002E, 0x00000032, 0x00000036, 0x00000032,
+  0x00000015, 0x00000036, 0x00000032, 0x0000000E,
+  0x00000015, 0x00000015, 0x00000014, 0x00000036,
+  0x00000014, 0x00000016, 0x00000037, 0x00000016,
+  0x00000038, 0x00000037, 0x00000016, 0x00000018,
+  0x00000038, 0x00000038, 0x00000035, 0x00000037,
+  0x00000029, 0x00000033, 0x00000039, 0x00000033,
+  0x0000003A, 0x00000039, 0x00000033, 0x00000035,
+  0x0000003A, 0x0000003A, 0x0000003B, 0x00000039,
+  0x00000035, 0x0000003C, 0x0000003A, 0x0000003C,
+  0x0000003D, 0x0000003A, 0x0000003C, 0x0000001E,
+  0x0000003D, 0x0000003D, 0x0000003B, 0x0000003A,
+  0x00000035, 0x00000038, 0x0000003C, 0x00000038,
+  0x0000001F, 0x0000003C, 0x00000038, 0x00000018,
+  0x0000001F, 0x0000001F, 0x0000001E, 0x0000003C,
+  0x0000001E, 0x00000020, 0x0000003D, 0x00000020,
+  0x0000003E, 0x0000003D, 0x00000020, 0x00000022,
+  0x0000003E, 0x0000003E, 0x0000003B, 0x0000003D,
+  0x00000029, 0x00000039, 0x0000002A, 0x00000039,
+  0x0000003F, 0x0000002A, 0x00000039, 0x0000003B,
+  0x0000003F, 0x0000003F, 0x0000002D, 0x0000002A,
+  0x0000003B, 0x00000040, 0x0000003F, 0x00000040,
+  0x00000041, 0x0000003F, 0x00000040, 0x00000026,
+  0x00000041, 0x00000041, 0x0000002D, 0x0000003F,
+  0x0000003B, 0x0000003E, 0x00000040, 0x0000003E,
+  0x00000027, 0x00000040, 0x0000003E, 0x00000022,
+  0x00000027, 0x00000027, 0x00000026, 0x00000040,
+  0x00000026, 0x00000028, 0x00000041, 0x00000028,
+  0x00000031, 0x00000041, 0x00000028, 0x0000000B,
+  0x00000031, 0x00000031, 0x0000002D, 0x00000041
+}};
+
+#include "MapsLongTimer.h"
+MapsLongTimer MapsLongTimersList[100];
+
+#include "Engine/Objects/ObjectList.h"
+struct ObjectList *pObjectList;
+
+#include "Engine/Tables/IconFrameTable.h"
+struct IconFrameTable *pIconsFrameTable;
+
+struct
+{
+  struct UIAnimation _pUIAnim_Food;
+  struct UIAnimation _pUIAnim_Gold;
+  struct UIAnimation _pUIAnum_Torchlight;
+  struct UIAnimation _pUIAnim_WizardEye;
+} _uianim;
+
+struct UIAnimation *pUIAnim_Food = &_uianim._pUIAnim_Food;
+struct UIAnimation *pUIAnim_Gold = &_uianim._pUIAnim_Gold;
+struct UIAnimation *pUIAnum_Torchlight = &_uianim._pUIAnum_Torchlight;
+struct UIAnimation *pUIAnim_WizardEye = &_uianim._pUIAnim_WizardEye;
+
+std::array<struct UIAnimation *, 4> pUIAnims =
+{
+  &_uianim._pUIAnim_Food,
+  &_uianim._pUIAnim_Gold,
+  &_uianim._pUIAnum_Torchlight,
+  &_uianim._pUIAnim_WizardEye
+};
+
+
+
+#include "Engine/Tables/PlayerFrameTable.h"
+struct PlayerFrameTable *pPlayerFrameTable; // idb
+
+#include "MM7.h"
+
+
+std::array<stat_coord, 26> stat_string_coord = //4E2940
+{{
+  {0x1A, 0x39, 0xDC, 0x12},
+  {0x1A, 0x4A, 0xDC, 0x12},
+  {0x1A, 0x5B, 0xDC, 0x12},
+  {0x1A, 0x6C, 0xDC, 0x12},
+  {0x1A, 0x7D, 0xDC, 0x12},
+  {0x1A, 0x8E, 0xDC, 0x12},
+  {0x1A, 0x9F, 0xDC, 0x12},
+  {0x1A, 0xC6, 0xDC, 0x12},
+  {0x1A, 0xD7, 0xDC, 0x12},
+  {0x1A, 0xE8, 0xDC, 0x12},
+  {0x1A, 0x10C, 0xDC, 0x12},
+  {0x1A, 0x11E, 0xDC, 0x12},
+  {0x111, 0x36, 0xBA, 0x12},
+  {0x111, 0x47, 0xBA, 0x12},
+  {0x111, 0x58, 0xBA, 0x12},
+  {0x111, 0x7E, 0xBA, 0x12},
+  {0x111, 0x8F, 0xBA, 0x12},
+  {0x111, 0xA0, 0xBA, 0x12},
+  {0x111, 0xB1, 0xBA, 0x12},
+  {0x111, 0xCA, 0xBA, 0x12},
+  {0x111, 0xDD, 0xBA, 0x12},
+  {0x111, 0xF0, 0xBA, 0x12},
+  {0x111, 0x103, 0xBA, 0x12},
+  {0x111, 0x116, 0xBA, 0x12},
+  {0x111, 0x129, 0xBA, 0x12},
+  {0x13E, 0x12, 0x89, 0x12},
+}
+};
+
+
+
+
+
+#include "stru314.h"
+#include "stru367.h"
+
+
+
+//-------------------------------------------------------------------------
+// Data declarations
+
+int game_starting_year = 0;
+unsigned int game_viewport_width;
+unsigned int game_viewport_height;
+int game_viewport_x;
+int game_viewport_y;
+int game_viewport_z;
+int game_viewport_w;
+
+
+
+std::array<unsigned int, 2> saveload_dlg_xs = {82, 0};
+std::array<unsigned int, 2> saveload_dlg_ys = {60, 0};
+std::array<unsigned int, 2> saveload_dlg_zs = {460, 640};
+std::array<unsigned int, 2> saveload_dlg_ws = {344, 480};
+int pWindowList_at_506F50_minus1_indexing[1];
+int dword_4C9890[10]; // weak
+int dword_4C9920[16]; // weak
+char byte_4D864C; // weak
+float flt_4D86CC = 1.0f; // weak
+int dword_4D86D8 = 0x40000000; // weak
+
+
+
+
+
+
+
+float flt_4D84E8 = 0.0f;
+
+int pCurrentScreen = SCREEN_VIDEO; // 004E28F8
+unsigned int uGammaPos;
+std::array<int, 8> BtnTurnCoord = 
+{{
+  0xA4, 0x5D, 0x16, 0xB, 0x5, 0xD, 0x7, 0x3B,
+}}; // weak
+std::array<__int16, 4> RightClickPortraitXmin={{0x14, 0x83, 0xF2, 0x165}};
+std::array<__int16, 4> RightClickPortraitXmax={{0x53, 0xC6, 0x138, 0x1A7}};
+
+std::array<unsigned int, 4> pHealthBarPos = {{22, 137, 251, 366}};
+std::array<unsigned int, 4> pManaBarPos = {{102, 217, 331, 447}};
+
+std::array<char, 88> monster_popup_y_offsets =
+{{
+  -20,  20,   0, -40,   0,   0,   0,   0,   0,   0, -50,
+   20,   0, -10, -10, -20,  10, -10,   0,   0,   0, -20,
+   10, -10,   0,   0,   0, -20, -10,   0,   0,   0, -40,
+  -20,   0,   0,   0, -50, -30, -30, -30, -30, -30, -30,
+    0,   0,   0,   0,   0,   0, -20, -20, -20,  20,  20,
+   20,  10,  10,  10,  10,  10,  10, -90, -60, -40, -20,
+  -20, -80, -10,   0,   0, -40,   0,   0,   0, -20,  10,
+    0,   0,   0,   0,   0,   0, -60,   0,   0,   0,   0
+}};
+unsigned char hourglass_icon_idx = 12; // weak
+
+
+const char *format_4E2D80 = "\f%05d%s\f00000\n";
+//const char *format_4E2DC8 = "\f%05d";
+const char *format_4E2DE8 = "\f%05d%s\f00000 - ";
+const char *Stat_string_format_2_column_text = "%s\f%05u\r180%s\n"; 
+const char *Stat_string_format_2_column_less_100 = "%s\f%05u\t110%d\f00000 / %d\n";
+const char *Stat_string_format_2_column_over_100 = "%s\f%05u\r180%d\f00000 / %d\n";
+int dword_4E455C; // weak
+std::array<int, 6> dword_4E4560;
+std::array<int, 6> dword_4E4578;
+std::array<int, 6> dword_4E4590;
+std::array<int, 6> dword_4E45A8;
+std::array<float, 10> flt_4E4A80 =
+{
+  0.050000001, 0.1,  0.30000001,  0.5,    0.60000002,
+  1.0,         6.0, 25.0,        50.0,  100.0
+};
+
+
+std::array< std::array<int, 2>, 14> pPartySpellbuffsUI_XYs =
+{{
+  {477, 247}, {497, 247}, {522, 247}, {542, 247}, {564, 247}, {581, 247}, {614, 247},
+  {477, 279}, {497, 279}, {522, 279}, {542, 279}, {564, 279}, {589, 279}, {612, 279}
+}};
+std::array<unsigned char, 14> byte_4E5DD8 =
+{{
+  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,
+  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
+}};
+std::array<unsigned __int8, 14> pPartySpellbuffsUI_smthns =
+{{
+  14, 1, 10, 4, 7,  2, 9,
+   3, 6, 15, 8, 3, 12, 0
+}};
+
+std::array< std::array<int, 6>, 6> pNPCPortraits_x =     // 004E5E50
+{{
+  {521,   0,   0,   0,   0,  0},
+  {521, 521,   0,   0,   0,  0},
+  {521, 521, 521,   0,   0,  0},
+  {521, 486, 564, 521,   0,  0},
+  {521, 486, 564, 486, 564,  0},
+  {486, 564, 486, 564, 486, 564}
+}};
+std::array< std::array<int, 6>, 6> pNPCPortraits_y =     // 004E5EE0
+{{
+  {38,   0,   0,   0,   0,   0},
+  {38, 165,   0,   0,   0,   0},
+  {38, 133, 228,   0,   0,   0},
+  {38, 133, 133, 228,   0,   0},
+  {38, 133, 133, 228, 228,   0},
+  {38,  38, 133, 133, 228, 228}
+}};
+std::array<const char *, 11> pHouse_ExitPictures=
+{
+	"",
+	"ticon01",
+	"ticon02",
+	"ticon03",
+	"ticon04",
+	"ticon05",
+	"istairup",
+	"itrap",
+	"outside",
+	"idoor",
+	"isecdoor"
+};
+
+std::array<__int16, 11> word_4E8152 = {0, 0, 0, 90, 8, 2, 70, 20, 10, 50, 30};
+
+char _4E94D0_light_type = 5; // weak
+char _4E94D2_light_type = 6; // weak
+char _4E94D3_light_type = 10; // weak
+int dword_4E98BC_bApplicationActive; // weak
+//char *off_4EB080; // idb
+std::array<char*, 465> pTransitionStrings = {"", nullptr};  // 004EB080
+std::array<const char*, 25> pPlayerPortraitsNames =
+{{
+  "pc01-", "pc02",  "pc03", "pc04",  "pc05-",
+  "pc06",  "pc07",  "pc08", "pc09-", "pc10",
+  "pc11-", "pc12",  "pc13", "pc14",  "pc15",
+  "pc16",  "pc17-", "pc18", "pc19",  "pc20",
+  "pc21-", "pc22-", "pc23", "pc24-", "pc25-"
+}};
+
+
+
+std::array< std::array<unsigned char, 25>, 48> byte_4ECF08 =      // 4ECF08
+{{
+  {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
+  {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
+  {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
+  {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
+  {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
+  {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
+  {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
+  {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
+  {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
+  {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
+  {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
+  {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
+  {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
+  {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
+  {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
+  {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
+  {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
+  {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
+  {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
+  {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
+  {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
+  {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
+  {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
+  {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
+  {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
+  {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
+  {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
+  {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
+  {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
+  {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
+  {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
+  {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
+  {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
+  {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
+  {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
+  {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
+  {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
+  {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
+  {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
+  {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
+  {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
+  {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
+  {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
+  {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
+  {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
+  {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
+  {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
+  {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
+}};
+std::array<std::array<unsigned char, 8>, 110> SoundSetAction = // 4ED3D8
+{{
+  { 0,  0,  0,  0,  0,  0,  0,  0},
+  {38,  0,  0, 37, 38, 45,  0,  0},
+  {37,  0,  0, 47, 53,  0,  0,  0},
+  { 2,  0,  0, 25,  0,  0,  0,  0},
+  { 1,  0,  0, 47,  0,  0,  0,  0},
+  { 3,  0,  0, 41, 42,  0,  0,  0},
+  { 0,  0,  0, 33,  0,  0,  0,  0},
+  { 5,  0,  0, 21, 22, 23, 24, 45},
+  { 6,  0,  0, 47,  0,  0,  0,  0},
+  { 7,  0,  0, 43, 48,  0,  0,  0},
+  { 8,  0,  0, 38,  0,  0,  0,  0},
+  { 9,  0,  0, 39,  0,  0,  0,  0},
+  {13,  0,  0, 37, 38,  0,  0,  0},
+  {23,  0,  0, 25,  0,  0,  0,  0},
+  { 0,  0,  0, 37, 38, 45,  0,  0},
+  {25,  0,  0, 25,  0,  0,  0,  0},
+  {26,  0,  0, 38, 47,  0,  0,  0},
+  {27,  0,  0, 41, 42,  0,  0,  0},
+  {28,  0,  0, 25,  0,  0,  0,  0},
+  { 0,  0,  0, 51,  0,  0,  0,  0},
+  {30,  0,  0, 25,  0,  0,  0,  0},
+  {29,  0,  0, 27,  0,  0,  0,  0},
+  {32, 33,  0, 37, 38,  0,  0,  0},
+  {34,  0,  0, 53,  0,  0,  0,  0},
+  {15,  0,  0, 34, 35, 36,  0,  0},
+  { 0,  0,  0,  3,  0,  0,  0,  0},
+  {22,  0,  0,  5,  0,  0,  0,  0},
+  {20,  0,  0,  8,  0,  0,  0,  0},
+  {20,  0,  0,  9,  0,  0,  0,  0},
+  {19,  0,  0,  7,  0,  0,  0,  0},
+  {21,  0,  0,  2,  0,  0,  0,  0},
+  {18,  0,  0,  6,  0,  0,  0,  0},
+  { 0,  0,  0, 11,  0,  0,  0,  0},
+  {17,  0,  0,  0,  0,  0,  0,  0},
+  { 0,  0,  0, 12,  0,  0,  0,  0},
+  {17,  0,  0,  0,  0,  0,  0,  0},
+  { 0,  0,  0, 37,  0,  0,  0,  0},
+  { 0,  0,  0, 49,  0,  0,  0,  0},
+  {24,  0,  0, 25,  0,  0,  0,  0},
+  {31,  0,  0, 25,  0,  0,  0,  0},
+  { 0,  0,  0, 41, 42,  0,  0,  0},
+  { 0,  0,  0, 39, 48,  0,  0,  0},
+  { 0,  0,  0, 46,  0,  0,  0,  0}, 
+  { 0,  0,  0, 39, 48,  0,  0,  0},
+  { 0,  0,  0, 41, 42,  0,  0,  0},
+  { 0,  0,  0, 39, 48,  0,  0,  0},
+  {41,  0,  0, 21,  0,  0,  0,  0},
+  {40,  0,  0, 21,  0,  0,  0,  0},
+  {16,  0,  0, 46,  0,  0,  0,  0},
+  { 0,  0,  0, 40,  0,  0,  0,  0},
+  { 0,  0,  0, 39,  0,  0,  0,  0},
+  { 0,  0,  0, 37, 38,  0,  0,  0},
+  { 0,  0,  0, 48, 49, 50,  0,  0},
+  { 0,  0,  0, 44,  0,  0,  0,  0},
+  { 0,  0,  0, 48,  0,  0,  0,  0},
+  { 0,  0,  0, 37, 38, 45,  0,  0},
+  { 0,  0,  0, 41, 42,  0,  0,  0},
+  { 0,  0,  0, 47,  0,  0,  0,  0},
+  { 0,  0,  0, 39, 48,  0,  0,  0},
+  { 0,  0,  0, 39, 48,  0,  0,  0},
+  { 0,  0,  0, 37, 38,  0,  0,  0},
+  { 0,  0,  0, 37, 38,  0,  0,  0},
+  { 0,  0,  0, 37, 38,  0,  0,  0},
+  { 0,  0,  0, 31,  0,  0,  0,  0},
+  { 0,  0,  0, 32,  0,  0,  0,  0},
+  {47,  0,  0, 46,  0,  0,  0,  0},
+  {22,  0,  0,  5,  0,  0,  0,  0},
+  { 0,  0,  0, 25,  0,  0,  0,  0},
+  { 0,  0,  0, 37,  0,  0,  0,  0},
+  { 0,  0,  0, 52,  0,  0,  0,  0},
+  { 0,  0,  0, 45,  0,  0,  0,  0},
+  { 0,  0,  0, 27,  0,  0,  0,  0},
+  { 0,  0,  0, 37, 38,  0,  0,  0},
+  { 0,  0,  0, 49,  0,  0,  0,  0},
+  { 0,  0,  0, 48,  0,  0,  0,  0},
+  { 0,  0,  0, 37, 38, 45,  0,  0},
+  { 0,  0,  0, 48,  0,  0,  0,  0},
+  { 0,  0,  0, 37, 38, 45,  0,  0},
+  { 0,  0,  0, 47,  0,  0,  0,  0},
+  { 0,  0,  0, 48,  0,  0,  0,  0},
+  {44,  0,  0, 39, 48,  0,  0,  0},
+  { 0,  0,  0, 48, 49,  0,  0,  0},
+  { 0,  0,  0, 38,  0,  0,  0,  0},
+  { 0,  0,  0, 31,  0,  0,  0,  0},
+  {32, 33,  0, 37, 38,  0,  0,  0},
+  { 0,  0,  0, 37, 38,  0,  0,  0},
+  { 0,  0,  0, 37, 38,  0,  0,  0},
+  { 0,  0,  0, 47,  0,  0,  0,  0},
+  { 0,  0,  0, 38,  0,  0,  0,  0},
+  { 0,  0,  0, 48,  0,  0,  0,  0},
+  { 0,  0,  0,  0,  0,  0,  0,  0},
+  { 0,  0,  0, 38,  0,  0,  0,  0},
+  { 0,  0,  0, 47,  0,  0,  0,  0},
+  { 0,  0,  0, 38,  0,  0,  0,  0},
+  { 0,  0,  0,  0,  0,  0,  0,  0},
+  { 0,  0,  0,  0,  0,  0,  0,  0},
+  { 0,  0,  0, 38,  0,  0,  0,  0},
+  { 0,  0,  0, 38,  0,  0,  0,  0},
+  { 0,  0,  0,  5,  0,  0,  0,  0},
+  { 0,  0,  0, 37, 38,  0,  0,  0},
+  { 0,  0,  0, 44,  0,  0,  0,  0},
+  { 0,  0,  0, 48,  0,  0,  0,  0},
+  { 4,  0,  0,  0,  0,  0,  0,  0},
+  { 0,  0,  0, 58,  0,  0,  0,  0},
+  {10,  0,  0, 45,  0,  0,  0,  0},
+  {11,  0,  0, 47,  0,  0,  0,  0},
+  {12,  0,  0, 43, 48,  0,  0,  0},
+  {39,  0,  0, 48,  0,  0,  0,  0},
+  {14,  0,  0, 48,  0,  0,  0,  0},
+  {17,  0,  0,  0,  0,  0,  0,  0}
+}};
+std::array<__int16, 4> pPlayerPortraitsXCoords_For_PlayerBuffAnimsDrawing = {34, 149, 264, 379};
+std::array< std::array<char, 37>, 36> byte_4ED970_skill_learn_ability_by_class_table = 
+{{
+ 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
+ 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,
+ 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,
+ 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,
+ 
+ 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
+ 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,
+ 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,
+ 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,
+
+ 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
+ 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,
+ 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,
+ 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,
+
+ 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
+ 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,
+ 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,
+ 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,
+
+ 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
+ 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,
+ 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,
+ 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,
+
+ 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
+ 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,
+ 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,
+ 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,
+
+ 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
+ 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,
+ 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,
+ 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,
+
+ 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
+ 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,
+ 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,
+ 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,
+
+ 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
+ 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,
+ 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,
+ 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,
+}};
+std::array<unsigned int, 2> pHiredNPCsIconsOffsetsX = {489, 559};
+std::array<unsigned int, 2> pHiredNPCsIconsOffsetsY = {152, 152};
+std::array<int, 2> Party_Spec_Motion_status_ids = {7, 18}; //dword_4EE07C
+std::array<__int16, 101> word_4EE088_sound_ids =
+{{
+      0, 10000, 10010, 10020, 10030, 10040, 10050, 10060, 10070, 10080,
+  10090, 10100, 11000, 11010, 11020, 11030, 11040, 11050, 11060, 11070,
+  11080, 11090, 11100, 12000, 12010, 12020, 12030, 12040, 12050, 12060,
+  12070, 12080, 12090, 12100, 13000, 13010, 13020, 13030, 13040, 13050,
+  13060, 13070, 13080, 13090, 13100, 14000, 14010, 14020, 14030, 14040,
+  14050, 14060, 14070, 14080, 14090, 14100, 15000, 15010, 15020, 15030,
+  15040, 15050, 15060, 15070, 15080, 15090, 15100, 16000, 16010, 16020,
+  16030, 16040, 16050, 16060, 16070, 16080, 16090, 16100, 17000, 17010,
+  17020, 17030, 17040, 17050, 17060, 17070, 17080, 17090, 17100, 18000,
+  18010, 18020, 18030, 18040, 18050, 18060, 18070, 18080, 18090, 18100,
+	  1
+}};
+std::array<short, 28> word_4EE150 =
+{{
+   1,  2,  3,  4,  5,  7, 32, 33, 36, 37, 38, 40, 41, 42, 43, 45, 46,
+  47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 60
+}};
+
+int ScreenshotFileNumber; // dword_4EFA80
+std::array<const char *, 19> off_4F03B8 =
+{{
+  "",         "WEPNTABL", "ARMORY",   "MAGSHELF",
+  "MAGSHELF", "MAGSHELF", "MAGSHELF", "MAGSHELF",
+  "MAGSHELF", "MAGSHELF", "MAGSHELF", "MAGSHELF",
+  "MAGSHELF", "MAGSHELF", "MAGSHELF", "MAGSHELF",
+  "MAGSHELF", "MAGSHELF", "MAGSHELF"
+}};
+
+std::array<int, 32> guild_mambership_flags={{
+   54, 54, 54, 54, 52, 52, 52, 52, 55, 55, 55, 55, 53, 53,
+	   53, 53, 58, 58, 58, 58, 57, 57, 57, 57, 56, 56,
+     56, 56, 59, 59, 60, 60}};
+std::array<__int16, 49> word_4F0754;
+std::array<__int16, 54> _4F0882_evt_VAR_PlayerItemInHands_vals =
+{{
+	0x0D4, 0x270, 0x0D5, 0x21C, 0x0D6, 0x2BE, 0x0D7, 0x2BD, 0x0D8, 0x289, 
+	0x0D9, 0x258, 0x0DA, 0x2AB, 0x0DB, 0x281, 0x0DC, 0x280, 0x0DD,
+	0x284, 0x0DE, 0x285, 0x0DF, 0x283, 0x0E0, 0x282, 0x0E1, 0x27F,
+	0x0E2, 0x1E7, 0x0E3, 0x287, 0x0E4, 0x272, 0x0E5, 0x267, 0x0E6,
+	0x275, 0x0E7, 0x25A, 0x0E8, 0x2A4, 0x0E9, 0x2A5, 0x0EA, 0x2A3,
+	0x0EB, 0x25C, 0x0EC, 0x25D, 0x0ED, 0x259, 0x0F1, 0x21E
+}};
+std::array<unsigned short, 6> pMaxLevelPerTrainingHallType = {5, 15, 25, 25, 200, 200};
+
+std::array<int, 11> price_for_membership={100, 100, 50, 50, 50, 50, 50, 50, 50, 1000, 1000}; // weak
+
+
+std::array<__int16, 32> word_4F0F30 ={{ 4, 7, 10, 11,                                              
+						   4, 7, 10, 11,
+					       4, 7, 10, 11,
+						   4, 7, 10, 11,
+					       4, 7, 10, 11,
+					       4, 7, 10, 11,
+					       4, 7, 10, 11,
+					       7, 11,
+                 7, 11}};
+std::array<int, 500> ai_array_4F5E68;
+std::array<int, 500> ai_array_4F6638_actor_ids;
+std::array<int, 500> ai_near_actors_targets_pid;
+int ai_arrays_size; // weak
+std::array<int, 500> ai_near_actors_distances;
+std::array<unsigned int, 500> ai_near_actors_ids;
+std::array<int, 182> dword_4F8580 = {}; // weak
+
+char byte_4FAA24; // weak
+//HWND dword_4FAA28; // idb
+
+std::array<unsigned int, 480> pSRZBufferLineOffsets;
+int areWeLoadingTexture; // weak
+std::array<char, 777> books_num_items_per_page; // weak
+int lloyds_beacon_spell_id; // dword_506338
+int lloyds_beacon_sound_id; // dword_50633C
+signed int sRecoveryTime; // idb
+unsigned int uRequiredMana; // idb
+int _506348_current_lloyd_playerid; // weak
+__int64 lloyds_beacon_spell_level; // qword_506350
+char byte_506360; // weak
+int dword_506364; // weak
+unsigned int uExitCancelTextureId;
+int books_page_number; // weak
+int books_primary_item_per_page; // weak
+int Autonotes_Instructors_page_flag; // dword_50652C
+int Autonotes_Misc_page_flag; //dword_506530
+int Book_PageBtn6_flag; //dword_506534
+int Book_PageBtn5_flag; //dword_506538
+int Book_PageBtn4_flag; // dword_50653C
+int Book_PageBtn3_flag; //dword_506540
+int BtnDown_flag; //BtnDown_flag
+int BtnUp_flag; //BtnUp_flag
+int quick_spell_at_page; // weak
+char byte_506550; // weak
+std::array<const char *, 5> aMoonPhaseNames;
+int _506568_autonote_type; // weak
+char bRecallingBeacon; // weak
+int uLastPointedObjectID; // weak
+//unsigned __int8 bMonsterInfoUI_bDollInitialized;
+std::array<const char *, 44> aSpellNames;
+int pMainScreenNum; // weak
+int dword_506980_uW; // weak
+int dword_506984_uZ; // weak
+int dword_506988_uY; // weak
+int dword_50698C_uX; // weak
+int uGameMenuUI_CurentlySelectedKeyIdx; // 506E68
+std::array<unsigned int, 28> pPrevVirtualCidesMapping;
+int KeyboardPageNum; // weak
+int uRestUI_FoodRequiredToRest;
+int dword_506F14; // weak
+int _506F18_num_minutes_to_sleep; // weak
+int dword_506F1C; // weak
+std::array<int, 20> pVisibleWindowsIdxs; // weak
+int uNumVisibleWindows;
+char bFlashHistoryBook; // weak
+char bFlashAutonotesBook; // weak
+char bFlashQuestBook; // weak
+int uTextureID_PlayerBuff_PainReflection; // weak
+int uTextureID_PlayerBuff_Hammerhands; // weak
+int uTextureID_PlayerBuff_Preservation; // weak
+int uTextureID_PlayerBuff_Bless; // weak
+int uTextureID_Btn_QuickReference; // weak
+int uTextureID_Compas; // dword_5079B4
+int dword_5079C8; // weak
+int dword_5079CC; // weak
+int dword_5079D0; // weak
+int uTextureID_Minimap_Loop; // dword_5079D8
+struct GUIButton *pBtn_ZoomOut; // idb
+struct GUIButton *pBtn_ZoomIn; // idb
+unsigned int uGameUIFontShadow;
+unsigned int uGameUIFontMain;
+int dword_507B00_spell_info_to_draw_in_popup; // weak
+std::array<const char *, 12> aMonthNames;
+std::array<const char *, 7> aDayNames;
+std::array<const char *, 9> aSpellSchoolNames;
+std::array<const char *, 7> aAttributeNames;
+unsigned int uActiveCharacter;
+int dword_507BF0_is_there_popup_onscreen; // weak
+int awards_scroll_bar_created; // weak
+int dword_507CC0_activ_ch; // weak
+__int64 GameUI_RightPanel_BookFlashTimer; // weak
+int _507CD4_RestUI_hourglass_anim_controller; // weak
+bool OpenedTelekinesis;
+std::array<int, 50> dword_50B570; // weak
+std::array<int, 50> dword_50B638; // weak
+stru367 PortalFace;
+std::array<int, 100> dword_50BC10; // weak
+std::array<int, 100> dword_50BDA0; // weak
+std::array<int, 100> _50BF30_actors_in_viewport_ids; // weak
+char town_portal_caster_id; // weak
+int some_active_character; // weak
+std::array<unsigned int, 5> pIconIDs_Turn;
+unsigned int uIconID_TurnStop;
+unsigned int uIconID_TurnHour;
+int uIconID_CharacterFrame; // idb
+unsigned int uIconID_TurnStart;
+int dword_50C994 = 0; // weak
+int dword_50C998_turnbased_icon_1A = 0; // weak
+int uSpriteID_Spell11; // idb
+bool _50C9A0_IsEnchantingInProgress; // weak
+int _50C9A8_item_enchantment_timer = 0; // weak
+int _50C9D0_AfterEnchClickEventId; // weak
+int _50C9D4_AfterEnchClickEventSecondParam; // weak
+int _50C9D8_AfterEnchClickEventTimeout; // weak
+int dword_50C9DC; // weak
+struct NPCData *ptr_50C9E0;
+//int dword_50C9E8; // idb
+//int dword_50C9EC[120]; // weak
+int dword_50CDC8;
+Vec3_int_ layingitem_vel_50FDFC;
+char pStartingMapName[32]; // idb
+std::array<unsigned __int8, 5> IsPlayerWearingWatersuit;
+std::array<char, 54> party_has_equipment;
+std::array<char, 17> byte_5111F6_OwnedArtifacts;
+
+unsigned int uNumBlueFacesInBLVMinimap;
+std::array<unsigned __int16, 50> pBlueFacesInBLVMinimapIDs;
+std::array<int, 14> pTextureIDs_PartyBuffIcons;
+unsigned int uIconIdx_FlySpell;
+unsigned int uIconIdx_WaterWalk;
+int dword_576E28; // weak
+int _576E2C_current_minimap_zoom; // weak
+__int64 _5773B8_event_timer; // weak
+
+
+int dword_591084; // weak
+struct Actor *pDialogue_SpeakingActor;
+unsigned int uDialogueType;
+int sDialogue_SpeakingActorNPC_ID;
+struct LevelDecoration *_591094_decoration;
+std::array<char, 200> sHouseName; // idb
+int uCurrentHouse_Animation; // weak
+char *dword_591164_teleport_map_name; // idb
+int dword_591168_teleport_speedz; // weak
+int dword_59116C_teleport_directionx; // weak
+int dword_591170_teleport_directiony; // weak
+int dword_591174_teleportz; // weak
+int dword_591178_teleporty; // weak
+int dword_59117C_teleportx; // weak
+std::array<std::array<char, 100>, 6> byte_591180; // idb
+std::array<struct NPCData *, 7> HouseNPCData;//0 zero element holds standart house npc
+GUIButton* HouseNPCPortraitsButtonsList[6];//dword_5913F4
+struct Texture *pTexture_591428;
+struct Texture *pTexture_outside; // idb
+struct Texture *pTexture_Dialogue_Background;
+std::array<char, 2000> byte_5B0938;
+int EvtTargetObj; // 0x5B5920
+int _unused_5B5924_is_travel_ui_drawn = false; // 005B5924
+int _5B65A8_npcdata_uflags_or_other; // weak
+int _5B65AC_npcdata_fame_or_other; // weak
+int _5B65B0_npcdata_rep_or_other; // weak
+int _5B65B4_npcdata_loword_house_or_other; // weak
+int _5B65B8_npcdata_hiword_house_or_other; // weak
+int dword_5B65BC; // weak
+int dword_5B65C0; // weak
+int dword_5B65C4_cancelEventProcessing; // weak
+int MapsLongTimers_count; // dword_5B65C8 счётчик таймеров для колодцев, фаерволов-ловушек
+int npcIdToDismissAfterDialogue; // weak
+signed int dword_5B65D0_dialogue_actor_npc_id; // weak
+int dword_5C3418; // weak
+int dword_5C341C; // weak
+//std::array<char, 777> byte_5C3427; // weak
+std::array<char, 200> GameUI_Footer_TimedString;
+std::array<char, 200> pFooterString;
+unsigned int GameUI_Footer_TimeLeft;
+int bForceDrawFooter; // weak
+int _5C35C0_force_party_death = false; // weak
+int bDialogueUI_InitializeActor_NPC_ID; // weak
+char *p2DEventsTXT_Raw;
+
+int dword_5C35D4; // weak
+std::array<const char *, 2> aAMPMNames;
+char byte_5C45AF[777]; // weak
+
+std::array<char, 4096> pFinalMessage; // idb
+std::array<char, 2000> pTmpBuf;
+std::array<char, 2000> pTmpBuf2;
+std::array<char, 100> Journal_limitation_factor; // weak
+int ui_current_text_color; // weak
+__int64 qword_5C6DF0; // weak
+int dword_5C6DF8; // weak
+std::array<char, 104> item__getname_buffer; // idb
+std::array<char *, 36> pClassDescriptions;
+std::array<char *, 7> pAttributeDescriptions;
+std::array<char *, 38> pGrandSkillDesc;
+std::array<char *, 38> pMasterSkillDesc;
+std::array<char *, 38> pExpertSkillDesc;
+std::array<char *, 38> pNormalSkillDesc;
+std::array<char *, 38> pSkillDesc;
+char *pHealthPointsAttributeDescription;
+char *pSpellPointsAttributeDescription;
+char *pArmourClassAttributeDescription;
+char *pPlayerConditionAttributeDescription; // idb
+char *pFastSpellAttributeDescription;
+char *pPlayerAgeAttributeDescription;
+char *pPlayerLevelAttributeDescription;
+char *pPlayerExperienceAttributeDescription;
+char *pAttackBonusAttributeDescription;
+char *pAttackDamageAttributeDescription;
+char *pMissleBonusAttributeDescription;
+char *pMissleDamageAttributeDescription;
+char *pFireResistanceAttributeDescription;
+char *pAirResistanceAttributeDescription;
+char *pWaterResistanceAttributeDescription;
+char *pEarthResistanceAttributeDescription;
+char *pMindResistanceAttributeDescription;
+char *pBodyResistanceAttributeDescription;
+char *pSkillPointsAttributeDescription;
+char *pClassTXT_Raw;
+char *pStatsTXT_Raw;
+char *pSkillDescTXT_Raw;
+
+struct FactionTable *pFactionTable;
+//std::array<char, 777> byte_5C8D1A; // weak
+
+std::array<char, 777> byte_5E4C15; // weak
+std::array<const char *, 14> pSomeItemsNames;
+
+char *pMonstersTXT_Raw;
+char *pMonsterPlacementTXT_Raw;
+char *pSpellsTXT_Raw;
+char *pMapStatsTXT_Raw;
+char *pHostileTXT_Raw;
+char *pPotionsTXT_Raw;
+char *pPotionNotesTXT_Raw;
+
+std::array<int, 777> _6807B8_level_decorations_ids; // idb
+int _6807E0_num_decorations_with_sounds_6807B8; // weak
+std::array<int, 3000> event_triggers;     // 6807E8
+size_t num_event_triggers; // 6836C8
+std::array<int, 64> dword_69B010;
+float flt_69B138_dist; // weak
+char byte_69BD41_unused; // weak
+unsigned int uTextureID_x_u;
+unsigned int uTextureID_LS_saveU;
+unsigned int uTextureID_LS_loadU;
+unsigned int uTextureID_AR_DN_DN;
+unsigned int uTextureID_AR_UP_DN;
+unsigned int uTextureID_LS_;
+unsigned int uTextureID_x_d;
+unsigned int uTextureID_save_up;
+unsigned int uTextureID_load_up;
+unsigned int uTextureID_loadsave;
+int pSaveListPosition; // weak
+unsigned int uLoadGameUI_SelectedSlot;
+HWND hInsertCDWindow; // idb
+int uCPUSpeed; // weak
+char cMM7GameCDDriveLetter; // idb
+MENU_STATE sCurrentMenuID;
+unsigned int uGameState;
+int uDefaultTravelTime_ByFoot; // weak
+int day_attrib; // weak
+int day_fogrange_1; // weak
+int day_fogrange_2; // weak
+struct TileTable *pTileTable; // idb
+int outdoor_grid_band_1; // idb
+int outdoor_grid_band_2; // idb
+int outdoor_grid_band_3; // idb
+std::array<char, 777> pDefaultSkyTexture; // idb
+std::array<char, 16> byte_6BE124_cfg_textures_DefaultGroundTexture; // idb
+int _6BE134_odm_main_tile_group; // weak
+int dword_6BE138; // weak
+int dword_6BE13C_uCurrentlyLoadedLocationID; // weak
+float fWalkSpeedMultiplier = 1.0f; // weak
+float fBackwardWalkSpeedMultiplier = 1.0f; // weak
+float fTurnSpeedMultiplier = 1.0f; // weak
+float flt_6BE150_look_up_down_dangle = 1.0f; // weak
+//HWND hWnd; // idb
+bool FORCE_16_BITS = false;
+class OSWindow *window = nullptr;
+char pCurrentMapName[32]; // idb
+unsigned int uLevelMapStatsID;
+int dword_6BE364_game_settings_1 = 0;
+int dword_6BE368_debug_settings_2 = 0;
+unsigned __int8 bCanLoadFromCD = false;
+int bShowDamage; // idb
+unsigned int bAlwaysRun;
+unsigned int bFlipOnExit;
+unsigned int uTurnSpeed;
+float flt_6BE3A0 = 0.55000001f; // weak
+float flt_6BE3A4_debug_recmod1;
+float flt_6BE3A8_debug_recmod2;
+float flt_6BE3AC_debug_recmod1_x_1_6;
+std::array<char, 20> byte_6BE3B0; // idb
+char bUnderwater = false; // weak
+char bNoNPCHiring = false; // weak
+unsigned int bNoVideo = false;
+bool bNoIntro = false;
+bool bNoLogo = false;
+bool bNoCD = false;
+bool bNoSound = false;
+std::array<int, 100> dword_720020_zvalues;
+std::array<int, 299> dword_7201B0_zvalues;
+int uTextureID_720980; // weak
+std::array<__int16, 104> word_7209A0_intercepts_ys_plus_ys;
+std::array<__int16, 104> word_720A70_intercepts_xs_plus_xs;
+std::array<__int16, 104> word_720B40_intercepts_zs;
+std::array<__int16, 102> word_720C10_intercepts_xs;
+std::array<__int16, 777> word_720CE0_ys; // idb
+std::array<__int16, 777> word_720DB0_xs; // idb
+std::array<int, 20> dword_720E80;
+std::array<int, 20> dword_720ED0;
+std::array<int, 20> ceiling_height_level;
+std::array<__int16, 104> odm_floor_face_vert_coord_Y; // word_720F70
+std::array<__int16, 104> odm_floor_face_vert_coord_X; // word_721040
+std::array<int, 20> current_Face_id; // dword_721110
+std::array<int, 20> current_BModel_id; // dword_721160
+std::array<int, 20> odm_floor_level; // idb
+int blv_prev_party_x; // weak
+int blv_prev_party_z; // weak
+int blv_prev_party_y; // weak
+std::array<NPCTopic, 789> pNPCTopics;
+std::array<const char *, 513> pQuestTable;
+char *dword_723718_autonote_related; // idb
+std::array<const char *, 82> pScrolls;
+int dword_7241C8; // weak
+std::array<const char *, 59> aNPCProfessionNames;
+char *pAwardsTXT_Raw;
+char *pScrollsTXT_Raw;
+char *pMerchantsTXT_Raw;
+std::array<const char *, 7> pMerchantsBuyPhrases;
+std::array<const char *, 7> pMerchantsSellPhrases;
+std::array<const char *, 7> pMerchantsRepairPhrases;
+std::array<const char *, 7> pMerchantsIdentifyPhrases;
+char *pTransitionsTXT_Raw;
+char *pAutonoteTXT_Raw;
+char *pQuestsTXT_Raw;
+unsigned int    uNumTerrainNormals;
+struct Vec3_float_ *pTerrainNormals;
+std::array<unsigned short, 128 * 128 * 2>  pTerrainNormalIndices;
+std::array<unsigned int, 128 * 128 * 2>    pTerrainSomeOtherData;
+int dword_A74C88; // weak
+unsigned int uPlayerCreationUI_SkySliderPos;
+int uPlayerCreationUI_ArrowAnim;
+unsigned int uPlayerCreationUI_SelectedCharacter;
+int dword_A74CDC; // weak
+struct Texture *pTexture_PlayerFaceMask;
+struct Texture *pTexture_PlayerFaceEradicated;
+struct Texture *pTexture_PlayerFaceDead;
+std::array< std::array<struct Texture *, 56>, 4> pTextures_PlayerFaces;
+__int64 _A750D8_player_speech_timer; // qword_A750D8
+enum PlayerSpeech PlayerSpeechID;
+int uSpeakingCharacter; // weak
+std::array<const char *, 36> pClassNames;
+std::array<const char *, 19> aCharacterConditionNames;
+std::array<const char *, 38> pSkillNames;
+char byte_AE5B91; // weak
+std::array<int, 32> dword_F1B430; // weak
+//int dword_F8B144; // nexindex [-1] to the following
+std::array<int, 4> player_levels = {{1, 1, 1, 1}};
+std::array<__int16, 6> weapons_Ypos; // word_F8B158
+struct Texture *ShopTexture; // idb
+std::array<struct Texture *, 12> ItemsInShopTexture;
+__int16 bountyHunting_monster_id_for_hunting; // word_F8B1A0
+const char *bountyHunting_text; // word_F8B1A4
+int contract_approved; // weak
+int dword_F8B1AC_award_bit_number; // idb
+int dword_F8B1B0_MasteryBeingTaught; // weak
+int gold_transaction_amount; // F8B1B4
+std::array<char *, 4> pShopOptions;
+int dword_F8B1D8; // weak
+int dword_F8B1E0; // weak
+int dword_F8B1E4; // weak
+const char *current_npc_text; // idb
+char dialogue_show_profession_details = false; // F8B1EC
+std::array<char, 777> byte_F8B1EF; // weak
+std::array<char, 4> byte_F8B1F0;
+
+int bGameoverLoop = 0; // weak
+std::array<__int16, 104> intersect_face_vertex_coords_list_a; // word_F8BC48
+std::array<__int16, 104> intersect_face_vertex_coords_list_b; // word_F8BD18
\ No newline at end of file