Spellforce-Spell-framework
Loading...
Searching...
No Matches
sf_general_structures.h
Go to the documentation of this file.
1
6
7 #pragma once
8 #include <stdint.h>
9 #include <stdbool.h>
10
11
12/* |-========== General Structures ==========-| */
13
14typedef struct SF_CGdSpell SF_CGdSpell;
16typedef struct SF_GdEffect SF_GdEffect;
18typedef struct SF_CGdWorld SF_CGdWorld;
23typedef struct AutoClass46 AutoClass46;
29
30typedef struct CMnuLabel CMnuLabel;
32
33/* |-========== Enums ==========-| */
34
35typedef enum
36{
37 DEBUG_INFO = 0, // No debug
41 DEBUG_ALL = 4 // Verbose
43
50
51typedef enum : uint16_t
52{
132 kGdSpellLineBerserk = 85, // FAKE BERSERK
289
290typedef enum : uint16_t
291{
459} GdSpellJob;
460
496
540
541
562
563typedef enum
564{
720} FigureJobs;
721
722
752
753typedef enum
754{
755 UNDEAD = 0x1,
757 AGGROED = 0x4,
758 IS_DEAD = 0x8,
759 REDO = 0x10,
763 FREEZED = 0x100,
764 HAS_LOOT = 0x200,
765 HAS_DIALOG = 0x400,
766 FEMALE = 0x800,
767 GOT_AGGRO = 0x1000,
768 RETREAT = 0x2000,
770 AURA_RUNNING = 0x8000,
771 AI_BLOCKED = 0x10000,
772 TOWER = 0x20000,
773 IS_SWAPPING = 0x40000,
775 IS_IN_FIGHT = 0x100000,
777 IS_TALKING = 0x400000,
779 UNKILLABLE = 0x1000000,
780 FOLLOW_MODE = 0x2000000,
782 FOREST_SPIRIT = 0x8000000,
783 VIP = 0x10000000,
784 ILLUSION = 0x20000000,
785 SPAWN = 0x40000000,
786 USED_FOR_REVENGE = 0x80000000
788
806
807
808/* |-========== Mod Structures ==========-| */
809
810typedef struct __attribute__((packed))
811{
812 char mod_id[64];
813 char mod_version[24];
815 char mod_author[128];
816 char mod_errors[256]; //Large Buffer for all error reporting needs.
817} SFMod;
818
819typedef void (*log_function_ptr)(const char *format, ...);
820typedef void (*log_debug_ptr)(DebugLevel level, const char *format, ...);
828
845
873
884
892
893typedef struct __attribute__((packed))
894{
895 uint8_t toggle; // toggle used to track if a button is enabled or not.
896 uint32_t index; // Used to hold the index of loaded mods for the showmod page
897 CMnuLabel *title_label; // Mod name and version
898 CMnuLabel *author_label; // "by <author>"
899 CMnuLabel *desc_label; // Description Label
900 CMnuLabel *page_label; // Page Index Label
901 CMnuLabel *error_label; // Error Info Label
902 CMnuLabel *type_label; // Mod Type tag (framework / core module), blank for external mods
904
905
906/* |-========== Global Structures ==========-| */
907
908typedef struct __attribute__((packed))
909{
910 uint8_t id;
911 uint8_t spec;
912 uint8_t level;
914
921typedef struct __attribute__((packed))
922{
923 uint16_t *first;
924 uint16_t *data;
925 uint16_t *post_last;
927
928typedef struct __attribute__((packed))
929{
930 uint32_t *first;
931 uint32_t *data;
932 uint32_t *post_last;
934
935typedef struct __attribute__((packed))
936{
937 uint16_t X;
938 uint16_t Y;
939} SF_Coord;
940
941typedef struct __attribute__((packed))
942{
943 uint32_t R;
944 uint32_t G;
945} SF_RGColor;
946
947typedef struct __attribute__((packed))
948{
949 uint8_t entity_type; // 1 for figure, 2 for building, 3 for object
950 uint16_t entity_index;
953
954typedef struct __attribute__((packed))
955{
956 wchar_t *raw_data;
957 uint32_t str_length;
960} SF_String;
961
962typedef struct __attribute__((packed))
963{
964 uint32_t partA;
965 uint32_t partB;
967
968
969typedef struct __attribute__((packed))
970{
971 uint8_t font_data[0x1fa0];
972} SF_Font;
973
974typedef struct __attribute__((packed))
975{
977 uint8_t unkn_data[0x8];
979
980typedef struct __attribute__((packed))
981{
982 uint32_t R;
983 uint32_t G;
984 uint32_t B;
985} SF_Color;
986
987/* |-========== AutoClass Start ==========-| */
988// These classes are currently only partially understood, and are not fully annotated
989
990typedef struct __attribute__((packed))
991{
992 uint32_t *ac69_ptr1;
993 uint32_t *ac69_ptr2;
994 uint32_t *ac69_ptr3;
995 uint8_t unkn1;
996 uint8_t unkn2;
997 uint16_t figure_index;
999
1000// This class is required for the RANDOM function, AutoClass14 also seems to hold some relevance to the game world as well
1001// This class is initialized in the GameInit function, so it is likely very important.
1002typedef struct __attribute__((packed))
1003{
1007 uint8_t unknown1[6];
1010 uint8_t unknown2[3];
1014} AutoClass14;
1015
1016typedef struct __attribute__((packed))
1017{
1019 uint8_t use;
1020 uint32_t good_amount[20];
1021 uint32_t good_remainder[20];
1022 uint32_t unknown[2];
1027 uint16_t unknown2;
1028 uint16_t civilian_count[6];
1029 uint16_t warrior_count[2];
1030 uint8_t unknown3[29];
1031 uint8_t alliance;
1034 uint32_t unknown4[2];
1036 uint32_t unknown5[7];
1039 uint16_t group;
1040 uint32_t unknown6;
1041 uint16_t unknown7;
1042 uint8_t swarm_size;
1043} GdPlayer;
1044
1057
1058typedef struct __attribute__((packed))
1059{
1060 uint16_t id;
1061 uint16_t min_dmg;
1062 uint16_t max_dmg;
1063 uint16_t min_rng;
1064 uint16_t max_rng;
1065 uint16_t wpn_spd;
1066 uint16_t wpn_type;
1067 uint16_t wpn_mat;
1069
1070struct __attribute__((packed)) SF_CGdPlayer
1071{
1073 uint16_t max_used;
1076};
1077
1078typedef struct __attribute__((packed))
1079{
1080 uint16_t uknwn1;
1081 uint16_t uknwn2;
1082 uint16_t uknwn3;
1083 uint8_t uknwn4;
1085
1086typedef struct __attribute__((packed))
1087{
1089 uint16_t sector;
1090 uint8_t uknwn2;
1091 uint8_t tile_type;
1093
1094typedef struct __attribute__((packed))
1095{
1096 uint8_t uknwn1[10];
1098 uint8_t uknwn2[3];
1100
1101typedef struct __attribute__((packed))
1102{
1104 uint8_t unkn1;
1106
1107struct __attribute__((packed)) SF_CGdWorld
1108{
1111 uint16_t map_size;
1112 uint8_t unknown2;
1114 uint16_t heightmap[1048576];
1115 uint16_t unknown3;
1116 uint8_t unknown4[131070];
1120 uint8_t unknown7[63];
1121};
1122
1123
1146
1147typedef struct __attribute__((packed))
1148{
1151 uint16_t data_packet;
1152 uint16_t angle;
1153 uint8_t flags;
1154 uint16_t unknown[4];
1155} GdObject;
1156
1157struct __attribute__((packed)) SF_CGdObject
1158{
1161 uint32_t unknown[13];
1162};
1163
1164
1165
1206
1207typedef struct __attribute__((packed))
1208{
1211} SF_CGdMain;
1212
1213/* Menu Structures */
1214
1215typedef struct __attribute__((packed))
1216{
1217 uint32_t unkn;
1221 uint8_t data[0x114];
1222 uint32_t flags;
1223 uint32_t parent_ptr;
1224 uint8_t data2[0xdc];
1226
1227typedef struct __attribute__((packed))
1228{
1229 uint32_t vftable_ptr;
1231} CMnuBase;
1232
1233typedef struct __attribute__((packed))
1234{
1235 uint32_t vftablePTR;
1236 uint8_t unknown_data2[0xcc];
1237} CUiOption;
1238
1239struct __attribute__((packed)) CMnuLabel
1240{
1241 uint32_t vftablePTR;
1243 uint8_t CMnuVisControl_data[0x9C];
1244 uint8_t CMnuLabel_data[0xc0];
1245};
1246
1247typedef struct __attribute__((packed))
1248{
1249 uint32_t vtable_ptr;
1250 uint32_t param_ptr;
1253
1254typedef struct __attribute__((packed))
1255{
1256 uint8_t padding_start[0x13];
1257 uint32_t button_ptr;
1258 uint8_t padding_end[0x119];
1260
1261typedef struct __attribute__((packed))
1262{
1263 uint32_t vftablePTR;
1265 uint8_t CMnuVisControl_data[0x9c];
1267 uint8_t CMnuSmpButton_data[0x50];
1269
1270typedef struct __attribute__((packed))
1271{
1272 uint32_t vftablePTR;
1274 uint8_t CMnuVisControl_data[0x9C];
1275 uint8_t CMnuContainer_data[0x98];
1277
1278typedef struct __attribute__((packed))
1279{
1280 uint8_t unkn1[0x8];
1281 uint8_t offset_0x8;
1282 uint8_t unkn2[0x3];
1283 uint32_t offset_0xc;
1284 uint32_t offset_0x10;
1286 uint8_t unkn3[0x3];
1287 uint32_t offset_0x18;
1288 uint32_t offset_0x1c;
1289 uint8_t unknown[0x44];
1292
1293typedef struct __attribute__((packed))
1294{
1295 uint32_t vftablePTR;
1296 uint8_t CMnuBase_data[0x208];
1297 uint8_t CMnuVisControl_data[0x9C];
1298 uint8_t CMnuContainer_data[0x98];
1300} CUiStartMenu;
1301
1302typedef struct __attribute__((packed))
1303{
1306 uint8_t unknown_data[12];
1310} SF_UIElement;
1311
1312typedef struct __attribute__((packed))
1313{
1314 uint32_t unknown;
1315 uint8_t level;
1316 wchar_t name[40];
1318 uint16_t unknown2[2];
1319
1322
1323 uint16_t agility;
1324 uint16_t charisma;
1325 uint16_t dexterity;
1327 uint16_t stamina;
1328 uint16_t strength;
1329 uint16_t wisdom;
1330
1331 uint16_t fire_res;
1332 uint16_t ice_res;
1333 uint16_t black_res;
1334 uint16_t mind_res;
1335
1336 uint16_t walk_speed;
1337 uint16_t fight_speed;
1338 uint16_t cast_speed;
1339
1341 uint16_t head;
1342 uint32_t copper;
1343 uint32_t silver;
1344 uint32_t gold;
1345
1346 uint8_t unknown3[12];
1347
1348 uint32_t xp;
1351
1352 uint32_t unknown4;
1353
1354 uint32_t is_female;
1355
1356 uint8_t unknown5[9];
1357 uint16_t avatar_type;
1359
1360typedef struct __attribute__((packed))
1361{
1363 uint32_t *begin;
1364 uint32_t *data;
1365 uint32_t *end;
1366} GdAvatarData;
1367
1368
1369typedef struct __attribute__((packed))
1370{
1372 uint16_t type;
1373 uint16_t unknown;
1374} GdAvatar;
1375
1376typedef struct __attribute__((packed))
1377{
1378 uint16_t unknown1;
1379 uint8_t unknown2;
1380 uint8_t unknown3;
1383 uint8_t kit_index;
1384 uint8_t padding[3];
1386} AutoClass82;
1387
1388typedef struct __attribute__((packed))
1389{
1391 uint32_t unknown_0xf0; /* = 1 in initFirstMap, both branches */
1392 uint32_t unknown_0xf4; /* = 3 in initFirstMap, both branches */
1395 uint32_t start_mode; /* 0x118: 1 = tutorial, 2 = direct start */
1397 AutoClass82 AC82_1; /* avatar snapshot (copied from AC82 in initFirstMap) */
1398 uint32_t unknown2;
1399 uint8_t kit_index;
1400 uint8_t padding[3];
1401 uint32_t is_tutorial; /* 0x224: 1 = tutorial active, 0 = not active */
1402 uint32_t unknown3[2];
1403 uint32_t is_coop;
1404 uint32_t unknown4;
1405} SF_GameInfo;
1406
1407typedef struct __attribute__((packed))
1408{
1410 uint32_t AutoClass72[8];
1411 uint32_t CGdEventIterator[8];
1414 uint8_t padding[0x19a];
1416
1417struct __attribute__((packed)) CGdControllerClient
1418{
1419 void *vftable;
1420 uint32_t CGdControllerBaseData[0x220];
1422};
1423
1424typedef struct __attribute__((packed))
1425{
1426 uint8_t unkn[0xb8];
1427 uint32_t offset_b8;
1428 uint8_t unkn2[0x7024];
1433 uint8_t unkn3[0xc];
1436 void *AC95;
1437 void *AC101;
1439 void *unkn4;
1440 void *CUiGame;
1442 uint8_t unkn5[0x2A4];
1444 uint8_t unkn9[0x38];
1451 uint8_t unkn6[0xc];
1455 uint8_t unkn7[0x1152];
1456 uint16_t offset_857e;
1457 uint8_t uknn8[0xda];
1458} CUiMain_data;
1459
1460typedef struct __attribute__((packed))
1461{
1464 uint8_t CMnuVisControl_data[0x9C];
1465 uint8_t CMnuContainer_data[0x98];
1467} SF_CUiMain;
1468
1469typedef struct __attribute__((packed))
1470{
1471 uint8_t unkn[4];
1472 uint32_t offset_0x4;
1473 uint32_t offset_0x8;
1476 uint32_t offset_0x2c;
1478
1479typedef struct __attribute__((packed))
1480{
1481 uint32_t vtable_ptr;
1483 uint8_t CMnuVisControl_data[0x9C];
1484 uint8_t CMnuContainer_data[0x98];
1487
1488typedef struct __attribute__((packed))
1489{
1490 uint32_t vtable_ptr;
1492 uint8_t CMnuVisControl_data[0x9C];
1493 uint8_t CMnuContainer_data[0x98];
1494 uint8_t videoData[0xc];
1495} SF_CUiVideo;
1496
1497typedef struct __attribute__((packed))
1498{
1499 uint8_t unknwn_data[0x78];
1502 uint8_t unknwn_data2[0xa4];
1504
1505typedef struct __attribute__((packed))
1506{
1509} CAppSession;
1510
1511
1512typedef struct __attribute__((packed))
1513{
1514 uint32_t vftable_ptr;
1516 uint8_t CMnuVisControl_data[0x9c];
1517 uint8_t CMnuContainer_data[0x98];
1518 uint8_t CMnuScreen_data[0x4c8];
1519} CMnuScreen;
1520
1521typedef struct __attribute__((packed))
1522{
1526 uint32_t Callback0[3];
1527 uint32_t Callback2[3];
1548 void *AC95;
1549 void *AC101;
1565 uint8_t more_data2[0x80];
1570 uint8_t AC77[0xdc];
1577 uint8_t more_data3[0x1E4];
1579
1580typedef struct __attribute__((packed))
1581{
1582 uint32_t vftable_ptr;
1584} CAppMenu;
1585
1586typedef struct __attribute__((packed))
1587{
1593 void *unknown;
1594 void *CUtlLua;
1599
1600typedef struct __attribute__((packed))
1601{
1602 uint32_t vftable_ptr;
1604} CAppMain;
1605
1606typedef struct __attribute__((packed))
1607{
1608 uint8_t lua_data[0x1c]; //is struct itself
1611
1612typedef struct __attribute__((packed))
1613{
1614 uint8_t unknown_datablock[0x6c];
1620 uint32_t offset_0x80;
1622 uint32_t offset_0x88;
1623 uint32_t offset_0x8c;
1624 uint32_t offset_0x90;
1628 uint8_t premade_kit_index; /* Created by retype action */
1631 uint8_t unknown_datablock_3[0xbc];
1632 uint8_t skip_tutorial; /* Created by retype action */
1636 uint8_t unknown_datablock_5[0x1c];
1655 uint8_t unknown_datablock_7[0x24];
1657 uint8_t unknown_datablock_8[0x38];
1659 uint8_t unknown_datablock_9[0X58];
1661 uint8_t unknown_datablock_a[0x18];
1662 uint8_t primary_skill; /* Created by retype action */
1663 uint8_t subskill; /* Created by retype action */
1666 uint8_t unknown_datablock_c[0x94];
1672 uint8_t unknown_datablock_e[0x30];
1675 uint8_t unknown_datablock_f[0x14];
1680
1681typedef struct __attribute__((packed)) /* class CUiMenuPreLoad : CMnuContainer */
1682{
1683 uint32_t vftable_ptr;
1685 uint8_t CMnuVisControl_data[0x9c];
1686 uint8_t CMnuContainer_data[0x98];
1689
1690
1691/* |-========== Internal Functions ==========-| */
1692// These functions are used in SFSF internally, and WILL be moved.
1693
1694typedef void (__thiscall *console_print_ptr)(uint32_t, const char *);
1695typedef uint16_t (__thiscall *get_spell_spell_line_ptr)(void *, uint16_t);
1696typedef uint32_t (__thiscall *figure_toolbox_get_unkn_ptr)(void *, uint16_t);
1697typedef void (__thiscall *figure_toolbox_add_spell_ptr)(void *, uint16_t,
1698 uint16_t);
1699typedef bool (__thiscall *figure_toolbox_is_targetable_ptr)(
1700 void *CGdFigureToolbox, uint16_t figure_index);
1701typedef uint32_t (__thiscall *FUN_0069eaf0_ptr)(void *ac69, void *ac69_2,
1702 void *ac69_3, void *ac69_4);
1703typedef void (*fidfree_ptr)(uint32_t *memory_ptr);
1704typedef void (__thiscall *menu_label_ptr)(CMnuLabel *_this);
1705typedef void (__thiscall *menu_label_set_string_ptr)(CMnuLabel *_this,
1706 SF_String *string);
1707typedef void (__thiscall *initialize_menu_container_ptr)(CMnuContainer *_this);
1709 SF_String *_this);
1710
1711typedef void (__thiscall *construct_start_menu_ptr)(CUiStartMenu *_this,
1712 uint32_t p1);
1713
1714typedef void (__thiscall *mnu_label_init_data_ptr)(void *_this, float xpos,
1715 float ypos, float width,
1716 float height,
1717 SF_String *string);
1718typedef void (__thiscall *message_box_ptr)(uint32_t CAppMenu,
1719 uint16_t description_id,
1720 SF_String *string_ptr,
1721 uint16_t hasOffset);
1722
1723typedef void (__thiscall *menu_label_constructor_ptr)(CMnuLabel *_this);
1724typedef void (__thiscall *set_label_flags_ptr)(CMnuLabel *_this,
1725 uint32_t flags);
1726
1727typedef void (__fastcall *original_menu_func_ptr)(uint32_t param1);
1728
1729typedef void *(__cdecl *new_operator_ptr)(uint32_t param_1);
1730typedef void (__thiscall *container_add_control_ptr)(CMnuContainer *_this,
1731 CMnuBase *CMnubase,
1732 char c1, char c2,
1733 uint32_t p4);
1734typedef void (__thiscall *menu_label_set_data_ptr)(CMnuLabel *_this,
1735 uint32_t color_red,
1736 uint32_t color_green,
1737 uint32_t color_blue,
1738 uint8_t unknchar);
1739typedef void (__thiscall *get_sf_color_ptr)(SF_String *_this,
1740 uint32_t color_id);
1741typedef SF_FontStruct *(*get_smth_fonts_ptr)(void);
1742typedef SF_Font *(__thiscall *get_font_ptr)(SF_FontStruct *_this,
1743 uint32_t font_id);
1744typedef void (__thiscall *menu_label_set_font_ptr)(void *_this, SF_Font *font);
1745typedef CUiOption *(__thiscall *create_option_ptr)(CUiOption *_this);
1746
1747// SF Menu / GUI Hooks for Auras
1748typedef void (__thiscall *autoclass113_fun_00a27530_ptr)(
1749 void *_this_autoclass113);
1750typedef uint32_t *(__thiscall *fun_0086dd60_ptr)(void *_this,uint8_t p1,
1751 uint32_t p2);
1752typedef void (__thiscall *autoclass113_fun_00a278c0_ptr)(
1753 void *_this_autoclass113, uint32_t p1);
1754
1755// Weird __cdecl class here, blind passthrough and hope it works.
1756typedef uint16_t (__cdecl *fun_00a2a1d0_ptr)(void *some_ptr, void *some_ptr_2);
1757
1758typedef void (__thiscall *fun_00a49b10_ptr)(CGdControllerClient *_this,
1759 uint8_t param1);
1760
1761typedef uint32_t *(__thiscall *fun_00a28d60_ptr)(void *_this, void *param1,
1762 uint32_t param2);
1763typedef void (__thiscall *fun_009a4020_ptr)(void *_this, uint32_t param1);
1764
1765typedef void (__thiscall *vfun164_ptr)(void *CMnuContainer);
1766typedef void (__thiscall *vfun163_ptr)(void *CMnuContainer, uint8_t param1);
1767typedef void *(__thiscall *vfun41_ptr)(void *CMnuContainer);
1768
1769typedef uint32_t (__thiscall *fun_006a0140_ptr)(void *_this, uint16_t p1,
1770 SF_CGdTargetData *p2_ptr,
1771 uint8_t p3, uint8_t p4);
1772typedef void (__thiscall *fun_009a2790_ptr)(void *_this, void *_p1,
1773 uint32_t p2);
1774typedef uint32_t (__thiscall *fun_0069f8d0_ptr)(void *_this, uint32_t p1);
1775typedef uint32_t (__thiscall *fun_0069fb90_ptr)(void *_this, uint16_t figure_id,
1776 uint8_t po2, uint16_t unkn_p3,
1777 SF_CGdTargetData *data,
1778 uint32_t p5, uint32_t p6);
1779typedef bool (__thiscall *getSpellLineIsTargetSelf_ptr)(void *_this,
1780 uint16_t spell_line_id);
1781typedef void *(__thiscall *fun_009a0750_ptr)(void *_this);
1782typedef void *(__thiscall *fun_009de190_ptr)(void *_this, void *param_1);
1783typedef void (__thiscall *fun_0099f610_ptr)(void *_this, uint16_t param1,
1784 uint16_t param2, uint8_t param3,
1785 uint16_t param4);
1786typedef void (__thiscall *fun_009cd1f0_ptr)(void *SF_CUiBottom, uint8_t param1);
1787typedef void (__thiscall *fun_009a1fd0_ptr)(void *SF_CUiGame, uint32_t param1);
1788typedef uint32_t (__thiscall *fun_006f8c06_ptr)(SF_CGdFigureToolbox *_this,
1789 uint16_t figure_id,
1790 uint16_t spell_id,
1791 uint32_t target_id,
1792 uint8_t param4, uint32_t param5,
1793 uint32_t param6,
1794 uint32_t param7,
1795 uint32_t param8);
1796typedef void (__thiscall *fun_00910de0_ptr)(void *_this, void *param1,
1797 uint32_t param2);
1798
1799typedef uint32_t (__thiscall *cuiVideoSequence_constructor_ptr)(
1800 SF_CUiVideo *_this, SF_String *p1);
1801typedef void (__thiscall *CMnuScreen_attach_control_ptr)(void *_CMnuScreen_ptr,
1802 CMnuBase *base,
1803 char flag);
1804
1805extern void attachVideo(CAppMenu *CAppMenu_ptr, CMnuContainer *parent,
1806 char *video_loc_and_name_charsC);
1807extern CMnuLabel * __thiscall attach_new_meshed_label(CMnuLabel *label_ptr,
1808 CMnuContainer *parent,
1809 char *mesh_name,
1810 char *label_text,
1811 uint8_t font_index,
1812 uint16_t x_pos,
1813 uint16_t y_pos,
1814 uint16_t width,
1815 uint16_t height);
1816extern CMnuLabel * __thiscall attach_new_label(CMnuLabel *label_ptr,
1817 CMnuContainer *parent,
1818 char *label_text,
1819 uint8_t font_index,
1820 uint16_t x_pos, uint16_t y_pos,
1821 uint16_t width, uint16_t height);
1823 char *button_mesh_default,
1824 char *button_mesh_pressed,
1825 char *button_mesh_highlight,
1826 char *button_mesh_disabled,
1827 char *label_char, uint8_t font_index,
1828 uint16_t x_pos, uint16_t y_pos,
1829 uint16_t width, uint16_t height,
1830 int button_index,
1831 uint32_t callback_function_pointer);
1832
1834
1845 #define DECLARE_FUNCTION(type, name, ...) \
1846 typedef type (__thiscall *name ## _ptr)(__VA_ARGS__);
SFSF_ModlistStruct mod_struct
void(__thiscall * CMnuScreen_attach_control_ptr)(void *_CMnuScreen_ptr, CMnuBase *base, char flag)
void(__thiscall * autoclass113_fun_00a27530_ptr)(void *_this_autoclass113)
void(__thiscall * construct_start_menu_ptr)(CUiStartMenu *_this, uint32_t p1)
void(__thiscall * fun_00910de0_ptr)(void *_this, void *param1, uint32_t param2)
void(__thiscall * fun_009a4020_ptr)(void *_this, uint32_t param1)
void(__thiscall * fun_009a1fd0_ptr)(void *SF_CUiGame, uint32_t param1)
@ SMELTER_BUILDING
@ MOONSILVER_BUILDING
@ HUNTER_BUILDING
@ MACE_CARVER_BUILDING
@ HABITABLE_SINGLE_BUILDING
@ WOODCUTTER_BUILDING
@ SHRINE_BUILDING
@ SCAVENGER_BUILDING
@ FOODSTORE_BUILDING
@ MASTER_BUILDING
@ GATHERER_BUILDING
@ QUARRY_BUILDING
@ HABITABLE_BUILDING
@ BREEDER_BUILDING
@ FORESTER_BUILDING
@ TEMPLE_BUILDING
@ STONEMASON_BUILDING
@ FISHER_BUILDING
@ SAWMILL_BUILDING
struct SF_CGdFigureToolbox SF_CGdFigureToolbox
void(__thiscall * menu_label_constructor_ptr)(CMnuLabel *_this)
void(* log_function_ptr)(const char *format,...)
struct SF_CGdFigureJobs SF_CGdFigureJobs
@ kGdEffectChainResolve
@ kGdEffectSpellAssistanceHitFigure
@ kGdEffectBlizzardHit
@ kGdEffectSummonMainChar
@ kGdEffectSpellVoodooHitFigure
@ kGdEffectMonumentClaimed
@ kGdEffectSpellDOTHitTarget
@ kGdEffectMentalTowerCast
@ kGdEffectMonumentBullet
@ kGdEffectProjectile
@ kGdEffectMeteorHit
@ kGdEffectTitanAppears
@ kGdEffectBlizzardFall
@ kGdEffectSpellHitTarget
@ kGdEffectMonumentWorking
@ kGdEffectPetAppears
@ kGdEffectStoneFall
@ kGdEffectMeteorFall
@ kGdEffectSpellCast
@ kGdEffectStoneHit
@ kGdEffectSpellResolve
@ kGdEffectSpellMissTarget
@ kGdEffectWorkerAppears
@ kGdEffectHeroAppears
@ kGdEffectSpellManaShieldHitFigure
@ kGdEffectSpellTargetResisted
@ kGdEffectSpellHitWorld
@ kGdEffectMainCharAppears
@ kGdEffectMonumentHitFigure
@ kGdEffectSummonHero
@ kGdEffectTitanProduction
@ kGdEffectPlayerBind
@ kGdEffectMentalTowerIdle
@ kGdEffectAuraResolve
@ kGdEffectSpellResolveSelf
@ kGdEffectSummonWorker
@ kGdEffectBuilding
struct SF_CGdBuilding SF_CGdBuilding
uint32_t(__thiscall * fun_0069f8d0_ptr)(void *_this, uint32_t p1)
@ RESISTANCE_FIRE
@ RESISTANCE_MENTAL
@ RESISTANCE_BLACK
void(__thiscall * menu_label_set_string_ptr)(CMnuLabel *_this, SF_String *string)
void(__fastcall * original_menu_func_ptr)(uint32_t param1)
void(__thiscall * mnu_label_init_data_ptr)(void *_this, float xpos, float ypos, float width, float height, SF_String *string)
void(__thiscall * fun_00a49b10_ptr)(CGdControllerClient *_this, uint8_t param1)
@ WHITE_AURA_SPELL
@ STACKABLE_SPELL
@ SIEGE_AURA_SPELL
@ BLACK_AURA_SPELL
@ TARGET_ONHIT_SPELL
@ SPELL_TAG_COUNT
@ DOMINATION_SPELL
@ COMBAT_ABILITY_SPELL
void(__thiscall * get_sf_color_ptr)(SF_String *_this, uint32_t color_id)
@ kGdJobAnimalIdle
@ kGdJobHitTarget
@ kGdJobWalkToNPC
@ kGdJobGathererCheckResource
@ kGdJobStrafeLeft
@ kGdJobFarmerWalkToHarvest
@ kGdJobCarrierCheckDrop
@ kGdJobFarmerCheckDrop
@ kGdJobMinerSearchResource
@ kGdJobGathererWalkToDeliverGood
@ kGdJobCattleBreederCheckDrop
@ kGdJobPriestWork
@ kGdJobHitTargetRange2
@ kGdJobShrineWorkerWalkToMana
@ kGdJobFisherSearchForWork
@ kGdJobCorpseCollectorWalkToDeliverGood
@ kGdJobFarmerWalkToDeliverGood
@ kGdJobMinerWalkHome
@ kGdJobCorpseRot
@ kGdJobWoodCutterWalkToTree
@ kGdJobMinerCheckResource
@ kGdJobCorpseCollectorCheckDrop
@ kGdJobShrineWorkerCheckMana
@ kGdJobCattleBreederWalkToDeliverGood
@ kGdJobFisherWalkHome
@ kGdJobStartWorkAtBuilding
@ kGdJobSmithSearchForWork
@ kGdJobMinerWalkToWork
@ kGdJobFarmerWaitForWork
@ kGdJobGathererWork
@ kGdJobEnterBuilding
@ kGdJobHunterCheckCorpse
@ kGdJobSmelterSearchForWork
@ kGdJobStrafeRight
@ kGdJobMinerStoopToDropGood
@ kGdJobCorpseRotWithLoot
@ kGdJobStoneMinerCheckDrop
@ kGdJobWoodCutterWalkHome
@ kGdJobHunterHitTarget
@ kGdJobWalkToPortal
@ kGdJobWalkToObject
@ kGdJobForesterPlant
@ kGdJobShrineWorkerTakeMana
@ kGdJobGathererCheckDrop
@ kGdJobCattleBreederFeed
@ kGdJobWarriorNothing
@ kGdJobCastPreResolve
@ kGdJobMinerCheckDrop
@ kGdJobHunterCutCorpse
@ kGdJobHunterSearchForWork
@ kGdJobGroupWalk
@ kGdJobStoneMinerWalkHome
@ kGdJobFisherWalkToDeliverGood
@ kGdJobFoodWorkerWork
@ kGdJobBuilderBuild
@ kGdJobWalkToMaster
@ kGdJobFisherCheckResource
@ kGdJobCattleBreederWalkHome
@ kGdJobHunterCheckTarget
@ kGdJobExitBuilding
@ kGdJobWoodCutterWalkToDeliverGood
@ kGdJobCorpseCollectorWalkToCorpse
@ kGdJobClubMakerSearchForWork
@ kGdJobFisherWork
@ kGdJobCarpenterWork
@ kGdJobHunterWalkToTarget
@ kGdJobFarmerHarvest
@ kGdJobCorpseCollectorCutCorpse
@ kGdJobFarmerWalkHomeHarvest
@ kGdJobWoodCutterCheckDrop
@ kGdJobHunterWalkToDeliverGood
@ kGdJobFarmerSow
@ kGdJobFarmerCheckHarvest
@ kGdJobCarpenterSearchForWork
@ kGdJobShrineWorkerCheckDrop
@ kGdJobCheckBattleSleep
@ kGdJobBuilderSearchForWork
@ kGdJobShrineWorkerWalkHome
@ kGdJobFoodWorkerSearchForWork
@ kGdJobStoneMinerWalkToDeliverGood
@ kGdJobGathererWalkHome
@ kGdJobFisherCheckDrop
@ kGdJobStoneMinerCheckStone
@ kGdJobGathererWalkToResource
@ kGdJobAnimalWalkToNewPlace
@ kGdJobHitTargetRange1
@ kGdJobWoodCutterCutTree
@ kGdJobStoneMinerSearchStone
@ kGdJobForesterWalkHome
@ kGdJobWoodCutterStoopToDropLog
@ kGdJobCorpseCollectorSearchForWork
@ kGdJobReleaseDelay
@ kGdJobWarTowerIdle
@ kGdJobCriticalHit
@ kGdJobStepAside
@ kGdJobFeignDeath
@ kGdJobStoneMinerWalkToStone
@ kGdJobHunterCheckDrop
@ kGdJobSmithWork
@ kGdJobOrcRegenerate
@ kGdJobWalkToBasePoint
@ kGdJobCastResolve
@ kGdJobPriestSearchForWork
@ kGdJobSmelterWork
@ kGdJobForesterCheckPlant
@ kGdJobMinerWork
@ kGdJobFarmerWalkHomeSow
@ kGdJobBuilderWalkToBuildPos
@ kGdJobCorpseCollectorWalkHome
@ kGdJobWalkToAttackMonument
@ kGdJobClubMakerWork
@ kGdJobGroupNothing
@ kGdJobStoneMinerStoopToDropStone
@ kGdJobMeleeAbility
@ kGdJobWalkToAttackBuilding
@ kGdJobGathererSearchResource
@ kGdJobManualWalkToTarget
@ kGdJobCattleBreederSearchForWork
@ kGdJobForesterSearchForWork
@ kGdJobWalkToTarget
@ kGdJobMinerWalkToDeliverGood
@ kGdJobShrineWorkerSearchForWork
@ kGdJobPetWalkToMaster
@ kGdJobHunterWalkToCorpse
@ kGdJobFarmerWalkToSow
@ kGdJobStoneMinerCrushStone
@ kGdJobWoodCutterCheckTree
@ kGdJobFisherWalkToWork
@ kGdJobWoodCutterSearchTree
@ kGdJobForesterWalkToWork
@ kGdJobCorpseCollectorCheckCorpse
@ kGdJobGotoBuildingForWork
@ kGdJobHunterWalkHome
uint32_t(__thiscall * fun_0069fb90_ptr)(void *_this, uint16_t figure_id, uint8_t po2, uint16_t unkn_p3, SF_CGdTargetData *data, uint32_t p5, uint32_t p6)
@ TASK_HUNTING_LODGE
@ TASK_MASTER_WOODCUTTER
@ TASK_MACE_CARVER
@ TASK_CATTLE_BREEDER
@ TASK_STOREKEEPER
@ TASK_MASTER_FISHER
@ TASK_WOODCUTTER
@ kGdSpellJobHallow
@ kGdSpellJobAssistance
@ kGdSpellJobDexterity
@ kGdSpellJobSlowness
@ kGdSpellJobAbilityEndurance
@ kGdSpellJobRetention
@ kGdSpellJobDetectMagic
@ kGdSpellJobFireshield2
@ kGdSpellJobRevenge
@ kGdSpellJobManaTapAura
@ kGdSpellJobFireBall1
@ kGdSpellJobMirage
@ kGdSpellJobCharm
@ kGdSpellJobRainOfFire
@ kGdSpellJobForget
@ kGdSpellJobRockBullet
@ kGdSpellJobStrengthArea
@ kGdSpellJobDispelBlackAura
@ kGdSpellJobFeedback
@ kGdSpellJobIcestrike1
@ kGdSpellJobFireburst
@ kGdSpellJobRootsArea
@ kGdSpellJobHypnotizeArea
@ kGdSpellJobStone
@ kGdSpellJobAlmightinessElemental
@ kGdSpellJobExtinct
@ kGdSpellJobTowerStone
@ kGdSpellJobSummon
@ kGdSpellJobManaDrain
@ kGdSpellJobShock
@ kGdSpellJobFireBullet
@ kGdSpellJobDisrupt
@ kGdSpellJobRegenerate
@ kGdSpellJobCharmAnimal
@ kGdSpellJobCurePoison
@ kGdSpellJobDeath
@ kGdSpellJobRainOfStone
@ kGdSpellJobRemoveCurse
@ kGdSpellJobSuffocation
@ kGdSpellJobPainArea
@ kGdSpellJobAura
@ kGdSpellJobCureDisease
@ kGdSpellJobHealingArea
@ kGdSpellJobAbilityBoons
@ kGdSpellJobAbilityBerserk
@ kGdSpellJobChain
@ kGdSpellJobFastFighting
@ kGdSpellJobAbilityShiftLife
@ kGdSpellJobDarknessArea
@ kGdSpellJobLifeTapAura
@ kGdSpellJobSentinelHealing
@ kGdSpellJobEssenceBlack
@ kGdSpellJobConfuse
@ kGdSpellJobBlizzard
@ kGdSpellJobAbilitySteelskin
@ kGdSpellJobSelfIllusion
@ kGdSpellJobAlmightinessBlack
@ kGdSpellJobMeditation
@ kGdSpellJobRemediless
@ kGdSpellJobFireResistance
@ kGdSpellJobTowerArrow
@ kGdSpellJobSlowFighting
@ kGdSpellJobPlaugeArea
@ kGdSpellJobDominate
@ kGdSpellJobAbilityCriticalHits
@ kGdSpellJobPain
@ kGdSpellJobIlluminate
@ kGdSpellJobAlmightinessMental
@ kGdSpellJobIceShield2
@ kGdSpellJobConservation
@ kGdSpellJobReinforcement
@ kGdSpellJobMeltResistance
@ kGdSpellJobFireShield1
@ kGdSpellJobIceStrike2
@ kGdSpellJobWeaken
@ kGdSpellJobIceShield
@ kGdSpellJobDominateUndead
@ kGdSpellJobSpark
@ kGdSpellJobAbilityWarCry
@ kGdSpellJobThornshield
@ kGdSpellJobHolyTouch
@ kGdSpellJobInflexibility
@ kGdSpellJobBefriend
@ kGdSpellJobAbilityTrueShot
@ kGdSpellJobAbilityManashield
@ kGdSpellJobQuickness
@ kGdSpellJobDominateAnimal
@ kGdSpellJobDominateBreak
@ kGdSpellJobWave
@ kGdSpellJobEssenceElemental2
@ kGdSpellJobDecay2
@ kGdSpellJobThorns
@ kGdSpellJobInflexibilityArea
@ kGdSpellJobHealingAura
@ kGdSpellJobFreeze
@ kGdSpellJobDeathGrasp
@ kGdSpellJobFreezeArea
@ kGdSpellJobAbilitySalvo
@ kGdSpellJobUnknown1
@ kGdSpellJobFakeSpellOneFigure
@ kGdSpellJobAbilityDurability
@ kGdSpellJobConfuseArea
@ kGdSpellJobFlexibilityArea
@ kGdSpellJobFireball2
@ kGdSpellJobBrilliance
@ kGdSpellJobShockwave
@ kGdSpellJobDispelWhiteAura
@ kGdSpellJobInvisibility
@ kGdSpellJobSuicideHeal
@ kGdSpellJobDetectMetal
@ kGdSpellJobEssenceElemental
@ kGdSpellJobAbilityShelter
@ kGdSpellJobChillResistance
@ kGdSpellJobAlmightinessWhite
@ kGdSpellJobCharisma
@ kGdSpellJobTowerPain
@ kGdSpellJobTorture
@ kGdSpellJobAbilityRiposte
@ kGdSpellJobAbilityPatronize
@ kGdSpellJobAbilityBenefactions
@ kGdSpellJobDisenchant
@ kGdSpellJobFeignDeath
@ kGdSpellJobLifetap
@ kGdSpellJobManaTap
@ kGdSpellJobDemoralization
@ kGdSpellJobAlmightinessMental2
@ kGdSpellJobDistract
@ kGdSpellJobSuicideDeath
@ kGdSpellJobPestilence
@ kGdSpellJobTowerExtinct
@ kGdSpellJobEssenceMental
@ kGdSpellJobRaiseDead
@ kGdSpellJobRoots
@ kGdSpellJobInability
@ kGdSpellJobIce2
@ kGdSpellJobSacrificeMana
@ kGdSpellJobPoison
@ kGdSpellJobCloakOfNor
@ kGdSpellJobIceshield3
@ kGdSpellJobWeakenArea
@ kGdSpellJobFlexibility
@ kGdSpellJobHealing
@ kGdSpellJobAmok
@ kGdSpellJobPetrify
@ kGdSpellJobDarkBanishing
@ kGdSpellJobCannibalize
@ kGdSpellJobGuard
@ kGdSpellJobDecay
@ kGdSpellJobIce1
@ kGdSpellJobSlownessArea
@ kGdSpellJobAcidCloud
@ kGdSpellJobEnlightement
@ kGdSpellJobEndurance
@ kGdSpellJobHypnotize
@ kGdSpellJobStrength
@ kGdSpellJobQuicknessArea
@ kGdSpellJobEssenceWhite
@ kGdSpellJobFeetOfClay
@ kGdSpellJobEternity
@ kGdSpellJobSiegeAura
@ kGdSpellJobInvulerability
@ kGdSpellJobMutation
@ kGdSpellJobShiftMana
@ EFFECT_ENTITY_TYPE2
@ SPELL_STAT_MUL_MODIFIER2
@ EFFECT_ENTITY_INDEX3
@ BUILDING_EFFECT_ID
@ SPELL_STAT_MUL_MODIFIER4
@ EFFECT_SPELL_ID
@ WORKER_HOST_BUILDING_POS_Y
@ BUILDING_POSITION_X
@ SPELL_STAT_MUL_MODIFIER3
@ BUILDING_ANIM_START
@ SPELL_PESTILENCE_DAMAGE
@ EFFECT_SPELL_LINE
@ SPELL_STAT_MUL_MODIFIER
@ SPELL_DOUBLE_DAMAGE
@ BUILDING_POSITION_Y
@ EFFECT_ENTITY_INDEX2
@ EFFECT_SUBSPELL_ID
@ SPELL_CONSERVATION_SHIELD
@ EFFECT_ENTITY_TYPE
@ BUILDING_QUEUE_COUNT
@ SPELL_TICK_COUNT_AUX
@ SPELL_TICK_COUNT
@ EFFECT_ADD_SUBSPELL
@ WORKER_HOST_BUILDING_POS_X
@ EFFECT_ENTITY_INDEX
@ EFFECT_PHYSICAL_DAMAGE
@ EFFECT_SPELL_INDEX
@ EFFECT_EFFECT_TYPE
@ EFFECT_MANA_COST
@ BUILDING_ANIM_LENGTH
@ EFFECT_EFFECT_INDEX
@ WORKER_DELIVERY_BUILDING
SF_String *(__thiscall * construct_default_sf_string_ptr)(SF_String *_this)
void(* log_debug_ptr)(DebugLevel level, const char *format,...)
void *(__thiscall * vfun41_ptr)(void *CMnuContainer)
void(__thiscall * vfun164_ptr)(void *CMnuContainer)
@ kGdSpellLineInflexibility
@ kGdSpellLineShockChained
@ kGdSpellLineAuraSiegeElf
@ kGdSpellLineAmok
@ kGdSpellLineRegenerate
@ kGdSpellLineRoots
@ kGdSpellLineDetectMagic
@ kGdSpellLineAbilityTrueShot
@ kGdSpellLineAbilitySteelSkin
@ kGdSpellLineGreaterHealing
@ kGdSpellLineAbilityDurability
@ kGdSpellLineAuraHypnotization
@ kGdSpellLineManaTap
@ kGdSpellLineWaveOfIce
@ kGdSpellLineArrow
@ kGdSpellLineSummonDemon
@ kGdSpellLineAuraManaTap
@ kGdSpellLineAbilityPatronize
@ kGdSpellLineDarknessArea
@ kGdSpellLineObjectIllusion
@ kGdSpellLineShock
@ kGdSpellLineManaTapChained
@ kGdSpellLineCharm
@ kGdSpellLineAuraRegeneration
@ kGdSpellLineWeaken
@ kGdSpellLinePainArea
@ kGdSpellLineCharmAnimal
@ kGdSpellLineEnlightenment
@ kGdSpellLineDispelWhiteAura
@ kGdSpellLinePoison
@ kGdSpellLineChainFireburst
@ kGdSpellLineInvisibility
@ kGdSpellLineSummonGoblin
@ kGdSpellLineSlowness
@ kGdSpellLineStoneTower
@ kGdSpellLineForget
@ kGdSpellLineAuraSlowFighting
@ kGdSpellLineDisenchant
@ kGdSpellLineExtinct
@ kGdSpellLineChillResistance
@ kGdSpellLineFireBallEffect
@ kGdSpellLineSummonBear
@ kGdSpellLinePain
@ kGdSpellLineAuraSiegeOrc
@ kGdSpellLineLifeTap
@ kGdSpellLineDeath
@ kGdSpellLineSuffocation
@ kGdSpellLineRockBullet
@ kGdSpellLineMeditation
@ kGdSpellLineAcidCloud
@ kGdSpellLineIceShieldStun
@ kGdSpellLineSlowFighting
@ kGdSpellLinePestilence
@ kGdSpellLineIlluminate
@ kGdSpellLinePainTower
@ kGdSpellLineAuraDexterity
@ kGdSpellLineBrilliance
@ kGdSpellLineAuraInflexibility
@ kGdSpellLineIceBurst
@ kGdSpellLineInability
@ kGdSpellLineFeignDeath
@ kGdSpellLineEternity
@ kGdSpellLineAuraSiegeHuman
@ kGdSpellLineQuickness
@ kGdSpellLineDetectMetal
@ kGdSpellLineSummonChanneler
@ kGdSpellLineAbilityShelter
@ kGdSpellLineHypnotizeArea
@ kGdSpellLineAlmightinessMental
@ kGdSpellLineRevenge
@ kGdSpellLineCannibalize
@ kGdSpellLineCharmChained
@ kGdSpellLineChainHallow
@ kGdSpellLineFireBlockEffect
@ kGdSpellLineIceBurstChained
@ kGdSpellLineArrowTower
@ kGdSpellLineFireShield
@ kGdSpellLineMirrorImage
@ kGdSpellLineIceArrowEffect
@ kGdSpellLineRemoveCurse
@ kGdSpellLineIceburstTower
@ kGdSpellLineStoneRain
@ kGdSpellLineBerserk
@ kGdSpellLineDominateAnimal
@ kGdSpellLineAuraEternity
@ kGdSpellLineHypnotizeTower
@ kGdSpellLineHallow
@ kGdSpellLineSpark
@ kGdSpellLineAuraHealing
@ kGdSpellLineRetention
@ kGdSpellLineHypnotize
@ kGdSpellLineDoNotTouchMe
@ kGdSpellLineManaTapAura
@ kGdSpellLineSentinelHealing
@ kGdSpellLineAlmightinessElementalEffect
@ kGdSpellLineChainShock
@ kGdSpellLinePetrify
@ kGdSpellLineRemediless
@ kGdSpellLinePlagueArea
@ kGdSpellLineSummonSpectre
@ kGdSpellLineChainRockBullet
@ kGdSpellLineWallOfRocks
@ kGdSpellLineAbilityCriticalHits
@ kGdSpellLineConfuseArea
@ kGdSpellLineFireBallChained
@ kGdSpellLineThornShieldDamage
@ kGdSpellLineSacrificeMana
@ kGdSpellLineAuraWeakness
@ kGdSpellLineInvulnerability
@ kGdSpellLineSuicideHeal
@ kGdSpellLineAbilityWarCry
@ kGdSpellLineRockBulletChained
@ kGdSpellLineLifeTapAura
@ kGdSpellLineStone
@ kGdSpellLineFireBurstChained
@ kGdSpellLineGuard
@ kGdSpellLineFireShieldDamage
@ kGdSpellLineDecayArea
@ kGdSpellLineEssenceWhite
@ kGdSpellLineSummonEarthGolem
@ kGdSpellLineSummonSkeleton
@ kGdSpellLineAbilityBenefactions
@ kGdSpellLineReinforcement
@ kGdSpellLineDexterity
@ kGdSpellLineFlexibilityArea
@ kGdSpellLineChainPain
@ kGdSpellLineIceBlockEffect
@ kGdSpellLineFakeSpellOneFigure
@ kGdSpellLineChainMutation
@ kGdSpellLineAuraSiegeDarkElf
@ kGdSpellLineAbilitySalvo
@ kGdSpellLineAbilityBlessing
@ kGdSpellLineSummonFireGolem
@ kGdSpellLineEarthElemental
@ kGdSpellLineFear
@ kGdSpellLineMutation
@ kGdSpellLineStrengthen
@ kGdSpellLineLifeTapChained
@ kGdSpellLineChainIceburst
@ kGdSpellLineHypnotizeTwo
@ kGdSpellLineAuraSuffocation
@ kGdSpellLineAssistance
@ kGdSpellLineAuraSiegeTroll
@ kGdSpellLineEssenceMental
@ kGdSpellLineFeetClay
@ kGdSpellLineFireElemental
@ kGdSpellLineDecay
@ kGdSpellLineVoodoo
@ kGdSpellLineMutationChained
@ kGdSpellLineSummonTreeWraith
@ kGdSpellLineHealingTower
@ kGdSpellLineTorture
@ kGdSpellLineShockwave
@ kGdSpellLineHolyMight
@ kGdSpellLineHealing
@ kGdSpellLineFog
@ kGdSpellLineRainOfFire
@ kGdSpellLineExtinctTower
@ kGdSpellLineProtectionBlack
@ kGdSpellLineCharisma
@ kGdSpellLineEssenceBlack
@ kGdSpellLineAuraSlowWalking
@ kGdSpellLineFireBurst
@ kGdSpellLinePainChained
@ kGdSpellLineHealingArea
@ kGdSpellLineSuicideDeath
@ kGdSpellLineRingOfRocks
@ kGdSpellLineRaiseDead
@ kGdSpellLineFireBall
@ kGdSpellLineFlexibility
@ kGdSpellLineHealingAura
@ kGdSpellLineRootsArea
@ kGdSpellLineAlmightinessElemental
@ kGdSpellLineAuraLifeTap
@ kGdSpellLineDisrupt
@ kGdSpellLineBlizzard
@ kGdSpellLineCureDisease
@ kGdSpellLineShiftMana
@ kGdSpellLineAbilityRiposte
@ kGdSpellLineDarkBanishing
@ kGdSpellLineManaShield
@ kGdSpellLineDispelBlackAura
@ kGdSpellLineMeltResistance
@ kGdSpellLineInflexibilityArea
@ kGdSpellLineEndurance
@ kGdSpellLineAuraFlexibility
@ kGdSpellLineSummonIceGolem
@ kGdSpellLineSelfIllusion
@ kGdSpellLineQuicknessArea
@ kGdSpellLineEssenceElementalEffect
@ kGdSpellLineFreezeArea
@ kGdSpellLineSlownessArea
@ kGdSpellLineDarkMight
@ kGdSpellLineBefriend
@ kGdSpellLineDeathGrasp
@ kGdSpellLineFastFighting
@ kGdSpellLineFireResistance
@ kGdSpellLineAuraBrilliance
@ kGdSpellLineThornShield
@ kGdSpellLineSummonBlade
@ kGdSpellLineConservation
@ kGdSpellLineAlmightinessWhite
@ kGdSpellLineAbilityBerserk
@ kGdSpellLineAuraFastFighting
@ kGdSpellLineManaDrain
@ kGdSpellLineHolyTouch
@ kGdSpellLineDominate
@ kGdSpellLineAuraStrength
@ kGdSpellLineWaveOfRocks
@ kGdSpellLineDemoralization
@ kGdSpellLineAuraLight
@ kGdSpellLineAbilityShiftLife
@ kGdSpellLineConfuse
@ kGdSpellLineIceElemental
@ kGdSpellLineSummonWolf
@ kGdSpellLineFireBurstTower
@ kGdSpellLineChainLifetap
@ kGdSpellLineChainFireball
@ kGdSpellLineAlmightinessBlack
@ kGdSpellLineAuraInability
@ kGdSpellLineDistract
@ kGdSpellLineIceShield
@ kGdSpellLineAuraEndurance
@ kGdSpellLineHallowChained
@ kGdSpellLineEssenceElemental
@ kGdSpellLineFreeze
@ kGdSpellLineDominateUndead
@ kGdSpellLineAbilityEndurance
@ kGdSpellLineWaveOfFire
@ kGdSpellLineChainManatap
@ kGdSpellLineWeakenArea
@ kGdSpellLineAuraFastWalking
@ kGdSpellLineChainCharm
@ kGdSpellLineCurePoison
@ kGdSpellLineStrengthenArea
struct SF_CGdFigure SF_CGdFigure
void(__thiscall * fun_009cd1f0_ptr)(void *SF_CUiBottom, uint8_t param1)
struct SF_CGdSpell SF_CGdSpell
void attachVideo(CAppMenu *CAppMenu_ptr, CMnuContainer *parent, char *video_loc_and_name_charsC)
uint16_t(__thiscall * get_spell_spell_line_ptr)(void *, uint16_t)
@ WAY_POINTS_READ_REVERSE
@ START_WORK_AT_BUILDING_FORCE_JOB
@ CORPSE_CANT_ROT
@ MANUAL_JOB_CHANGE
@ SUPERIOR_PATHING
@ MANUAL_HIT_TARGET
void(__thiscall * autoclass113_fun_00a278c0_ptr)(void *_this_autoclass113, uint32_t p1)
SF_Font *(__thiscall * get_font_ptr)(SF_FontStruct *_this, uint32_t font_id)
void(__thiscall * figure_toolbox_add_spell_ptr)(void *, uint16_t, uint16_t)
void(__thiscall * menu_label_set_font_ptr)(void *_this, SF_Font *font)
void(__thiscall * console_print_ptr)(uint32_t, const char *)
void(__thiscall * vfun163_ptr)(void *CMnuContainer, uint8_t param1)
void(* fidfree_ptr)(uint32_t *memory_ptr)
void(__thiscall * menu_label_ptr)(CMnuLabel *_this)
uint32_t(__thiscall * figure_toolbox_get_unkn_ptr)(void *, uint16_t)
void(__thiscall * fun_0099f610_ptr)(void *_this, uint16_t param1, uint16_t param2, uint8_t param3, uint16_t param4)
uint32_t(__thiscall * fun_006a0140_ptr)(void *_this, uint16_t p1, SF_CGdTargetData *p2_ptr, uint8_t p3, uint8_t p4)
CMnuLabel *__thiscall attach_new_label(CMnuLabel *label_ptr, CMnuContainer *parent, char *label_text, uint8_t font_index, uint16_t x_pos, uint16_t y_pos, uint16_t width, uint16_t height)
void(__thiscall * message_box_ptr)(uint32_t CAppMenu, uint16_t description_id, SF_String *string_ptr, uint16_t hasOffset)
struct SF_CGdBuildingToolbox SF_CGdBuildingToolbox
@ CHECK_SPELLS_BEFORE_JOB2
@ CHECK_SPELLS_BEFORE_CHECK_BATTLE
struct SF_CGdEffect SF_CGdEffect
bool(__thiscall * getSpellLineIsTargetSelf_ptr)(void *_this, uint16_t spell_line_id)
CMnuSmpButton *__thiscall attach_new_button(CMnuContainer *parent, char *button_mesh_default, char *button_mesh_pressed, char *button_mesh_highlight, char *button_mesh_disabled, char *label_char, uint8_t font_index, uint16_t x_pos, uint16_t y_pos, uint16_t width, uint16_t height, int button_index, uint32_t callback_function_pointer)
uint32_t *(__thiscall * fun_00a28d60_ptr)(void *_this, void *param1, uint32_t param2)
bool(__thiscall * figure_toolbox_is_targetable_ptr)(void *CGdFigureToolbox, uint16_t figure_index)
void *(__cdecl * new_operator_ptr)(uint32_t param_1)
uint32_t *(__thiscall * fun_0086dd60_ptr)(void *_this, uint8_t p1, uint32_t p2)
uint16_t(__cdecl * fun_00a2a1d0_ptr)(void *some_ptr, void *some_ptr_2)
CMnuLabel *__thiscall attach_new_meshed_label(CMnuLabel *label_ptr, CMnuContainer *parent, char *mesh_name, char *label_text, uint8_t font_index, uint16_t x_pos, uint16_t y_pos, uint16_t width, uint16_t height)
void(__thiscall * menu_label_set_data_ptr)(CMnuLabel *_this, uint32_t color_red, uint32_t color_green, uint32_t color_blue, uint8_t unknchar)
void(__thiscall * initialize_menu_container_ptr)(CMnuContainer *_this)
struct SF_CGdResource SF_CGdResource
@ F_CHECK_SPELLS_BEFORE_JOB
@ USED_FOR_REVENGE
@ IS_IMPORTANT_DIALOG
@ CUR_ACTIVE_DIALOG
@ VIEW_MODE_1ST_3RD
@ HIT_LEFT_HAND_NEXT
@ F_CHECK_SPELLS_BEFORE_CHECK_BATTLE
@ NO_WAY_TO_TARGET
void(__thiscall * set_label_flags_ptr)(CMnuLabel *_this, uint32_t flags)
uint32_t(__thiscall * fun_006f8c06_ptr)(SF_CGdFigureToolbox *_this, uint16_t figure_id, uint16_t spell_id, uint32_t target_id, uint8_t param4, uint32_t param5, uint32_t param6, uint32_t param7, uint32_t param8)
CUiOption *(__thiscall * create_option_ptr)(CUiOption *_this)
uint32_t(__thiscall * FUN_0069eaf0_ptr)(void *ac69, void *ac69_2, void *ac69_3, void *ac69_4)
void *(__thiscall * fun_009de190_ptr)(void *_this, void *param_1)
uint32_t(__thiscall * cuiVideoSequence_constructor_ptr)(SF_CUiVideo *_this, SF_String *p1)
void *(__thiscall * fun_009a0750_ptr)(void *_this)
void(__thiscall * container_add_control_ptr)(CMnuContainer *_this, CMnuBase *CMnubase, char c1, char c2, uint32_t p4)
void(__thiscall * fun_009a2790_ptr)(void *_this, void *_p1, uint32_t p2)
struct SF_CGdWorldToolBox SF_CGdWorldToolBox
SF_CGdBuilding * SF_CGdBuilding
SF_CGdPlayer * SF_CGdPlayer
CGdControllerClient * SF_CGdControllerClient
SF_CGdResource * SF_CGdResource
SF_CGdBuildingToolbox * SF_CGdBuildingToolbox
SF_CGdEffect * CGdEffect
SF_CGdBuilding * CGdBuilding
SF_CGdFigureToolbox * CGdFigureToolBox
SF_CGdPlayer * CGdPlayer
SF_CGdFigureJobs * CGdFigureJobs
SF_CGdWorldToolBox * CGdWorldToolBox
SF_CGdBuildingToolbox * CGdBuildingToolBox
SF_CGdWorld * CGdWorld
AutoClass14 * OpaqueClass
SF_CGdResource * CGdResource
SF_CGdFigure * CGdFigure
GdAvatarData avatarData
CAppSession * CAppSession
CAppMain_data CAppMain_data
uint32_t unknown_datablock[3]
CAppSession * CAppSession
CMnuContainer * loadFileContainer
CMnuContainer * someContainer_0xcc
CMnuContainer * some_container
uint8_t more_data3[0x1E4]
SF_CUiVideoSequence * CUiVideoSequence_ptr
SF_CUiVideo * CUiVideo_ptr
CAppMenu_data CAppMenu_data
CGdControllerClient * controllerClient
CAppSession_data data
uint32_t CGdControllerBaseData[0x220]
CGdControllerClientData data
AutoClass46 * AutoClass46
SF_CGdFigureJobs * CGdFigureJobs
SF_CGdResource * CGdResource
AutoClass14 * OpaqueClass
SF_CGdFigure * CGdFigure
SF_CGdBuildingToolbox * CGdBuildingToolbox
uint8_t unknown_data[0x418]
SF_CGdEffect * CGdEffect
SF_CGdPlayer * CGdPlayer
SF_CGdObject * CGdObject
SF_CGdFigureToolbox * CGdFigureToolbox
SF_CGdBuilding * CGdBuilding
SF_CGdWorldToolBox * SF_CGdWorldToolBox
CMnuBase_data data
uint8_t CMnuContainer_data[0x98]
uint8_t CMnuVisControl_data[0x9C]
CMnuBase_data CMnuBase_data
uint8_t CMnuLabel_data[0xc0]
uint8_t CMnuVisControl_data[0x9C]
CMnuBase_data CMnuBase_data
CMnuBase_data CMnuBase_data
uint8_t CMnuScreen_data[0x4c8]
uint8_t CMnuContainer_data[0x98]
uint8_t CMnuVisControl_data[0x9c]
uint8_t CMnuVisControl_data[0x9c]
CMnuButton_data CMnuButton_data
uint8_t CMnuSmpButton_data[0x50]
CMnuBase_data CMnuBase_data
SF_CGdFigureToolbox * CGdFigureToolBox
SF_CGdFigure * CGdFigure
uint8_t unkn7[0x1152]
uint8_t unkn2[0x7024]
CGdControllerClient * CGdControllerClient
SF_GameInfo * game_info
CMnuContainer * base_campaign_new_character_container
CMnuContainer * campaign_level_load_container_maybe
CMnuContainer * new_character_container_maybe
CMnuContainer * base_campaign_predefined_character_selection
CMnuContainer * base_campaign_predefined_character_base_container
CMnuContainer * some_container_label
uint8_t CMnuContainer_data[0x98]
uint8_t CMnuVisControl_data[0x9c]
CUiMenuPreLoad_data CUiMenuPreLoad_data
CMnuBase_data CMnuBase_data
uint8_t unknown_data2[0xcc]
data_CUiStartMenu CUiStartMenu_data
uint8_t CMnuVisControl_data[0x9C]
uint8_t CMnuContainer_data[0x98]
uint8_t CMnuBase_data[0x208]
GdAvatarInternal internal
GdAvatarInternal internal
GdFigureAbility abilities[10]
uint16_t unknown[4]
uint16_t avatar_figure_index
SF_String hero_names[5]
uint32_t unknown5[7]
uint8_t hq_updrade_level[2]
uint32_t good_remainder[20]
uint32_t unknown[2]
uint16_t hero_figure_index[5]
uint32_t good_amount[20]
uint16_t civilian_count[6]
uint32_t global_player_id
uint32_t unknown4[2]
uint16_t warrior_count[2]
uint8_t unknown3[29]
uint32_t runepower_current
A structure for the global list of figures and related statistics for them.
GdObject objects[16384]
ushort_list_node nodes[2000]
AutoClass14 * opaqueClass
uint16_t heightmap[1048576]
SF_world_unkn_3 unknown6[255]
SF_world_unkn_1 unknown1[10001]
uint8_t unknown4[131070]
SF_world_unkn_4 unknown5[100]
SF_world_unkn_2 cells[1048576]
CMnuBase_data CMnuBaseData
CUiMain_data CUiMain_data
uint8_t CMnuContainer_data[0x98]
uint8_t CMnuVisControl_data[0x9C]
uint8_t CMnuContainer_data[0x98]
uint8_t CMnuVisControl_data[0x9C]
CMnuBase_data baseData
SF_CUiVideoSequence_data videoData
uint8_t font_data[0x1fa0]
SF_Font * smth_font[32]
log_function_ptr logInfo
log_function_ptr logError
log_function_ptr logWarning
log_debug_ptr logDebug
char mod_description[128]
char mod_version[24]
char mod_errors[256]
char mod_author[128]
Represents a node in a list of unsigned short values.