Spellforce-Spell-framework
Loading...
Searching...
No Matches
sf_general_structures.h
Go to the documentation of this file.
1
7 #pragma once
8 #include <stdint.h>
9 #include <stdbool.h>
10
11/* |-========== Mod Structures ==========-| */
12
13typedef struct __attribute__((packed))
14{
15 char mod_id[64];
16 char mod_version[24];
17 char mod_description[128];
18 char mod_author[128];
19 char mod_errors[256]; //Large Buffer for all error reporting needs.
20} SFMod;
21
22typedef void (*log_function_ptr)(const char *);
29
46
47/* |-========== General Structures ==========-| */
48
49// Forward Declarations for looping struct declarations
50typedef struct SF_CGdSpell SF_CGdSpell;
52typedef struct SF_GdEffect SF_GdEffect;
54typedef struct SF_CGdWorld SF_CGdWorld;
58
73
84
85// Game Formated them for bitwise operations, hence the magic numbers
86typedef enum
87{
88 UNDEAD = 0x1,
90 AGGROED = 0x4,
91 IS_DEAD = 0x8,
92 REDO = 0x10,
94 F_CHECK_SPELLS_BEFORE_CHECK_BATTLE = 0x40, // May need to be changed as it could be used inplace of a spell key perhaps?
96 FREEZED = 0x100,
97 HAS_LOOT = 0x200,
98 HAS_DIALOG = 0x400,
99 FEMALE = 0x800,
100 GOT_AGGRO = 0x1000,
101 RETREAT = 0x2000,
103 AURA_RUNNING = 0x8000,
104 AI_BLOCKED = 0x10000,
105 TOWER = 0x20000,
106 IS_SWAPPING = 0x40000,
108 IS_IN_FIGHT = 0x100000,
110 IS_TALKING = 0x400000,
112 UNKILLABLE = 0x1000000,
113 FOLLOW_MODE = 0x2000000,
115 FOREST_SPIRIT = 0x8000000,
116 VIP = 0x10000000,
117 ILLUSION = 0x20000000,
118 SPAWN = 0x40000000,
119 USED_FOR_REVENGE = 0x80000000
121
139
140typedef struct __attribute__((packed))
141{
142 uint16_t X;
143 uint16_t Y;
144} SF_Coord;
145
146typedef struct __attribute__((packed))
147{
148 uint32_t R;
149 uint32_t G;
150} SF_RGColor;
151
152typedef struct __attribute__((packed))
153{
154 uint16_t spell_id;
155 uint16_t job_id;
157
158typedef struct __attribute__((packed))
159{
160 uint8_t entity_type; // 1 for figure, 2 for building, 3 for object
161 uint16_t entity_index;
164
165typedef struct __attribute__((packed))
166{
167 void *raw_data;
168 uint32_t str_length;
170 char *data;
171} SF_String;
172
173typedef struct __attribute__((packed))
174{
175 uint32_t partA;
176 uint32_t partB;
178
179/* |-========== Figure Start ==========-| */
180
181typedef struct __attribute__((packed))
182{
183 uint16_t figure_index;
184 uint16_t agro_value;
185 uint16_t hate_value;
187
188typedef struct __attribute__((packed))
189{
190 uint16_t min_dmg;
191 uint16_t max_dmg;
192 uint16_t min_rng;
193 uint16_t max_rng;
194 uint16_t wpn_spd;
195 uint16_t wpn_type;
196 uint16_t wpn_mat;
198
199typedef struct __attribute__((packed))
200{
201 uint16_t base_val;
202 uint16_t bonus_val;
204 uint8_t statistic_type; // NOT CONFIRMED
206
207typedef struct __attribute__((packed))
208{
209 uint16_t base_val;
210 uint16_t bonus_val;
212 uint8_t statistic_type; // NOT CONFIRMED?
213 uint16_t missing_val; // No idea what this is
215
216typedef struct __attribute__((packed))
217{
218 uint16_t type;
219 uint16_t subtype;
220 uint16_t unkn2;
221 uint16_t unkn3;
222 uint16_t unkn4;
223 uint16_t unkn5;
225
226typedef struct __attribute__((packed))
227{
228 uint16_t GdJobId;
230 uint8_t padding;
233 SF_CGdTargetData target; // it is stored WEIRDLY
234 uint8_t SGtFigureAction[0xc];
235 uint16_t xdata_key;
237 uint8_t padding2;
239 uint8_t unknown[14];
242
243typedef struct __attribute__((packed))
244{
247 uint16_t to_do_count;
249 uint16_t anim_length;
251 uint8_t activity;
252 uint8_t unknown1;
253 uint16_t building;
255 uint8_t race;
256 uint8_t level;
257 uint16_t owner;
261 uint16_t group_leader;
262 uint32_t npc_id;
263 uint16_t unit_data_id;
281 uint16_t equipment[16]; // No idea how this works, may need a class (undefined2[16] in ghidra, but is 20 bytes FigureStatistic is 6 bytes)
282 uint16_t head; // Not sure what this does
283 uint32_t unknown2[3]; // three 4 byte data points in a row, no name known for these.
284 uint8_t unknown3[168]; // Many 1 byte sections in a row
285 uint32_t unknown4[7]; // Many 4 byte sections in a row
286 uint16_t unknown5;
287 uint8_t unknown6[2];
289 uint8_t unknown7[13];
290 uint8_t good; // I assume perhaps alignment?
291 uint8_t direction;
292 uint8_t unknown8;
293 uint8_t path_dir;
295 uint32_t path_bits;
296 uint8_t unknown9;
297 uint32_t unknown10[3];
298 uint16_t unknown11;
299 CGdFigureHateEntry hate_entry[10];
300 uint8_t debug_flags;
301 uint8_t unknown12;
302 uint16_t formation;
303 uint8_t faction;
304 uint8_t unknown13;
306 uint16_t unknown14;
307 uint32_t padding1;
309 uint8_t padding2[3];
311 uint8_t padding3[3];
313 uint8_t padding4[3];
314 uint32_t unknown15[3]; // Skipping some variable sections, contains differences Also Check what AutoClass24 is, it's used multiple times in this section
315 uint8_t dwarf_rank;
316 uint8_t set_type;
317} GdFigure;
318
322typedef struct __attribute__((packed))
323{
324 uint16_t max_used;
325 GdFigure figures[2000];
327
328/* |-========== AutoClass Start ==========-| */
329// These classes are currently only partially understood, and are not fully annotated
330
331typedef struct __attribute__((packed))
332{
333 uint32_t *ac69_ptr1;
334 uint32_t *ac69_ptr2;
335 uint32_t *ac69_ptr3;
336 uint8_t unkn1;
337 uint8_t unkn2;
338 uint16_t figure_index;
340
341// This class is required for the RANDOM function, AutoClass14 also seems to hold some relevance to the game world as well
342// This class is initialized in the GameInit function, so it is likely very important.
343typedef struct __attribute__((packed))
344{
348 uint8_t unknown1[6];
349 uint32_t current_step;
351 uint8_t unknown2[3];
356
357typedef struct __attribute__((packed))
358{
359 uint16_t uknwn1;
360 uint16_t uknwn2;
361 uint16_t uknwn3;
362 uint8_t uknwn4;
364
365typedef struct __attribute__((packed))
366{
368 uint16_t sector;
369 uint8_t uknwn2;
370 uint8_t tile_type;
372
373typedef struct __attribute__((packed))
374{
375 uint8_t uknwn1[10];
376 uint8_t block_value;
377 uint8_t uknwn2[3];
379
380typedef struct __attribute__((packed))
381{
383 uint8_t unkn1;
385
386/* |-========== Spell Start ==========-| */
387typedef struct __attribute__((packed))
388{
389 uint16_t to_do_count;
390 uint16_t spell_id;
391 uint16_t spell_line; // aka spell type in shovel's editor
392 uint16_t spell_job; // aka spell line in older code
395 uint16_t xdata_key; // IDK (Seems to be used in ref for things, seen usage in getting target data and others)
396 uint16_t DLLNode;
397 uint8_t flags;
398} SF_GdSpell;
399
438
472
473struct __attribute__((packed)) SF_CGdWorld
474{
475 SF_world_unkn_1 unknown1[10001];
477 uint16_t map_size;
478 uint8_t unknown2;
479 SF_world_unkn_2 cells[1048576];
480 uint16_t heightmap[1048576];
481 uint16_t unknown3;
482 uint8_t unknown4[131070];
483 SF_world_unkn_4 unknown5[100];
484 uint16_t change_count;
485 SF_world_unkn_3 unknown6[255];
486 uint8_t unknown7[63];
487};
488
489struct __attribute__((packed)) SF_CGdWorldToolBox
490{
491 uint32_t *CGdAStar;
492 AutoClass14 *OpaqueClass; // Unconfirmed
498 uint32_t *CGdFigureJobs;
499 uint32_t *autoclass47;
500 uint32_t *CGdObject;
502 uint32_t *CGdResource;
503 uint32_t *autoclass22;
505 uint32_t *CGdXDataList;
506 uint32_t data[10000];
507 uint32_t uknown1; // 4x uint8_t
508 uint32_t unknown2;
509};
510
539
540struct __attribute__((packed)) SF_GdEffect
541{
546 uint32_t start_step;
547 uint32_t unkn1;
548 uint16_t length;
549 uint16_t xdata_key; // IDK (Seems to be used in ref for things, seen usage in getting target data and others)
550 uint16_t unkn2;
551 uint16_t unkn3;
552 uint16_t unkn4;
553 uint16_t unkn5;
555};
556
577/* |-============= Buildings Structures ==========- |*/
578
579typedef struct __attribute__((packed))
580{
582 uint16_t owner;
583 uint8_t type;
584 uint8_t race;
585 uint8_t flags;
586 uint16_t build_up;
587 uint16_t build_max;
590 uint16_t health_max;
591 uint16_t DLLNode;
592 uint16_t xdata_key;
593 uint16_t angle;
594 uint32_t unknown[5];
597 uint8_t level;
598 uint32_t unknown2;
599} GdBuilding;
600
601struct __attribute__((packed)) SF_CGdBuilding
602{
604 GdBuilding buildings[1000];
605 uint16_t max_used;
607 uint32_t unknown1;
609 uint32_t unknown2;
610};
611
612
613/* |-========== Internal Structures ==========-| */
614
615typedef struct __attribute__((packed))
616{
617 uint8_t font_data[0x1fa0];
618} SF_Font;
619
620typedef struct __attribute__((packed))
621{
622 SF_Font *smth_font[32];
623 uint8_t unkn_data[0x8];
625
626typedef struct __attribute__((packed))
627{
628 uint32_t R;
629 uint32_t G;
630 uint32_t B;
631} SF_Color;
632
633typedef struct __attribute__((packed))
634{
635 uint32_t unkn;
639 uint8_t data[0x118];
640 uint32_t parent_ptr;
641 uint8_t data2[0xdc];
643
644typedef struct __attribute__((packed))
645{
646 uint32_t vftable_ptr;
648} CMnuBase;
649
650typedef struct __attribute__((packed))
651{
652 uint32_t vftablePTR;
653 uint8_t unknown_data2[0xcc];
654} CUiOption;
655
656typedef struct __attribute__((packed))
657{
658 uint32_t vftablePTR;
660 uint8_t CMnuVisControl_data[0x9C];
661 uint8_t CMnuLabel_data[0xc0];
662} CMnuLabel;
663
664
665typedef struct __attribute__((packed))
666{
667 uint8_t toggle; // toggle used to track if a button is enabled or not.
668 uint32_t index; // Used to hold the index of loaded mods for the showmod page
669 CMnuLabel *title_label; // Title Label
670 CMnuLabel *desc_label; // Description Label
671 CMnuLabel *page_label; // Page Index Label
672 CMnuLabel *error_label; // Error Info Label
674
675typedef struct __attribute__((packed))
676{
677 uint32_t vtable_ptr;
678 uint32_t param_ptr;
681
682typedef struct __attribute__((packed))
683{
684 uint8_t padding_start[0x13];
685 uint32_t button_ptr;
686 uint8_t padding_end[0x119];
688
689typedef struct __attribute__((packed))
690{
691 uint32_t vftablePTR;
693 uint8_t CMnuVisControl_data[0x9c];
695 uint8_t CMnuSmpButton_data[0x50];
697
698typedef struct __attribute__((packed))
699{
700 uint32_t vftablePTR;
702 uint8_t CMnuVisControl_data[0x9C];
703 uint8_t CMnuContainer_data[0x98];
705
706typedef struct __attribute__((packed))
707{
708 uint8_t unkn1[0x8];
709 uint8_t offset_0x8;
710 uint8_t unkn2[0x3];
711 uint32_t offset_0xc;
712 uint32_t offset_0x10;
713 uint8_t offset_0x14;
714 uint8_t unkn3[0x3];
715 uint32_t offset_0x18;
716 uint32_t offset_0x1c;
717 uint8_t unknown[0x44];
720
721typedef struct __attribute__((packed))
722{
723 uint32_t vftablePTR;
724 uint8_t CMnuBase_data[0x208];
725 uint8_t CMnuVisControl_data[0x9C];
726 uint8_t CMnuContainer_data[0x98];
729
730typedef struct __attribute__((packed))
731{
734 uint8_t unknown_data[12];
739
740
741typedef struct __attribute__((packed))
742{
744 uint32_t AutoClass72[5];
745 uint32_t CGdEventIterator[5];
747 uint16_t unkn_value;
748 uint8_t padding[0x19a];
750
751typedef struct __attribute__((packed))
752{
753 void *vftable;
754 uint32_t CGdControllerBaseData[0x220];
757
758
759typedef struct __attribute__((packed))
760{
761 uint8_t unkn[0xb8];
762 uint32_t offset_b8;
763 uint8_t unkn2[0x7028];
767 uint8_t unkn3[0xc];
770 uint8_t unkn4[0x10];
771 void *CUiGame;
773 uint8_t unkn5[0x2A4];
775 uint8_t unkn9[0x38];
782 uint8_t unkn6[0x10];
785 uint8_t unkn7[0x1152];
786 uint16_t offset_857e;
787 uint8_t uknn8[0xda];
789//field 0x857e - ushort
790typedef struct __attribute__((packed))
791{
794 uint8_t CMnuVisControl_data[0x9C];
795 uint8_t CMnuContainer_data[0x98];
797} SF_CUiMain;
798
799
800typedef struct __attribute__((packed))
801{
802 uint8_t unkn[4];
803 uint32_t offset_0x4;
804 uint32_t offset_0x8;
807 uint32_t offset_0x2c;
809
810typedef struct __attribute__((packed))
811{
812 uint32_t vtable_ptr;
814 uint8_t CMnuVisControl_data[0x9C];
815 uint8_t CMnuContainer_data[0x98];
818
819typedef struct __attribute__((packed))
820{
821 uint32_t vtable_ptr;
823 uint8_t CMnuVisControl_data[0x9C];
824 uint8_t CMnuContainer_data[0x98];
825 uint8_t videoData[0xc];
827
828typedef struct __attribute__((packed))
829{
830 uint8_t data[0x28];
833 uint8_t more_data[0x658];
835
836typedef struct __attribute__((packed))
837{
838 uint32_t vftable_ptr;
840} CAppMenu;
841
866
874
918
919/* |-========== Internal Functions ==========-| */
920// These functions are used in SFSF internally, and may be moved.
921
922typedef void (__thiscall *console_print_ptr)(uint32_t, const char *);
923typedef uint16_t (__thiscall *get_spell_spell_line_ptr)(void *, uint16_t);
924typedef uint32_t (__thiscall *figure_toolbox_get_unkn_ptr)(void *, uint16_t);
925typedef void (__thiscall *figure_toolbox_add_spell_ptr)(void *, uint16_t,
926 uint16_t);
927typedef bool (__thiscall *figure_toolbox_is_targetable_ptr)(
928 void *CGdFigureToolbox, uint16_t figure_index);
929typedef uint32_t (__thiscall *FUN_0069eaf0_ptr)(void *ac69, void *ac69_2,
930 void *ac69_3, void *ac69_4);
931typedef void (*fidfree_ptr)(uint32_t *memory_ptr);
932typedef void (__thiscall *menu_label_ptr)(CMnuLabel *_this);
933typedef void (__thiscall *menu_label_set_string_ptr)(CMnuLabel *_this,
934 SF_String *string);
935typedef void (__thiscall *initialize_menu_container_ptr)(CMnuContainer *_this);
937 SF_String *_this);
938
939typedef void (__thiscall *construct_start_menu_ptr)(CUiStartMenu *_this,
940 uint32_t p1);
941
942typedef void (__thiscall *mnu_label_init_data_ptr)(void *_this, float xpos,
943 float ypos, float width,
944 float height,
945 SF_String *string);
946typedef void (__thiscall *message_box_ptr)(uint32_t CAppMenu,
947 uint16_t description_id,
948 SF_String *string_ptr,
949 uint16_t hasOffset);
950
951typedef void (__thiscall *menu_label_constructor_ptr)(CMnuLabel *_this);
952typedef void (__thiscall *set_label_flags_ptr)(CMnuLabel *_this,
953 uint32_t flags);
954
955typedef void (__fastcall *original_menu_func_ptr)(uint32_t param1);
956
957typedef void *(__cdecl *new_operator_ptr)(uint32_t param_1);
958typedef void (__thiscall *container_add_control_ptr)(CMnuContainer *_this,
959 CMnuBase *CMnubase,
960 char c1, char c2,
961 uint32_t p4);
962typedef void (__thiscall *menu_label_set_data_ptr)(CMnuLabel *_this,
963 uint32_t color_red,
964 uint32_t color_green,
965 uint32_t color_blue,
966 uint8_t unknchar);
967typedef void (__thiscall *get_sf_color_ptr)(SF_String *_this,
968 uint32_t color_id);
969typedef SF_FontStruct *(__thiscall *get_smth_fonts_ptr)(void);
970typedef SF_Font *(__thiscall *get_font_ptr)(SF_FontStruct *_this,
971 uint32_t font_id);
972typedef void (__thiscall *menu_label_set_font_ptr)(void *_this, SF_Font *font);
973typedef CUiOption *(__thiscall *create_option_ptr)(CUiOption *_this);
974
975// SF Menu / GUI Hooks for Auras
976typedef void (__thiscall *autoclass113_fun_00a27530_ptr)(
977 void *_this_autoclass113);
978typedef uint32_t *(__thiscall *fun_0086dd60_ptr)(void *_this,uint8_t p1,
979 uint32_t p2);
980typedef void (__thiscall *autoclass113_fun_00a278c0_ptr)(
981 void *_this_autoclass113, uint32_t p1);
982
983// Weird __cdecl class here, blind passthrough and hope it works.
984typedef uint16_t (__cdecl *fun_00a2a1d0_ptr)(void *some_ptr, void *some_ptr_2);
985
986typedef void (__thiscall *fun_00a49b10_ptr)(CGdControllerClient *_this,
987 uint8_t param1);
988
989typedef uint32_t *(__thiscall *fun_00a28d60_ptr)(void *_this, void *param1,
990 uint32_t param2);
991typedef void (__thiscall *fun_009a4020_ptr)(void *_this, uint32_t param1);
992
993typedef void (__thiscall *vfun164_ptr)(void *CMnuContainer);
994typedef void (__thiscall *vfun163_ptr)(void *CMnuContainer, uint8_t param1);
995typedef void *(__thiscall *vfun41_ptr)(void *CMnuContainer);
996
997typedef uint32_t (__thiscall *fun_006a0140_ptr)(void *_this, uint16_t p1,
998 SF_CGdTargetData *p2_ptr,
999 uint8_t p3, uint8_t p4);
1000typedef void (__thiscall *fun_009a2790_ptr)(void *_this, void *_p1,
1001 uint32_t p2);
1002typedef uint32_t (__thiscall *fun_0069f8d0_ptr)(void *_this, uint32_t p1);
1003typedef uint32_t (__thiscall *fun_0069fb90_ptr)(void *_this, uint16_t figure_id,
1004 uint8_t po2, uint16_t unkn_p3,
1005 SF_CGdTargetData *data,
1006 uint32_t p5, uint32_t p6);
1007typedef bool (__thiscall *getSpellLineIsTargetSelf_ptr)(void *_this,
1008 uint16_t spell_line_id);
1009typedef void *(__thiscall *fun_009a0750_ptr)(void *_this);
1010typedef void *(__thiscall *fun_009de190_ptr)(void *_this, void *param_1);
1011typedef void (__thiscall *fun_0099f610_ptr)(void *_this, uint16_t param1,
1012 uint16_t param2, uint8_t param3,
1013 uint16_t param4);
1014typedef void (__thiscall *fun_009cd1f0_ptr)(void *SF_CUiBottom, uint8_t param1);
1015typedef void (__thiscall *fun_009a1fd0_ptr)(void *SF_CUiGame, uint32_t param1);
1016typedef uint32_t (__thiscall *fun_006f8c06_ptr)(SF_CGdFigureToolbox *_this,
1017 uint16_t figure_id,
1018 uint16_t spell_id,
1019 uint32_t target_id,
1020 uint8_t param4, uint32_t param5,
1021 uint32_t param6,
1022 uint32_t param7,
1023 uint32_t param8);
1024typedef void (__thiscall *fun_00910de0_ptr)(void *_this, void *param1,
1025 uint32_t param2);
1026
1027typedef uint32_t (__thiscall *cuiVideoSequence_constructor_ptr)(
1028 SF_CUiVideo *_this, SF_String *p1);
1029typedef void (__thiscall *CMnuScreen_attach_control_ptr)(void *_CMnuScreen_ptr,
1030 CMnuBase *base,
1031 char flag);
1032
1033extern void attachVideo(CAppMenu *CAppMenu_ptr, CMnuContainer *parent,
1034 char *video_loc_and_name_charsC);
1035extern CMnuLabel * __thiscall attach_new_meshed_label(CMnuLabel *label_ptr,
1036 CMnuContainer *parent,
1037 char *mesh_name,
1038 char *label_text,
1039 uint8_t font_index,
1040 uint16_t x_pos,
1041 uint16_t y_pos,
1042 uint16_t width,
1043 uint16_t height);
1044extern CMnuLabel * __thiscall attach_new_label(CMnuLabel *label_ptr,
1045 CMnuContainer *parent,
1046 char *label_text,
1047 uint8_t font_index,
1048 uint16_t x_pos, uint16_t y_pos,
1049 uint16_t width, uint16_t height);
1050extern void __thiscall attach_new_button(CMnuContainer *parent,
1051 char *button_mesh_default,
1052 char *button_mesh_pressed,
1053 char *button_mesh_highlight,
1054 char *button_mesh_disabled,
1055 char *label_char, uint8_t font_index,
1056 uint16_t x_pos, uint16_t y_pos,
1057 uint16_t width, uint16_t height,
1058 int button_index,
1059 uint32_t callback_function_pointer);
1060
1061extern void __fastcall show_mod_list_callback(CMnuSmpButton *button,
1062 int32_t *cui_menu_ptr_maybe);
1063
1065
1076 #define DECLARE_FUNCTION(type, name, ...) \
1077 typedef type (__thiscall *name ## _ptr)(__VA_ARGS__);
SFSF_ModlistStruct mod_struct
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 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)
void attachVideo(CAppMenu *CAppMenu_ptr, CMnuContainer *parent, char *video_loc_and_name_charsC)
void __fastcall show_mod_list_callback(CMnuSmpButton *button, int32_t *cui_menu_ptr_maybe)
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 * 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)
void(__thiscall * menu_label_constructor_ptr)(CMnuLabel *_this)
uint32_t(__thiscall * fun_0069f8d0_ptr)(void *_this, uint32_t p1)
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
@ BLACK_AURA_SPELL
@ TARGET_ONHIT_SPELL
@ SPELL_TAG_COUNT
@ SEIGE_AURA_SPELL
@ DOMINATION_SPELL
@ COMBAT_ABILITY_SPELL
void(__thiscall * get_sf_color_ptr)(SF_String *_this, uint32_t color_id)
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_MERCHANT
@ TASK_WOODCUTTER
@ TASK_MAINCHAR
SF_FontStruct *(__thiscall * get_smth_fonts_ptr)(void)
@ EFFECT_ENTITY_TYPE2
@ SPELL_STAT_MUL_MODIFIER2
@ EFFECT_ENTITY_INDEX3
@ SPELL_STAT_MUL_MODIFIER4
@ EFFECT_SPELL_ID
@ SPELL_STAT_MUL_MODIFIER3
@ SPELL_PESTILENCE_DAMAGE
@ SPELL_STAT_MUL_MODIFIER
@ EFFECT_DO_NOT_ADD_SUBSPELL
@ SPELL_DOUBLE_DAMAGE
@ EFFECT_ENTITY_INDEX2
@ EFFECT_SUBSPELL_ID
@ SPELL_CONSERVATION_SHIELD
@ EFFECT_ENTITY_TYPE
@ SPELL_TICK_COUNT_AUX
@ SPELL_TICK_COUNT
@ EFFECT_ENTITY_INDEX
@ EFFECT_PHYSICAL_DAMAGE
@ EFFECT_SPELL_INDEX
@ EFFECT_EFFECT_INDEX
SF_String *(__thiscall * construct_default_sf_string_ptr)(SF_String *_this)
@ 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
void *(__thiscall * vfun41_ptr)(void *CMnuContainer)
void(__thiscall * vfun164_ptr)(void *CMnuContainer)
void(__thiscall * fun_009cd1f0_ptr)(void *SF_CUiBottom, uint8_t param1)
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)
void(__thiscall * message_box_ptr)(uint32_t CAppMenu, uint16_t description_id, SF_String *string_ptr, uint16_t hasOffset)
bool(__thiscall * getSpellLineIsTargetSelf_ptr)(void *_this, uint16_t spell_line_id)
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)
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)
@ F_CHECK_SPELLS_BEFORE_JOB
@ RESESRVED_ONLY
@ WALK_JOB_WAIT
@ 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)
void(* log_function_ptr)(const char *)
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)
CGdFigureJobFlags flags
SF_CGdTargetData target
SF_CUiVideoSequence * CUiVideoSequence_ptr
CAppMenu_data CAppMenu_data
CGdControllerClientData data
uint16_t figure_index
uint16_t hate_value
uint16_t agro_value
CMnuBase_data data
CMnuBase_data CMnuBase_data
CMnuBase_data CMnuBase_data
CMnuButton_data CMnuButton_data
CMnuBase_data CMnuBase_data
SF_CGdFigureToolbox * CGdFigureToolBox
SF_CGdFigure * CGdFigure
CGdControllerClient * CGdControllerClient
data_CUiStartMenu CUiStartMenu_data
FigureStatisticExt stamina
uint16_t to_do_count_remainder
uint32_t clan_relations
FigureStatistic strength
FigureStatistic dexterity
uint16_t anim_length_remainder
FigureStatistic resistance_mental
FigureStatistic charisma
FigureStatistic resistance_fire
FigureStatistic cast_speed
SF_CGdFigureWeaponStats weapon_stats
FigureStatisticExt health
FigureStatistic wisdom
FigureStatisticExt mana_stuff
GdFigureFlags flags
FigureStatistic fight_speed
FigureStatistic resistance_ice
FigureStatistic agility
FigureStatistic resistance_black
FigureStatistic walk_speed
FigureStatistic armor
FigureStatistic intelligence
SF_CGdWorld * SF_CGdWorld
SF_CGdFigure * SF_CGdFigure
AutoClass14 * OpaqueClass
SF_CGdBuilding * CGdBuilding
SF_CGdWorldToolBox * SF_CGdWorldToolBox
SF_CGdFigureToolbox * SF_CGdFigureToolBox
SF_CGdSpell * CGdSpell
AutoClass14 * autoClass14
A structure for the global list of figures and related statistics for them.
SF_CGdBuilding * CGdBuilding
SF_CGdWorldToolBox * CGdWorldToolBox
SF_CGdFigureToolbox * CGdFigureToolBox
SF_CGdWorldToolBox * CGdWorldToolBox
SF_CGDEffect * SF_CGdEffect
SF_CGdFigure * SF_CGdFigure
SF_CGdWorldToolBox * SF_CGdWorldToolBox
SF_CGdWorld * SF_CGdWorld
AutoClass14 * OpaqueClass
SF_CGdFigureToolbox * SF_CGdFigureToolBox
SF_CGdBuilding * CGdBuilding
SF_CGdBuilding * CGdBuilding
CMnuBase_data CMnuBaseData
uint32_t CUiMain_cftable_ptr
CUiMain_data CUiMain_data
CMnuBase_data baseData
SF_CUiVideoSequence_data videoData
SF_CGdTargetData source
SF_CGdTargetData target
SF_CGdTargetData source
SF_CGdTargetData target
uint32_t unknown_length_var
log_function_ptr logInfo
log_function_ptr logError
log_function_ptr logWarning