sots-re/objects/layouts.h
alex d7ea0a048c lane D: automated struct recovery from the IStreamable serializers
Every serializable class carries an enumeration of its own fields -- its
Write(Stream&), walking the members in order with a 4-char tag. This decodes
that idiom mechanically for the whole binary in 0.35 s.

Validation first (tools/serializers.py validate), against answers the campaign
already had before the tool existed:
  A  305/307 field offsets+kinds exact across 17 classes, 0 WRONG, vs
     struct-recovery.md 1-4 and observedtech-append.md
  B  sizeof from the container-stride divides: ObservedTech 0x2c, MoraleEvent
     0x50, PlayerReport 0x30, DiplomacyStats 0x24 -- all matching
  C  22 of save_reader.py's shapes, tag order identical (Sys 78 tags,
     Player 104, CreateParams 25, Ship 22): 22 agree, 0 disagree
  D  Read/Write cross-check on every class: 437/437 field offsets agree

At scale: 386 classes with a Write, 1,682 member fields.
  verified 87 (542 fields) | clean 77 (328) | unnamed 176 (471)
  partial 31 (341) | empty 15
  58 classes with a sizeof corroborated by a second line of evidence
  (45 container stride, 13 enumeration meeting the embedding bound); the rest
  report a lower bound and say so.

