freeso/TSOClient/tso.simantics/Model/VMStackObjectVariable.cs
riperiperi ac88b84c0e Propert OBJM parsing (TS1 save files)
Seems to catch everything included in complete collection. Missing:

- Some unknowns about things that never appear to be different (512 flag for stack, unknown data always 1)
- A bunch of info for Person type objects:
  - Interaction queue (partially worked out)
  - Motive changes
  - Routing info
  - Find best action history?
  - A bunch of fields that are 0 most of the time...

Person type objects read up to these unknown fields. (includes appearance, animations, motives, person data)

Until info for people is worked out, the game still recreates all objects and people when opening the lot (with full tile positions), rather than restoring existing state. (so stuff doesn't get stuck occupied)

Fixes a lot of objects being missing when loading saved lots in Simitone.
2025-03-02 19:33:39 +00:00

87 lines
2.4 KiB
C#

namespace FSO.SimAntics.Model
{
public enum VMStackObjectVariable
{
Invalid = -1,
Graphic = 0,
Direction = 1,
ContainerId = 2,
SlotNumber = 3,
AllowedHeightFlags = 4,
WallAdjacencyFlags = 5,
RouteId = 6, //TODO (unused in script)
RoomImpact = 7,
Flags = 8,
RoutePrefference = 9, //TODO
RoutePenalty = 10, //TODO
ObjectId = 11,
TargetId = 12,
WallPlacementFlags = 13,
SlotHierNumber = 14,
RepairState = 15,
LightSource = 16,
WalkStyle = 17,
SimAge = 18,
UnusedGender = 19,
TreeTableEntry = 20,
BirthMinutes = 21,
Speed = 22,
RotationNotches = 23,
BirthHour = 24,
LockoutCount = 25,
ParentId = 26, // TODO (object linked list per tile)
Weight = 27,
SupportStrength = 28,
Room = 29,
RoomPlacement = 30, //TODO (inside/outside only)
PrepValue = 31,
CookValue = 32,
SurfaceValue = 33,
Hidden = 34,
Temperature = 35,
DisposeValue = 36,
WashDishValue = 37,
EatingSurfaceValue = 38,
DirtyLevel = 39,
FlagField2 = 40,
CurrentValue = 41,
PlacementFlags = 42,
MovementFlags = 43, //players can move it, players can delete it, stays after evict
MaximumGrade = 44,
BirthYear = 45,
BirthMonth = 46,
BirthDay = 47,
AgeInMonths = 48, //TODO
Size = 49,
HideInteraction = 50,
LightingContribution = 51,
PrimitiveResult = 52,
WallBlockFlags = 53, //TODO
PrimitiveResultID = 54,
GlobalWearRepairState = 55,
AgeInvenQtrDaysStart = 56,
AgeQtrDays = 57,
ObjectVersion = 58,
Category = 59,
SimIndependent = 60, //TODO: thread executes while paused
ServingSurfaceValue = 61,
UseCount = 62,
ExclusivePlacementFlags = 63,
GardeningValue = 64,
WashHandsValue = 65,
FunctionScore = 66,
SlotCount = 67,
PersistedFlags = 68,
kUnused_RandomSeedLO = 69, //that's a fun name...
SalePriceHi = 70,
SalePriceLo = 71,
GroupID = 72,
Reserved73 = 73,
Reserved74 = 74,
Reserved75 = 75,
Reserved76 = 76,
Reserved77 = 77,
Reserved78 = 78,
FSOEngineQuery = 79
}
}