sots-re/objects/layouts.md
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

4342 lines
181 KiB
Markdown

# Recovered class layouts (`tools/serializers.py all`)
Generated -- do not hand-edit. Offsets are absolute (object base). `sizeof` is quoted only where a second, independent line of evidence agrees with the field enumeration; otherwise a lower bound is given.
## `Address`
Write `0x008f63c0`, Read `0x008f6360`, IStreamable vftable `0x00a2dcbc` (COL offset +0x0). sizeof 0x58 (enumeration meets embedding). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x0 | 0x1c | string | `.` | |
| 0x1c | 0x4 | int | `.` | |
| 0x20 | 0x1c | string | `.` | |
| 0x3c | 0x1c | string | `.` | |
## `Game::AIAutoPeaceRun`
Write `0x00692cf0`, Read `0x00692c90`, IStreamable vftable `0x00a199b4` (COL offset +0x0). sizeof 0x10 (container stride). **verified** -- fields exact; Read agrees on all 2 comparable offsets; sizeof corroborated
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `sid` | |
| 0x8 | 0x4 | int | `tn0` | |
| 0xc | 0x4 | int | `tn1` | |
## `Game::AICombatReport`
Write `0x006986e0`, Read `0x0069c6d0`, IStreamable vftable `0x00a1a6f0` (COL offset +0x0). sizeof >= 0x30 (lower bound). **verified** -- fields exact; Read agrees on all 2 comparable offsets
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x0 | 0x4 | int | `CRTrn` | |
| 0x4 | 0x1 | bool | `CRPce` | |
| 0x8 | 0x4 | enum | `CRSys` | enum:uint |
| 0xc | 0x24 | object | `CRPlSv2` | Game::CombatPlayerStats |
## `Game::AIEncounterFlags`
Write `0x0059dfe0`, Read `0x005a26b0`, IStreamable vftable `0x00a0622c` (COL offset +0x0). sizeof >= 0x10 (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0xc | 0x4 | int | `Nas` | |
Container-element fields (offsets are within the element / map node, not the object): `Fid`@+0xc, `Ast`@+0x10
## `Game::AIRebellionImpl`
Write `0x00693b30`, Read `0x006a2320`, IStreamable vftable `0x00a1a9e4` (COL offset +0x0). sizeof >= 0x24 (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `St` | |
| 0xc | 0x4 | handle | `Plr` | |
| 0x10 | 0x4 | handle | `Reb` | |
| 0x14 | 0x10 | vector | `NSys` | |
## `Game::AIRelationRecord`
Write `0x00816b40`, Read `0x00816ab0`, IStreamable vftable `0x00a1a650` (COL offset +0x0). sizeof 0x18 (container stride). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
| 0x8 | 0x4 | int | `.` | |
| 0xc | 0x4 | int | `.` | |
| 0x10 | 0x4 | float | `.` | |
| 0x14 | 0x4 | float | `.` | |
## `Game::AISituation`
Write `0x0069a220`, Read `0x0069a160`, IStreamable vftable `0x00a1a670` (COL offset +0x0). sizeof >= 0x20 (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x10 | 0x10 | object | `AISitWeapFams` | Game::Mars::Game::W4WeaponFamilyID::U?$StreamableEnum::?$AIWeightMap |
## `Game::AISystem`
Write `0x006bda30`, Read `0x006bd960`, IStreamable vftable `0x00a1adf4` (COL offset +0x0). sizeof >= 0x0 (lower bound). **partial** -- only container elements / computed values recovered
## `Game::AllianceInvite`
Write `0x006d5bf0`, Read `0x006d59d0`, IStreamable vftable `0x00a0a354` (COL offset +0x0). sizeof >= 0x4c (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
| 0x8 | 0x1 | bool | `.` | |
| 0x9 | 0x1 | bool | `.` | |
| 0xa | 0x1 | bool | `.` | |
| 0xb | 0x1 | bool | `.` | |
| 0xc | 0x4 | int | `.` | |
| 0x10 | 0x4 | int | `.` | |
| 0x14 | 0x4 | int | `.` | |
| 0x18 | 0x4 | int | `.` | |
| 0x1c | 0x10 | vector | `.` | Game::AllianceInvite::Response |
| 0x2c | 0x4 | int | `.` | |
| 0x30 | 0x4 | int | `.` | |
| 0x34 | 0x4 | int | `.` | |
| 0x38 | 0x10 | vector | `.` | Game::AllianceInvite::Response |
| 0x48 | 0x4 | int | `.` | |
## `Game::AllianceInvite::Response`
Write `0x006d2c60`, Read `0x006d2bf0`, IStreamable vftable `0x00a09e94` (COL offset +0x0). sizeof 0x10 (container stride). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
| 0x8 | 0x4 | int | `.` | |
| 0xc | 0x1 | bool | `.` | |
## `Game::AttribMap`
Write `0x0059ee60`, Read `0x005a8a60`, IStreamable vftable `0x00a1a6a0` (COL offset +0x0). sizeof >= 0xc (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x4 | int | `.` | |
## `Game::BackEngProject`
Write `0x00853390`, Read `0x00853280`, IStreamable vftable `0x00a3185c` (COL offset +0x0). sizeof >= 0x54 (lower bound). **verified** -- fields exact; Read agrees on all 4 comparable offsets
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x34 | object | `SPi` | Game::SpecialProject |
| 0x3c | 0x4 | int | `Stp` | |
| 0x40 | 0x4 | float | `AOdd` | |
| 0x44 | 0x4 | float | `AInc` | |
| 0x4c | 0x4 | int | `RCst` | |
| 0x50 | 0x4 | int | `RDn` | |
## `Game::BerserkerEncounterResult`
Write `0x004f9fe0`, Read `0x004fdd20`, IStreamable vftable `0x009f1f10` (COL offset +0x0). sizeof >= 0xc (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x4 | int | `.` | |
## `Game::BuildQueue`
Write `0x0085f0a0`, Read `0x008451c0`, IStreamable vftable `0x00a31328` (COL offset +0x0). sizeof >= 0x0 (lower bound). **partial** -- only container elements / computed values recovered
## `Game::CNMClientNotResponding`
Write `0x00451690`, Read `0x00451660`, IStreamable vftable `0x009e3e70` (COL offset +0x0). sizeof >= 0x9 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
| 0x8 | 0x1 | bool | `.` | |
## `Game::CNMPlayerJoined`
Write `0x00451630`, Read `0x00451600`, IStreamable vftable `0x009e4148` (COL offset +0x0). sizeof >= 0x24 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
| 0x8 | 0x1c | string | `.` | |
## `Game::CNMPlayerLeft`
Write `0x008d1ab0`, Read `0x008d1a90`, IStreamable vftable `0x009e3e5c` (COL offset +0x0). sizeof >= 0x8 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
## `Game::CNMUpdate`
Write `0x004520c0`, Read `0x00452050`, IStreamable vftable `0x009e3ef4` (COL offset +0x0). sizeof >= 0x14 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x10 | object | `.` | Game::UpdateData |
## `Game::CNMUpdateComplete`
Write `0x008d1ab0`, Read `0x008d1a90`, IStreamable vftable `0x009e4014` (COL offset +0x0). sizeof >= 0x8 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
## `Game::CNMUserShips`
Write `0x004521d0`, Read `0x00452120`, IStreamable vftable `0x009e4124` (COL offset +0x0). sizeof >= 0x18 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x10 | vector | `.` | Game::ShipParams |
| 0x14 | 0x4 | int | `.` | |
## `Game::CivilianRatios`
Write `0x0082c740`, Read `0x0082c6b0`, IStreamable vftable `0x00a23e7c` (COL offset +0x0). sizeof >= 0x8 (lower bound). **partial** -- 1 nested field(s) of unknown size
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | float | `smx` | |
| 0x8 | ? | object | `spe` | Game::SpeciesRatios |
## `Game::ClientEncounterResults`
Write `0x00826750`, Read `0x008266a0`, IStreamable vftable `0x00a24f80` (COL offset +0x0). sizeof >= 0x30 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
| 0x8 | 0x1 | bool | `.` | |
| 0xc | 0x24 | object | `.` | Game::CombatPlayerStats |
## `Game::ClientSystem`
Write `0x00727820`, Read `0x00727790`, IStreamable vftable `0x00a20144` (COL offset +0x8). sizeof >= 0x24 (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x18 | 0xc | object | `Pos` | Vector3 |
## `Game::ClientTradeSector`
Write `0x00727820`, Read `0x00727790`, IStreamable vftable `0x00a31b04` (COL offset +0x8). sizeof >= 0x24 (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x18 | 0xc | object | `Pos` | Vector3 |
## `Game::CombatCommandCloak`
Write `0x0042f5a0`, Read `0x0042f530`, IStreamable vftable `0x009e26dc` (COL offset +0x4). sizeof >= 0x18 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x10 | vector | `.` | enum:uint |
## `Game::CombatCommandDecloak`
Write `0x0042f5a0`, Read `0x0042f530`, IStreamable vftable `0x009e2700` (COL offset +0x4). sizeof >= 0x18 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x10 | vector | `.` | enum:uint |
## `Game::CombatCommandFleetSetFacing`
Write `0x0042c7f0`, Read `0x0042dd90`, IStreamable vftable `0x009e2550` (COL offset +0x4). sizeof >= 0x10 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x4 | int | `.` | |
| 0xc | 0x4 | int | `.` | |
## `Game::CombatCommandFleetSetHoldFire`
Write `0x00451690`, Read `0x00451660`, IStreamable vftable `0x009e2574` (COL offset +0x4). sizeof >= 0xd (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x4 | int | `.` | |
| 0xc | 0x1 | bool | `.` | |
## `Game::CombatCommandFleetSetStance`
Write `0x0042c7f0`, Read `0x0042dd90`, IStreamable vftable `0x009e252c` (COL offset +0x4). sizeof >= 0x10 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x4 | int | `.` | |
| 0xc | 0x4 | int | `.` | |
## `Game::CombatCommandIntangOff`
Write `0x0042f5a0`, Read `0x0042f530`, IStreamable vftable `0x009e2748` (COL offset +0x4). sizeof >= 0x18 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x10 | vector | `.` | enum:uint |
## `Game::CombatCommandIntangOn`
Write `0x0042f5a0`, Read `0x0042f530`, IStreamable vftable `0x009e2724` (COL offset +0x4). sizeof >= 0x18 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x10 | vector | `.` | enum:uint |
## `Game::CombatCommandMoveReserves`
Write `0x0042f720`, Read `0x00907e60`, IStreamable vftable `0x009e264c` (COL offset +0x4). sizeof >= 0x20 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x4 | int | `.` | |
| 0xc | 0x4 | int | `.` | |
| 0x10 | 0x10 | vector | `.` | int |
## `Game::CombatCommandPickReserve`
Write `0x0042dd60`, Read `0x0042dd30`, IStreamable vftable `0x009e2598` (COL offset +0x4). sizeof >= 0x10 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x4 | int | `.` | |
| 0xc | 0x4 | int | `.` | |
## `Game::CombatCommandRequestAsylumResponse`
Write `0x004fb530`, Read `0x004fb4c0`, IStreamable vftable `0x009f3958` (COL offset +0x4). sizeof >= 0x14 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x4 | int | `.` | |
| 0xc | 0x4 | int | `.` | |
| 0x10 | 0x4 | int | `.` | |
## `Game::CombatCommandSetAEAutoFire`
Write `0x00451690`, Read `0x00451660`, IStreamable vftable `0x009e25bc` (COL offset +0x4). sizeof >= 0xd (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x4 | int | `.` | |
| 0xc | 0x1 | bool | `.` | |
## `Game::CombatCommandSetPlanetAttackMode`
Write `0x0042c7f0`, Read `0x0042dd90`, IStreamable vftable `0x009e25e0` (COL offset +0x4). sizeof >= 0x10 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x4 | int | `.` | |
| 0xc | 0x4 | int | `.` | |
## `Game::CombatCommandSetPlayerAI`
Write `0x00451690`, Read `0x00451660`, IStreamable vftable `0x009e2628` (COL offset +0x4). sizeof >= 0xd (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x4 | int | `.` | |
| 0xc | 0x1 | bool | `.` | |
## `Game::CombatCommandSetWantEndCombat`
Write `0x00451690`, Read `0x00451660`, IStreamable vftable `0x009e2604` (COL offset +0x4). sizeof >= 0xd (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x4 | int | `.` | |
| 0xc | 0x1 | bool | `.` | |
## `Game::CombatCommandShipAllStop`
Write `0x0042f5a0`, Read `0x0042f530`, IStreamable vftable `0x009e2670` (COL offset +0x4). sizeof >= 0x18 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x10 | vector | `.` | enum:uint |
## `Game::CombatCommandShipAttack`
Write `0x0042f0b0`, Read `0x0042efa0`, IStreamable vftable `0x009e288c` (COL offset +0x4). sizeof >= 0x30 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x10 | vector | `.` | Game::CombatCommandShipAttack::ShipData |
| 0x18 | 0x4 | int | `.` | |
| 0x1c | 0xc | object | `.` | Vector3 |
| 0x28 | 0x4 | float | `.` | |
| 0x2c | 0x4 | int | `.` | |
## `Game::CombatCommandShipClearTargets`
Write `0x0042f5a0`, Read `0x0042f530`, IStreamable vftable `0x009e2694` (COL offset +0x4). sizeof >= 0x18 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x10 | vector | `.` | enum:uint |
## `Game::CombatCommandShipFireOnce`
Write `0x0042f310`, Read `0x0042f250`, IStreamable vftable `0x009e2820` (COL offset +0x4). sizeof >= 0x20 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x10 | vector | `.` | enum:uint |
| 0x18 | 0x8 | object | `.` | Game::GunBankSelection |
## `Game::CombatCommandShipManeuver`
Write `0x0042f6a0`, Read `0x0042f600`, IStreamable vftable `0x009e276c` (COL offset +0x4). sizeof >= 0x1c (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x4 | int | `.` | |
| 0xc | 0x10 | vector | `.` | enum:uint |
## `Game::CombatCommandShipReleaseGrapple`
Write `0x0042f5a0`, Read `0x0042f530`, IStreamable vftable `0x009e26b8` (COL offset +0x4). sizeof >= 0x18 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x10 | vector | `.` | enum:uint |
## `Game::CombatCommandShipSetFacing`
Write `0x0042ec90`, Read `0x0042ebe0`, IStreamable vftable `0x009e27b4` (COL offset +0x4). sizeof >= 0x1c (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x10 | vector | `.` | enum:uint |
| 0x18 | 0x4 | int | `.` | |
## `Game::CombatCommandShipSetHoldFire`
Write `0x0042f190`, Read `0x0042f440`, IStreamable vftable `0x009e2844` (COL offset +0x4). sizeof >= 0x29 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x10 | vector | `.` | enum:uint |
| 0x18 | 0x8 | object | `.` | Game::GunBankSelection |
| 0x28 | 0x1 | bool | `.` | |
## `Game::CombatCommandShipSetOnlyMyTarget`
Write `0x0042f190`, Read `0x0042f440`, IStreamable vftable `0x009e2868` (COL offset +0x4). sizeof >= 0x29 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x10 | vector | `.` | enum:uint |
| 0x18 | 0x8 | object | `.` | Game::GunBankSelection |
| 0x28 | 0x1 | bool | `.` | |
## `Game::CombatCommandShipSetStance`
Write `0x0042ec90`, Read `0x0042ebe0`, IStreamable vftable `0x009e2790` (COL offset +0x4). sizeof >= 0x1c (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x10 | vector | `.` | enum:uint |
| 0x18 | 0x4 | int | `.` | |
## `Game::CombatCommandShipSetWaypoint`
Write `0x0042ee30`, Read `0x0042ed20`, IStreamable vftable `0x009e27d8` (COL offset +0x4). sizeof >= 0x39 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x10 | vector | `.` | Game::CombatCommandShipSetWaypoint::ShipData |
| 0x18 | 0x10 | object | `.` | Quaternion |
| 0x28 | 0x10 | vector | `.` | Vector2 |
| 0x38 | 0x1 | bool | `.` | |
## `Game::CombatCommandShipToggleBank`
Write `0x0042f190`, Read `0x0042f440`, IStreamable vftable `0x009e27fc` (COL offset +0x4). sizeof >= 0x29 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x10 | vector | `.` | enum:uint |
| 0x18 | 0x8 | object | `.` | Game::GunBankSelection |
| 0x28 | 0x1 | bool | `.` | |
## `Game::CombatDamageReport`
Write `0x0059bbf0`, Read `0x005a6bc0`, IStreamable vftable `0x00a062d4` (COL offset +0x0). sizeof >= 0x30 (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | handle | `did` | |
| 0x14 | 0x1c | string | `wep` | |
## `Game::CombatLaunchParams`
Write `0x00451dc0`, Read `0x00451a80`, IStreamable vftable `0x009e41b0` (COL offset +0x0). sizeof >= 0x194 (lower bound). **partial** -- 1 nested field(s) of unknown size
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x1c | string | `.` | |
| 0x20 | 0x1c | string | `.` | |
| 0x3c | 0x4 | int | `.` | |
| 0x40 | 0x4 | int | `.` | |
| 0x44 | 0x4 | int | `.` | |
| 0x48 | 0x10 | vector | `.` | Game::ShipParams |
| 0x58 | 0x1 | bool | `.` | |
| 0x5c | 0x10 | vector | `.` | Game::CombatPlayerInvariant |
| 0x84 | 0x1c | string | `.` | |
| 0xa0 | 0x4 | float | `.` | |
| 0xa4 | 0x10 | vector | `.` | Game::NodePointParams |
| 0xb4 | 0x10 | vector | `.` | Game::PlayerMessage |
| 0xc4 | 0x4 | int | `.` | |
| 0xc8 | 0x1 | bool | `.` | |
| 0xc9 | 0x1 | bool | `.` | |
| 0xcc | 0x4 | int | `.` | |
| 0xd0 | 0x1c | string | `.` | |
| 0xec | 0x1c | string | `.` | |
| 0x108 | 0x24 | object | `.` | Game::PlanetStats |
| 0x148 | 0x4 | int | `.` | |
| 0x14c | 0x1 | bool | `.` | |
| 0x150 | ? | object | `.` | Game::CombatEncounterParams |
| 0x178 | 0x1c | object | `.` | Game::DefenceLayout |
Container-element fields (offsets are within the element / map node, not the object): `.`@+0x0, `.`@+0x0
## `Game::CombatPlayerReport`
Write `0x0059d6d0`, Read `0x0059d360`, IStreamable vftable `0x00a0623c` (COL offset +0x0). sizeof 0x54 (container stride). **verified** -- fields exact; Read agrees on all 1 comparable offsets; sizeof corroborated
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `plr` | |
| 0x8 | 0x1 | bool | `ai` | |
| 0xc | 0x4 | int | `ally` | |
| 0x10 | 0x4 | int8 | `status` | |
| 0x14 | 0x4 | int | `mxeng` | |
| 0x18 | 0x4 | int | `mxcls` | |
| 0x1c | 0x4 | int | `mxmsl` | |
| 0x26 | 0x4 | int8 | `nsat` | |
| 0x36 | 0x4 | int8 | `nsatl` | |
| 0x3a | 0x2 | int16 | `ndam` | |
| 0x44 | 0x10 | vector | `srep` | Game::CombatShipReport |
Container-element fields (offsets are within the element / map node, not the object): `nshp`@+0x-a, `nshfld`@+0x0, `nshlst`@+0x6, `nshp`@+0x0
## `Game::CombatPlayerStats`
Write `0x00459140`, Read `0x00459070`, IStreamable vftable `0x009e4b74` (COL offset +0x0). sizeof 0x24 (container stride). **verified** -- fields exact; Read agrees on all 4 comparable offsets; sizeof corroborated
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x10 | vector | `TacReports` | Game::TacReport |
| 0x14 | 0x4 | float | `RPBon` | |
| 0x18 | 0x4 | int | `RPBonT` | |
| 0x1c | 0x4 | int | `SavBonus` | |
| 0x20 | 0x1 | bool | `MaintHF` | |
## `Game::CombatReport`
Write `0x0059db30`, Read `0x0059d8f0`, IStreamable vftable `0x00a0624c` (COL offset +0x0). sizeof >= 0x5c (lower bound). **verified** -- fields exact; Read agrees on all 6 comparable offsets
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `cid` | |
| 0x8 | 0x4 | int | `trn` | |
| 0xc | 0xc | object | `pos` | Vector3 |
| 0x18 | 0x4 | int | `sid` | |
| 0x1c | 0x1 | bool | `auto` | |
| 0x20 | 0x4 | float | `dur` | |
| 0x24 | 0x4 | int | `cow` | |
| 0x28 | 0x1 | bool | `cdst` | |
| 0x2c | 0x4 | int | `cpk` | |
| 0x30 | 0x4 | int | `cpt` | |
| 0x34 | 0x4 | float | `cdt` | |
| 0x38 | 0x4 | float | `cdi` | |
| 0x3c | 0x10 | vector | `prep` | Game::CombatPlayerReport |
| 0x4c | 0x10 | vector | `wrep` | Game::CombatWeaponReport |
## `Game::CombatShipReport`
Write `0x0059b960`, Read `0x0059c650`, IStreamable vftable `0x00a06064` (COL offset +0x0). sizeof 0x50 (container stride). **verified** -- fields exact; Read agrees on all 7 comparable offsets; sizeof corroborated
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x1c | string | `name` | |
| 0x20 | 0x4 | int | `did` | |
| 0x24 | 0x4 | int | `cls` | |
| 0x28 | 0x8 | int64 | `caps2` | |
| 0x30 | 0x4 | int | `nshp` | |
| 0x34 | 0x4 | int | `nfld` | |
| 0x38 | 0x4 | int | `nlst` | |
| 0x3c | 0x4 | int | `dtak` | |
| 0x40 | 0x4 | int | `dams` | |
| 0x44 | 0x4 | int | `damp` | |
| 0x48 | 0x4 | float | `dami` | |
| 0x4c | 0x4 | float | `damt` | |
## `Game::CombatTechFlags`
Write `0x004d9e10`, Read `0x004d9dc0`, IStreamable vftable `0x009e4620` (COL offset +0x0). sizeof >= 0x8 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x0 | 0x4 | int | `.` | |
| 0x4 | 0x4 | int | `.` | |
## `Game::CombatWeaponReport`
Write `0x0059bb70`, Read `0x0059bad0`, IStreamable vftable `0x00a06074` (COL offset +0x0). sizeof 0x30 (container stride). **verified** -- fields exact; Read agrees on all 3 comparable offsets; sizeof corroborated
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x1c | string | `wep` | |
| 0x20 | 0x4 | int | `dams` | |
| 0x24 | 0x4 | int | `damp` | |
| 0x28 | 0x4 | float | `dami` | |
| 0x2c | 0x4 | float | `damt` | |
## `Game::CommDeclareCurse`
Write `0x00810ca0`, Read `0x00810c40`, IStreamable vftable `0x00a2e190` (COL offset +0x0). sizeof >= 0x1c (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x5 | 0x4 | int8 | `rcpt` | |
| 0x6 | 0x2 | int16 | `rcp` | |
| 0x8 | 0x4 | int | `cid2` | |
| 0xc | 0x2 | int16 | `sent` | |
| 0xe | 0x2 | int16 | `exp` | |
| 0x10 | 0x4 | int8 | `snd` | |
| 0x14 | 0x4 | int | `sys` | |
| 0x18 | 0x4 | int | `plr` | |
## `Game::CommDeclareIDontWant`
Write `0x00810ca0`, Read `0x00810c40`, IStreamable vftable `0x00a2e280` (COL offset +0x0). sizeof >= 0x1c (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x5 | 0x4 | int8 | `rcpt` | |
| 0x6 | 0x2 | int16 | `rcp` | |
| 0x8 | 0x4 | int | `cid2` | |
| 0xc | 0x2 | int16 | `sent` | |
| 0xe | 0x2 | int16 | `exp` | |
| 0x10 | 0x4 | int8 | `snd` | |
| 0x14 | 0x4 | int | `sys` | |
| 0x18 | 0x4 | int | `plr` | |
## `Game::CommDeclareIHate`
Write `0x00810ca0`, Read `0x00810c40`, IStreamable vftable `0x00a2e334` (COL offset +0x0). sizeof >= 0x1c (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x5 | 0x4 | int8 | `rcpt` | |
| 0x6 | 0x2 | int16 | `rcp` | |
| 0x8 | 0x4 | int | `cid2` | |
| 0xc | 0x2 | int16 | `sent` | |
| 0xe | 0x2 | int16 | `exp` | |
| 0x10 | 0x4 | int8 | `snd` | |
| 0x14 | 0x4 | int | `sys` | |
| 0x18 | 0x4 | int | `plr` | |
## `Game::CommDeclareILike`
Write `0x00810ca0`, Read `0x00810c40`, IStreamable vftable `0x00a2e370` (COL offset +0x0). sizeof >= 0x1c (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x5 | 0x4 | int8 | `rcpt` | |
| 0x6 | 0x2 | int16 | `rcp` | |
| 0x8 | 0x4 | int | `cid2` | |
| 0xc | 0x2 | int16 | `sent` | |
| 0xe | 0x2 | int16 | `exp` | |
| 0x10 | 0x4 | int8 | `snd` | |
| 0x14 | 0x4 | int | `sys` | |
| 0x18 | 0x4 | int | `plr` | |
## `Game::CommDeclareISaw`
Write `0x00810ca0`, Read `0x00810c40`, IStreamable vftable `0x00a2e2bc` (COL offset +0x0). sizeof >= 0x1c (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x5 | 0x4 | int8 | `rcpt` | |
| 0x6 | 0x2 | int16 | `rcp` | |
| 0x8 | 0x4 | int | `cid2` | |
| 0xc | 0x2 | int16 | `sent` | |
| 0xe | 0x2 | int16 | `exp` | |
| 0x10 | 0x4 | int8 | `snd` | |
| 0x14 | 0x4 | int | `sys` | |
| 0x18 | 0x4 | int | `plr` | |
## `Game::CommDeclareISeveredAllianceWith`
Write `0x00810ca0`, Read `0x00810c40`, IStreamable vftable `0x00a2e2f8` (COL offset +0x0). sizeof >= 0x1c (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x5 | 0x4 | int8 | `rcpt` | |
| 0x6 | 0x2 | int16 | `rcp` | |
| 0x8 | 0x4 | int | `cid2` | |
| 0xc | 0x2 | int16 | `sent` | |
| 0xe | 0x2 | int16 | `exp` | |
| 0x10 | 0x4 | int8 | `snd` | |
| 0x14 | 0x4 | int | `sys` | |
| 0x18 | 0x4 | int | `plr` | |
## `Game::CommDeclareIWant`
Write `0x00810ca0`, Read `0x00810c40`, IStreamable vftable `0x00a2e244` (COL offset +0x0). sizeof >= 0x1c (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x5 | 0x4 | int8 | `rcpt` | |
| 0x6 | 0x2 | int16 | `rcp` | |
| 0x8 | 0x4 | int | `cid2` | |
| 0xc | 0x2 | int16 | `sent` | |
| 0xe | 0x2 | int16 | `exp` | |
| 0x10 | 0x4 | int8 | `snd` | |
| 0x14 | 0x4 | int | `sys` | |
| 0x18 | 0x4 | int | `plr` | |
## `Game::CommDeclareShareAllColonyStats`
Write `0x00810990`, Read `0x00810850`, IStreamable vftable `0x00a2e76c` (COL offset +0x0). sizeof >= 0x14 (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x5 | 0x4 | int8 | `rcpt` | |
| 0x6 | 0x2 | int16 | `rcp` | |
| 0x8 | 0x4 | int | `cid2` | |
| 0xc | 0x2 | int16 | `sent` | |
| 0xe | 0x2 | int16 | `exp` | |
| 0x10 | 0x4 | int8 | `snd` | |
## `Game::CommDeclareShareStats`
Write `0x00810ca0`, Read `0x00810c40`, IStreamable vftable `0x00a2f830` (COL offset +0x0). sizeof >= 0x1c (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x5 | 0x4 | int8 | `rcpt` | |
| 0x6 | 0x2 | int16 | `rcp` | |
| 0x8 | 0x4 | int | `cid2` | |
| 0xc | 0x2 | int16 | `sent` | |
| 0xe | 0x2 | int16 | `exp` | |
| 0x10 | 0x4 | int8 | `snd` | |
| 0x14 | 0x4 | int | `sys` | |
| 0x18 | 0x4 | int | `plr` | |
## `Game::CommDeclareShareSystemNotes`
Write `0x00810da0`, Read `0x00810d50`, IStreamable vftable `0x00a3157c` (COL offset +0x0). sizeof >= 0x34 (lower bound). **verified** -- fields exact; Read agrees on all 1 comparable offsets
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x5 | 0x4 | int8 | `rcpt` | |
| 0x6 | 0x2 | int16 | `rcp` | |
| 0x8 | 0x4 | int | `cid2` | |
| 0xc | 0x2 | int16 | `sent` | |
| 0xe | 0x2 | int16 | `exp` | |
| 0x10 | 0x4 | int8 | `snd` | |
| 0x14 | 0x4 | int | `sys` | |
| 0x18 | 0x1c | string | `notes` | |
## `Game::CommDeclareShareSystemStats`
Write `0x00810d00`, Read `0x008321a0`, IStreamable vftable `0x00a2e730` (COL offset +0x0). sizeof >= 0x18 (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x5 | 0x4 | int8 | `rcpt` | |
| 0x6 | 0x2 | int16 | `rcp` | |
| 0x8 | 0x4 | int | `cid2` | |
| 0xc | 0x2 | int16 | `sent` | |
| 0xe | 0x2 | int16 | `exp` | |
| 0x10 | 0x4 | int8 | `snd` | |
| 0x14 | 0x4 | int | `sys` | |
## `Game::CommDeclareSorry`
Write `0x00810ca0`, Read `0x00810c40`, IStreamable vftable `0x00a2e208` (COL offset +0x0). sizeof >= 0x1c (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x5 | 0x4 | int8 | `rcpt` | |
| 0x6 | 0x2 | int16 | `rcp` | |
| 0x8 | 0x4 | int | `cid2` | |
| 0xc | 0x2 | int16 | `sent` | |
| 0xe | 0x2 | int16 | `exp` | |
| 0x10 | 0x4 | int8 | `snd` | |
| 0x14 | 0x4 | int | `sys` | |
| 0x18 | 0x4 | int | `plr` | |
## `Game::CommDeclareThanks`
Write `0x00810ca0`, Read `0x00810c40`, IStreamable vftable `0x00a2e1cc` (COL offset +0x0). sizeof >= 0x1c (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x5 | 0x4 | int8 | `rcpt` | |
| 0x6 | 0x2 | int16 | `rcp` | |
| 0x8 | 0x4 | int | `cid2` | |
| 0xc | 0x2 | int16 | `sent` | |
| 0xe | 0x2 | int16 | `exp` | |
| 0x10 | 0x4 | int8 | `snd` | |
| 0x14 | 0x4 | int | `sys` | |
| 0x18 | 0x4 | int | `plr` | |
## `Game::CommMessageContainer`
Write `0x00825590`, Read `0x0084cc60`, IStreamable vftable `0x00a30630` (COL offset +0x0). sizeof >= 0x14 (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x10 | vector | `nmsg` | |
Container-element fields (offsets are within the element / map node, not the object): `msgt`@+0x4, `msg`@+0x0
## `Game::CommRequestAttackSystem`
Write `0x00810ca0`, Read `0x00810c40`, IStreamable vftable `0x00a2e58c` (COL offset +0x0). sizeof >= 0x1c (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x5 | 0x4 | int8 | `rcpt` | |
| 0x6 | 0x2 | int16 | `rcp` | |
| 0x8 | 0x4 | int | `cid2` | |
| 0xc | 0x2 | int16 | `sent` | |
| 0xe | 0x2 | int16 | `exp` | |
| 0x10 | 0x4 | int8 | `snd` | |
| 0x14 | 0x4 | int | `sys` | |
| 0x18 | 0x4 | int | `plr` | |
## `Game::CommRequestDefendSystem`
Write `0x00810ca0`, Read `0x00810c40`, IStreamable vftable `0x00a2e5c8` (COL offset +0x0). sizeof >= 0x1c (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x5 | 0x4 | int8 | `rcpt` | |
| 0x6 | 0x2 | int16 | `rcp` | |
| 0x8 | 0x4 | int | `cid2` | |
| 0xc | 0x2 | int16 | `sent` | |
| 0xe | 0x2 | int16 | `exp` | |
| 0x10 | 0x4 | int8 | `snd` | |
| 0x14 | 0x4 | int | `sys` | |
| 0x18 | 0x4 | int | `plr` | |
## `Game::CommRequestDisposition`
Write `0x00810ca0`, Read `0x00810c40`, IStreamable vftable `0x00a2e424` (COL offset +0x0). sizeof >= 0x1c (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x5 | 0x4 | int8 | `rcpt` | |
| 0x6 | 0x2 | int16 | `rcp` | |
| 0x8 | 0x4 | int | `cid2` | |
| 0xc | 0x2 | int16 | `sent` | |
| 0xe | 0x2 | int16 | `exp` | |
| 0x10 | 0x4 | int8 | `snd` | |
| 0x14 | 0x4 | int | `sys` | |
| 0x18 | 0x4 | int | `plr` | |
## `Game::CommRequestHarassPlayer`
Write `0x00810ca0`, Read `0x00810c40`, IStreamable vftable `0x00a2e6b8` (COL offset +0x0). sizeof >= 0x1c (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x5 | 0x4 | int8 | `rcpt` | |
| 0x6 | 0x2 | int16 | `rcp` | |
| 0x8 | 0x4 | int | `cid2` | |
| 0xc | 0x2 | int16 | `sent` | |
| 0xe | 0x2 | int16 | `exp` | |
| 0x10 | 0x4 | int8 | `snd` | |
| 0x14 | 0x4 | int | `sys` | |
| 0x18 | 0x4 | int | `plr` | |
## `Game::CommRequestHarassSystem`
Write `0x00810ca0`, Read `0x00810c40`, IStreamable vftable `0x00a2e604` (COL offset +0x0). sizeof >= 0x1c (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x5 | 0x4 | int8 | `rcpt` | |
| 0x6 | 0x2 | int16 | `rcp` | |
| 0x8 | 0x4 | int | `cid2` | |
| 0xc | 0x2 | int16 | `sent` | |
| 0xe | 0x2 | int16 | `exp` | |
| 0x10 | 0x4 | int8 | `snd` | |
| 0x14 | 0x4 | int | `sys` | |
| 0x18 | 0x4 | int | `plr` | |
## `Game::CommRequestMoney`
Write `0x00810ca0`, Read `0x00810c40`, IStreamable vftable `0x00a2e3ac` (COL offset +0x0). sizeof >= 0x1c (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x5 | 0x4 | int8 | `rcpt` | |
| 0x6 | 0x2 | int16 | `rcp` | |
| 0x8 | 0x4 | int | `cid2` | |
| 0xc | 0x2 | int16 | `sent` | |
| 0xe | 0x2 | int16 | `exp` | |
| 0x10 | 0x4 | int8 | `snd` | |
| 0x14 | 0x4 | int | `sys` | |
| 0x18 | 0x4 | int | `plr` | |
## `Game::CommRequestRallyAtSystem`
Write `0x00810ca0`, Read `0x00810c40`, IStreamable vftable `0x00a2e550` (COL offset +0x0). sizeof >= 0x1c (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x5 | 0x4 | int8 | `rcpt` | |
| 0x6 | 0x2 | int16 | `rcp` | |
| 0x8 | 0x4 | int | `cid2` | |
| 0xc | 0x2 | int16 | `sent` | |
| 0xe | 0x2 | int16 | `exp` | |
| 0x10 | 0x4 | int8 | `snd` | |
| 0x14 | 0x4 | int | `sys` | |
| 0x18 | 0x4 | int | `plr` | |
## `Game::CommRequestResearch`
Write `0x00810ca0`, Read `0x00810c40`, IStreamable vftable `0x00a2e3e8` (COL offset +0x0). sizeof >= 0x1c (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x5 | 0x4 | int8 | `rcpt` | |
| 0x6 | 0x2 | int16 | `rcp` | |
| 0x8 | 0x4 | int | `cid2` | |
| 0xc | 0x2 | int16 | `sent` | |
| 0xe | 0x2 | int16 | `exp` | |
| 0x10 | 0x4 | int8 | `snd` | |
| 0x14 | 0x4 | int | `sys` | |
| 0x18 | 0x4 | int | `plr` | |
## `Game::CommRequestSeverAllianceWith`
Write `0x00810ca0`, Read `0x00810c40`, IStreamable vftable `0x00a2e67c` (COL offset +0x0). sizeof >= 0x1c (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x5 | 0x4 | int8 | `rcpt` | |
| 0x6 | 0x2 | int16 | `rcp` | |
| 0x8 | 0x4 | int | `cid2` | |
| 0xc | 0x2 | int16 | `sent` | |
| 0xe | 0x2 | int16 | `exp` | |
| 0x10 | 0x4 | int8 | `snd` | |
| 0x14 | 0x4 | int | `sys` | |
| 0x18 | 0x4 | int | `plr` | |
## `Game::CommRequestShareSystemStats`
Write `0x00810ca0`, Read `0x00810c40`, IStreamable vftable `0x00a2e514` (COL offset +0x0). sizeof >= 0x1c (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x5 | 0x4 | int8 | `rcpt` | |
| 0x6 | 0x2 | int16 | `rcp` | |
| 0x8 | 0x4 | int | `cid2` | |
| 0xc | 0x2 | int16 | `sent` | |
| 0xe | 0x2 | int16 | `exp` | |
| 0x10 | 0x4 | int8 | `snd` | |
| 0x14 | 0x4 | int | `sys` | |
| 0x18 | 0x4 | int | `plr` | |
## `Game::CommRequestStopColonizing`
Write `0x00810ca0`, Read `0x00810c40`, IStreamable vftable `0x00a2e4d8` (COL offset +0x0). sizeof >= 0x1c (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x5 | 0x4 | int8 | `rcpt` | |
| 0x6 | 0x2 | int16 | `rcp` | |
| 0x8 | 0x4 | int | `cid2` | |
| 0xc | 0x2 | int16 | `sent` | |
| 0xe | 0x2 | int16 | `exp` | |
| 0x10 | 0x4 | int8 | `snd` | |
| 0x14 | 0x4 | int | `sys` | |
| 0x18 | 0x4 | int | `plr` | |
## `Game::CommRequestStopHarassingMe`
Write `0x00810ca0`, Read `0x00810c40`, IStreamable vftable `0x00a2e460` (COL offset +0x0). sizeof >= 0x1c (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x5 | 0x4 | int8 | `rcpt` | |
| 0x6 | 0x2 | int16 | `rcp` | |
| 0x8 | 0x4 | int | `cid2` | |
| 0xc | 0x2 | int16 | `sent` | |
| 0xe | 0x2 | int16 | `exp` | |
| 0x10 | 0x4 | int8 | `snd` | |
| 0x14 | 0x4 | int | `sys` | |
| 0x18 | 0x4 | int | `plr` | |
## `Game::CommRequestStopHarassingPlayer`
Write `0x00810ca0`, Read `0x00810c40`, IStreamable vftable `0x00a2e6f4` (COL offset +0x0). sizeof >= 0x1c (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x5 | 0x4 | int8 | `rcpt` | |
| 0x6 | 0x2 | int16 | `rcp` | |
| 0x8 | 0x4 | int | `cid2` | |
| 0xc | 0x2 | int16 | `sent` | |
| 0xe | 0x2 | int16 | `exp` | |
| 0x10 | 0x4 | int8 | `snd` | |
| 0x14 | 0x4 | int | `sys` | |
| 0x18 | 0x4 | int | `plr` | |
## `Game::CommRequestStopHarrassingSystem`
Write `0x00810ca0`, Read `0x00810c40`, IStreamable vftable `0x00a2e640` (COL offset +0x0). sizeof >= 0x1c (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x5 | 0x4 | int8 | `rcpt` | |
| 0x6 | 0x2 | int16 | `rcp` | |
| 0x8 | 0x4 | int | `cid2` | |
| 0xc | 0x2 | int16 | `sent` | |
| 0xe | 0x2 | int16 | `exp` | |
| 0x10 | 0x4 | int8 | `snd` | |
| 0x14 | 0x4 | int | `sys` | |
| 0x18 | 0x4 | int | `plr` | |
## `Game::CommRequestStopMining`
Write `0x00810ca0`, Read `0x00810c40`, IStreamable vftable `0x00a2e49c` (COL offset +0x0). sizeof >= 0x1c (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x5 | 0x4 | int8 | `rcpt` | |
| 0x6 | 0x2 | int16 | `rcp` | |
| 0x8 | 0x4 | int | `cid2` | |
| 0xc | 0x2 | int16 | `sent` | |
| 0xe | 0x2 | int16 | `exp` | |
| 0x10 | 0x4 | int8 | `snd` | |
| 0x14 | 0x4 | int | `sys` | |
| 0x18 | 0x4 | int | `plr` | |
## `Game::CommonPlague`
Write `0x005360e0`, Read `0x005373e0`, IStreamable vftable `0x009f8b50` (COL offset +0x0). sizeof >= 0x44 (lower bound). **verified** -- fields exact; Read agrees on all 3 comparable offsets
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x4 | handle | `PlgSys` | |
| 0xc | 0x4 | int | `PlgCByF` | |
| 0x10 | 0x4 | handle | `PlgCBy` | |
| 0x38 | 0x4 | int | `PlgCM` | |
| 0x3c | 0x4 | int | `PlgTurns` | |
| 0x40 | 0x4 | int | `PlgInf` | |
## `Game::CrowDefendersEncounterResult`
Write `0x004f9fe0`, Read `0x004fdd20`, IStreamable vftable `0x009f284c` (COL offset +0x0). sizeof >= 0xc (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x4 | int | `.` | |
## `Game::CrowRuinsEncounterResult`
Write `0x004f9fe0`, Read `0x004fdd20`, IStreamable vftable `0x009f285c` (COL offset +0x0). sizeof >= 0xc (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x4 | int | `.` | |
## `Game::DefenceFleetAssignment`
Write `0x008119d0`, Read `0x00832330`, IStreamable vftable `0x009e3c48` (COL offset +0x0). sizeof >= 0x18 (lower bound). **verified** -- fields exact; Read agrees on all 3 comparable offsets
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `fid` | |
| 0x8 | 0x4 | int | `stnid` | |
| 0xc | 0x4 | float | `head2` | |
| 0x10 | 0x4 | float | `ori` | |
| 0x14 | 0x4 | int | `quota` | |
## `Game::DefenceLayout`
Write `0x00825650`, Read `0x0084e700`, IStreamable vftable `0x00a22280` (COL offset +0x0). sizeof >= 0x1c (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `sysid` | |
| 0x8 | 0x10 | vector | `ndsa` | |
| 0x18 | 0x4 | object (ptr) | `fa` | Game::DefenceFleetAssignment |
Container-element fields (offsets are within the element / map node, not the object): `dsid`@+0x4
## `Game::DefenceSummary`
Write `0x00825810`, Read `0x0084e9b0`, IStreamable vftable `0x00a313b8` (COL offset +0x0). sizeof >= 0x48 (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `pid` | |
| 0x8 | 0x4 | int | `sid` | |
| 0xc | 0x10 | vector | `stac` | |
| 0x1c | 0x10 | vector | `satc` | |
| 0x2c | 0x1c | object | `dlay` | Game::DefenceLayout |
## `Game::DerelictEncounterResult`
Write `0x004f9fe0`, Read `0x004fdd20`, IStreamable vftable `0x009f12b8` (COL offset +0x0). sizeof >= 0xc (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x4 | int | `.` | |
## `Game::DiplomacyStats`
Write `0x00818cb0`, Read `0x00818b80`, IStreamable vftable `0x00a21430` (COL offset +0x0). sizeof 0x24 (container stride). **verified** -- fields exact; Read agrees on all 13 comparable offsets; sizeof corroborated
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `other` | |
| 0x8 | 0x2 | int16 | `lastnap` | |
| 0xa | 0x2 | int16 | `lastnapbty` | |
| 0xc | 0x2 | int16 | `bknnap` | |
| 0xe | 0x2 | int16 | `btynap` | |
| 0x10 | 0x2 | int16 | `lastally` | |
| 0x12 | 0x2 | int16 | `lastallybty` | |
| 0x14 | 0x2 | int16 | `bknally` | |
| 0x16 | 0x2 | int16 | `btyally` | |
| 0x18 | 0x2 | int16 | `lastcf` | |
| 0x1a | 0x2 | int16 | `lastcfbty` | |
| 0x1c | 0x2 | int16 | `bkncf` | |
| 0x1e | 0x2 | int16 | `btycf` | |
| 0x20 | 0x2 | int16 | `deadhome` | |
## `Game::EncounterQuery`
Write `0x008122f0`, Read `0x0084f190`, IStreamable vftable `0x00a313d8` (COL offset +0x0). sizeof >= 0x14 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x10 | vector | `.` | |
## `Game::EncounterResult`
Write `0x004f9fe0`, Read `0x004fdd20`, IStreamable vftable `0x009f0b58` (COL offset +0x0). sizeof >= 0xc (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x4 | int | `.` | |
## `Game::EncounterResults`
Write `0x008262b0`, Read `0x0083fb10`, IStreamable vftable `0x00a256ec` (COL offset +0x0). sizeof >= 0x174 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x1 | bool | `.` | |
| 0x5 | 0x1 | bool | `.` | |
| 0x6 | 0x1 | bool | `.` | |
| 0x7 | 0x1 | bool | `.` | |
| 0x8 | 0x10 | vector | `.` | enum:uint |
| 0x18 | 0x10 | vector | `.` | Game::CombatPlayerStats |
| 0x28 | 0x10 | vector | `.` | int |
| 0x38 | 0x10 | vector | `.` | Game::EncounterResults::PrisonerShip |
| 0x48 | 0x10 | vector | `.` | Game::EncounterResults::DamagedShip |
| 0x58 | 0x10 | vector | `.` | Game::EncounterResults::BoardedShip |
| 0x68 | 0x10 | vector | `.` | Game::EncounterResults::RetreatingShip |
| 0x78 | 0x10 | vector | `.` | Game::EncounterResults::SpyShip |
| 0x88 | 0x10 | vector | `.` | enum:uint |
| 0x98 | 0x10 | vector | `.` | enum:uint |
| 0xa8 | 0x10 | vector | `.` | enum:uint |
| 0xb8 | 0x4 | int | `.` | |
| 0xbc | 0x30 | object | `.` | Game::CombatDamageReport |
| 0xe0 | 0x10 | vector | `.` | enum:uint |
| 0xf0 | 0x4 | int | `.` | |
| 0xf4 | 0x4 | float | `.` | |
| 0xf8 | 0x1 | bool | `.` | |
| 0xfc | 0x10 | vector | `.` | enum:uint |
| 0x10c | 0x1 | bool | `.` | |
| 0x110 | 0x24 | object | `.` | Game::PlanetStats |
| 0x150 | 0x14 | object | `.` | Game::PlagueStats |
| 0x164 | 0x10 | vector | `.` | |
Container-element fields (offsets are within the element / map node, not the object): `.`@+0x4, `.`@+0x0
## `Game::EncounterResults::BoardedShip`
Write `0x00812500`, Read `0x00817120`, IStreamable vftable `0x00a1cee8` (COL offset +0x0). sizeof 0xc (container stride). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
| 0x8 | 0x4 | int | `.` | |
## `Game::EncounterResults::DamagedShip`
Write `0x008261d0`, Read `0x0084f560`, IStreamable vftable `0x00a1d050` (COL offset +0x0). sizeof 0x28 (container stride). **partial** -- 1 nested field(s) of unknown size
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
| 0x8 | ? | object | `.` | Game::ShipHealth |
| 0x18 | 0x10 | vector | `.` | |
## `Game::EncounterResults::PrisonerShip`
Write `0x00826150`, Read `0x008260c0`, IStreamable vftable `0x00a1ced8` (COL offset +0x0). sizeof 0x20 (container stride). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
| 0x8 | 0x18 | object | `.` | Game::PrisonerHold |
## `Game::EncounterResults::RetreatingShip`
Write `0x008125d0`, Read `0x00812540`, IStreamable vftable `0x00a1cef8` (COL offset +0x0). sizeof 0x14 (container stride). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
| 0x8 | 0x4 | int | `.` | |
| 0xc | 0x4 | int | `.` | |
| 0x10 | 0x4 | int | `.` | |
## `Game::EncounterResults::SpyShip`
Write `0x008124a0`, Read `0x00812410`, IStreamable vftable `0x00a1cf08` (COL offset +0x0). sizeof 0x14 (container stride). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
| 0x8 | 0x4 | int | `.` | |
| 0xc | 0x1 | bool | `.` | |
| 0xd | 0x1 | bool | `.` | |
| 0x10 | 0x4 | float | `.` | |
## `Game::EventStorage`
Write `0x00825cc0`, Read `0x008850f0`, IStreamable vftable `0x00a313c8` (COL offset +0x0). sizeof >= 0x18 (lower bound). **verified** -- fields exact; Read agrees on all 1 comparable offsets
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x10 | vector | `Events` | Game::EventStorage::TurnEvents |
| 0x14 | 0x4 | int | `EvNxID` | |
## `Game::EventStorage::Event`
Write `0x00825ab0`, Read `0x00825970`, IStreamable vftable `0x00a21958` (COL offset +0x0). sizeof >= 0x74 (lower bound). **verified** -- fields exact; Read agrees on all 4 comparable offsets
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `EvEID` | |
| 0x8 | 0x1c | string | `EvDsc` | |
| 0x24 | 0x1c | string | `EvMsg` | |
| 0x40 | 0x4 | int | `EvLoc` | |
| 0x44 | 0xc | object | `EvPos` | Vector3 |
| 0x50 | 0x1c | string | `EvImg` | |
| 0x6c | 0x4 | int | `EvAct` | |
| 0x70 | 0x4 | int | `EvCID` | |
## `Game::EventStorage::TurnEvents`
Write `0x00825c40`, Read `0x00825bb0`, IStreamable vftable `0x00a0f07c` (COL offset +0x0). sizeof 0x18 (container stride). **verified** -- fields exact; Read agrees on all 1 comparable offsets; sizeof corroborated
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `EvTurn` | |
| 0x8 | 0x10 | vector | `Events` | Game::EventStorage::Event |
## `Game::FieldTemplate`
Write `0x0059e310`, Read `0x0059e2a0`, IStreamable vftable `0x009e4610` (COL offset +0x0). sizeof >= 0x0 (lower bound). **partial** -- only container elements / computed values recovered
## `Game::FieldTemplate::Point`
Write `0x0059bfa0`, Read `0x0059bf10`, IStreamable vftable `0x00a05df8` (COL offset +0x0). sizeof 0x14 (container stride). **verified** -- fields exact; Read agrees on all 3 comparable offsets; sizeof corroborated
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x0 | 0x4 | int | `FTPShID` | |
| 0x4 | 0x4 | int | `FTPDesID` | |
| 0x8 | 0x4 | int | `FTPPosX` | |
| 0xc | 0x4 | int | `FTPPosY` | |
| 0x10 | 0x4 | int | `FTPSqd` | |
## `Game::FleetLayout`
Write `0x00700e20`, Read `0x007022b0`, IStreamable vftable `0x00a0f3dc` (COL offset +0x0). sizeof >= 0x24 (lower bound). **partial** -- 1 nested field(s) of unknown size
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | ? | object | `.` | Game::FieldTemplate |
| 0x14 | 0x10 | vector | `.` | |
## `Game::FleetNameGenerator`
Write `0x00817460`, Read `0x00817440`, IStreamable vftable `0x00a32760` (COL offset +0x0). sizeof >= 0x8 (lower bound). **verified** -- fields exact; Read agrees on all 1 comparable offsets
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `FNGNum` | |
## `Game::FlightPlan`
Write `0x00700f60`, Read `0x00704c70`, IStreamable vftable `0x00a1d50c` (COL offset +0x0). sizeof 0x38 (enumeration meets embedding). **verified** -- fields exact; Read agrees on all 2 comparable offsets; sizeof corroborated
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x10 | vector | `wpts` | Game::FlightPlan::Waypoint |
| 0x14 | 0x4 | float | `FPsp2` | |
| 0x18 | 0x4 | int | `FPeta2` | |
| 0x1c | 0xc | object | `FPogn2` | Vector3 |
| 0x28 | 0xc | object | `FPdpos` | Vector3 |
| 0x34 | 0x4 | int | `pnd` | |
## `Game::FlightPlan::Waypoint`
Write `0x00700ed0`, Read `0x00701860`, IStreamable vftable `0x00a1d39c` (COL offset +0x0). sizeof >= 0x1c (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `Wpt` | |
| 0x8 | 0x4 | int | `Tp` | |
| 0xc | 0x10 | object | `nrt` | Game::NodeRoute |
## `Game::Game::SVSOBrokenEmpire::VPCStat::?$NetworkIDDataMap`
Write `0x0054e8d0`, Read `0x00557460`, IStreamable vftable `0x009fa5a4` (COL offset +0x0). sizeof >= 0xc (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x4 | int | `siz` | |
Container-element fields (offsets are within the element / map node, not the object): `.`@+0xc, `.`@+0x10
## `Game::Game::VLocustFleetLogistics::?$NetworkIDDataMap`
Write `0x0050c5f0`, Read `0x0051c6c0`, IStreamable vftable `0x009f1e10` (COL offset +0x0). sizeof >= 0xc (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x4 | int | `siz` | |
Container-element fields (offsets are within the element / map node, not the object): `.`@+0xc, `.`@+0x10
## `Game::Game::VLocustNestState::?$NetworkIDDataMap`
Write `0x0050c4f0`, Read `0x0051c5f0`, IStreamable vftable `0x009f1e00` (COL offset +0x0). sizeof >= 0xc (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x4 | int | `siz` | |
Container-element fields (offsets are within the element / map node, not the object): `.`@+0xc, `.`@+0x10
## `Game::Game::VShipSectionID::?$AIWeightMap`
Write `0x00696b40`, Read `0x006bff00`, IStreamable vftable `0x00a1a680` (COL offset +0x0). sizeof >= 0x4 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x0 | 0x4 | object (ptr) | `.` | Game::ShipSectionID |
Container-element fields (offsets are within the element / map node, not the object): `.`@+0x8
## `Game::GameTurnHistory`
Write `0x0082c5a0`, Read `0x00894180`, IStreamable vftable `0x00a333a0` (COL offset +0x0). sizeof >= 0x10 (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0xc | 0x4 | int | `nply` | |
Container-element fields (offsets are within the element / map node, not the object): `ply`@+0xc, `hist`@+0x10
## `Game::GunBankSelection`
Write `0x0056e950`, Read `0x0056e920`, IStreamable vftable `0x009e24f8` (COL offset +0x0). sizeof >= 0x8 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
## `Game::HeraldEncounterResult`
Write `0x004f2ff0`, Read `0x004f2fc0`, IStreamable vftable `0x009efc90` (COL offset +0x0). sizeof >= 0x10 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x4 | int | `.` | |
| 0xc | 0x4 | float | `.` | |
## `Game::IndependenceInfo`
Write `0x00748ee0`, Read `0x00748df0`, IStreamable vftable `0x00a2005c` (COL offset +0x0). sizeof >= 0x70 (lower bound). **verified** -- fields exact; Read agrees on all 3 comparable offsets
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `indsp` | |
| 0x8 | 0x7 | object | `indcl` | Game::PlayerColorID |
| 0x1c | 0x1c | string | `indnm` | |
| 0x38 | 0x1c | string | `indav` | |
| 0x54 | 0x1c | string | `indba` | |
## `Game::JewelsProject`
Write `0x00548910`, Read `0x005488d0`, IStreamable vftable `0x009fa438` (COL offset +0x0). sizeof >= 0x4c (lower bound). **verified** -- fields exact; Read agrees on all 2 comparable offsets
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x34 | object | `SPi` | Game::SpecialProject |
| 0x3c | 0x4 | int | `Stp` | |
| 0x44 | 0x4 | int | `einv` | |
| 0x48 | 0x4 | int | `eapp` | |
## `Game::LocustEncounterParams`
Write `0x00508be0`, Read `0x00508b70`, IStreamable vftable `0x009f56a8` (COL offset +0x0). sizeof >= 0x14 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0xc | object | `.` | Game::Game::VLocustNestState::?$NetworkIDDataMap |
## `Game::LocustEncounterResult`
Write `0x00508ce0`, Read `0x00508c40`, IStreamable vftable `0x009f54e8` (COL offset +0x0). sizeof >= 0x18 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x4 | int | `.` | |
| 0xc | 0xc | object | `.` | Game::Game::VLocustNestState::?$NetworkIDDataMap |
## `Game::LocustFleetLogistics`
Write `0x00508e50`, Read `0x00508d60`, IStreamable vftable `0x009f1f00` (COL offset +0x0). sizeof >= 0x14 (lower bound). **verified** -- fields exact; Read agrees on all 2 comparable offsets
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x0 | 0x1 | bool | `hav` | |
| 0x1 | 0x1 | bool | `don` | |
| 0x4 | 0x4 | int | `dsy` | |
| 0x8 | 0xc | object | `dst` | Vector3 |
## `Game::Mars::Game::W4AIPurposeID::U?$StreamableEnum::?$AIWeightMap`
Write `0x0069b590`, Read `0x006c01a0`, IStreamable vftable `0x00a1a6b0` (COL offset +0x0). sizeof >= 0x10 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x0 | 0x10 | vector | `.` | |
Container-element fields (offsets are within the element / map node, not the object): `.`@+0x0
## `Game::Mars::Game::W4WeaponFamilyID::U?$StreamableEnum::?$AIWeightMap`
Write `0x0069b4c0`, Read `0x006bffe0`, IStreamable vftable `0x00a1a690` (COL offset +0x0). sizeof >= 0x10 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x0 | 0x10 | vector | `.` | |
Container-element fields (offsets are within the element / map node, not the object): `.`@+0x0
## `Game::Mars::I::U?$StreamableEnum::?$AIWeightMap`
Write `0x00696c50`, Read `0x006b57c0`, IStreamable vftable `0x00a1a6c0` (COL offset +0x0). sizeof >= 0x10 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x0 | 0x10 | vector | `.` | |
Container-element fields (offsets are within the element / map node, not the object): `.`@+0x0
## `Game::MeteorEncounterResult`
Write `0x004f9fe0`, Read `0x004fdd20`, IStreamable vftable `0x009f1424` (COL offset +0x0). sizeof >= 0xc (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x4 | int | `.` | |
## `Game::MonitorEncounterResult`
Write `0x004f9fe0`, Read `0x004fdd20`, IStreamable vftable `0x009f1570` (COL offset +0x0). sizeof >= 0xc (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x4 | int | `.` | |
## `Game::MonitorProject`
Write `0x008287d0`, Read `0x00828740`, IStreamable vftable `0x00a3180c` (COL offset +0x0). sizeof >= 0x54 (lower bound). **verified** -- fields exact; Read agrees on all 4 comparable offsets
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x34 | object | `SPi` | Game::SpecialProject |
| 0x3c | 0x4 | int | `Stp` | |
| 0x40 | 0x4 | int | `Sys` | |
| 0x44 | 0x4 | int | `RMn` | |
| 0x48 | 0x4 | int | `RMx` | |
| 0x4c | 0x4 | int | `RDn` | |
| 0x50 | 0x4 | float | `RMd` | |
## `Game::Morale`
Write `0x00744ea0`, Read `0x00744dd0`, IStreamable vftable `0x00a1f7c8` (COL offset +0x0). sizeof >= 0x8 (lower bound). **verified** -- fields exact; Read agrees on all 1 comparable offsets
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `mv` | |
## `Game::MoraleEvent`
Write `0x007491b0`, Read `0x007490b0`, IStreamable vftable `0x00a2003c` (COL offset +0x0). sizeof 0x50 (container stride). **verified** -- fields exact; Read agrees on all 4 comparable offsets; sizeof corroborated
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `mid` | |
| 0x8 | 0x4 | int | `mtr` | |
| 0xc | 0x4 | int | `mn` | |
| 0x10 | 0x4 | int | `mtp` | |
| 0x14 | 0x8 | object | `mfx` | Game::Morale |
| 0x34 | 0x1c | string | `mdsc` | |
## `Game::NodePath`
Write `0x006e1fd0`, Read `0x006e1e90`, IStreamable vftable `0x00a1cb50` (COL offset +0x0). sizeof 0x30 (container stride). **verified** -- fields exact; Read agrees on all 6 comparable offsets; sizeof corroborated
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `npt` | |
| 0x8 | 0x4 | int | `npid` | |
| 0xc | 0x4 | int | `npfr` | |
| 0x10 | 0x4 | int | `npto` | |
| 0x14 | 0x4 | int | `npctm` | |
| 0x18 | 0x4 | int | `npcby` | |
| 0x1c | 0x4 | int | `npdtn` | |
| 0x20 | 0x4 | int | `npdtf` | |
| 0x24 | 0x4 | int | `nptf` | |
| 0x28 | 0x4 | int | `npenp` | |
| 0x2c | 0x4 | int | `npuse` | |
## `Game::NodePointParams`
Write `0x00492aa0`, Read `0x004929d0`, IStreamable vftable `0x009e3ff4` (COL offset +0x0). sizeof >= 0x3c (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x0 | 0x4 | float | `.` | |
| 0x4 | 0x4 | int | `.` | |
| 0x8 | 0x1c | string | `.` | |
| 0x24 | 0x4 | float | `.` | |
| 0x28 | 0x4 | int | `.` | |
| 0x2c | 0x10 | vector | `.` | enum:uint |
## `Game::NodeRoute`
Write `0x006e22e0`, Read `0x006e2260`, IStreamable vftable `0x00a1cbdc` (COL offset +0x0). sizeof >= 0x10 (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `nrp` | |
| 0x8 | 0x4 | int | `nrf` | |
| 0xc | 0x4 | int | `nrt` | |
## `Game::Objective`
Write `0x008505b0`, Read `0x00850430`, IStreamable vftable `0x00a2e0cc` (COL offset +0x0). sizeof 0x44 (container stride). **verified** -- fields exact; Read agrees on all 2 comparable offsets; sizeof corroborated
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x0 | 0x4 | int | `ID` | |
| 0x4 | 0x1 | bool | `Cmp` | |
| 0x40 | 0x4 | int | `NID` | |
## `Game::ObservedDesign`
Write `0x00817aa0`, Read `0x008179f0`, IStreamable vftable `0x00a23c64` (COL offset +0x0). sizeof 0x10 (container stride). **clean** -- fields exact; sizeof corroborated
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x2 | int16 | `otnF` | |
| 0x6 | 0x2 | int16 | `otnL` | |
| 0x8 | 0x4 | int | `odid` | |
| 0xc | 0x4 | int | `opid` | |
## `Game::ObservedTech`
Write `0x00817cf0`, Read `0x00817c40`, IStreamable vftable `0x00a2439c` (COL offset +0x0). sizeof 0x2c (container stride). **verified** -- fields exact; Read agrees on all 2 comparable offsets; sizeof corroborated
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x2 | int16 | `otnF` | |
| 0x6 | 0x2 | int16 | `otnL` | |
| 0x8 | 0x1 | bool | `odet` | |
| 0xc | 0x1c | string | `otch` | |
| 0x28 | 0x4 | int | `owith` | |
## `Game::ObservedWeapon`
Write `0x00817bc0`, Read `0x00817b10`, IStreamable vftable `0x00a2438c` (COL offset +0x0). sizeof 0x2c (container stride). **verified** -- fields exact; Read agrees on all 2 comparable offsets; sizeof corroborated
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x2 | int16 | `otnF` | |
| 0x6 | 0x2 | int16 | `otnL` | |
| 0x8 | 0x1 | bool | `odet` | |
| 0xc | 0x1c | string | `owep` | |
| 0x28 | 0x4 | int | `owith` | |
## `Game::OrtgayEncounterResult`
Write `0x004f9fe0`, Read `0x004fdd20`, IStreamable vftable `0x009f0e80` (COL offset +0x0). sizeof >= 0xc (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x4 | int | `.` | |
## `Game::PirateEncounterResult`
Write `0x004f9fe0`, Read `0x004fdd20`, IStreamable vftable `0x009f159c` (COL offset +0x0). sizeof >= 0xc (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x4 | int | `.` | |
## `Game::PlagueHit`
Write `0x00536710`, Read `0x005366b0`, IStreamable vftable `0x009f8d10` (COL offset +0x0). sizeof 0x10 (container stride). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
| 0x8 | 0x4 | int | `.` | |
| 0xc | 0x4 | int | `.` | |
## `Game::PlagueStats`
Write `0x00537e90`, Read `0x00537e20`, IStreamable vftable `0x009eef70` (COL offset +0x0). sizeof 0x14 (enumeration meets embedding). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x10 | vector | `.` | Game::PlagueHit |
## `Game::PlanetClientContext`
Write `0x005369a0`, Read `0x005368c0`, IStreamable vftable `0x009e3c38` (COL offset +0x0). sizeof >= 0x1c (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | float | `.` | |
| 0x8 | 0x4 | float | `.` | |
| 0xc | 0x4 | float | `.` | |
| 0x10 | 0x4 | float | `.` | |
| 0x14 | 0x4 | int | `.` | |
| 0x18 | 0x4 | int | `.` | |
## `Game::PlanetStats`
Write `0x00536810`, Read `0x00536760`, IStreamable vftable `0x009e3f84` (COL offset +0x0). sizeof >= 0x24 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x0 | 0x4 | float | `.` | |
| 0x4 | 0x4 | float | `.` | |
| 0x8 | 0x4 | int | `.` | |
| 0x10 | 0x8 | int64 | `.` | |
| 0x18 | 0x8 | int64 | `.` | |
| 0x20 | 0x4 | float | `.` | |
## `Game::PlayerAid`
Write `0x00818dc0`, Read `0x008207b0`, IStreamable vftable `0x00a286dc` (COL offset +0x0). sizeof 0x18 (container stride). **verified** -- fields exact; Read agrees on all 4 comparable offsets; sizeof corroborated
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `aidto` | |
| 0x8 | 0x4 | int | `aidrai` | |
| 0xc | 0x4 | int | `aidrt` | |
| 0x10 | 0x4 | int | `aidsa` | |
| 0x14 | 0x4 | int | `aidst` | |
## `Game::PlayerAlliances`
Write `0x006d2e10`, Read `0x006d2d20`, IStreamable vftable `0x00a2dd5c` (COL offset +0x0). sizeof 0x10 (container stride). **clean** -- fields exact; sizeof corroborated
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x0 | 0x4 | int | `ALid` | |
| 0x4 | 0x4 | int | `AL` | |
| 0x8 | 0x4 | int | `NA` | |
| 0xc | 0x4 | int | `CF` | |
## `Game::PlayerColorID`
Write `0x0053c080`, Read `0x0053c880`, IStreamable vftable `0x009e4630` (COL offset +0x0). sizeof >= 0x7 (lower bound). **partial** -- 4 field(s) via an untyped sub-writer
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x0 | 0x4 | opaque | `.` | |
| 0x1 | 0x4 | opaque | `.` | |
| 0x2 | 0x4 | opaque | `.` | |
| 0x3 | 0x4 | opaque | `.` | |
## `Game::PlayerEncounterProgress`
Write `0x004fa040`, Read `0x004fa000`, IStreamable vftable `0x009f0b68` (COL offset +0x0). sizeof 0x10 (container stride). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
| 0x8 | 0x1 | bool | `.` | |
| 0xc | 0x4 | float | `.` | |
## `Game::PlayerMessage`
Write `0x0053cc50`, Read `0x0053cb80`, IStreamable vftable `0x009e3cd8` (COL offset +0x0). sizeof >= 0x38 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
| 0x8 | 0x4 | int | `.` | |
| 0xc | 0x1c | string | `.` | |
| 0x28 | 0x10 | vector | `.` | String |
## `Game::PlayerNotes`
Write `0x008132b0`, Read `0x00813250`, IStreamable vftable `0x00a21948` (COL offset +0x0). sizeof >= 0x28 (lower bound). **verified** -- fields exact; Read agrees on all 2 comparable offsets
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `NtSys` | |
| 0x8 | 0x1c | string | `NtTxt` | |
| 0x24 | 0x4 | int | `NtTrn` | |
## `Game::PlayerReport`
Write `0x00817480`, Read `0x008200a0`, IStreamable vftable `0x00a21440` (COL offset +0x0). sizeof 0x30 (container stride). **verified** -- fields exact; Read agrees on all 4 comparable offsets; sizeof corroborated
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `oid` | |
| 0x8 | 0x4 | int | `pid` | |
| 0xc | 0x4 | int | `flds` | |
| 0x10 | 0x4 | int | `sav` | |
| 0x14 | 0x4 | int | `home` | |
| 0x18 | 0x4 | int | `ncol` | |
| 0x1c | 0x4 | int | `mpwr` | |
| 0x20 | 0x4 | int | `mcls` | |
| 0x24 | 0x4 | int | `mmsl` | |
| 0x28 | 0x4 | int | `nshp` | |
| 0x2c | 0x4 | int | `nsat` | |
## `Game::PlayerTurnHistory`
Write `0x0082c4a0`, Read `0x00885450`, IStreamable vftable `0x00a32c90` (COL offset +0x0). sizeof >= 0x8 (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `ply` | |
Container-element fields (offsets are within the element / map node, not the object): `stats`@+0x18
## `Game::PlayerTurnStats`
Write `0x0082c290`, Read `0x00833360`, IStreamable vftable `0x00a3145c` (COL offset +0x0). sizeof >= 0x70 (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x2 | int16 | `trn` | |
| 0x8 | 0x4 | int | `almem` | |
| 0xc | 0x4 | int | `inc` | |
| 0x10 | 0x4 | int | `tdinc` | |
| 0x14 | 0x4 | int | `sav` | |
| 0x18 | 0x2 | int16 | `col` | |
| 0x1a | 0x2 | int16 | `bat` | |
| 0x20 | 0x8 | int64 | `pop` | |
| 0x28 | 0x2 | int16 | `tch` | |
| 0x50 | 0x10 | vector | `sacq` | Game::SystemEvent |
| 0x60 | 0x10 | vector | `slost` | Game::SystemEvent |
Container-element fields (offsets are within the element / map node, not the object): `shpt`@+0x-c, `shpl`@+0x0, `shpk`@+0x6, `satt`@+0x-6, `satl`@+0xc, `satk`@+0x12
## `Game::Population`
Write `0x00537ef0`, Read `0x005390c0`, IStreamable vftable `0x009f90f0` (COL offset +0x0). sizeof >= 0x0 (lower bound). **partial** -- only container elements / computed values recovered
## `Game::PopulationGroup`
Write `0x00536af0`, Read `0x00536a80`, IStreamable vftable `0x009f8d50` (COL offset +0x0). sizeof >= 0x18 (lower bound). **verified** -- fields exact; Read agrees on all 1 comparable offsets
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `PopT` | |
| 0x8 | 0x4 | int | `PopS` | |
| 0x10 | 0x8 | int64 | `PopC` | |
## `Game::PrisonerHold`
Write `0x0056ec00`, Read `0x0056eb00`, IStreamable vftable `0x009fe130` (COL offset +0x0). sizeof 0x18 (enumeration meets embedding). **clean** -- fields exact; sizeof corroborated
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x14 | 0x4 | handle | `PrMax` | |
Container-element fields (offsets are within the element / map node, not the object): `PrSp`@+0x0, `PrNum`@+0x0
## `Game::PuppetMasterEncounterResult`
Write `0x004f9fe0`, Read `0x004fdd20`, IStreamable vftable `0x009f16f8` (COL offset +0x0). sizeof >= 0xc (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x4 | int | `.` | |
## `Game::RaidTargets`
Write `0x00818ec0`, Read `0x0083a090`, IStreamable vftable `0x00a21968` (COL offset +0x0). sizeof >= 0x20 (lower bound). **verified** -- fields exact; Read agrees on all 1 comparable offsets
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `rds` | |
| 0x8 | 0x4 | int | `rdv` | |
| 0xc | 0x10 | vector | `dsc` | |
| 0x1c | 0x4 | int | `rdt` | |
## `Game::RefugeesEncounterParams`
Write `0x004fbff0`, Read `0x004fbfd0`, IStreamable vftable `0x009f11dc` (COL offset +0x0). sizeof >= 0x9 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x1 | bool | `.` | |
## `Game::RefugeesEncounterResult`
Write `0x004fc070`, Read `0x004fc010`, IStreamable vftable `0x009f11ec` (COL offset +0x0). sizeof >= 0x10 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x4 | int | `.` | |
| 0xc | 0x4 | int | `.` | |
## `Game::SNMAIRelationValues`
Write `0x0082a650`, Read `0x0082a5e0`, IStreamable vftable `0x00a319d8` (COL offset +0x0). sizeof >= 0x14 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x10 | vector | `.` | Game::AIRelationRecord |
## `Game::SNMAllCombatDone`
Write `0x0082a170`, Read `0x0082a100`, IStreamable vftable `0x00a24758` (COL offset +0x0). sizeof >= 0x14 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x10 | vector | `.` | Game::EncounterResults |
## `Game::SNMAllianceInvite`
Write `0x00817290`, Read `0x00816f30`, IStreamable vftable `0x00a2d768` (COL offset +0x0). sizeof >= 0x10 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
| 0x8 | 0x4 | int | `.` | |
| 0xc | 0x4 | int | `.` | |
## `Game::SNMAllianceInviteChat`
Write `0x00816c20`, Read `0x00816ba0`, IStreamable vftable `0x00a319ec` (COL offset +0x0). sizeof >= 0x2c (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
| 0x8 | 0x4 | int | `.` | |
| 0xc | 0x1c | string | `.` | |
| 0x28 | 0x4 | int | `.` | |
## `Game::SNMAllianceInviteProgress`
Write `0x0082a9e0`, Read `0x0082a940`, IStreamable vftable `0x00a3233c` (COL offset +0x0). sizeof >= 0x54 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
| 0x8 | 0x4c | object | `.` | Game::AllianceInvite |
## `Game::SNMAllianceNotify`
Write `0x00817290`, Read `0x00816f30`, IStreamable vftable `0x00a2d790` (COL offset +0x0). sizeof >= 0x10 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
| 0x8 | 0x4 | int | `.` | |
| 0xc | 0x4 | int | `.` | |
## `Game::SNMAllianceReply`
Write `0x00817030`, Read `0x00816fb0`, IStreamable vftable `0x00a2d77c` (COL offset +0x0). sizeof >= 0x11 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
| 0x8 | 0x4 | int | `.` | |
| 0xc | 0x4 | int | `.` | |
| 0x10 | 0x1 | bool | `.` | |
## `Game::SNMCancelAllianceInvite`
Write `0x00812500`, Read `0x00817120`, IStreamable vftable `0x00a2d7cc` (COL offset +0x0). sizeof >= 0xc (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
| 0x8 | 0x4 | int | `.` | |
## `Game::SNMChat`
Write `0x00816d30`, Read `0x00816c80`, IStreamable vftable `0x00a241c4` (COL offset +0x0). sizeof >= 0x30 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
| 0x8 | 0x4 | int | `.` | |
| 0xc | 0x4 | int | `.` | |
| 0x10 | 0x1c | string | `.` | |
| 0x2c | 0x4 | int | `.` | |
## `Game::SNMCombatTimeRemaining`
Write `0x00816980`, Read `0x00816950`, IStreamable vftable `0x00a2d704` (COL offset +0x0). sizeof >= 0xc (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
| 0x8 | 0x4 | float | `.` | |
## `Game::SNMCommMessage`
Write `0x0082a4f0`, Read `0x00855690`, IStreamable vftable `0x00a2d740` (COL offset +0x0). sizeof >= 0x8 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | object (ptr) | `.` | Game::ICommMessage |
## `Game::SNMDemandEmpireSurrender`
Write `0x00812500`, Read `0x00817120`, IStreamable vftable `0x00a2164c` (COL offset +0x0). sizeof >= 0xc (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
| 0x8 | 0x4 | int | `.` | |
## `Game::SNMDemandEmpireSurrenderResponse`
Write `0x00764ac0`, Read `0x00764a90`, IStreamable vftable `0x00a21660` (COL offset +0x0). sizeof >= 0xd (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
| 0x8 | 0x4 | int | `.` | |
| 0xc | 0x1 | bool | `.` | |
## `Game::SNMDoEncounterQuery`
Write `0x00816f10`, Read `0x00816ee0`, IStreamable vftable `0x00a23d54` (COL offset +0x0). sizeof >= 0x8 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
## `Game::SNMEncounterProgress`
Write `0x0082a240`, Read `0x0082a1d0`, IStreamable vftable `0x00a319c4` (COL offset +0x0). sizeof >= 0x14 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x10 | vector | `.` | Game::PlayerEncounterProgress |
## `Game::SNMEncounterQueryResults`
Write `0x0082a330`, Read `0x0082a2a0`, IStreamable vftable `0x00a31424` (COL offset +0x0). sizeof >= 0x1c (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
| 0x8 | 0x14 | object | `.` | Game::EncounterQuery |
## `Game::SNMEncounterResults`
Write `0x0082a460`, Read `0x0082a3b0`, IStreamable vftable `0x00a32a54` (COL offset +0x0). sizeof >= 0x184 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x174 | object | `.` | Game::EncounterResults |
| 0x180 | 0x4 | int | `.` | |
## `Game::SNMEndTurn`
Write `0x0082a770`, Read `0x0082a6b0`, IStreamable vftable `0x00a229e0` (COL offset +0x0). sizeof >= 0x1c8 (lower bound). **partial** -- 1 nested field(s) of unknown size
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | ? | object | `.` | Game::TurnCommands |
| 0x1b8 | 0x10 | object | `.` | Game::AIEncounterFlags |
## `Game::SNMGenericEvent`
Write `0x00451630`, Read `0x00451600`, IStreamable vftable `0x00a31a50` (COL offset +0x0). sizeof >= 0x24 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
| 0x8 | 0x1c | string | `.` | |
## `Game::SNMGenericGameMessage`
Write `0x00812500`, Read `0x00817120`, IStreamable vftable `0x00a2d7f4` (COL offset +0x0). sizeof >= 0xc (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
| 0x8 | 0x4 | int | `.` | |
## `Game::SNMHostCombat`
Write `0x00816870`, Read `0x008167f0`, IStreamable vftable `0x00a31974` (COL offset +0x0). sizeof >= 0x32 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
| 0x8 | 0x4 | int | `.` | |
| 0xc | 0x1c | string | `.` | |
| 0x28 | 0x4 | int | `.` | |
| 0x2c | 0x4 | float | `.` | |
| 0x30 | 0x1 | bool | `.` | |
| 0x31 | 0x1 | bool | `.` | |
## `Game::SNMHostCombatReply`
Write `0x00829df0`, Read `0x00829d40`, IStreamable vftable `0x00a31988` (COL offset +0x0). sizeof >= 0x7c (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x1 | bool | `.` | |
| 0x8 | 0x58 | object | `.` | Address |
| 0x60 | 0x1c | string | `.` | |
## `Game::SNMJoin`
Write `0x008167b0`, Read `0x00816770`, IStreamable vftable `0x00a31960` (COL offset +0x0). sizeof >= 0x25 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
| 0x8 | 0x1c | string | `.` | |
| 0x24 | 0x1 | bool | `.` | |
## `Game::SNMJoinCombat`
Write `0x0082a040`, Read `0x00829f70`, IStreamable vftable `0x00a3199c` (COL offset +0x0). sizeof >= 0x9c (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x58 | object | `.` | Address |
| 0x5c | 0x1c | string | `.` | |
| 0x78 | 0x1c | string | `.` | |
| 0x94 | 0x4 | int | `.` | |
| 0x98 | 0x4 | int | `.` | |
## `Game::SNMJoinCombatReply`
Write `0x00816920`, Read `0x008168f0`, IStreamable vftable `0x00a319b0` (COL offset +0x0). sizeof >= 0x24 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x1 | bool | `.` | |
| 0x8 | 0x1c | string | `.` | |
## `Game::SNMJoinReply`
Write `0x008d1ab0`, Read `0x008d1a90`, IStreamable vftable `0x00a2d6f0` (COL offset +0x0). sizeof >= 0x8 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
## `Game::SNMKillAI`
Write `0x00816f10`, Read `0x00816ee0`, IStreamable vftable `0x00a2d754` (COL offset +0x0). sizeof >= 0x8 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
## `Game::SNMLaunchCombat`
Write `0x00829e90`, Read `0x0087acf0`, IStreamable vftable `0x00a3274c` (COL offset +0x0). sizeof >= 0x2c (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
| 0x8 | 0x10 | vector | `.` | |
| 0x18 | 0x14 | object | `.` | Game::EncounterQuery |
## `Game::SNMLeaveAlliance`
Write `0x00816f10`, Read `0x00816ee0`, IStreamable vftable `0x00a212c0` (COL offset +0x0). sizeof >= 0x8 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
## `Game::SNMLeaveCeaseFire`
Write `0x00812500`, Read `0x00817120`, IStreamable vftable `0x00a2d7b8` (COL offset +0x0). sizeof >= 0xc (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
| 0x8 | 0x4 | int | `.` | |
## `Game::SNMLeaveNonAggression`
Write `0x00812500`, Read `0x00817120`, IStreamable vftable `0x00a2d7a4` (COL offset +0x0). sizeof >= 0xc (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
| 0x8 | 0x4 | int | `.` | |
## `Game::SNMLobbyChat`
Write `0x00816e00`, Read `0x00816da0`, IStreamable vftable `0x00a31a00` (COL offset +0x0). sizeof >= 0x40 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
| 0x8 | 0x1c | string | `.` | |
| 0x24 | 0x1c | string | `.` | |
## `Game::SNMMakePlayerAI`
Write `0x00816a00`, Read `0x008169b0`, IStreamable vftable `0x00a2d72c` (COL offset +0x0). sizeof >= 0x9 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
| 0x8 | 0x1 | bool | `.` | |
## `Game::SNMPendingAlliances`
Write `0x0082abf0`, Read `0x0082ab80`, IStreamable vftable `0x00a31438` (COL offset +0x0). sizeof >= 0x14 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x10 | vector | `.` | Game::PlayerAlliances |
## `Game::SNMPlaySpeechEvent`
Write `0x00817290`, Read `0x00816f30`, IStreamable vftable `0x00a2d808` (COL offset +0x0). sizeof >= 0x10 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
| 0x8 | 0x4 | int | `.` | |
| 0xc | 0x4 | int | `.` | |
## `Game::SNMProgressionWarsConvoyShips`
Write `0x008172e0`, Read `0x00838eb0`, IStreamable vftable `0x00a307bc` (COL offset +0x0). sizeof >= 0x8 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
## `Game::SNMRefreshSlots`
Write `0x00828290`, Read `0x00828220`, IStreamable vftable `0x00a317b0` (COL offset +0x0). sizeof >= 0x14 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x10 | vector | `.` | Game::SNMRefreshSlots::SlotData |
## `Game::SNMRefreshSlots::SlotData`
Write `0x008145b0`, Read `0x00814570`, IStreamable vftable `0x00a23c74` (COL offset +0x0). sizeof 0x10 (container stride). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
| 0x8 | 0x4 | int | `.` | |
| 0xc | 0x1 | bool | `.` | |
## `Game::SNMRemoveCommMessage`
Write `0x00812500`, Read `0x00817120`, IStreamable vftable `0x00a2141c` (COL offset +0x0). sizeof >= 0xc (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
| 0x8 | 0x4 | int | `.` | |
## `Game::SNMRunAI`
Write `0x00816ea0`, Read `0x00816e40`, IStreamable vftable `0x00a31a14` (COL offset +0x0). sizeof >= 0x25 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
| 0x8 | 0x1c | string | `.` | |
| 0x24 | 0x1 | bool | `.` | |
## `Game::SNMSetAIPolicy`
Write `0x00812500`, Read `0x00817120`, IStreamable vftable `0x00a21408` (COL offset +0x0). sizeof >= 0xc (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
| 0x8 | 0x4 | int | `.` | |
## `Game::SNMSetPlayerStatus`
Write `0x0042c7f0`, Read `0x0042dd90`, IStreamable vftable `0x00a2d718` (COL offset +0x0). sizeof >= 0xc (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
| 0x8 | 0x4 | int | `.` | |
## `Game::SNMSetSlotPassword`
Write `0x008170e0`, Read `0x00817090`, IStreamable vftable `0x00a31a3c` (COL offset +0x0). sizeof >= 0x24 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
| 0x8 | 0x1c | string | `.` | |
## `Game::SNMSetTimers`
Write `0x00617bc0`, Read `0x00617b50`, IStreamable vftable `0x00a0c08c` (COL offset +0x0). sizeof >= 0x18 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x14 | object | `.` | Game::StrategyTimerParams |
## `Game::SNMSlotInit`
Write `0x00827e80`, Read `0x00827d40`, IStreamable vftable `0x00a3256c` (COL offset +0x0). sizeof >= 0x40 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x1 | bool | `.` | |
| 0x5 | 0x1 | bool | `.` | |
| 0x6 | 0x1 | bool | `.` | |
| 0x8 | 0x4 | int | `.` | |
| 0xc | 0x10 | vector | `.` | Game::Slot |
| 0x1c | 0x4 | int | `.` | |
| 0x20 | 0x1 | bool | `.` | |
| 0x24 | 0x4 | int | `.` | |
| 0x28 | 0x4 | int | `.` | |
| 0x2c | 0x14 | object | `.` | Game::StrategyPlayerGameSettings |
## `Game::SNMSlotInsertClient`
Write `0x008143b0`, Read `0x00814370`, IStreamable vftable `0x00a31774` (COL offset +0x0). sizeof >= 0x28 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
| 0x8 | 0x4 | int | `.` | |
| 0xc | 0x1c | string | `.` | |
## `Game::SNMSlotMoveClient`
Write `0x00814430`, Read `0x008143f0`, IStreamable vftable `0x00a2d594` (COL offset +0x0). sizeof >= 0x10 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
| 0x8 | 0x4 | int | `.` | |
| 0xc | 0x4 | int | `.` | |
## `Game::SNMSlotPWAttempt`
Write `0x0076c680`, Read `0x008d1ad0`, IStreamable vftable `0x00a3179c` (COL offset +0x0). sizeof >= 0x20 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x1c | string | `.` | |
## `Game::SNMSlotPWRejected`
Write `0x008d1ab0`, Read `0x008d1a90`, IStreamable vftable `0x00a2d5e4` (COL offset +0x0). sizeof >= 0x8 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
## `Game::SNMSlotRemoveClient`
Write `0x008d1ab0`, Read `0x008d1a90`, IStreamable vftable `0x00a2d580` (COL offset +0x0). sizeof >= 0x8 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
## `Game::SNMSlotReqPW`
Write `0x00814540`, Read `0x00814510`, IStreamable vftable `0x00a2d5a8` (COL offset +0x0). sizeof >= 0xc (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | float | `.` | |
| 0x8 | 0x4 | int | `.` | |
## `Game::SNMSlotSetData`
Write `0x008280f0`, Read `0x00827fa0`, IStreamable vftable `0x00a31760` (COL offset +0x0). sizeof >= 0x94 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
| 0x8 | 0x4 | int | `.` | |
| 0xc | 0x1c | string | `.` | |
| 0x28 | 0x4 | int | `.` | |
| 0x2c | 0x4 | int | `.` | |
| 0x30 | 0x7 | object | `.` | Game::PlayerColorID |
| 0x44 | 0x1c | string | `.` | |
| 0x60 | 0x1c | string | `.` | |
| 0x7c | 0x1 | bool | `.` | |
| 0x80 | 0x14 | object | `.` | Game::StrategyPlayerGameSettings |
## `Game::SNMSlotSetForcedSpecies`
Write `0x008d1ab0`, Read `0x008d1a90`, IStreamable vftable `0x00a2d558` (COL offset +0x0). sizeof >= 0x8 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
## `Game::SNMSlotSetPW`
Write `0x008144c0`, Read `0x00814470`, IStreamable vftable `0x00a31788` (COL offset +0x0). sizeof >= 0x26 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
| 0x8 | 0x1c | string | `.` | |
| 0x24 | 0x1 | bool | `.` | |
| 0x25 | 0x1 | bool | `.` | |
## `Game::SNMSlotSetState`
Write `0x00814330`, Read `0x008142e0`, IStreamable vftable `0x00a2d56c` (COL offset +0x0). sizeof >= 0x10 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
| 0x8 | 0x4 | int | `.` | |
| 0xc | 0x4 | int | `.` | |
## `Game::SNMTechOffer`
Write `0x00817220`, Read `0x00817180`, IStreamable vftable `0x00a21914` (COL offset +0x0). sizeof >= 0x2d (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
| 0x8 | 0x4 | int | `.` | |
| 0xc | 0x4 | int | `.` | |
| 0x10 | 0x1c | string | `.` | |
| 0x2c | 0x1 | bool | `.` | |
## `Game::SNMTransferProgress`
Write `0x007910d0`, Read `0x00791060`, IStreamable vftable `0x00a241d8` (COL offset +0x0). sizeof >= 0x14 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x10 | vector | `.` | char |
## `Game::SNMTurnInfo`
Write `0x0078da60`, Read `0x0078d9f0`, IStreamable vftable `0x00a23a8c` (COL offset +0x0). sizeof >= 0x38 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x34 | object | `.` | Game::StrategyTurnInfo |
## `Game::SNMUpdate`
Write `0x00829c40`, Read `0x00829ad0`, IStreamable vftable `0x00a24744` (COL offset +0x0). sizeof >= 0x54 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x10 | vector | `.` | Game::PlayerAlliances |
| 0x14 | 0x10 | vector | `.` | enum:uint |
| 0x24 | 0x10 | vector | `.` | enum:uint |
| 0x34 | 0x10 | vector | `.` | enum:uint |
| 0x44 | 0x10 | vector | `.` | Game::TechOffer |
## `Game::SNMUpdateAlliances`
Write `0x0082ab00`, Read `0x0082aa60`, IStreamable vftable `0x00a2d7e0` (COL offset +0x0). sizeof >= 0x18 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
| 0x8 | 0x10 | object | `.` | Game::PlayerAlliances |
## `Game::SNMUpdateComplete`
Write `0x0076c680`, Read `0x008d1ad0`, IStreamable vftable `0x00a21ad0` (COL offset +0x0). sizeof >= 0x20 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x1c | string | `.` | |
## `Game::SNMUserNames`
Write `0x0082a8b0`, Read `0x0082a810`, IStreamable vftable `0x00a31a28` (COL offset +0x0). sizeof >= 0x18 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x10 | vector | `.` | Game::StrategyUserInfo |
| 0x14 | 0x4 | int | `.` | |
## `Game::SVSOAntiquarians`
Write `0x0054bb40`, Read `0x00551e90`, IStreamable vftable `0x009fab94` (COL offset +0x0). sizeof >= 0x20 (lower bound). **verified** -- fields exact; Read agrees on all 1 comparable offsets
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x10 | vector | `narts` | |
| 0x18 | 0x4 | int | `wpid` | |
| 0x1c | 0x4 | int | `wpturn` | |
Container-element fields (offsets are within the element / map node, not the object): `art`@+0x0
## `Game::SVSOAntiquarians::Artifact`
Write `0x005477e0`, Read `0x00547760`, IStreamable vftable `0x009fa410` (COL offset +0x0). sizeof >= 0x14 (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | handle | `shipid` | |
| 0x8 | 0x4 | handle | `salsid` | |
| 0xc | 0x4 | int | `salpid` | |
| 0x10 | 0x4 | int | `pvis` | |
## `Game::SVSOBrokenEmpire`
Write `0x0054bd50`, Read `0x0054bcc0`, IStreamable vftable `0x009fb134` (COL offset +0x0). sizeof >= 0x14 (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0xc | object | `pcs` | Game::Game::SVSOBrokenEmpire::VPCStat::?$NetworkIDDataMap |
## `Game::SVSOCrowDefenders`
Write `0x004f8c90`, Read `0x0050fe90`, IStreamable vftable `0x009f5904` (COL offset +0x0). sizeof >= 0x3c (lower bound). **verified** -- fields exact; Read agrees on all 1 comparable offsets
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | handle | `sys` | |
| 0x8 | 0x10 | vector | `ndsys` | |
| 0x18 | 0x10 | vector | `ndes` | |
| 0x38 | 0x4 | float | `drad` | |
## `Game::SVSOCrowRuins`
Write `0x00502730`, Read `0x005241d0`, IStreamable vftable `0x009f4d44` (COL offset +0x0). sizeof >= 0x28 (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x10 | vector | `NAsg` | |
| 0x18 | 0x10 | vector | `NWD` | |
Container-element fields (offsets are within the element / map node, not the object): `Esys`@+0x4
## `Game::SVSODerelict`
Write `0x004fc2b0`, Read `0x0051f2a0`, IStreamable vftable `0x009f4664` (COL offset +0x0). sizeof >= 0x28 (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | handle | `Eflt` | |
| 0x18 | 0x10 | vector | `NDsn` | |
Container-element fields (offsets are within the element / map node, not the object): `NAsg`@+0x4, `Esys`@+0x4
## `Game::SVSOGrandMenaceTrigger`
Write `0x004fca00`, Read `0x004fc9d0`, IStreamable vftable `0x009f1204` (COL offset +0x0). sizeof >= 0x8 (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `gmch` | |
## `Game::SVSOJewelsOfTheCrown`
Write `0x0054c740`, Read `0x0054c5f0`, IStreamable vftable `0x009fb1f4` (COL offset +0x0). sizeof >= 0x30 (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x4 | int | `JEWELLOCATIONID` | |
| 0xc | 0x4 | int | `JEWELSHIPID` | |
| 0x10 | 0x4 | int | `JEWELLOCATIONID` | |
| 0x14 | 0x10 | vector | `prjdone` | enum:uint |
| 0x2c | 0x4 | int | `PREVJEWELSHIPID` | |
## `Game::SVSOLandGrab`
Write `0x00548f70`, Read `0x0054a9e0`, IStreamable vftable `0x009fa92c` (COL offset +0x0). sizeof >= 0x8c (lower bound). **verified** -- fields exact; Read agrees on all 2 comparable offsets
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x4 | int | `nwt` | |
| 0x88 | 0x4 | float | `winr` | |
## `Game::SVSOLocust`
Write `0x00508ef0`, Read `0x0050d380`, IStreamable vftable `0x009f56bc` (COL offset +0x0). sizeof >= 0x3c (lower bound). **verified** -- fields exact; Read agrees on all 1 comparable offsets
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x1 | bool | `ini2` | |
| 0x8 | 0xc | object | `nst` | Game::Game::VLocustNestState::?$NetworkIDDataMap |
| 0x18 | 0xc | object | `flt` | Game::Game::VLocustFleetLogistics::?$NetworkIDDataMap |
| 0x28 | 0x4 | int | `des` | |
| 0x2c | 0x10 | vector | `vis` | enum:uint |
## `Game::SVSOMasterVoice`
Write `0x0054cd10`, Read `0x0054cc40`, IStreamable vftable `0x009fb094` (COL offset +0x0). sizeof >= 0x28 (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x10 | vector | `hom` | enum:uint |
| 0x18 | 0x10 | vector | `hmd` | enum:HomeState |
## `Game::SVSOMonitor`
Write `0x004fd810`, Read `0x0052b440`, IStreamable vftable `0x009f5854` (COL offset +0x0). sizeof >= 0x44 (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | handle | `Eflt` | |
| 0x18 | 0x10 | vector | `NDsn` | |
| 0x28 | 0x1c | string | `scnm` | |
Container-element fields (offsets are within the element / map node, not the object): `NAsg`@+0x4, `Esys`@+0x4
## `Game::SVSOOrtgay`
Write `0x00509510`, Read `0x00509390`, IStreamable vftable `0x009f0e94` (COL offset +0x0). sizeof >= 0x38 (lower bound). **verified** -- fields exact; Read agrees on all 5 comparable offsets
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x1 | bool | `init` | |
| 0x8 | 0x4 | int | `design` | |
| 0xc | 0x4 | int | `state` | |
| 0x10 | 0xc | object | `origin` | Vector3 |
| 0x1c | 0xc | object | `center` | Vector3 |
| 0x28 | 0x4 | int | `turnLv` | |
| 0x2c | 0x4 | int | `turnAn` | |
| 0x30 | 0x4 | int | `spawnturn` | |
| 0x34 | 0x4 | int | `spawnodds` | |
## `Game::SVSOProgressionWars`
Write `0x0054cdb0`, Read `0x00553490`, IStreamable vftable `0x009fb34c` (COL offset +0x0). sizeof >= 0x50 (lower bound). **verified** -- fields exact; Read agrees on all 8 comparable offsets
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x4 | int | `stg` | |
| 0xc | 0x4 | int | `sft` | |
| 0x10 | 0x4 | int | `snt` | |
| 0x14 | 0x4 | int | `snec` | |
| 0x18 | 0x4 | int | `ses` | |
| 0x1c | 0x4 | int | `snet` | |
| 0x20 | 0x4 | int | `snep` | |
| 0x24 | 0x4 | int | `srsi` | |
| 0x28 | 0x4 | int | `srs` | |
| 0x40 | 0x10 | vector | `lts` | String |
## `Game::SVSOPuppetMaster`
Write `0x00509f80`, Read `0x00511b80`, IStreamable vftable `0x009f3dcc` (COL offset +0x0). sizeof >= 0x2c (lower bound). **verified** -- fields exact; Read agrees on all 1 comparable offsets
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x4 | handle | `Flt` | |
| 0xc | 0x1 | bool | `Init2` | |
| 0x10 | 0x10 | vector | `NSys` | |
| 0x20 | 0xc | object | `End` | Vector3 |
## `Game::SVSORefugees`
Write `0x00509640`, Read `0x00526420`, IStreamable vftable `0x009f575c` (COL offset +0x0). sizeof >= 0x28 (lower bound). **verified** -- fields exact; Read agrees on all 1 comparable offsets
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0xc | 0x4 | int | `rsuc` | |
| 0x14 | 0x1 | bool | `ini` | |
| 0x18 | 0x10 | vector | `didc` | |
Container-element fields (offsets are within the element / map node, not the object): `pid`@+0xc, `rsu`@+0x10
## `Game::SVSORefugees::PlayerStatus`
Write `0x004fbf50`, Read `0x004fbeb0`, IStreamable vftable `0x009f11cc` (COL offset +0x0). sizeof >= 0x12 (lower bound). **verified** -- fields exact; Read agrees on all 3 comparable offsets
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `lr` | |
| 0x8 | 0x4 | int | `lrt` | |
| 0xc | 0x4 | int | `llc` | |
| 0x10 | 0x1 | bool | `atr` | |
| 0x11 | 0x1 | bool | `asy` | |
## `Game::SVSOSlaversRefuel`
Write `0x004fdf80`, Read `0x00520b00`, IStreamable vftable `0x009f4834` (COL offset +0x0). sizeof >= 0x3c (lower bound). **verified** -- fields exact; Read agrees on all 1 comparable offsets
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x10 | vector | `NAsg` | |
| 0x18 | 0x10 | vector | `NTD` | |
| 0x28 | 0x10 | vector | `NAD` | |
| 0x38 | 0x4 | int | `CDiff` | |
Container-element fields (offsets are within the element / map node, not the object): `Esys`@+0x4
## `Game::SVSOSots`
Write `0x0059ddf0`, Read `0x005a7a40`, IStreamable vftable `0x00a063c4` (COL offset +0x0). sizeof >= 0x38 (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `ScnID` | |
| 0x8 | 0x4 | object (ptr) | `ScnObj` | Game::SVSOScenarioBase |
| 0xc | 0x10 | vector | `NEncObjs` | |
| 0x34 | 0x4 | int | `numx` | |
Container-element fields (offsets are within the element / map node, not the object): `xscn`@+0xc, `xsc`@+0x28, `EncObj`@+0x4
## `Game::SVSOSwarm`
Write `0x0050a0c0`, Read `0x00520d50`, IStreamable vftable `0x009f48dc` (COL offset +0x0). sizeof >= 0x24 (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x10 | vector | `NAsg` | |
| 0x20 | 0x4 | vector (ptr) | `infest` | Game::SVSOSwarm::Infestation |
Container-element fields (offsets are within the element / map node, not the object): `Esys`@+0x4
## `Game::SVSOSwarm::Infestation`
Write `0x004fe0e0`, Read `0x00504bd0`, IStreamable vftable `0x009f1720` (COL offset +0x0). sizeof >= 0x19 (lower bound). **verified** -- fields exact; Read agrees on all 4 comparable offsets
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | handle | `sysid` | |
| 0x8 | 0x4 | int | `stg` | |
| 0xc | 0x4 | int | `strn` | |
| 0x10 | 0x4 | int | `mtrn` | |
| 0x14 | 0x4 | int | `trgtrn` | |
| 0x18 | 0x1 | bool | `canh` | |
## `Game::SVSOSwarmQueen`
Write `0x0050ac70`, Read `0x0050dea0`, IStreamable vftable `0x009f49e4` (COL offset +0x0). sizeof >= 0x40 (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x10 | 0x10 | vector | `Hives` | Game::SVSOSwarmQueen::HiveInfo |
| 0x20 | 0x10 | vector | `Queens` | Game::SVSOSwarmQueen::QueenInfo |
| 0x30 | 0x10 | vector | `SysMem` | enum:uint |
## `Game::SVSOSwarmQueen::HiveInfo`
Write `0x004fe730`, Read `0x004fe6f0`, IStreamable vftable `0x009f1a68` (COL offset +0x0). sizeof 0x10 (container stride). **verified** -- fields exact; Read agrees on all 1 comparable offsets; sizeof corroborated
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | handle | `HiveID` | |
| 0x8 | 0x4 | int | `NextQ` | |
| 0xc | 0x4 | handle | `QueenID` | |
## `Game::SVSOSwarmQueen::QueenInfo`
Write `0x004f6680`, Read `0x004fe780`, IStreamable vftable `0x009f1a78` (COL offset +0x0). sizeof 0xc (container stride). **clean** -- fields exact; sizeof corroborated
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | handle | `QueenID` | |
| 0x8 | 0x4 | handle | `QDstID` | |
## `Game::SVSOSystemKiller`
Write `0x0050af20`, Read `0x00511f90`, IStreamable vftable `0x009f3e6c` (COL offset +0x0). sizeof >= 0x2c (lower bound). **verified** -- fields exact; Read agrees on all 1 comparable offsets
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x4 | handle | `Flt` | |
| 0xc | 0x1 | bool | `Init2` | |
| 0x10 | 0x10 | vector | `NSys` | |
| 0x20 | 0xc | object | `End` | Vector3 |
## `Game::SVSOTraps`
Write `0x00509a70`, Read `0x005099e0`, IStreamable vftable `0x009f5bcc` (COL offset +0x0). sizeof >= 0x24 (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x14 | 0x10 | vector | `traps` | Game::SVSOTraps::Trap |
## `Game::SVSOTraps::Trap`
Write `0x004fca20`, Read `0x005042c0`, IStreamable vftable `0x009f12a0` (COL offset +0x0). sizeof 0x14 (container stride). **clean** -- fields exact; sizeof corroborated
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `sys` | |
| 0x8 | 0x4 | int | `pid` | |
| 0xc | 0x4 | int | `trenc` | |
| 0x10 | 0x4 | int | `trgenc` | |
## `Game::SVSOUpstartApes`
Write `0x0054d1b0`, Read `0x00563850`, IStreamable vftable `0x009fb4cc` (COL offset +0x0). sizeof >= 0x48 (lower bound). **verified** -- fields exact; Read agrees on all 2 comparable offsets
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0xc | 0x4 | int | `EMPIREFLAGS` | |
| 0x10 | 0x4 | int | `EMPIRESTANDING` | |
| 0x30 | 0x4 | int | `NEXTORDERTURN` | |
| 0x44 | 0x4 | int | `EARTHID` | |
Container-element fields (offsets are within the element / map node, not the object): `EMPIREORDERID`@+0x4, `EMPIREORDER`@+0x0
## `Game::SVSOUpstartApes_EO_DEMANDS_SHIPS`
Write `0x0054cfe0`, Read `0x0054cef0`, IStreamable vftable `0x009fb290` (COL offset +0x0). sizeof >= 0x30 (lower bound). **verified** -- fields exact; Read agrees on all 5 comparable offsets
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0xc | 0x4 | int | `OBJECTIVEID` | |
| 0x10 | 0x4 | int | `TURNCREATED` | |
| 0x14 | 0x10 | vector | `REQUESTS` | Game::SVSOUpstartApes_EO_DEMANDS_SHIPS::ShipRequest |
| 0x24 | 0x4 | int | `LASTTURN` | |
| 0x28 | 0x4 | int | `SUCCESSSTANDING` | |
| 0x2c | 0x4 | int | `FAILURESTANDING` | |
## `Game::SVSOUpstartApes_EO_DEMANDS_SHIPS::ShipRequest`
Write `0x0055d120`, Read `0x0055d040`, IStreamable vftable `0x009fa614` (COL offset +0x0). sizeof 0x20 (container stride). **verified** -- fields exact; Read agrees on all 1 comparable offsets; sizeof corroborated
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x1c | 0x4 | int | `NUMREQUIRED` | |
## `Game::SVSOUpstartApes_EO_DEMANDS_TRADE_GOODS`
Write `0x00548ce0`, Read `0x00548c90`, IStreamable vftable `0x009fa564` (COL offset +0x0). sizeof >= 0x18 (lower bound). **verified** -- fields exact; Read agrees on all 3 comparable offsets
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0xc | 0x4 | int | `OBJECTIVEID` | |
| 0x10 | 0x4 | int | `TURNCREATED` | |
| 0x14 | 0x4 | int | `LASTTURN` | |
## `Game::SVSOUpstartApes_EO_DEMANDS_VICTORY`
Write `0x00548ce0`, Read `0x00548c90`, IStreamable vftable `0x009fa534` (COL offset +0x0). sizeof >= 0x18 (lower bound). **verified** -- fields exact; Read agrees on all 3 comparable offsets
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0xc | 0x4 | int | `OBJECTIVEID` | |
| 0x10 | 0x4 | int | `TURNCREATED` | |
| 0x14 | 0x4 | int | `LASTTURN` | |
## `Game::SVSOUpstartApes_EO_ENERGY_WEAPONS_DECADENT`
Write `0x00548ce0`, Read `0x00548c90`, IStreamable vftable `0x009fa504` (COL offset +0x0). sizeof >= 0x18 (lower bound). **verified** -- fields exact; Read agrees on all 3 comparable offsets
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0xc | 0x4 | int | `OBJECTIVEID` | |
| 0x10 | 0x4 | int | `TURNCREATED` | |
| 0x14 | 0x4 | int | `LASTTURN` | |
## `Game::SVSOUpstartApes_EO_FEARS_YOUR_POWER`
Write `0x00548ce0`, Read `0x00548c90`, IStreamable vftable `0x009fa4d4` (COL offset +0x0). sizeof >= 0x18 (lower bound). **verified** -- fields exact; Read agrees on all 3 comparable offsets
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0xc | 0x4 | int | `OBJECTIVEID` | |
| 0x10 | 0x4 | int | `TURNCREATED` | |
| 0x14 | 0x4 | int | `LASTTURN` | |
## `Game::SVSOUpstartApes_EO_GIFTS`
Write `0x00548c50`, Read `0x00548c10`, IStreamable vftable `0x009fa54c` (COL offset +0x0). sizeof >= 0x14 (lower bound). **verified** -- fields exact; Read agrees on all 2 comparable offsets
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0xc | 0x4 | int | `OBJECTIVEID` | |
| 0x10 | 0x4 | int | `TURNCREATED` | |
## `Game::SVSOUpstartApes_EO_MUST_EXPAND`
Write `0x00548bb0`, Read `0x00548b50`, IStreamable vftable `0x009fa51c` (COL offset +0x0). sizeof >= 0x1c (lower bound). **verified** -- fields exact; Read agrees on all 3 comparable offsets
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0xc | 0x4 | int | `OBJECTIVEID` | |
| 0x10 | 0x4 | int | `TURNCREATED` | |
| 0x18 | 0x4 | int | `LASTTURN` | |
## `Game::SVSOUpstartApes_EO_REQUIRES_CASH`
Write `0x00548ce0`, Read `0x00548c90`, IStreamable vftable `0x009fa4ec` (COL offset +0x0). sizeof >= 0x18 (lower bound). **verified** -- fields exact; Read agrees on all 3 comparable offsets
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0xc | 0x4 | int | `OBJECTIVEID` | |
| 0x10 | 0x4 | int | `TURNCREATED` | |
| 0x14 | 0x4 | int | `LASTTURN` | |
## `Game::SVSOVonNeumann`
Write `0x0052b8d0`, Read `0x0050e130`, IStreamable vftable `0x009f59cc` (COL offset +0x0). sizeof >= 0x90 (lower bound). **verified** -- fields exact; Read agrees on all 14 comparable offsets
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x10 | vector | `dfts` | Game::SVSOVonNeumann::DefeatRecord |
| 0x24 | 0x4 | int | `rusav` | |
| 0x28 | 0x4 | int | `nenc` | |
| 0x2c | 0x4 | int | `nmb` | |
| 0x30 | 0x4 | int | `nml` | |
| 0x34 | 0x4 | int | `nbb` | |
| 0x38 | 0x4 | int | `nbl` | |
| 0x3c | 0x4 | int | `nskb` | |
| 0x40 | 0x4 | int | `nskl` | |
| 0x44 | 0x4 | handle | `vnhw` | |
| 0x48 | 0x8 | int64 | `vnhp` | |
| 0x50 | 0x4 | int | `mbid` | |
| 0x54 | 0x4 | int | `mbgid` | |
| 0x58 | 0x4 | int | `skgid` | |
| 0x5c | 0x4 | int | `ntm` | |
| 0x60 | 0x10 | vector | `mts` | enum:uint |
| 0x70 | 0x4 | int | `ntb` | |
| 0x74 | 0x1 | bool | `sken` | |
| 0x78 | 0x4 | int | `skdid` | |
| 0x7c | 0x4 | int | `skhid` | |
| 0x80 | 0x4 | int | `skfid` | |
| 0x84 | 0x4 | int | `sktq` | |
| 0x88 | 0x4 | int | `skt` | |
| 0x8c | 0x4 | int | `sktc` | |
## `Game::SVSOVonNeumann::DefeatRecord`
Write `0x004ff7f0`, Read `0x005051f0`, IStreamable vftable `0x009f1c9c` (COL offset +0x0). sizeof 0x18 (container stride). **verified** -- fields exact; Read agrees on all 4 comparable offsets; sizeof corroborated
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `sys` | |
| 0x8 | 0x4 | int | `ndft` | |
| 0xc | 0x4 | int | `lstd` | |
| 0x10 | 0x4 | int | `nxrv` | |
| 0x14 | 0x1 | bool | `bkdf` | |
## `Game::ServerNodeGraph`
Write `0x006e3530`, Read `0x006e61e0`, IStreamable vftable `0x00a1cc4c` (COL offset +0x44). sizeof >= 0x4c (lower bound). **verified** -- fields exact; Read agrees on all 1 comparable offsets
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x10 | vector | `paths` | Game::NodePath |
| 0x48 | 0x4 | int | `nextid` | |
## `Game::ServerNodeGraph::Params`
Write `0x006e3480`, Read `0x006e33a0`, IStreamable vftable `0x00a1cc6c` (COL offset +0x0). sizeof >= 0x28 (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `RSeed` | |
| 0x8 | 0x10 | vector | `PSeed` | Game::SimpleNodePath |
| 0x18 | 0x10 | vector | `SSeed` | int |
## `Game::ServerPlayer`
Write `0x008563e0`, Read `0x008804d0`, IStreamable vftable `0x00a32794` (COL offset +0x3a0). sizeof >= 0x3e0 (lower bound). **partial** -- 1 nested field(s) of unknown size
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x28 | 0x4 | int | `PlyrIdx` | |
| 0x2c | 0x4 | handle | `HomeSys` | |
| 0x30 | 0x10 | vector | `NumOwn` | |
| 0x34 | 0x4 | handle | `OwnId` | |
| 0x40 | 0x1c | string | `PlryName` | |
| 0x5c | 0x4 | int | `Species` | |
| 0x60 | 0x7 | object | `ClrID` | Game::PlayerColorID |
| 0x74 | 0x1c | string | `Bdg` | |
| 0x90 | 0x1c | string | `Avt` | |
| 0xac | 0x4 | int | `Team` | |
| 0xb0 | 0x4 | float | `IdealSuit` | |
| 0xb4 | 0x4 | float | `SuitTol` | |
| 0xb8 | 0x4 | float | `MaxOH` | |
| 0xbc | 0x4 | float | `ResRate` | |
| 0xc0 | 0x4 | float | `ResMod` | |
| 0xc4 | 0x4 | float | `ResScl` | |
| 0xd0 | 0x4 | float | `TRM` | |
| 0xd4 | 0x4 | int | `TRA` | |
| 0xd8 | 0x4 | int | `TRP` | |
| 0xe4 | 0x10 | vector | `NumDes` | |
| 0xf4 | 0x4 | object (ptr) | `TechTree` | Game::TechTree |
| 0xf8 | 0x1 | bool | `Elim` | |
| 0xfb | 0x1 | bool | `NPC` | |
| 0xfc | 0x1 | bool | `RebAI` | |
| 0xfd | 0x1 | bool | `ReqCL` | |
| 0xfe | 0x1 | bool | `AIBn` | |
| 0xff | 0x1 | bool | `CnTrd` | |
| 0x100 | 0x1 | bool | `CnRad` | |
| 0x101 | 0x1 | bool | `CnVItl` | |
| 0x102 | 0x1 | bool | `hgs` | |
| 0x103 | 0x1 | bool | `hadvs` | |
| 0x104 | 0x1 | bool | `harcc` | |
| 0x108 | 0x4 | float | `pddm` | |
| 0x118 | 0x4 | float | `SavMod` | |
| 0x124 | 0x4 | float | `OutMod` | |
| 0x128 | 0x4 | float | `RebOutMod` | |
| 0x12c | 0x4 | float | `ScOutMod` | |
| 0x130 | 0x4 | float | `PopMod` | |
| 0x134 | 0x4 | float | `TerraMod` | |
| 0x138 | 0x1 | bool | `AMine` | |
| 0x13c | 0x4 | float | `MinPure` | |
| 0x140 | 0x4 | float | `MinRate` | |
| 0x144 | 0x4 | int | `NGts` | |
| 0x148 | 0x4 | int | `PrGtTrf` | |
| 0x14c | 0x4 | int | `GTraf` | |
| 0x150 | 0x4 | float | `CstR` | |
| 0x154 | 0x4 | float | `CstE` | |
| 0x158 | 0x4 | float | `CstT` | |
| 0x15c | 0x4 | int | `Maint` | |
| 0x160 | 0x4 | float | `shrm` | |
| 0x164 | 0x4 | int | `Status` | |
| 0x168 | 0x10 | object | `Team` | Game::PlayerAlliances |
| 0x178 | 0x10 | vector | `NumLeg` | |
| 0x17c | 0x4 | handle | `DesID` | |
| 0x188 | 0x4 | int | `PvSav` | |
| 0x18c | 0x1 | bool | `PvMA` | |
| 0x19c | 0x4 | int | `HasDisc` | |
| 0x1a0 | 0x4 | int | `HasDiscSp` | |
| 0x1a4 | 0x4 | int | `HasDiscCl` | |
| 0x1a8 | 0x4 | int | `HasEnc` | |
| 0x1ac | 0x4 | int | `HasEng` | |
| 0x1b0 | 0x38 | object | `ShipRecs` | Game::ShipRecords |
| 0x1f4 | 0x10 | vector | `Ojvs` | Game::Objective |
| 0x204 | 0x10 | vector | `Nexp` | |
| 0x214 | 0x10 | vector | `NWeapXcl` | |
| 0x230 | 0x10 | vector | `dipstats` | Game::DiplomacyStats |
| 0x240 | 0x4 | object (ptr) | `comms` | Game::CommMessageContainer |
| 0x244 | 0x10 | vector | `preps` | Game::PlayerReport |
| 0x254 | 0x10 | vector | `odes` | Game::ObservedDesign |
| 0x264 | 0x10 | vector | `owep` | Game::ObservedWeapon |
| 0x274 | 0x10 | vector | `otch` | Game::ObservedTech |
| 0x284 | 0x4 | int | `Sav` | |
| 0x288 | 0x4 | int | `HasImm` | |
| 0x28c | 0x4 | int | `HasVac` | |
| 0x290 | 0x4 | int | `NPTrk` | |
| 0x298 | 0x4 | object (ptr) | `FNG` | Game::FleetNameGenerator |
| 0x29c | 0x18 | object | `Events` | Game::EventStorage |
| 0x2bc | 0x4 | int | `NumNotes` | |
| 0x2c4 | 0x4 | int | `BnkWrn` | |
| 0x2c8 | 0x4 | int | `BnkTrn` | |
| 0x2cc | 0x4 | int | `BnkEl` | |
| 0x2d0 | 0x4 | int | `BnkPr` | |
| 0x2d8 | 0x4 | int | `plcy` | |
| 0x2dc | 0x1c | string | `pswd` | |
| 0x2f8 | 0x1 | bool | `Srn` | |
| 0x2fc | 0x4 | handle | `SrnTo` | |
| 0x300 | 0x4 | int | `lboid` | |
| 0x304 | 0x4 | int | `lcid2` | |
| 0x30c | 0x4 | float | `IncMod` | |
| 0x310 | 0x10 | vector | `aid` | Game::PlayerAid |
| 0x320 | 0x10 | vector | `ndeflay` | |
| 0x330 | 0x1 | bool | `cdp` | |
| 0x334 | 0x4 | object (ptr) | `spy2` | Game::SpyReport |
| 0x338 | 0x10 | vector | `rdtc` | |
| 0x368 | 0x4 | int | `aidf` | |
| 0x370 | ? | object | `civr` | Game::CivilianRatios |
| 0x3a4 | 0x10 | vector | `NumPR` | |
| 0x3b4 | 0x1 | bool | `ResErrRoll` | |
| 0x3b5 | 0x1 | bool | `cta` | |
| 0x3b8 | 0x4 | object (ptr) | `AIR` | Game::AIRebellion |
| 0x3bc | 0x4 | object (ptr) | `AIEnf` | Game::AIEncounterFlags |
| 0x3c0 | 0x10 | vector | `NSprj` | |
| 0x3d0 | 0x4 | int | `NextPrjID` | |
| 0x3d4 | 0x4 | int | `lret` | |
| 0x3dc | 0x4 | int | `nmeid` | |
Container-element fields (offsets are within the element / map node, not the object): `ConMod`@+0x-c, `DesID`@+0x4, `Des`@+0x0, `Des`@+0x0, `Nts`@+0x10, `SprjT`@+0x3c, `Sprj`@+0x0, `WeapXcl`@+0x0, `deflay`@+0x0
## `Game::ServerSpyManager`
Write `0x00828a40`, Read `0x008381b0`, IStreamable vftable `0x00a30728` (COL offset +0x4). sizeof >= 0x20 (lower bound). **verified** -- fields exact; Read agrees on all 1 comparable offsets
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0xc | 0x4 | int | `xsid` | |
| 0x10 | 0x10 | vector | `nspy` | |
Container-element fields (offsets are within the element / map node, not the object): `spy`@+0x0
## `Game::ServerSystem`
Write `0x00749630`, Read `0x0075d4b0`, IStreamable vftable `0x00a2043c` (COL offset +0x8). sizeof >= 0x2d8 (lower bound). **partial** -- 4 nested field(s) of unknown size
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x18 | 0xc | object | `Pos` | Vector3 |
| 0x4c | 0x4 | float | `R` | |
| 0x50 | 0x4 | float | `G` | |
| 0x54 | 0x4 | float | `B` | |
| 0x58 | 0x4 | float | `A` | |
| 0x5c | 0x4 | int | `Idx` | |
| 0x60 | 0x4 | int | `Size` | |
| 0x64 | 0x4 | float | `Suit` | |
| 0x68 | 0x4 | int | `Res` | |
| 0x6c | 0x4 | int | `ARes2` | |
| 0x70 | 0x4 | int | `MRes` | |
| 0x74 | 0x4 | int | `TRes` | |
| 0x78 | 0x1 | bool | `haltv` | |
| 0x7c | 0x4 | float | `OutMod` | |
| 0x80 | 0x4 | int | `TAcq` | |
| 0x84 | 0x4 | int | `TFAcq` | |
| 0x88 | 0x1c | object | `Rts` | Game::StarSystem::OutputRates |
| 0xa4 | 0x4 | object (ptr) | `BQ` | Game::BuildQueue |
| 0xa8 | 0x1c | string | `Name` | |
| 0xc4 | 0x1 | bool | `Abdn` | |
| 0xc5 | 0x1 | bool | `Dstyd` | |
| 0xc6 | 0x1 | bool | `vnh` | |
| 0xc7 | 0x1 | bool | `vnd` | |
| 0xc8 | 0x1 | bool | `vnex3` | |
| 0xc9 | 0x1 | bool | `vnpex3` | |
| 0xcc | 0x4 | int | `VFlags` | |
| 0xd0 | 0x4 | int | `EFlags` | |
| 0xd4 | 0x4 | int | `AFlags` | |
| 0xd8 | 0x4 | int | `FFlags` | |
| 0xdc | 0x4 | int | `GFlags` | |
| 0xe0 | 0x4 | int | `MnRFlags` | |
| 0xe4 | 0x4 | int | `RfRFlags` | |
| 0xe8 | 0x4 | int | `ClkFlags` | |
| 0xf0 | 0x8 | int64 | `Bats2` | |
| 0xf8 | 0x8 | int64 | `rcex` | |
| 0x100 | 0x4 | handle | `PID` | |
| 0x104 | ? | object | `dcs` | Game::Population |
| 0x118 | 0x4 | float | `dsu` | |
| 0x11c | 0x8 | object | `cm` | Game::Morale |
| 0x13c | 0x10 | vector | `cme2` | Game::MoraleEvent |
| 0x14c | 0x8 | object | `PvCM` | Game::Morale |
| 0x16c | 0x10 | vector | `NumFlts` | |
| 0x17c | 0x4 | float | `RepCur` | |
| 0x180 | 0x4 | float | `RepMax` | |
| 0x184 | 0x4 | int | `EggScio` | |
| 0x188 | 0x1 | bool | `NoRebAI` | |
| 0x189 | 0x1 | bool | `PvNoRebAI` | |
| 0x18c | 0x4 | int | `Pop` | |
| 0x190 | 0x4 | float | `Infra` | |
| 0x194 | 0x4 | int | `pbon` | |
| 0x198 | 0x4 | float | `ibon` | |
| 0x19c | 0x4 | int | `TerrFl` | |
| 0x1a0 | ? | object | `Pop2` | Game::Population |
| 0x1b4 | ? | object | `pbon2` | Game::Population |
| 0x1c8 | 0x4 | object (ptr) | `indi` | Game::IndependenceInfo |
| 0x1cc | 0x10 | vector | `spies2` | int |
| 0x1dc | 0x4 | int | `rbfl` | |
| 0x1e0 | 0x1 | bool | `hsrg` | |
| 0x1e4 | 0x4 | int | `adt` | |
| 0x200 | 0x4 | int | `PvPop` | |
| 0x204 | 0x4 | float | `PvInfra` | |
| 0x208 | 0x4 | float | `PvSuit` | |
| 0x20c | 0x4 | int | `PvRes` | |
| 0x210 | 0x4 | int | `PvARes2` | |
| 0x214 | 0x4 | int | `PvMRes` | |
| 0x218 | ? | object | `PvPop2` | Game::Population |
| 0x238 | 0x4 | handle | `DefF` | |
| 0x23c | 0x4 | handle | `DefSF` | |
| 0x240 | 0x10 | vector | `NumGFs` | |
| 0x250 | 0x10 | vector | `NumSnF` | |
| 0x260 | 0x10 | vector | `NumMnF` | |
| 0x274 | 0x4 | handle | `PID` | |
| 0x278 | 0x4 | int | `NVO` | |
| 0x288 | 0x4 | int | `NVE` | |
| 0x298 | 0x4 | int | `NVs` | |
| 0x2a8 | 0x10 | vector | `NumPlgs2` | |
| 0x2b8 | 0x4 | int | `TnsOH` | |
| 0x2bc | 0x4 | int | `TDst` | |
| 0x2c4 | 0x4 | int | `ntdev` | |
| 0x2c8 | 0x4 | int | `ltis` | |
| 0x2cc | 0x4 | int | `rbtn` | |
| 0x2d0 | 0x4 | int | `rbfr` | |
| 0x2d4 | 0x4 | int | `rbwn` | |
Container-element fields (offsets are within the element / map node, not the object): `Plg`@+0x0, `TShn`@+0x12, `OID`@+0x14, `isind`@+0x18, `indi`@+0x1c, `EPid`@+0x0, `ETS`@+0x12, `Eid`@+0x14, `PID`@+0x0, `pview`@+0x10
## `Game::ServerTradeManagerImpl`
Write `0x0082cb60`, Read `0x00858a10`, IStreamable vftable `0x00a31b64` (COL offset +0x4c). sizeof >= 0x2c (lower bound). **verified** -- fields exact; Read agrees on all 1 comparable offsets
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x4 | float | `SctSize` | |
| 0x1c | 0x10 | vector | `NumTradeSectors` | |
Container-element fields (offsets are within the element / map node, not the object): `TradeID`@+0x4, `Trade`@+0x0, `rt`@+0x0
## `Game::ServerTradeSector`
Write `0x0082c8c0`, Read `0x00858290`, IStreamable vftable `0x00a31b30` (COL offset +0x8). sizeof >= 0xb4 (lower bound). **verified** -- fields exact; Read agrees on all 1 comparable offsets
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x18 | 0xc | object | `Pos` | Vector3 |
| 0x68 | 0x4 | int | `tsgridID` | |
| 0x6c | 0xc | object | `tsctr` | Vector3 |
| 0x78 | 0x10 | vector | `tsnumsys` | |
| 0x88 | 0x4 | int | `tssec` | |
| 0x8c | 0x4 | int | `tsct` | |
| 0x90 | 0x4 | int | `tscr` | |
| 0x94 | 0x4 | int | `ptssec` | |
| 0x98 | 0x4 | int | `ptsct` | |
| 0x9c | 0x4 | int | `ptscr` | |
| 0xa0 | 0x10 | vector | `tsnumflt` | |
| 0xb0 | 0x4 | vector (ptr) | `fwarn` | Game::ServerTradeSector::FreighterWarning |
Container-element fields (offsets are within the element / map node, not the object): `tssys`@+0x4
## `Game::ServerTradeSector::FreighterWarning`
Write `0x008197d0`, Read `0x00819780`, IStreamable vftable `0x00a2d858` (COL offset +0x0). sizeof 0xc (container stride). **verified** -- fields exact; Read agrees on all 1 comparable offsets; sizeof corroborated
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `pid` | |
| 0x8 | 0x4 | int | `ntrns` | |
## `Game::ShipBuildOrder`
Write `0x00813800`, Read `0x00813770`, IStreamable vftable `0x00a0c160` (COL offset +0x0). sizeof >= 0x18 (lower bound). **verified** -- fields exact; Read agrees on all 3 comparable offsets
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `desID` | |
| 0x8 | 0x4 | int | `con` | |
| 0xc | 0x4 | int | `sav` | |
| 0x10 | 0x4 | int | `conleft` | |
| 0x14 | 0x4 | int | `ordID` | |
## `Game::ShipBuildOrderDef`
Write `0x00813800`, Read `0x00813770`, IStreamable vftable `0x00a0ad08` (COL offset +0x0). sizeof 0x18 (container stride). **verified** -- fields exact; Read agrees on all 3 comparable offsets; sizeof corroborated
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `desID` | |
| 0x8 | 0x4 | int | `con` | |
| 0xc | 0x4 | int | `sav` | |
| 0x10 | 0x4 | int | `conleft` | |
| 0x14 | 0x4 | int | `ordID` | |
## `Game::ShipDesignDef::LegacyGunBank`
Write `0x008d1ab0`, Read `0x008d1a90`, IStreamable vftable `0x00a2db3c` (COL offset +0x0). sizeof 0x8 (container stride). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
## `Game::ShipDesignDef::LegacyWeaponDef`
Write `0x00813950`, Read `0x00846260`, IStreamable vftable `0x00a2df7c` (COL offset +0x0). sizeof >= 0x20 (lower bound). **verified** -- fields exact; Read agrees on all 1 comparable offsets
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x1c | 0x4 | int | `DWi` | |
## `Game::ShipDesignDef::Section`
Write `0x00827180`, Read `0x0087e390`, IStreamable vftable `0x00a2db4c` (COL offset +0x0). sizeof >= 0x28 (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x10 | vector | `DGbnk2` | Game::ShipDesignDef::GunBank |
| 0x18 | 0x10 | vector | `DOpts` | String |
## `Game::ShipHealth`
Write `0x00813e50`, Read `0x00813df0`, IStreamable vftable `0x009f1e50` (COL offset +0x0). sizeof >= 0x0 (lower bound). **partial** -- only container elements / computed values recovered
## `Game::ShipParams`
Write `0x005700a0`, Read `0x005717d0`, IStreamable vftable `0x009e3d88` (COL offset +0x0). sizeof >= 0xa4 (lower bound). **partial** -- 1 nested field(s) of unknown size
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x1c | string | `.` | |
| 0x20 | 0x4 | int | `.` | |
| 0x24 | 0x10 | vector | `.` | Game::ShipParams::Section |
| 0x34 | 0x10 | vector | `.` | |
| 0x44 | 0x4 | int | `.` | |
| 0x48 | 0x4 | int | `.` | |
| 0x4c | 0x4 | int | `.` | |
| 0x50 | 0x4 | int | `.` | |
| 0x54 | 0x4 | int | `.` | |
| 0x58 | 0x4 | int | `.` | |
| 0x5c | ? | object | `.` | Game::ShipHealth |
| 0x6c | 0x18 | object | `.` | Game::PrisonerHold |
| 0x84 | 0x1 | bool | `.` | |
| 0x85 | 0x1 | bool | `.` | |
| 0x86 | 0x1 | bool | `.` | |
| 0x88 | 0x4 | int | `.` | |
| 0x8c | 0x4 | float | `.` | |
| 0x90 | 0x4 | int | `.` | |
| 0x94 | 0x1 | bool | `.` | |
| 0x98 | 0xc | object | `.` | Game::WeaponGroups |
## `Game::ShipParams::Section`
Write `0x0056fff0`, Read `0x0056ff20`, IStreamable vftable `0x009fdcec` (COL offset +0x0). sizeof 0x50 (container stride). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x0 | 0x1c | string | `.` | |
| 0x38 | 0x10 | vector | `.` | Game::ShipParams::GunBank |
| 0x48 | 0x8 | object | `.` | Game::CombatTechFlags |
## `Game::ShipRecords`
Write `0x008176a0`, Read `0x008560d0`, IStreamable vftable `0x00a3144c` (COL offset +0x0). sizeof >= 0x38 (lower bound). **verified** -- fields exact; Read agrees on all 1 comparable offsets
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x10 | 0x4 | int | `srl` | |
| 0x34 | 0x4 | handle | `srd` | |
Container-element fields (offsets are within the element / map node, not the object): `srb`@+0x-c, `srk`@+0xc, `sri`@+0x18
## `Game::ShipSectionID`
Write `0x0056ed50`, Read `0x0056ed10`, IStreamable vftable `0x00a1a720` (COL offset +0x0). sizeof >= 0x8 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x0 | 0x4 | int | `.` | |
| 0x4 | 0x4 | int | `.` | |
## `Game::ShipWeapon`
Write `0x0056f450`, Read `0x00571130`, IStreamable vftable `0x009fdc8c` (COL offset +0x0). sizeof >= 0x24 (lower bound). **verified** -- fields exact; Read agrees on all 2 comparable offsets
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x0 | 0x1c | string | `wfn` | |
| 0x1c | 0x4 | int | `wid` | |
| 0x20 | 0x4 | int | `did` | |
## `Game::SimpleNodePath`
Write `0x006e2390`, Read `0x006e2330`, IStreamable vftable `0x009f1dd0` (COL offset +0x0). sizeof 0x8 (container stride). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x2 | int16 | `.` | |
| 0x6 | 0x2 | int16 | `.` | |
## `Game::SlaversRefuelEncounterResult`
Write `0x004f9fe0`, Read `0x004fdd20`, IStreamable vftable `0x009f1708` (COL offset +0x0). sizeof >= 0xc (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x4 | int | `.` | |
## `Game::Slot`
Write `0x00827c30`, Read `0x00827b40`, IStreamable vftable `0x00a2e03c` (COL offset +0x0). sizeof >= 0x164 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0xbc | 0xa1 | object | `.` | Game::SlotUser |
| 0x160 | 0x4 | int | `.` | |
## `Game::SlotDef`
Write `0x008276d0`, Read `0x00832790`, IStreamable vftable `0x00a2db6c` (COL offset +0x0). sizeof 0xbc (enumeration meets embedding). **verified** -- fields exact; Read agrees on all 15 comparable offsets; sizeof corroborated
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x0 | 0x1 | bool | `IsPlay` | |
| 0x1 | 0x1 | bool | `IsDead` | |
| 0x2 | 0x1 | bool | `IsReq` | |
| 0x3 | 0x1 | bool | `IsRec` | |
| 0x4 | 0x1 | bool | `IsFxNm` | |
| 0x8 | 0x1c | string | `FxNm` | |
| 0x24 | 0x1 | bool | `IsFxSp` | |
| 0x28 | 0x4 | int | `FxSp` | |
| 0x2c | 0x1 | bool | `IsFxCr` | |
| 0x30 | 0x7 | object | `FxCrID` | Game::PlayerColorID |
| 0x44 | 0x1 | bool | `IsFxBd` | |
| 0x48 | 0x1c | string | `FxBd` | |
| 0x64 | 0x1 | bool | `IsFxAv` | |
| 0x68 | 0x1c | string | `FxAv` | |
| 0x84 | 0x4 | int | `Team` | |
| 0x88 | 0x4 | int | `Tag` | |
| 0x8c | 0x1c | string | `Pwd` | |
| 0xa8 | 0x14 | object | `Settings` | Game::StrategyPlayerGameSettings |
## `Game::SlotUser`
Write `0x00827a00`, Read `0x008278a0`, IStreamable vftable `0x00a2db7c` (COL offset +0x0). sizeof 0xa4 (enumeration meets embedding). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x0 | 0x4 | int | `.` | |
| 0x4 | 0x4 | int | `.` | |
| 0x8 | 0x4 | int | `.` | |
| 0xc | 0x4 | int | `.` | |
| 0x10 | 0x1c | string | `.` | |
| 0x2c | 0x4 | int | `.` | |
| 0x30 | 0x4 | int | `.` | |
| 0x34 | 0x7 | object | `.` | Game::PlayerColorID |
| 0x48 | 0x1c | string | `.` | |
| 0x64 | 0x1c | string | `.` | |
| 0x80 | 0x1 | bool | `.` | |
| 0x84 | 0x1c | string | `.` | |
| 0xa0 | 0x1 | bool | `.` | |
## `Game::SpecialProject`
Write `0x00814760`, Read `0x008146c0`, IStreamable vftable `0x00a21938` (COL offset +0x0). sizeof 0x34 (enumeration meets embedding). **verified** -- fields exact; Read agrees on all 5 comparable offsets; sizeof corroborated
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `SPid` | |
| 0x8 | 0x4 | int | `Sts` | |
| 0xc | 0x4 | float | `Cst` | |
| 0x10 | 0x4 | int | `MxC` | |
| 0x14 | 0x1c | string | `Nm` | |
| 0x30 | 0x4 | int | `Trns` | |
## `Game::SpecialProjectImpl`
Write `0x008285d0`, Read `0x00828530`, IStreamable vftable `0x00a306f0` (COL offset +0x0). sizeof >= 0x40 (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x34 | object | `SPi` | Game::SpecialProject |
| 0x3c | 0x4 | int | `Stp` | |
## `Game::SpecialProjectNameGen`
Write `0x008147e0`, Read `0x00852960`, IStreamable vftable `0x00a32730` (COL offset +0x0). sizeof >= 0x8 (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | handle | `Nm` | |
## `Game::SpeciesRatios`
Write `0x0053c5e0`, Read `0x0053d220`, IStreamable vftable `0x009f9714` (COL offset +0x0). sizeof >= 0x0 (lower bound). **partial** -- only container elements / computed values recovered
Container-element fields (offsets are within the element / map node, not the object): `nv`@+0x1, `va2`@+0x0
## `Game::SpyCraft`
Write `0x00814940`, Read `0x00837dc0`, IStreamable vftable `0x00a30718` (COL offset +0x0). sizeof >= 0x44 (lower bound). **verified** -- fields exact; Read agrees on all 5 comparable offsets
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `sid` | |
| 0x8 | 0x4 | int | `sown` | |
| 0xc | 0x4 | int | `atto` | |
| 0x10 | 0x4 | int | `deat` | |
| 0x14 | 0x4 | int | `tdep` | |
| 0x18 | 0x4 | float | `cbh` | |
| 0x1c | 0x4 | int | `spyon` | |
| 0x20 | 0x4 | int | `spyat` | |
| 0x24 | 0x4 | int | `cm` | |
| 0x28 | 0x4 | float | `cmo` | |
| 0x2c | 0x10 | vector | `ncp` | |
| 0x3c | 0x4 | float | `sdo` | |
| 0x40 | 0x4 | int | `sdet` | |
## `Game::SpyReport`
Write `0x00828ec0`, Read `0x008843d0`, IStreamable vftable `0x00a32b2c` (COL offset +0x0). sizeof >= 0x30 (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x4 | int | `defc2` | |
| 0x14 | 0x4 | int | `rtc` | |
| 0x20 | 0x4 | int | `evc` | |
| 0x2c | 0x4 | int | `ttc` | |
Container-element fields (offsets are within the element / map node, not the object): `def`@+0x8, `strd`@+0x8, `evs`@+0x8, `tt`@+0x8
## `Game::SpyReportDefences`
Write `0x00828ba0`, Read `0x00828b10`, IStreamable vftable `0x00a313e8` (COL offset +0x0). sizeof >= 0x50 (lower bound). **verified** -- fields exact; Read agrees on all 1 comparable offsets
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `stn` | |
| 0x8 | 0x48 | object | `sdef` | Game::DefenceSummary |
## `Game::SpyReportEvents`
Write `0x00828e40`, Read `0x00828da0`, IStreamable vftable `0x00a307ac` (COL offset +0x0). sizeof >= 0x18 (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `spl` | |
| 0x8 | 0x10 | vector | `ste` | int |
## `Game::SpyReportTechTree`
Write `0x00814ba0`, Read `0x00814b40`, IStreamable vftable `0x00a318b4` (COL offset +0x0). sizeof >= 0xc (lower bound). **verified** -- fields exact; Read agrees on all 1 comparable offsets
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `stn` | |
| 0x8 | 0x4 | int | `spl` | |
Container-element fields (offsets are within the element / map node, not the object): `St`@+0x4, `TResCost`@+0x8, `TResDone`@+0xc, `TAcq`@+0x14, `TiAcq`@+0x18, `Tbd`@+0x1c, `Tfc`@+0x20, `TUnlck`@+0x10
## `Game::SpyReportTrade`
Write `0x00828cf0`, Read `0x00828c20`, IStreamable vftable `0x00a313f8` (COL offset +0x0). sizeof >= 0x20 (lower bound). **verified** -- fields exact; Read agrees on all 1 comparable offsets
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `stn` | |
| 0x8 | 0x4 | int | `spl` | |
| 0xc | 0x4 | int | `sctr` | |
| 0x10 | 0x10 | vector | `srt` | Game::SpyReportTradeRoute |
## `Game::SpyReportTradeRoute`
Write `0x00814aa0`, Read `0x00838980`, IStreamable vftable `0x00a3079c` (COL offset +0x0). sizeof 0x20 (container stride). **verified** -- fields exact; Read agrees on all 1 comparable offsets; sizeof corroborated
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `stn` | |
| 0x8 | 0x4 | int | `sctr` | |
| 0xc | 0x4 | int | `spl` | |
| 0x10 | 0x10 | vector | `sdgc` | |
## `Game::StarFleet`
Write `0x00701070`, Read `0x00702470`, IStreamable vftable `0x00a1d5f8` (COL offset +0x8). sizeof >= 0x120 (lower bound). **partial** -- 1 nested field(s) of unknown size
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x18 | 0xc | object | `Pos` | Vector3 |
| 0x4c | 0xc | object | `PrvPos` | Vector3 |
| 0x58 | 0x4 | handle | `PID` | |
| 0x5c | 0x1c | string | `FtName` | |
| 0x78 | 0x1 | bool | `Perm` | |
| 0x7c | ? | object | `Lay` | Game::FleetLayout |
| 0xa0 | 0x4 | handle | `LocID` | |
| 0xa4 | 0x10 | vector | `NShips` | |
| 0xc4 | 0x38 | object | `FPlan` | Game::FlightPlan |
| 0xfc | 0x4 | int | `FtTrans` | |
| 0x100 | 0xc | object | `FtOrig` | Vector3 |
| 0x10c | 0x4 | int | `FtFlg` | |
| 0x110 | 0x4 | int | `Ftae` | |
| 0x114 | 0x4 | int | `Ftpae` | |
| 0x118 | 0x4 | int | `FtEnc` | |
| 0x11c | 0x4 | int | `FtMS` | |
Container-element fields (offsets are within the element / map node, not the object): `Ship`@+0x0
## `Game::StarMapNode`
Write `0x00727820`, Read `0x00727790`, IStreamable vftable `0x00a1e620` (COL offset +0x8). sizeof >= 0x24 (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x18 | 0xc | object | `Pos` | Vector3 |
## `Game::StarMapParams`
Write `0x00727a10`, Read `0x00739510`, IStreamable vftable `0x009fb2a8` (COL offset +0x0). sizeof 0x38 (enumeration meets embedding). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
| 0x8 | 0x10 | vector | `.` | Game::SystemParams |
| 0x18 | 0x10 | vector | `.` | |
| 0x28 | 0x10 | vector | `.` | Game::SimpleNodePath |
## `Game::StarShip`
Write `0x008291f0`, Read `0x00853fa0`, IStreamable vftable `0x00a31408` (COL offset +0x8). sizeof >= 0xb0 (lower bound). **partial** -- 1 nested field(s) of unknown size
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x10 | 0x4 | handle | `PlrID` | |
| 0x14 | 0x4 | handle | `DesID` | |
| 0x20 | 0x4 | float | `Range` | |
| 0x24 | ? | object | `Health` | Game::ShipHealth |
| 0x34 | 0x4 | int | `MineCap` | |
| 0x38 | 0x10 | vector | `NTH` | |
| 0x48 | 0x4 | int | `Plg` | |
| 0x4c | 0x4 | int | `Act` | |
| 0x50 | 0x1 | bool | `Dep` | |
| 0x51 | 0x1 | bool | `Atq` | |
| 0x5c | 0x4 | int | `LCT` | |
| 0x60 | 0x4 | int | `tsd` | |
| 0x64 | 0x4 | handle | `FltID` | |
| 0x68 | 0x4 | int | `ConCap` | |
| 0x6c | 0x4 | float | `RefCap` | |
| 0x70 | 0x4 | float | `RepCap` | |
| 0x7c | 0x4 | int | `EncID` | |
| 0x80 | 0x18 | object | `PrisH` | Game::PrisonerHold |
| 0x98 | 0x4 | object (ptr) | `BQ2` | Game::BuildQueue |
| 0x9c | 0x4 | object (ptr) | `pop` | Game::Population |
| 0xa0 | 0x4 | object (ptr) | `ppop` | Game::Population |
| 0xa8 | 0x4 | int | `atsp` | |
| 0xac | 0x4 | int | `tblt` | |
## `Game::StarSystem`
Write `0x00727820`, Read `0x00727790`, IStreamable vftable `0x00a200d4` (COL offset +0x8). sizeof >= 0x24 (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x18 | 0xc | object | `Pos` | Vector3 |
## `Game::StarSystem::OutputRates`
Write `0x00745190`, Read `0x007472a0`, IStreamable vftable `0x00a1f884` (COL offset +0x0). sizeof 0x1c (enumeration meets embedding). **verified** -- fields exact; Read agrees on all 7 comparable offsets; sizeof corroborated
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x0 | 0x4 | float | `SRt` | |
| 0x4 | 0x4 | float | `SRsc` | |
| 0x8 | 0x4 | float | `SRtf` | |
| 0xc | 0x4 | float | `SRi` | |
| 0x10 | 0x4 | float | `SRoh` | |
| 0x14 | 0x4 | float | `SRs` | |
| 0x18 | 0x4 | int | `SRnr` | |
## `Game::StarSystem::PlayerView`
Write `0x007492d0`, Read `0x00752af0`, IStreamable vftable `0x00a201ac` (COL offset +0x0). sizeof >= 0x5c (lower bound). **partial** -- 2 nested field(s) of unknown size
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x4 | int | `VTrn` | |
| 0xc | 0x4 | int | `Pop` | |
| 0x10 | ? | object | `Pop2` | Game::Population |
| 0x24 | 0x4 | float | `Infra` | |
| 0x28 | 0x4 | float | `Suit` | |
| 0x2c | 0x4 | int | `Res` | |
| 0x30 | 0x4 | int | `ARes2` | |
| 0x34 | 0x4 | int | `MRes` | |
| 0x38 | 0x1 | bool | `NoRebAI` | |
| 0x3c | 0x4 | int | `pbon` | |
| 0x40 | ? | object | `pbon2` | Game::Population |
| 0x54 | 0x4 | float | `ibon` | |
| 0x58 | 0x4 | int | `TerrFl` | |
## `Game::StrategyAIAgent::DesignNameGen`
Write `0x006c77a0`, Read `0x006ccc70`, IStreamable vftable `0x00a1b124` (COL offset +0x0). sizeof >= 0x8 (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | object (ptr) | `dnid` | Game::ShipSectionID |
## `Game::StrategyAIAgent::Streamable`
Write `0x006c6f00`, Read `0x006c8fd0`, IStreamable vftable `0x00a1a61c` (COL offset +0x0). sizeof >= 0x8 (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | vector (ptr) | `prs2` | Game::AIPlayerRequestStamp |
Container-element fields (offsets are within the element / map node, not the object): `AIAttr`@+0x24, `pid`@+0xc, `trns`@+0x10, `NBStab`@+0x38, `BStabTn`@+0x4, `NMBlst`@+0x48, `MBlstTn`@+0x4, `AIDNG`@+0x344, `AISysID`@+0x4, `AISys`@+0x10, `NCmbR`@+0x28, `CmbR`@+0x0, `CLSyID`@+0x0, `CLPlID`@+0x0, `NPrv`@+0x32c, `NPrvId`@+0x0, `NPrvVa`@+0x4, `NTecS`@+0x13c, `TecS`@+0x0
## `Game::StrategyGameCreateParams`
Write `0x0082ae40`, Read `0x00832cc0`, IStreamable vftable `0x00a25574` (COL offset +0x0). sizeof >= 0xf0 (lower bound). **verified** -- fields exact; Read agrees on all 19 comparable offsets
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x1c | string | `Name` | |
| 0x20 | 0x4 | int | `ID` | |
| 0x24 | 0x4 | int | `RSeed` | |
| 0x28 | 0x1c | string | `Key` | |
| 0x44 | 0x38 | object | `MapP` | Game::StarMapParams |
| 0x7c | 0x4 | int | `MapS` | |
| 0x80 | 0x1c | string | `MapF` | |
| 0x9c | 0x4 | int | `NSys` | |
| 0xa0 | 0x4 | float | `REnc` | |
| 0xa4 | 0x4 | float | `SDist` | |
| 0xa8 | 0x4 | float | `SSize` | |
| 0xac | 0x4 | float | `SRes` | |
| 0xb0 | 0x4 | float | `SSuit` | |
| 0xb4 | 0x4 | int | `MaxP` | |
| 0xb8 | 0x4 | int | `ASpec` | |
| 0xbc | 0x1 | bool | `bAlly` | |
| 0xc0 | 0x4 | int | `NTeam` | |
| 0xc4 | 0x1 | bool | `tmgrp` | |
| 0xcc | 0x4 | int | `PSav` | |
| 0xd0 | 0x4 | int | `PCol` | |
| 0xd4 | 0x4 | int | `PTech` | |
| 0xd8 | 0x4 | int | `AID` | |
| 0xdc | 0x4 | float | `IncM` | |
| 0xe0 | 0x4 | float | `ResM` | |
| 0xe4 | 0xc | object | `scrp` | Game::StrategyScriptParams |
## `Game::StrategyGameInfo`
Write `0x00829960`, Read `0x00875cb0`, IStreamable vftable `0x00a07ba0` (COL offset +0x0). sizeof >= 0x9c (lower bound). **verified** -- fields exact; Read agrees on all 10 comparable offsets
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x20 | 0x1c | string | `GameName` | |
| 0x3c | 0x4 | int | `Turn` | |
| 0x40 | 0x4 | int | `NumSys` | |
| 0x44 | 0x4 | int | `Checksum` | |
| 0x48 | 0x4 | int | `MapShape` | |
| 0x4c | 0x10 | vector | `Players` | Game::StrategyPlayerInfo |
| 0x5c | 0x18 | object | `Session` | Game::StrategySessionParams |
| 0x74 | 0x4 | float | `IncMod` | |
| 0x78 | 0x4 | float | `ResMod` | |
| 0x7c | 0x1 | bool | `Alliances` | |
| 0x7d | 0x1 | bool | `Teams` | |
| 0x7e | 0x1 | bool | `Encounters` | |
| 0x80 | 0x1c | string | `Scenario` | |
## `Game::StrategyGameLoadParams`
Write `0x0076c680`, Read `0x008d1ad0`, IStreamable vftable `0x00a241b4` (COL offset +0x0). sizeof >= 0x20 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x1c | string | `.` | |
## `Game::StrategyGameLoader::CustomDataTable`
Write `0x0086a9d0`, Read `0x008709a0`, IStreamable vftable `0x00a323d0` (COL offset +0x0). sizeof >= 0x0 (lower bound). **partial** -- only container elements / computed values recovered
## `Game::StrategyGameParams`
Write `0x0082b1d0`, Read `0x0082b0d0`, IStreamable vftable `0x00a256fc` (COL offset +0x0). sizeof >= 0x1f4 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
| 0x104 | 0xf0 | object | `.` | Game::StrategyGameCreateParams |
## `Game::StrategyHostParams`
Write `0x0082b4b0`, Read `0x0082b3c0`, IStreamable vftable `0x00a25790` (COL offset +0x0). sizeof >= 0x244 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x2c | 0x1 | bool | `.` | |
| 0x30 | 0x1c | string | `.` | |
| 0x4c | 0x1 | bool | `.` | |
| 0x50 | 0x1f4 | object | `.` | Game::StrategyGameParams |
| 0x16c | 0x18 | object | `.` | Game::StrategySessionParams |
## `Game::StrategyLaunchParams`
Write `0x0082acd0`, Read `0x0082ac50`, IStreamable vftable `0x00a22a20` (COL offset +0x0). sizeof >= 0x22c (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x1c | string | `.` | |
| 0x20 | 0x20c | object | `.` | Game::StrategySimParams |
## `Game::StrategyPlayerGameSettings`
Write `0x00817390`, Read `0x00817330`, IStreamable vftable `0x00a07344` (COL offset +0x0). sizeof >= 0x14 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
| 0x8 | 0x4 | int | `.` | |
| 0xc | 0x4 | int | `.` | |
| 0x10 | 0x4 | int | `.` | |
## `Game::StrategyPlayerInfo`
Write `0x008298d0`, Read `0x00829820`, IStreamable vftable `0x00a077d8` (COL offset +0x0). sizeof 0xc4 (container stride). **verified** -- fields exact; Read agrees on all 1 comparable offsets; sizeof corroborated
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0xbc | object | `Slot` | Game::SlotDef |
| 0xc0 | 0x4 | int | `Rank` | |
## `Game::StrategyPlayerParams`
Write `0x0082b6d0`, Read `0x0082b580`, IStreamable vftable `0x00a2e0bc` (COL offset +0x0). sizeof 0xac (container stride). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x0 | 0x4 | int | `.` | |
| 0x4 | 0x1c | string | `.` | |
| 0x20 | 0x1 | bool | `.` | |
| 0x24 | 0x1c | string | `.` | |
| 0x40 | 0x4 | int | `.` | |
| 0x44 | 0x4 | int | `.` | |
| 0x48 | 0x7 | object | `.` | Game::PlayerColorID |
| 0x5c | 0x1c | string | `.` | |
| 0x78 | 0x1c | string | `.` | |
| 0x94 | 0x1 | bool | `.` | |
| 0x98 | 0x14 | object | `.` | Game::StrategyPlayerGameSettings |
## `Game::StrategyScriptParams`
Write `0x0082ad40`, Read `0x00870ac0`, IStreamable vftable `0x00a25370` (COL offset +0x0). sizeof >= 0xc (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x4 | int | `spc` | |
Container-element fields (offsets are within the element / map node, not the object): `spsn`@+0x8, `sppn`@+0x24, `sppv`@+0x40
## `Game::StrategyServer`
Write `0x0079fa70`, Read `0x007d27a0`, IStreamable vftable `0x00a26084` (COL offset +0x0). sizeof >= 0x320 (lower bound). **verified** -- fields exact; Read agrees on all 18 comparable offsets
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x4 | int | `ModCount` | |
| 0xc | 0x4 | int | `Frame` | |
| 0x10 | 0x4 | int | `GOTurn` | |
| 0x14 | 0x4 | int | `GameID` | |
| 0x18 | 0x10 | vector | `GOWinPly` | enum:uint |
| 0x28 | 0x1c | string | `GameName` | |
| 0x44 | 0x10 | vector | `NumSys` | |
| 0x54 | 0x10 | vector | `NumPlrs` | |
| 0x64 | 0x10 | vector | `NumFlts` | |
| 0x74 | 0x10 | vector | `NumActs` | |
| 0x9c | 0x4 | int | `NMLc` | |
| 0xbc | 0x4 | int | `Map` | |
| 0xc0 | 0x4 | float | `IncMod` | |
| 0xc4 | 0x4 | float | `ResMod` | |
| 0xc8 | 0x1 | bool | `EnAl` | |
| 0xc9 | 0x1 | bool | `EnTm` | |
| 0x134 | 0x1c | string | `KeyPath` | |
| 0x154 | 0x4 | object (ptr) | `NdGr2` | Game::ServerNodeGraph |
| 0x158 | 0x4 | object (ptr) | `trdmgr` | Game::ServerTradeManager |
| 0x15c | 0x4 | object (ptr) | `spymgr` | Game::IServerSpyManager |
| 0x160 | 0x4 | object (ptr) | `sprjs` | Game::SpecialProjectNameGen |
| 0x164 | 0x4 | object (ptr) | `Attrib` | Game::AttribMap |
| 0x16c | 0x4 | object (ptr) | `RNG` | RNG |
| 0x1a0 | 0x4 | float | `RandEncAdj` | |
| 0x1b4 | 0x4 | object (ptr) | `SvSctOb` | Game::SVScriptObject |
| 0x1b8 | 0x4 | int | `NPCm` | |
| 0x1bc | 0x4 | int | `NPCo` | |
| 0x1c0 | 0x4 | int | `NPCi` | |
| 0x1c4 | 0x4 | int | `NPCv` | |
| 0x1c8 | 0x4 | int | `NPCa` | |
| 0x1cc | 0x4 | float | `szadj` | |
| 0x1d0 | 0x4 | float | `rsadj` | |
| 0x1d4 | 0x4 | float | `suadj` | |
| 0x1f8 | 0x4 | int | `cmbtid` | |
| 0x1fc | 0x4 | handle | `numcreps` | |
| 0x200 | 0x4 | object (ptr) | `turnstats` | Game::GameTurnHistory |
| 0x2c8 | 0x10 | vector | `ninv` | |
| 0x31c | 0x4 | int | `zdsc` | |
Container-element fields (offsets are within the element / map node, not the object): `.`@+0x4, `.`@+0x4, `.`@+0x4, `.`@+0x4, `.`@+0x4, `.`@+0x4, `crep`@+0x8, `AllExc`@+0x0, `AllExc`@+0x4, `AllExc`@+0x0, `AllExc`@+0x4, `AllExcCFp`@+0x0, `AllExcCFp`@+0x4, `Player`@+0x0, `Sys`@+0x0, `Flt`@+0x0
## `Game::StrategySessionParams`
Write `0x0082b360`, Read `0x0082b280`, IStreamable vftable `0x00a075a4` (COL offset +0x0). sizeof 0x18 (enumeration meets embedding). **clean** -- fields exact; sizeof corroborated
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x14 | object | `TMRS` | Game::StrategyTimerParams |
## `Game::StrategySimParams`
Write `0x0082b8f0`, Read `0x0082b800`, IStreamable vftable `0x00a2dd6c` (COL offset +0x0). sizeof >= 0x20c (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x18 | 0x1f4 | object | `.` | Game::StrategyGameParams |
| 0x134 | 0x10 | vector | `.` | Game::StrategyPlayerParams |
## `Game::StrategyTimerParams`
Write `0x008173e0`, Read `0x00820040`, IStreamable vftable `0x00a07334` (COL offset +0x0). sizeof >= 0x14 (lower bound). **verified** -- fields exact; Read agrees on all 4 comparable offsets
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | float | `TSTL` | |
| 0x8 | 0x4 | float | `TCTL` | |
| 0xc | 0x4 | float | `TQTL` | |
| 0x10 | 0x4 | float | `TQTLE` | |
## `Game::StrategyTurnInfo`
Write `0x00816370`, Read `0x008162c0`, IStreamable vftable `0x00a2d6e0` (COL offset +0x0). sizeof >= 0x34 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
| 0x14 | 0x4 | float | `.` | |
| 0x18 | 0x4 | int | `.` | |
| 0x1c | 0x4 | int | `.` | |
| 0x20 | 0x4 | int | `.` | |
| 0x30 | 0x4 | int | `.` | |
Container-element fields (offsets are within the element / map node, not the object): `.`@+0x8, `.`@+0xc
## `Game::StrategyUserInfo`
Write `0x00816450`, Read `0x00816410`, IStreamable vftable `0x00a21928` (COL offset +0x0). sizeof 0x24 (container stride). **partial** -- 2 field(s) via an untyped sub-writer
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x1c | string | `.` | |
| 0x20 | 0x4 | opaque | `.` | |
| 0x21 | 0x4 | opaque | `.` | |
## `Game::SwarmEncounterParams`
Write `0x004f9fe0`, Read `0x004fdd20`, IStreamable vftable `0x009f174c` (COL offset +0x0). sizeof >= 0xc (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x4 | int | `.` | |
## `Game::SwarmEncounterResult`
Write `0x0050a420`, Read `0x0050a360`, IStreamable vftable `0x009f175c` (COL offset +0x0). sizeof >= 0x10 (lower bound). **partial** -- 1 nested field(s) of unknown size
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x4 | int | `.` | |
| 0xc | 0x4 | int | `.` | |
| 0x10 | ? | object | `.` | Game::ShipHealth |
## `Game::SwarmQueenEncounterResult`
Write `0x004f9fe0`, Read `0x004fdd20`, IStreamable vftable `0x009f1a98` (COL offset +0x0). sizeof >= 0xc (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x4 | int | `.` | |
## `Game::SystemEvent`
Write `0x008189a0`, Read `0x00839e30`, IStreamable vftable `0x00a243ac` (COL offset +0x0). sizeof 0x24 (container stride). **clean** -- fields exact; sizeof corroborated
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `ses` | |
| 0x8 | 0x4 | int | `set` | |
| 0xc | 0x4 | int | `seop` | |
| 0x10 | 0x4 | int | `senp` | |
| 0x14 | 0x10 | vector | `seno2` | |
## `Game::SystemKillerEncounterResult`
Write `0x004f9fe0`, Read `0x004fdd20`, IStreamable vftable `0x009f1c20` (COL offset +0x0). sizeof >= 0xc (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x4 | int | `.` | |
## `Game::SystemParams`
Write `0x00727950`, Read `0x00727880`, IStreamable vftable `0x00a1d9ec` (COL offset +0x0). sizeof >= 0x38 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0xc | object | `.` | Vector3 |
| 0x10 | 0x1c | string | `.` | |
| 0x2c | 0x4 | int | `.` | |
| 0x30 | 0x4 | int | `.` | |
| 0x34 | 0x4 | float | `.` | |
## `Game::TacReport`
Write `0x00458e60`, Read `0x00458c00`, IStreamable vftable `0x009e4600` (COL offset +0x0). sizeof >= 0x91 (lower bound). **verified** -- fields exact; Read agrees on all 13 comparable offsets
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `TRid` | |
| 0x8 | 0x4 | int | `TRal` | |
| 0xc | 0x1d | object | `TRby` | Game::TacReportEvents |
| 0x2c | 0x1d | object | `TRto` | Game::TacReportEvents |
| 0x58 | 0x4 | int | `TRsats` | |
| 0x70 | 0x4 | int | `TRbal` | |
| 0x74 | 0x4 | int | `TRlas` | |
| 0x78 | 0x4 | int | `TRmis` | |
| 0x7c | 0x4 | int | `TRmin` | |
| 0x80 | 0x4 | int | `TRnrg` | |
| 0x84 | 0x4 | int | `TRbio` | |
| 0x88 | 0x4 | int | `TRbrd` | |
| 0x8c | 0x1 | bool | `TRsld` | |
| 0x8d | 0x1 | bool | `TRsldd` | |
| 0x8e | 0x1 | bool | `TRsldc` | |
| 0x8f | 0x1 | bool | `TRsldi` | |
| 0x90 | 0x1 | bool | `TRsldr` | |
Container-element fields (offsets are within the element / map node, not the object): `TRships`@+0x-c, `TRshipsL`@+0xc
## `Game::TacReportEvents`
Write `0x004565d0`, Read `0x00456540`, IStreamable vftable `0x009e45f0` (COL offset +0x0). sizeof 0x20 (enumeration meets embedding). **verified** -- fields exact; Read agrees on all 7 comparable offsets; sizeof corroborated
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `TREhd` | |
| 0x8 | 0x4 | int | `TREhi` | |
| 0xc | 0x4 | float | `TREd` | |
| 0x10 | 0x4 | float | `TREdp` | |
| 0x14 | 0x4 | float | `TREdi` | |
| 0x18 | 0x4 | float | `TREdt` | |
| 0x1c | 0x1 | bool | `TREb` | |
## `Game::TechOffer`
Write `0x00853900`, Read `0x008537f0`, IStreamable vftable `0x00a23d44` (COL offset +0x0). sizeof 0x10 (container stride). **clean** -- fields exact; sizeof corroborated
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `giv` | |
| 0x8 | 0x4 | int | `rcp` | |
## `Game::TechOfferProject`
Write `0x008535c0`, Read `0x00853530`, IStreamable vftable `0x00a31884` (COL offset +0x0). sizeof >= 0x5d (lower bound). **verified** -- fields exact; Read agrees on all 5 comparable offsets
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x34 | object | `SPi` | Game::SpecialProject |
| 0x3c | 0x4 | int | `Stp` | |
| 0x40 | 0x4 | float | `AOdd` | |
| 0x44 | 0x4 | float | `AInc` | |
| 0x4c | 0x4 | int | `RCst` | |
| 0x50 | 0x4 | int | `RDn` | |
| 0x54 | 0x4 | int | `giv` | |
| 0x58 | 0x4 | int | `rcp` | |
| 0x5c | 0x1 | bool | `rcpd2` | |
## `Game::TechProject`
Write `0x00853390`, Read `0x00853280`, IStreamable vftable `0x00a31834` (COL offset +0x0). sizeof >= 0x54 (lower bound). **verified** -- fields exact; Read agrees on all 4 comparable offsets
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x34 | object | `SPi` | Game::SpecialProject |
| 0x3c | 0x4 | int | `Stp` | |
| 0x40 | 0x4 | float | `AOdd` | |
| 0x44 | 0x4 | float | `AInc` | |
| 0x4c | 0x4 | int | `RCst` | |
| 0x50 | 0x4 | int | `RDn` | |
## `Game::TechTree`
Write `0x005890a0`, Read `0x00588910`, IStreamable vftable `0x00a003a8` (COL offset +0x0). sizeof >= 0x0 (lower bound). **partial** -- only container elements / computed values recovered
Container-element fields (offsets are within the element / map node, not the object): `NumBrs`@+0x4
## `Game::TradeRoute`
Write `0x00819650`, Read `0x008208d0`, IStreamable vftable `0x00a2d848` (COL offset +0x0). sizeof >= 0x24 (lower bound). **verified** -- fields exact; Read agrees on all 5 comparable offsets
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `tro` | |
| 0x8 | 0x4 | int | `trfow` | |
| 0xc | 0x4 | int | `trfr` | |
| 0x10 | 0x4 | int | `trfrs` | |
| 0x14 | 0x4 | int | `trtow` | |
| 0x18 | 0x4 | int | `trto` | |
| 0x1c | 0x4 | int | `trtos` | |
| 0x20 | 0x4 | int | `trtc` | |
## `Game::TradeSector`
Write `0x00727820`, Read `0x00727790`, IStreamable vftable `0x00a30cac` (COL offset +0x8). sizeof >= 0x24 (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x18 | 0xc | object | `Pos` | Vector3 |
## `Game::TurnCommands`
Write `0x00842540`, Read `0x00892ae0`, IStreamable vftable `0x00a25e00` (COL offset +0x0). sizeof >= 0x6d (lower bound). **partial** -- 1 nested field(s) of unknown size
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
| 0x8 | 0x4 | float | `.` | |
| 0xc | 0x1 | bool | `.` | |
| 0x10 | 0x4 | int | `.` | |
| 0x14 | 0x1 | bool | `.` | |
| 0x18 | 0x4 | int | `.` | |
| 0x1c | 0x4 | float | `.` | |
| 0x20 | 0x1 | bool | `.` | |
| 0x24 | 0x1 | bool | `.` | |
| 0x28 | 0x4 | int | `.` | |
| 0x2c | 0x1 | bool | `.` | |
| 0x30 | 0x4 | float | `.` | |
| 0x34 | 0x4 | float | `.` | |
| 0x38 | 0x4 | float | `.` | |
| 0x3c | 0x1 | bool | `.` | |
| 0x40 | ? | object | `.` | Game::CivilianRatios |
| 0x6c | 0x1 | bool | `.` | |
Container-element fields (offsets are within the element / map node, not the object): `.`@+0x4, `.`@+0x8, `.`@+0x4, `.`@+0x8, `.`@+0xc, `.`@+0x4, `.`@+0x8, `.`@+0xc, `.`@+0x0, `.`@+0x4, `.`@+0x8, `.`@+0xc, `.`@+0x4, `.`@+0x8, `.`@+0xc, `.`@+0x10, `.`@+0x4, `.`@+0x8, `.`@+0xc, `.`@+0x10, `.`@+0x4, `.`@+0x8, `.`@+0x4, `.`@+0x8, `.`@+0xc, `.`@+0x4, `.`@+0x8
## `Game::UpdateData`
Write `0x004515b0`, Read `0x00451570`, IStreamable vftable `0x009e3ee4` (COL offset +0x0). sizeof >= 0x10 (lower bound). **partial** -- 1 field(s) via an untyped sub-writer
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
| 0x8 | 0x4 | float | `.` | |
| 0xc | 0x4 | opaque | `.` | |
## `Game::VNFinsolEncounterResult`
Write `0x004f9fe0`, Read `0x004fdd20`, IStreamable vftable `0x009f1d00` (COL offset +0x0). sizeof >= 0xc (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x4 | int | `.` | |
## `Game::VNHomeEncounterParams`
Write `0x00500390`, Read `0x005002c0`, IStreamable vftable `0x009f1d38` (COL offset +0x0). sizeof >= 0x28 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x4 | int | `.` | |
| 0xc | 0x4 | int | `.` | |
| 0x10 | 0x4 | int | `.` | |
| 0x14 | 0x4 | int | `.` | |
| 0x18 | 0x4 | int | `.` | |
| 0x20 | 0x8 | int64 | `.` | |
## `Game::VNHomeEncounterResult`
Write `0x00500460`, Read `0x00500410`, IStreamable vftable `0x009f1d48` (COL offset +0x0). sizeof >= 0x18 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x4 | int | `.` | |
| 0x10 | 0x8 | int64 | `.` | |
## `Game::VonNeumannEncounterParams`
Write `0x004f9fe0`, Read `0x004fdd20`, IStreamable vftable `0x009f1d18` (COL offset +0x0). sizeof >= 0xc (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x4 | int | `.` | |
## `Game::VonNeumannEncounterResult`
Write `0x00500280`, Read `0x00500230`, IStreamable vftable `0x009f1d28` (COL offset +0x0). sizeof >= 0x10 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x4 | int | `.` | |
| 0xc | 0x4 | int | `.` | |
## `Game::WeaponGroups`
Write `0x0056fd10`, Read `0x0056fbf0`, IStreamable vftable `0x009e3c60` (COL offset +0x0). sizeof >= 0xc (lower bound). **clean** -- fields exact; sizeof is a lower bound only
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x8 | object | `wgb` | Game::GunBankSelection |
## `Game::XenoTechsPerSpecies`
Write `0x0053d1f0`, Read `0x0053d1a0`, IStreamable vftable `0x009e4650` (COL offset +0x0). sizeof >= 0x4 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x0 | 0x4 | int | `.` | |
## `Game::ZuulInfestation`
Write `0x005361e0`, Read `0x00536160`, IStreamable vftable `0x009f8cb0` (COL offset +0x0). sizeof >= 0x24 (lower bound). **verified** -- fields exact; Read agrees on all 1 comparable offsets
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x8 | 0x4 | handle | `PlgSys` | |
| 0xc | 0x4 | int | `PlgCByF` | |
| 0x10 | 0x4 | handle | `PlgCBy` | |
| 0x18 | 0x8 | int64 | `PlgNZ` | |
| 0x20 | 0x4 | float | `PlgZdr` | |
## `Mars::FNMBase`
Write `0x009047c0`, Read `0x00904590`, IStreamable vftable `0x00a41a44` (COL offset +0x0). sizeof >= 0x24 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x1c | string | `.` | |
| 0x20 | 0x4 | int | `.` | |
## `Mars::FNMChunk`
Write `0x009048d0`, Read `0x009046d0`, IStreamable vftable `0x00a41a30` (COL offset +0x0). sizeof >= 0x30 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x1c | string | `.` | |
| 0x20 | 0x4 | int | `.` | |
| 0x24 | 0x4 | int | `.` | |
| 0x28 | 0x4 | int | `.` | |
| 0x2c | 0x4 | raw | `.` | |
## `Mars::FNMChunkReply`
Write `0x009047c0`, Read `0x00904590`, IStreamable vftable `0x00a41aa8` (COL offset +0x0). sizeof >= 0x24 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x1c | string | `.` | |
| 0x20 | 0x4 | int | `.` | |
## `Mars::FNMDone`
Write `0x00904920`, Read `0x00904610`, IStreamable vftable `0x00a41a6c` (COL offset +0x0). sizeof >= 0x2c (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x1c | string | `.` | |
| 0x20 | 0x4 | int | `.` | |
| 0x24 | 0x4 | int | `.` | |
| 0x28 | 0x4 | int | `.` | |
## `Mars::FNMDoneReply`
Write `0x009047c0`, Read `0x00904590`, IStreamable vftable `0x00a41abc` (COL offset +0x0). sizeof >= 0x24 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x1c | string | `.` | |
| 0x20 | 0x4 | int | `.` | |
## `Mars::FNMError`
Write `0x00904960`, Read `0x00904690`, IStreamable vftable `0x00a41a80` (COL offset +0x0). sizeof >= 0x40 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x1c | string | `.` | |
| 0x20 | 0x4 | int | `.` | |
| 0x24 | 0x1c | string | `.` | |
## `Mars::FNMSendNotify`
Write `0x00904840`, Read `0x009045c0`, IStreamable vftable `0x00a41a58` (COL offset +0x0). sizeof >= 0x28 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x1c | string | `.` | |
| 0x20 | 0x4 | int | `.` | |
| 0x24 | 0x4 | int | `.` | |
## `Mars::FNMSendReply`
Write `0x009047c0`, Read `0x00904590`, IStreamable vftable `0x00a41a94` (COL offset +0x0). sizeof >= 0x24 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x1c | string | `.` | |
| 0x20 | 0x4 | int | `.` | |
## `Mars::LaunchParams`
Write `0x0076c680`, Read `0x008d1ad0`, IStreamable vftable `0x009e4138` (COL offset +0x0). sizeof >= 0x20 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x1c | string | `.` | |
## `Mars::NMCommand`
Write `0x008d1ec0`, Read `0x008d1e20`, IStreamable vftable `0x00a39678` (COL offset +0x0). sizeof >= 0x8 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | object (ptr) | `.` | Command |
## `Mars::NMLoad`
Write `0x008d1d60`, Read `0x008d1c70`, IStreamable vftable `0x00a396b4` (COL offset +0x0). sizeof >= 0x3c (lower bound). **partial** -- 1 nested field(s) of unknown size
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | ? | object | `.` | SyncParams |
| 0x34 | 0x4 | object (ptr) | `.` | LaunchParams |
| 0x38 | 0x4 | int | `.` | |
## `Mars::NMSyncCheck`
Write `0x008d2000`, Read `0x008d1f50`, IStreamable vftable `0x00a3968c` (COL offset +0x0). sizeof >= 0x8 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | object (ptr) | `.` | SyncChecksumBuffer |
## `Mars::NMSyncError`
Write `0x008d1ab0`, Read `0x008d1a90`, IStreamable vftable `0x00a396a0` (COL offset +0x0). sizeof >= 0x8 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
## `Mars::RNG`
Write `0x008e6ca0`, Read `0x008e6c30`, IStreamable vftable `0x009e9aec` (COL offset +0x0). sizeof >= 0x0 (lower bound). **partial** -- only container elements / computed values recovered
## `Mars::SyncChecksumBuffer`
Write `0x0042f720`, Read `0x00907e60`, IStreamable vftable `0x00a41e54` (COL offset +0x0). sizeof >= 0x1c (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x4 | int | `.` | |
| 0x8 | 0x4 | int | `.` | |
| 0xc | 0x10 | vector | `.` | int |
## `Mars::SyncParams`
Write `0x00907d40`, Read `0x00907cd0`, IStreamable vftable `0x00a41e64` (COL offset +0x0). sizeof >= 0x30 (lower bound). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | 0x1 | bool | `.` | |
| 0x5 | 0x1 | bool | `.` | |
| 0x8 | 0x1c | string | `.` | |
| 0x24 | 0x4 | int | `.` | |
| 0x28 | 0x4 | int | `.` | |
| 0x2c | 0x4 | int | `.` | |
## `Mars::TNMConnect`
Write `0x008fd880`, Read `0x008fd7c0`, IStreamable vftable `0x00a40dd0` (COL offset +0x0). sizeof >= 0x0 (lower bound). **partial** -- 4 nested field(s) of unknown size
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | ? | object | `.` | TNID |
| 0xc | ? | object | `.` | TNID |
| 0x14 | ? | object | `.` | TNID |
| 0x1c | ? | object | `.` | TNID |
## `Mars::TNMDisconnect`
Write `0x008fd750`, Read `0x008fd920`, IStreamable vftable `0x00a40dbc` (COL offset +0x0). sizeof >= 0x0 (lower bound). **partial** -- 3 nested field(s) of unknown size
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | ? | object | `.` | TNID |
| 0xc | ? | object | `.` | TNID |
| 0x14 | ? | object | `.` | TNID |
## `Mars::TNMHost`
Write `0x008fd750`, Read `0x008fd920`, IStreamable vftable `0x00a40da8` (COL offset +0x0). sizeof >= 0x0 (lower bound). **partial** -- 3 nested field(s) of unknown size
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | ? | object | `.` | TNID |
| 0xc | ? | object | `.` | TNID |
| 0x14 | ? | object | `.` | TNID |
## `Mars::TNMMessage`
Write `0x008fd9d0`, Read `0x008fd9a0`, IStreamable vftable `0x00a40c4c` (COL offset +0x0). sizeof >= 0x1c (lower bound). **partial** -- 2 nested field(s) of unknown size
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | ? | object | `.` | TNID |
| 0xc | ? | object | `.` | TNID |
| 0x14 | 0x1 | bool | `.` | |
| 0x18 | 0x4 | object (ptr) | `.` | NetMessage |
## `Mars::TNMessage`
Write `0x008fd6b0`, Read `0x008fd5f0`, IStreamable vftable `0x00a40d94` (COL offset +0x0). sizeof >= 0x0 (lower bound). **partial** -- 2 nested field(s) of unknown size
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x4 | ? | object | `.` | TNID |
| 0xc | ? | object | `.` | TNID |
## `Quaternion`
Write `0x008a7aa0`, Read `0x008a7a50`, IStreamable vftable `0x009e2458` (COL offset +0x0). sizeof 0x10 (enumeration meets embedding). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x0 | 0x4 | float | `.` | |
| 0x4 | 0x4 | float | `.` | |
| 0x8 | 0x4 | float | `.` | |
| 0xc | 0x4 | float | `.` | |
## `Vector2`
Write `0x008b9e30`, Read `0x008b9e00`, IStreamable vftable `0x009e24d8` (COL offset +0x0). sizeof 0x8 (container stride). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x0 | 0x4 | float | `.` | |
| 0x4 | 0x4 | float | `.` | |
## `Vector3`
Write `0x008a60d0`, Read `0x008a6090`, IStreamable vftable `0x009e2498` (COL offset +0x0). sizeof 0xc (enumeration meets embedding). **unnamed** -- offsets and types recovered; the writer passes a NULL name so the fields have no on-disk names and cannot be matched against Read by name
| offset | size | kind | tag | type |
|---|---|---|---|---|
| 0x0 | 0x4 | float | `.` | |
| 0x4 | 0x4 | float | `.` | |
| 0x8 | 0x4 | float | `.` | |