diff --git a/artifacts/scripting/headers/command_lite.h b/artifacts/scripting/headers/command_lite.h index 9c116754..713d5f46 100644 --- a/artifacts/scripting/headers/command_lite.h +++ b/artifacts/scripting/headers/command_lite.h @@ -1,5 +1,6 @@ #ifndef COMMAND_H #define COMMAND_H +#define COMMAND_LITE_H #define critter_is_armed(x) (((obj_item_subtype(critter_inven_obj(x,INVEN_TYPE_RIGHT_HAND))) == item_type_weapon) orElse \ ((obj_item_subtype(critter_inven_obj(x,INVEN_TYPE_LEFT_HAND))) == item_type_weapon)) diff --git a/artifacts/scripting/headers/define_extra.h b/artifacts/scripting/headers/define_extra.h index 7307a3be..7b8c9705 100644 --- a/artifacts/scripting/headers/define_extra.h +++ b/artifacts/scripting/headers/define_extra.h @@ -289,6 +289,7 @@ #define CALIBER_7_62MM (18) // hidden perks +#ifndef DEFINE_LITE_H #define PERK_add_nuka (53) #define PERK_add_buffout (54) #define PERK_add_mentats (55) @@ -309,6 +310,7 @@ #define PERK_add_jet (70) #define PERK_add_tragic (71) #define PERK_armor_charisma (72) +#endif #define WPN_ANIM_NONE (0x00) // (A) #define WPN_ANIM_KNIFE (0x01) // (D) diff --git a/artifacts/scripting/headers/define_lite.h b/artifacts/scripting/headers/define_lite.h index 5b991a9e..a0226d34 100644 --- a/artifacts/scripting/headers/define_lite.h +++ b/artifacts/scripting/headers/define_lite.h @@ -4,6 +4,7 @@ #ifndef DEFINE_H #define DEFINE_H +#define DEFINE_LITE_H // This file holds all of the things that should be preprocessed. diff --git a/sfall/FalloutStructs.h b/sfall/FalloutStructs.h index f2c6be94..b4229d9e 100644 --- a/sfall/FalloutStructs.h +++ b/sfall/FalloutStructs.h @@ -766,6 +766,36 @@ struct ScriptListInfoItem { long numLocalVars; }; +struct WinRegion { // sizeof = 0x88 (0x8C in the engine code) + char name[32]; + long field_20; + long field_24; + long field_28; + long field_2C; + long field_30; + long field_34; + long field_38; + long field_3C; + long field_40; + TProgram* procScript; + long proc_48; + long proc_4C; + long procEnter; + long procLeave; + long field_58; + long field_5C; + long field_60; + long field_64; + long flags_68; + long field_6C; + long field_70; + long field_74; + void* func_78; + void* func_7C; + long field_80; + long field_84; +}; + //for holding window info struct WINinfo { long wID; // window position in the _window_index array @@ -788,45 +818,45 @@ struct WINinfo { }; struct sWindow { - char name[32]; - long wID; // window position in the _window_index array - long width; - long height; - long region1; - long region2; - long region3; - long region4; - long *buttons; - long numButtons; - long setPositionX; - long setPositionY; - long clearColour; - long flags; + char name[32]; + long wID; // window position in the _window_index array + long width; + long height; + WinRegion* regions; + long region2; + long countRegions; + long region4; + long* buttons; + long numButtons; + long setPositionX; + long setPositionY; + long clearColour; + long flags; float randX; float randY; }; struct LSData { - char signature[24]; + char signature[24]; short majorVer; short minorVer; - char charR; - char playerName[32]; - char comment[30]; - char unused1; + char charR; + char playerName[32]; + char comment[30]; + char unused1; short realMonth; short realDay; short realYear; short unused2; - long realTime; + long realTime; short gameMonth; short gameDay; short gameYear; short unused3; - long gameTime; + long gameTime; short mapElev; short mapNumber; - char mapName[16]; + char mapName[16]; }; struct Queue { diff --git a/sfall/Interface.cpp b/sfall/Interface.cpp index 01d06074..d465a41b 100644 --- a/sfall/Interface.cpp +++ b/sfall/Interface.cpp @@ -38,6 +38,12 @@ enum WinNameType { WINTYPE_Skilldex = 6, WINTYPE_EscMenu = 7, // escape menu WINTYPE_Automap = 8, + + // Inventory types + WINTYPE_Inven = 50, // player inventory + WINTYPE_Loot = 51, + WINTYPE_Use = 53, + WINTYPE_Barter = 54 }; WINinfo* Interface_GetWindow(long winType) { @@ -71,7 +77,7 @@ WINinfo* Interface_GetWindow(long winType) { if (GetLoopFlags() & AUTOMAP) winID = Interface_ActiveInterfaceWID(); break; default: - return (WINinfo*)(-1); + return (WINinfo*)(-1); // unsupported type } return (winID > 0) ? fo_GNW_find(winID) : nullptr; }