Four things each worth 10-170 classes: the RTTI class hierarchy descriptor as
the only honest "is this an IStreamable" test (a 3-slot vftable also matches
TacAISquadRule_* and the row parsers); mod=0 memory operands, which x86disp.py
cannot index and which hide every field at offset 0; the member->id pointer
idiom behind every handle field; and sub-writers, both base-class and private
(StrategyServer's six id lists live in FUN_00794cd0).

Failure classes are enumerated in the finding -- 176 anonymous-tag classes are
a hard limit on names but not on layout, and the other 64 are bounded
mechanical fixes. Two fields lost to a value assembled across a branch were
left unrecovered rather than patched with an unverifiable heuristic.

Write-back: 288 structures + 328 labels into Ghidra (0 failures), +201
addresses.json entries, header regenerated with tools/gen_addresses.py.

Note: ghidra/addresses.json also carries lane V's already-written live
confirmation text on ObservedTech_sizeof and ServerPlayer_off_ObservedTechs --
their edit, swept in only because we share the file.
2026-09-08 05:51:37 -04:00

2224 lines
33 KiB
C

// GENERATED by tools/serializers.py -- do not hand-edit.
// Layouts recovered from the Mars::IStreamable serializers.
// `Mars_string` is 0x1c and `Mars_vector` 0x10 -- allocator-LAST
// in this build's STL, which is why a touch-scan undercounts
// both by exactly 4 (findings/objects/struct-recovery.md 0).
struct Mars_string { char _bx[16]; unsigned int size; unsigned int res; void* alval; };
struct Mars_vector { void* first; void* last; void* end; void* alval; };
struct Game_GunBankSelection {
char _pad0[4];
int f4;
};
struct Game_CombatCommandFleetSetStance {
char _pad0[8];
int f8;
int fc;
};
struct Game_CombatCommandFleetSetFacing {
char _pad0[8];
int f8;
int fc;
};
struct Game_CombatCommandFleetSetHoldFire {
char _pad0[8];
int f8;
bool fc;
};
struct Game_CombatCommandPickReserve {
char _pad0[8];
int f8;
int fc;
};
struct Game_CombatCommandSetAEAutoFire {
char _pad0[8];
int f8;
bool fc;
};
struct Game_CombatCommandSetPlanetAttackMode {
char _pad0[8];
int f8;
int fc;
};
struct Game_CombatCommandSetWantEndCombat {
char _pad0[8];
int f8;
bool fc;
};
struct Game_CombatCommandSetPlayerAI {
char _pad0[8];
int f8;
bool fc;
};
struct Game_CombatCommandMoveReserves {
char _pad0[8];
int f8;
int fc;
Mars_vector f10;
};
struct Game_CombatCommandShipAllStop {
char _pad0[8];
Mars_vector f8;
};
struct Game_CombatCommandShipClearTargets {
char _pad0[8];
Mars_vector f8;
};
struct Game_CombatCommandShipReleaseGrapple {
char _pad0[8];
Mars_vector f8;
};
struct Game_CombatCommandCloak {
char _pad0[8];
Mars_vector f8;
};
struct Game_CombatCommandDecloak {
char _pad0[8];
Mars_vector f8;
};
struct Game_CombatCommandIntangOn {
char _pad0[8];
Mars_vector f8;
};
struct Game_CombatCommandIntangOff {
char _pad0[8];
Mars_vector f8;
};
struct Game_CombatCommandShipManeuver {
char _pad0[8];
int f8;
Mars_vector fc;
};
struct Game_CombatCommandShipSetStance {
char _pad0[8];
Mars_vector f8;
int f18;
};
struct Game_CombatCommandShipSetFacing {
char _pad0[8];
Mars_vector f8;
int f18;
};
struct Game_CombatCommandShipToggleBank {
char _pad0[8];
Mars_vector f8;
Game_GunBankSelection f18;
char _pad1[8];
bool f28;
};
struct Game_CombatCommandShipFireOnce {
char _pad0[8];
Mars_vector f8;
Game_GunBankSelection f18;
};
struct Game_CombatCommandShipSetHoldFire {
char _pad0[8];
Mars_vector f8;
Game_GunBankSelection f18;
char _pad1[8];
bool f28;
};
struct Game_CombatCommandShipSetOnlyMyTarget {
char _pad0[8];
Mars_vector f8;
Game_GunBankSelection f18;
char _pad1[8];
bool f28;
};
struct Game_PlanetClientContext {
char _pad0[4];
float f4;
float f8;
float fc;
float f10;
int f14;
int f18;
};
struct Game_DefenceFleetAssignment {
char _pad0[4];
int fid;
int stnid;
float head2;
float ori;
int quota;
};
struct Game_WeaponGroups {
char _pad0[4];
Game_GunBankSelection wgb;
};
struct Game_PlayerMessage {
char _pad0[4];
int f4;
int f8;
Mars_string fc;
Mars_vector f28;
};
struct Mars_LaunchParams {
char _pad0[4];
Mars_string f4;
};
struct Game_TacReportEvents {
char _pad0[4];
int TREhd;
int TREhi;
float TREd;
float TREdp;
float TREdi;
float TREdt;
bool TREb;
char _pad1[3];
};
struct Game_TacReport {
char _pad0[4];
int TRid;
int TRal;
Game_TacReportEvents TRby;
Game_TacReportEvents TRto;
char _pad1[12];
int TRsats;
char _pad2[20];
int TRbal;
int TRlas;
int TRmis;
int TRmin;
int TRnrg;
int TRbio;
int TRbrd;
bool TRsld;
bool TRsldd;
bool TRsldc;
bool TRsldi;
bool TRsldr;
};
struct Game_CombatPlayerStats {
char _pad0[4];
Mars_vector TacReports;
float RPBon;
int RPBonT;
int SavBonus;
bool MaintHF;
char _pad1[3];
};
struct Game_PlagueStats {
char _pad0[4];
Mars_vector f4;
};
struct Game_HeraldEncounterResult {
char _pad0[8];
int f8;
float fc;
};
struct Game_EncounterResult {
char _pad0[8];
int f8;
};
struct Game_PlayerEncounterProgress {
char _pad0[4];
int f4;
bool f8;
char _pad1[3];
float fc;
};
struct Game_OrtgayEncounterResult {
char _pad0[8];
int f8;
};
struct Game_SVSORefugees_PlayerStatus {
char _pad0[4];
int lr;
int lrt;
int llc;
bool atr;
bool asy;
};
struct Game_RefugeesEncounterParams {
char _pad0[8];
bool f8;
};
struct Game_RefugeesEncounterResult {
char _pad0[8];
int f8;
int fc;
};
struct Game_SVSOTraps_Trap {
char _pad0[4];
int sys;
int pid;
int trenc;
int trgenc;
};
struct Game_DerelictEncounterResult {
char _pad0[8];
int f8;
};
struct Game_MeteorEncounterResult {
char _pad0[8];
int f8;
};
struct Game_MonitorEncounterResult {
char _pad0[8];
int f8;
};
struct Game_PirateEncounterResult {
char _pad0[8];
int f8;
};
struct Game_PuppetMasterEncounterResult {
char _pad0[8];
int f8;
};
struct Game_SlaversRefuelEncounterResult {
char _pad0[8];
int f8;
};
struct Game_SVSOSwarm_Infestation {
char _pad0[4];
void * sysid;
int stg;
int strn;
int mtrn;
int trgtrn;
bool canh;
};
struct Game_SwarmEncounterParams {
char _pad0[8];
int f8;
};
struct Game_SVSOSwarmQueen_HiveInfo {
char _pad0[4];
void * HiveID;
int NextQ;
void * QueenID;
};
struct Game_SVSOSwarmQueen_QueenInfo {
char _pad0[4];
void * QueenID;
void * QDstID;
};
struct Game_SwarmQueenEncounterResult {
char _pad0[8];
int f8;
};
struct Game_SystemKillerEncounterResult {
char _pad0[8];
int f8;
};
struct Game_SVSOVonNeumann_DefeatRecord {
char _pad0[4];
int sys;
int ndft;
int lstd;
int nxrv;
bool bkdf;
char _pad1[3];
};
struct Game_VNFinsolEncounterResult {
char _pad0[8];
int f8;
};
struct Game_VonNeumannEncounterParams {
char _pad0[8];
int f8;
};
struct Game_VonNeumannEncounterResult {
char _pad0[8];
int f8;
int fc;
};
struct Game_VNHomeEncounterParams {
char _pad0[8];
int f8;
int fc;
int f10;
int f14;
int f18;
char _pad1[4];
longlong f20;
};
struct Game_VNHomeEncounterResult {
char _pad0[8];
int f8;
char _pad1[4];
longlong f10;
};
struct Game_SimpleNodePath {
char _pad0[4];
short f4;
short f6;
};
struct Game_BerserkerEncounterResult {
char _pad0[8];
int f8;
};
struct Game_CrowDefendersEncounterResult {
char _pad0[8];
int f8;
};
struct Game_CrowRuinsEncounterResult {
char _pad0[8];
int f8;
};
struct Game_CombatCommandRequestAsylumResponse {
char _pad0[8];
int f8;
int fc;
int f10;
};
struct Game_PlagueHit {
char _pad0[4];
int f4;
int f8;
int fc;
};
struct Game_PopulationGroup {
char _pad0[4];
int PopT;
int PopS;
char _pad1[4];
longlong PopC;
};
struct Game_SVSOAntiquarians_Artifact {
char _pad0[4];
void * shipid;
void * salsid;
int salpid;
int pvis;
};
struct Game_StarMapParams {
char _pad0[4];
int f4;
Mars_vector f8;
Mars_vector f18;
Mars_vector f28;
};
struct Game_PrisonerHold {
char _pad0[20];
void * PrMax;
};
struct Game_CombatShipReport {
char _pad0[4];
Mars_string name;
int did;
int cls;
longlong caps2;
int nshp;
int nfld;
int nlst;
int dtak;
int dams;
int damp;
float dami;
float damt;
};
struct Game_CombatWeaponReport {
char _pad0[4];
Mars_string wep;
int dams;
int damp;
float dami;
float damt;
};
struct Game_AIEncounterFlags {
char _pad0[12];
int Nas;
};
struct Game_CombatPlayerReport {
char _pad0[4];
int plr;
bool ai;
char _pad1[3];
int ally;
char status;
int mxeng;
int mxcls;
int mxmsl;
char _pad2[6];
char nsat;
char _pad3[12];
char nsatl;
short ndam;
char _pad4[8];
Mars_vector srep;
};
struct Game_CombatDamageReport {
char _pad0[4];
void * did;
char _pad1[12];
Mars_string wep;
};
struct Game_StrategyTimerParams {
char _pad0[4];
float TSTL;
float TCTL;
float TQTL;
float TQTLE;
};
struct Game_StrategyPlayerGameSettings {
char _pad0[4];
int f4;
int f8;
int fc;
int f10;
};
struct Game_StrategySessionParams {
char _pad0[4];
Game_StrategyTimerParams TMRS;
};
struct Game_StrategyGameInfo {
char _pad0[32];
Mars_string GameName;
int Turn;
int NumSys;
int Checksum;
int MapShape;
Mars_vector Players;
Game_StrategySessionParams Session;
float IncMod;
float ResMod;
bool Alliances;
bool Teams;
bool Encounters;
char _pad1[1];
Mars_string Scenario;
};
struct Game_AllianceInvite_Response {
char _pad0[4];
int f4;
int f8;
bool fc;
char _pad1[3];
};
struct Game_AllianceInvite {
char _pad0[4];
int f4;
bool f8;
bool f9;
bool fa;
bool fb;
int fc;
int f10;
int f14;
int f18;
Mars_vector f1c;
int f2c;
int f30;
int f34;
Mars_vector f38;
int f48;
};
struct Game_ShipBuildOrderDef {
char _pad0[4];
int desID;
int con;
int sav;
int conleft;
int ordID;
};
struct Game_ShipBuildOrder {
char _pad0[4];
int desID;
int con;
int sav;
int conleft;
int ordID;
};
struct Game_EventStorage_TurnEvents {
char _pad0[4];
int EvTurn;
Mars_vector Events;
};
struct Game_AIAutoPeaceRun {
char _pad0[4];
int sid;
int tn0;
int tn1;
};
struct Game_StrategyAIAgent_Streamable {
char _pad0[4];
void * prs2;
};
struct Game_AIRelationRecord {
char _pad0[4];
int f4;
int f8;
int fc;
float f10;
float f14;
};
struct Game_AIRebellionImpl {
char _pad0[4];
int St;
char _pad1[4];
void * Plr;
void * Reb;
Mars_vector NSys;
};
struct Game_StrategyAIAgent_DesignNameGen {
char _pad0[4];
void * dnid;
};
struct Game_NodePath {
char _pad0[4];
int npt;
int npid;
int npfr;
int npto;
int npctm;
int npcby;
int npdtn;
int npdtf;
int nptf;
int npenp;
int npuse;
};
struct Game_NodeRoute {
char _pad0[4];
int nrp;
int nrf;
int nrt;
};
struct Game_ServerNodeGraph {
char _pad0[8];
Mars_vector paths;
char _pad1[48];
int nextid;
};
struct Game_ServerNodeGraph_Params {
char _pad0[4];
int RSeed;
Mars_vector PSeed;
Mars_vector SSeed;
};
struct Game_EncounterResults_PrisonerShip {
char _pad0[4];
int f4;
Game_PrisonerHold f8;
};
struct Game_EncounterResults_BoardedShip {
char _pad0[4];
int f4;
int f8;
};
struct Game_EncounterResults_RetreatingShip {
char _pad0[4];
int f4;
int f8;
int fc;
int f10;
};
struct Game_EncounterResults_SpyShip {
char _pad0[4];
int f4;
int f8;
bool fc;
bool fd;
char _pad1[2];
float f10;
};
struct Game_FlightPlan_Waypoint {
char _pad0[4];
int Wpt;
int Tp;
Game_NodeRoute nrt;
};
struct Game_Morale {
char _pad0[4];
int mv;
};
struct Game_MoraleEvent {
char _pad0[4];
int mid;
int mtr;
int mn;
int mtp;
Game_Morale mfx;
char _pad1[24];
Mars_string mdsc;
};
struct Game_DiplomacyStats {
char _pad0[4];
int other;
short lastnap;
short lastnapbty;
short bknnap;
short btynap;
short lastally;
short lastallybty;
short bknally;
short btyally;
short lastcf;
short lastcfbty;
short bkncf;
short btycf;
short deadhome;
char _pad1[2];
};
struct Game_PlayerReport {
char _pad0[4];
int oid;
int pid;
int flds;
int sav;
int home;
int ncol;
int mpwr;
int mcls;
int mmsl;
int nshp;
int nsat;
};
struct Game_SpecialProject {
char _pad0[4];
int SPid;
int Sts;
float Cst;
int MxC;
Mars_string Nm;
int Trns;
};
struct Game_PlayerNotes {
char _pad0[4];
int NtSys;
Mars_string NtTxt;
int NtTrn;
};
struct Game_RaidTargets {
char _pad0[4];
int rds;
int rdv;
Mars_vector dsc;
int rdt;
};
struct Game_DefenceLayout {
char _pad0[4];
int sysid;
Mars_vector ndsa;
void * fa;
};
struct Game_ObservedDesign {
char _pad0[4];
short otnF;
short otnL;
int odid;
int opid;
};
struct Game_SNMRefreshSlots_SlotData {
char _pad0[4];
int f4;
int f8;
bool fc;
char _pad1[3];
};
struct Game_TechOffer {
char _pad0[4];
int giv;
int rcp;
char _pad1[4];
};
struct Game_StrategyGameLoadParams {
char _pad0[4];
Mars_string f4;
};
struct Game_ObservedWeapon {
char _pad0[4];
short otnF;
short otnL;
bool odet;
char _pad1[3];
Mars_string owep;
int owith;
};
struct Game_ObservedTech {
char _pad0[4];
short otnF;
short otnL;
bool odet;
char _pad1[3];
Mars_string otch;
int owith;
};
struct Game_SystemEvent {
char _pad0[4];
int ses;
int set;
int seop;
int senp;
Mars_vector seno2;
};
struct Game_ClientEncounterResults {
char _pad0[4];
int f4;
bool f8;
char _pad1[3];
Game_CombatPlayerStats fc;
};
struct Game_StrategyScriptParams {
char _pad0[8];
int spc;
};
struct Game_StrategyGameCreateParams {
char _pad0[4];
Mars_string Name;
int ID;
int RSeed;
Mars_string Key;
Game_StarMapParams MapP;
int MapS;
Mars_string MapF;
int NSys;
float REnc;
float SDist;
float SSize;
float SRes;
float SSuit;
int MaxP;
int ASpec;
bool bAlly;
char _pad1[3];
int NTeam;
bool tmgrp;
char _pad2[7];
int PSav;
int PCol;
int PTech;
int AID;
float IncM;
float ResM;
Game_StrategyScriptParams scrp;
};
struct Game_StrategyGameParams {
char _pad0[4];
int f4;
char _pad1[252];
Game_StrategyGameCreateParams f104;
};
struct Game_StrategyServer {
char _pad0[8];
int ModCount;
int Frame;
int GOTurn;
int GameID;
Mars_vector GOWinPly;
Mars_string GameName;
Mars_vector NumSys;
Mars_vector NumPlrs;
Mars_vector NumFlts;
Mars_vector NumActs;
char _pad1[24];
int NMLc;
char _pad2[28];
int Map;
float IncMod;
float ResMod;
bool EnAl;
bool EnTm;
char _pad3[106];
Mars_string KeyPath;
char _pad4[4];
void * NdGr2;
void * trdmgr;
void * spymgr;
void * sprjs;
void * Attrib;
char _pad5[4];
void * RNG;
char _pad6[48];
float RandEncAdj;
char _pad7[16];
void * SvSctOb;
int NPCm;
int NPCo;
int NPCi;
int NPCv;
int NPCa;
float szadj;
float rsadj;
float suadj;
char _pad8[32];
int cmbtid;
void * numcreps;
void * turnstats;
char _pad9[196];
Mars_vector ninv;
char _pad10[68];
int zdsc;
};
struct Game_PlayerAid {
char _pad0[4];
int aidto;
int aidrai;
int aidrt;
int aidsa;
int aidst;
};
struct Game_StrategyTurnInfo {
char _pad0[4];
int f4;
char _pad1[12];
float f14;
int f18;
int f1c;
int f20;
char _pad2[12];
int f30;
};
struct Game_TradeRoute {
char _pad0[4];
int tro;
int trfow;
int trfr;
int trfrs;
int trtow;
int trto;
int trtos;
int trtc;
};
struct Game_ServerTradeSector_FreighterWarning {
char _pad0[4];
int pid;
int ntrns;
};
struct Game_ShipDesignDef_LegacyGunBank {
char _pad0[4];
int f4;
};
struct Game_CommMessageContainer {
char _pad0[4];
Mars_vector nmsg;
};
struct Game_SpyCraft {
char _pad0[4];
int sid;
int sown;
int atto;
int deat;
int tdep;
float cbh;
int spyon;
int spyat;
int cm;
float cmo;
Mars_vector ncp;
float sdo;
int sdet;
};
struct Game_ServerSpyManager {
char _pad0[12];
int xsid;
Mars_vector nspy;
};
struct Game_SpyReportTradeRoute {
char _pad0[4];
int stn;
int sctr;
int spl;
Mars_vector sdgc;
};
struct Game_SpyReportEvents {
char _pad0[4];
int spl;
Mars_vector ste;
};
struct Game_DefenceSummary {
char _pad0[4];
int pid;
int sid;
Mars_vector stac;
Mars_vector satc;
Game_DefenceLayout dlay;
};
struct Game_EventStorage {
char _pad0[4];
Mars_vector Events;
int EvNxID;
};
struct Game_EncounterQuery {
char _pad0[4];
Mars_vector f4;
};
struct Game_SpyReportDefences {
char _pad0[4];
int stn;
Game_DefenceSummary sdef;
};
struct Game_SpyReportTrade {
char _pad0[4];
int stn;
int spl;
int sctr;
Mars_vector srt;
};
struct Game_ShipRecords {
char _pad0[16];
int srl;
char _pad1[32];
void * srd;
};
struct Game_PlayerTurnStats {
char _pad0[4];
short trn;
char _pad1[2];
int almem;
int inc;
int tdinc;
int sav;
short col;
short bat;
char _pad2[4];
longlong pop;
short tch;
char _pad3[38];
Mars_vector sacq;
Mars_vector slost;
};
struct Game_SpyReportTechTree {
char _pad0[4];
int stn;
int spl;
};
struct Game_ServerTradeManagerImpl {
char _pad0[8];
float SctSize;
char _pad1[16];
Mars_vector NumTradeSectors;
};
struct Game_SpecialProjectNameGen {
char _pad0[4];
void * Nm;
};
struct Game_FleetNameGenerator {
char _pad0[4];
int FNGNum;
};
struct Game_SpyReport {
char _pad0[8];
int defc2;
char _pad1[8];
int rtc;
char _pad2[8];
int evc;
char _pad3[8];
int ttc;
};
struct Game_PlayerTurnHistory {
char _pad0[4];
int ply;
};
struct Game_GameTurnHistory {
char _pad0[12];
int nply;
};
struct Mars_SyncChecksumBuffer {
char _pad0[4];
int f4;
int f8;
Mars_vector fc;
};
struct Mars_SyncParams {
char _pad0[4];
bool f4;
bool f5;
char _pad1[2];
Mars_string f8;
int f24;
int f28;
int f2c;
};
struct Game_CNMPlayerLeft {
char _pad0[4];
int f4;
};
struct Game_CNMClientNotResponding {
char _pad0[4];
int f4;
bool f8;
};
struct Game_CNMUpdateComplete {
char _pad0[4];
int f4;
};
struct Game_CNMUserShips {
char _pad0[4];
Mars_vector f4;
int f14;
};
struct Game_CNMPlayerJoined {
char _pad0[4];
int f4;
Mars_string f8;
};
struct Game_SVSOGrandMenaceTrigger {
char _pad0[4];
int gmch;
};
struct Game_SVSODerelict {
char _pad0[4];
void * Eflt;
char _pad1[16];
Mars_vector NDsn;
};
struct Game_SVSOSlaversRefuel {
char _pad0[4];
Mars_vector NAsg;
char _pad1[4];
Mars_vector NTD;
Mars_vector NAD;
int CDiff;
};
struct Game_SVSOSwarm {
char _pad0[4];
Mars_vector NAsg;
char _pad1[12];
void * infest;
};
struct Game_SVSOSwarmQueen {
char _pad0[16];
Mars_vector Hives;
Mars_vector Queens;
Mars_vector SysMem;
};
struct Game_SVSOCrowRuins {
char _pad0[4];
Mars_vector NAsg;
char _pad1[4];
Mars_vector NWD;
};
struct Game_SVSORefugees {
char _pad0[12];
int rsuc;
char _pad1[4];
bool ini;
char _pad2[3];
Mars_vector didc;
};
struct Game_SVSOMonitor {
char _pad0[4];
void * Eflt;
char _pad1[16];
Mars_vector NDsn;
Mars_string scnm;
};
struct Game_SVSOCrowDefenders {
char _pad0[4];
void * sys;
Mars_vector ndsys;
Mars_vector ndes;
char _pad1[16];
float drad;
};
struct Game_SVSOVonNeumann {
char _pad0[4];
Mars_vector dfts;
char _pad1[16];
int rusav;
int nenc;
int nmb;
int nml;
int nbb;
int nbl;
int nskb;
int nskl;
void * vnhw;
longlong vnhp;
int mbid;
int mbgid;
int skgid;
int ntm;
Mars_vector mts;
int ntb;
bool sken;
char _pad2[3];
int skdid;
int skhid;
int skfid;
int sktq;
int skt;
int sktc;
};
struct Game_SVSOTraps {
char _pad0[20];
Mars_vector traps;
};
struct Game_CommonPlague {
char _pad0[8];
void * PlgSys;
int PlgCByF;
void * PlgCBy;
char _pad1[36];
int PlgCM;
int PlgTurns;
int PlgInf;
};
struct Game_ZuulInfestation {
char _pad0[8];
void * PlgSys;
int PlgCByF;
void * PlgCBy;
char _pad1[4];
longlong PlgNZ;
float PlgZdr;
};
struct Game_JewelsProject {
char _pad0[8];
Game_SpecialProject SPi;
int Stp;
char _pad1[4];
int einv;
int eapp;
};
struct Game_SVSOUpstartApes_EO_FEARS_YOUR_POWER {
char _pad0[12];
int OBJECTIVEID;
int TURNCREATED;
int LASTTURN;
};
struct Game_SVSOUpstartApes_EO_REQUIRES_CASH {
char _pad0[12];
int OBJECTIVEID;
int TURNCREATED;
int LASTTURN;
};
struct Game_SVSOUpstartApes_EO_ENERGY_WEAPONS_DECADENT {
char _pad0[12];
int OBJECTIVEID;
int TURNCREATED;
int LASTTURN;
};
struct Game_SVSOUpstartApes_EO_MUST_EXPAND {
char _pad0[12];
int OBJECTIVEID;
int TURNCREATED;
char _pad1[4];
int LASTTURN;
};
struct Game_SVSOUpstartApes_EO_DEMANDS_VICTORY {
char _pad0[12];
int OBJECTIVEID;
int TURNCREATED;
int LASTTURN;
};
struct Game_SVSOUpstartApes_EO_GIFTS {
char _pad0[12];
int OBJECTIVEID;
int TURNCREATED;
};
struct Game_SVSOUpstartApes_EO_DEMANDS_TRADE_GOODS {
char _pad0[12];
int OBJECTIVEID;
int TURNCREATED;
int LASTTURN;
};
struct Game_SVSOLandGrab {
char _pad0[8];
int nwt;
char _pad1[124];
float winr;
};
struct Game_SVSOAntiquarians {
char _pad0[8];
Mars_vector narts;
int wpid;
int wpturn;
};
struct Game_SVSOMasterVoice {
char _pad0[8];
Mars_vector hom;
Mars_vector hmd;
};
struct Game_SVSOJewelsOfTheCrown {
char _pad0[8];
int JEWELLOCATIONID;
int JEWELSHIPID;
int JEWELLOCATIONID_1;
Mars_vector prjdone;
char _pad1[8];
int PREVJEWELSHIPID;
};
struct Game_SVSOUpstartApes_EO_DEMANDS_SHIPS {
char _pad0[12];
int OBJECTIVEID;
int TURNCREATED;
Mars_vector REQUESTS;
int LASTTURN;
int SUCCESSSTANDING;
int FAILURESTANDING;
};
struct Game_SVSOProgressionWars {
char _pad0[8];
int stg;
int sft;
int snt;
int snec;
int ses;
int snet;
int snep;
int srsi;
int srs;
char _pad1[20];
Mars_vector lts;
};
struct Game_SVSOUpstartApes {
char _pad0[12];
int EMPIREFLAGS;
int EMPIRESTANDING;
char _pad1[28];
int NEXTORDERTURN;
char _pad2[16];
int EARTHID;
};
struct Game_SVSOSots {
char _pad0[4];
int ScnID;
void * ScnObj;
Mars_vector NEncObjs;
char _pad1[24];
int numx;
};
struct Game_SNMSetTimers {
char _pad0[4];
Game_StrategyTimerParams f4;
};
struct Game_SNMLeaveAlliance {
char _pad0[4];
int f4;
};
struct Game_SNMSetAIPolicy {
char _pad0[4];
int f4;
int f8;
};
struct Game_SNMRemoveCommMessage {
char _pad0[4];
int f4;
int f8;
};
struct Game_SNMDemandEmpireSurrender {
char _pad0[4];
int f4;
int f8;
};
struct Game_SNMDemandEmpireSurrenderResponse {
char _pad0[4];
int f4;
int f8;
bool fc;
};
struct Game_SNMTechOffer {
char _pad0[4];
int f4;
int f8;
int fc;
Mars_string f10;
bool f2c;
};
struct Game_SNMUpdateComplete {
char _pad0[4];
Mars_string f4;
};
struct Game_SNMTurnInfo {
char _pad0[4];
Game_StrategyTurnInfo f4;
};
struct Game_SNMDoEncounterQuery {
char _pad0[4];
int f4;
};
struct Game_SNMChat {
char _pad0[4];
int f4;
int f8;
int fc;
Mars_string f10;
int f2c;
};
struct Game_SNMTransferProgress {
char _pad0[4];
Mars_vector f4;
};
struct Game_SNMUpdate {
char _pad0[4];
Mars_vector f4;
Mars_vector f14;
Mars_vector f24;
Mars_vector f34;
Mars_vector f44;
};
struct Game_SNMAllCombatDone {
char _pad0[4];
Mars_vector f4;
};
struct Game_SNMSlotSetForcedSpecies {
char _pad0[4];
int f4;
};
struct Game_SNMSlotSetState {
char _pad0[4];
int f4;
int f8;
int fc;
};
struct Game_SNMSlotRemoveClient {
char _pad0[4];
int f4;
};
struct Game_SNMSlotMoveClient {
char _pad0[4];
int f4;
int f8;
int fc;
};
struct Game_SNMSlotReqPW {
char _pad0[4];
float f4;
int f8;
};
struct Game_SNMSlotPWRejected {
char _pad0[4];
int f4;
};
struct Game_SNMJoinReply {
char _pad0[4];
int f4;
};
struct Game_SNMCombatTimeRemaining {
char _pad0[4];
int f4;
float f8;
};
struct Game_SNMSetPlayerStatus {
char _pad0[4];
int f4;
int f8;
};
struct Game_SNMMakePlayerAI {
char _pad0[4];
int f4;
bool f8;
};
struct Game_SNMCommMessage {
char _pad0[4];
void * f4;
};
struct Game_SNMKillAI {
char _pad0[4];
int f4;
};
struct Game_SNMAllianceInvite {
char _pad0[4];
int f4;
int f8;
int fc;
};
struct Game_SNMAllianceReply {
char _pad0[4];
int f4;
int f8;
int fc;
bool f10;
};
struct Game_SNMAllianceNotify {
char _pad0[4];
int f4;
int f8;
int fc;
};
struct Game_SNMLeaveNonAggression {
char _pad0[4];
int f4;
int f8;
};
struct Game_SNMLeaveCeaseFire {
char _pad0[4];
int f4;
int f8;
};
struct Game_SNMCancelAllianceInvite {
char _pad0[4];
int f4;
int f8;
};
struct Game_SNMGenericGameMessage {
char _pad0[4];
int f4;
int f8;
};
struct Game_SNMPlaySpeechEvent {
char _pad0[4];
int f4;
int f8;
int fc;
};
struct Game_SpecialProjectImpl {
char _pad0[8];
Game_SpecialProject SPi;
int Stp;
};
struct Game_SNMProgressionWarsConvoyShips {
char _pad0[4];
int f4;
};
struct Game_SNMEncounterQueryResults {
char _pad0[4];
int f4;
Game_EncounterQuery f8;
};
struct Game_SNMPendingAlliances {
char _pad0[4];
Mars_vector f4;
};
struct Game_SNMSlotInsertClient {
char _pad0[4];
int f4;
int f8;
Mars_string fc;
};
struct Game_SNMSlotSetPW {
char _pad0[4];
int f4;
Mars_string f8;
bool f24;
bool f25;
};
struct Game_SNMSlotPWAttempt {
char _pad0[4];
Mars_string f4;
};
struct Game_SNMRefreshSlots {
char _pad0[4];
Mars_vector f4;
};
struct Game_MonitorProject {
char _pad0[8];
Game_SpecialProject SPi;
int Stp;
int Sys;
int RMn;
int RMx;
int RDn;
float RMd;
};
struct Game_TechProject {
char _pad0[8];
Game_SpecialProject SPi;
int Stp;
float AOdd;
float AInc;
char _pad1[4];
int RCst;
int RDn;
};
struct Game_BackEngProject {
char _pad0[8];
Game_SpecialProject SPi;
int Stp;
float AOdd;
float AInc;
char _pad1[4];
int RCst;
int RDn;
};
struct Game_TechOfferProject {
char _pad0[8];
Game_SpecialProject SPi;
int Stp;
float AOdd;
float AInc;
char _pad1[4];
int RCst;
int RDn;
int giv;
int rcp;
bool rcpd2;
};
struct Game_SNMJoin {
char _pad0[4];
int f4;
Mars_string f8;
bool f24;
};
struct Game_SNMHostCombat {
char _pad0[4];
int f4;
int f8;
Mars_string fc;
int f28;
float f2c;
bool f30;
bool f31;
};
struct Game_SNMJoinCombatReply {
char _pad0[4];
bool f4;
char _pad1[3];
Mars_string f8;
};
struct Game_SNMEncounterProgress {
char _pad0[4];
Mars_vector f4;
};
struct Game_SNMAIRelationValues {
char _pad0[4];
Mars_vector f4;
};
struct Game_SNMAllianceInviteChat {
char _pad0[4];
int f4;
int f8;
Mars_string fc;
int f28;
};
struct Game_SNMLobbyChat {
char _pad0[4];
int f4;
Mars_string f8;
Mars_string f24;
};
struct Game_SNMRunAI {
char _pad0[4];
int f4;
Mars_string f8;
bool f24;
};
struct Game_SNMUserNames {
char _pad0[4];
Mars_vector f4;
int f14;
};
struct Game_SNMSetSlotPassword {
char _pad0[4];
int f4;
Mars_string f8;
};
struct Game_SNMGenericEvent {
char _pad0[4];
int f4;
Mars_string f8;
};
struct Game_SNMAllianceInviteProgress {
char _pad0[4];
int f4;
Game_AllianceInvite f8;
};
struct Game_SNMSlotInit {
char _pad0[4];
bool f4;
bool f5;
bool f6;
char _pad1[1];
int f8;
Mars_vector fc;
int f1c;
bool f20;
char _pad2[3];
int f24;
int f28;
Game_StrategyPlayerGameSettings f2c;
};
struct Game_SNMLaunchCombat {
char _pad0[4];
int f4;
Mars_vector f8;
Game_EncounterQuery f18;
};
struct Mars_NMCommand {
char _pad0[4];
void * f4;
};
struct Mars_NMSyncCheck {
char _pad0[4];
void * f4;
};
struct Mars_NMSyncError {
char _pad0[4];
int f4;
};
struct Mars_FNMBase {
char _pad0[4];
Mars_string f4;
int f20;
};
struct Mars_FNMSendNotify {
char _pad0[4];
Mars_string f4;
int f20;
int f24;
};
struct Mars_FNMDone {
char _pad0[4];
Mars_string f4;
int f20;
int f24;
int f28;
};
struct Mars_FNMError {
char _pad0[4];
Mars_string f4;
int f20;
Mars_string f24;
};
struct Mars_FNMSendReply {
char _pad0[4];
Mars_string f4;
int f20;
};
struct Mars_FNMChunkReply {
char _pad0[4];
Mars_string f4;
int f20;
};
struct Mars_FNMDoneReply {
char _pad0[4];
Mars_string f4;
int f20;
};
struct Quaternion {
float f0;
float f4;
float f8;
float fc;
};
struct Vector3 {
float f0;
float f4;
float f8;
};
struct Vector2 {
float f0;
float f4;
};
struct Game_PlanetStats {
float f0;
float f4;
int f8;
char _pad0[4];
longlong f10;
longlong f18;
float f20;
};
struct Game_NodePointParams {
float f0;
int f4;
Mars_string f8;
float f24;
int f28;
Mars_vector f2c;
};
struct Game_CombatTechFlags {
int f0;
int f4;
};
struct Game_XenoTechsPerSpecies {
int f0;
};
struct Game_LocustFleetLogistics {
bool hav;
bool don;
char _pad0[2];
int dsy;
Vector3 dst;
};
struct Game_SVSOUpstartApes_EO_DEMANDS_SHIPS_ShipRequest {
char _pad0[28];
int NUMREQUIRED;
};
struct Game_ShipWeapon {
Mars_string wfn;
int wid;
int did;
};
struct Game_ShipParams_Section {
Mars_string f0;
char _pad0[28];
Mars_vector f38;
Game_CombatTechFlags f48;
};
struct Game_FieldTemplate_Point {
int FTPShID;
int FTPDesID;
int FTPPosX;
int FTPPosY;
int FTPSqd;
};
struct Game_AttribMap {
char _pad0[8];
int f8;
};
struct Game_AICombatReport {
int CRTrn;
bool CRPce;
char _pad0[3];
int CRSys;
Game_CombatPlayerStats CRPlSv2;
};
struct Game_ShipSectionID {
int f0;
int f4;
};
struct Game_StarSystem_OutputRates {
float SRt;
float SRsc;
float SRtf;
float SRi;
float SRoh;
float SRs;
int SRnr;
};
struct Game_ShipDesignDef_Section {
char _pad0[8];
Mars_vector DGbnk2;
Mars_vector DOpts;
};
struct Address {
Mars_string f0;
int f1c;
Mars_string f20;
Mars_string f3c;
};
struct Game_PlayerAlliances {
int ALid;
int AL;
int NA;
int CF;
};
struct Game_ShipDesignDef_LegacyWeaponDef {
char _pad0[28];
int DWi;
};
struct Game_Objective {
int ID;
bool Cmp;
char _pad0[59];
int NID;
};
struct Game_CombatCommandShipSetWaypoint {
char _pad0[8];
Mars_vector f8;
Quaternion f18;
Mars_vector f28;
bool f38;
};
struct Game_CombatCommandShipAttack {
char _pad0[8];
Mars_vector f8;
int f18;
Vector3 f1c;
float f28;
int f2c;
};
struct Game_CombatReport {
char _pad0[4];
int cid;
int trn;
Vector3 pos;
int sid;
bool auto_;
char _pad1[3];
float dur;
int cow;
bool cdst;
char _pad2[3];
int cpk;
int cpt;
float cdt;
float cdi;
Mars_vector prep;
Mars_vector wrep;
};
struct Game_FlightPlan {
char _pad0[4];
Mars_vector wpts;
float FPsp2;
int FPeta2;
Vector3 FPogn2;
Vector3 FPdpos;
int pnd;
};
struct Game_SystemParams {
char _pad0[4];
Vector3 f4;
Mars_string f10;
int f2c;
int f30;
float f34;
};
struct Game_StarMapNode {
char _pad0[24];
Vector3 Pos;
};
struct Game_StarSystem {
char _pad0[24];
Vector3 Pos;
};
struct Game_ClientSystem {
char _pad0[24];
Vector3 Pos;
};
struct Game_EventStorage_Event {
char _pad0[4];
int EvEID;
Mars_string EvDsc;
Mars_string EvMsg;
int EvLoc;
Vector3 EvPos;
Mars_string EvImg;
int EvAct;
int EvCID;
};
struct Game_TradeSector {
char _pad0[24];
Vector3 Pos;
};
struct Game_ClientTradeSector {
char _pad0[24];
Vector3 Pos;
};
struct Game_ServerTradeSector {
char _pad0[24];
Vector3 Pos;
char _pad1[68];
int tsgridID;
Vector3 tsctr;
Mars_vector tsnumsys;
int tssec;
int tsct;
int tscr;
int ptssec;
int ptsct;
int ptscr;
Mars_vector tsnumflt;
void * fwarn;
};
struct Game_SVSOOrtgay {
char _pad0[4];
bool init;
char _pad1[3];
int design;
int state;
Vector3 origin;
Vector3 center;
int turnLv;
int turnAn;
int spawnturn;
int spawnodds;
};
struct Game_SVSOPuppetMaster {
char _pad0[8];
void * Flt;
bool Init2;
char _pad1[3];
Mars_vector NSys;
Vector3 End;
};
struct Game_SVSOSystemKiller {
char _pad0[8];
void * Flt;
bool Init2;
char _pad1[3];
Mars_vector NSys;
Vector3 End;
};
struct Game_SNMUpdateAlliances {
char _pad0[4];
int f4;
Game_PlayerAlliances f8;
};
struct Game_SNMHostCombatReply {
char _pad0[4];
bool f4;
char _pad1[3];
Address f8;
Mars_string f60;
};
struct Game_SNMJoinCombat {
char _pad0[4];
Address f4;
Mars_string f5c;
Mars_string f78;
int f94;
int f98;
};