Commit Graph

2629 Commits

Author SHA1 Message Date
Aaron Kimbrell
0cdf3afe3d feat(entity): the client's roller component (105)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 07:21:13 -05:00
Aaron Kimbrell
e585a035e0 feat(entity): the client's gate rush component (103)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 07:19:31 -05:00
Aaron Kimbrell
d1a778a140 feat(entity): the client's faction trigger component (72)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 07:17:47 -05:00
Aaron Kimbrell
a6381be720 feat(entity): the client's rocket landing component (68)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 07:15:54 -05:00
Aaron Kimbrell
8c5e7ee0e1 feat(entity): the client's generic activator component (64)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 07:14:12 -05:00
Aaron Kimbrell
a286bea854 feat(entity): the client's showcase model handler component (62)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 07:12:31 -05:00
Aaron Kimbrell
4dba9c2aeb feat(entity): the client's custom build assembly component (59)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 07:10:50 -05:00
Aaron Kimbrell
6628aa2d45 feat(entity): the client's package component (53)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 07:09:10 -05:00
Aaron Kimbrell
464dd759fa feat(entity): the client's choice build component (52)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 07:06:54 -05:00
Aaron Kimbrell
bd6e419290 feat(entity): the client's changeling component (51)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 07:05:18 -05:00
Aaron Kimbrell
912f5998ae feat(entity): the client's spring pad component (41)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 07:03:00 -05:00
Aaron Kimbrell
b4c25a2512 feat(entity): the client's model builder component (38)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 07:01:24 -05:00
Aaron Kimbrell
6d185b6e2f feat(entity): the client's arcade component (29)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 06:59:38 -05:00
Aaron Kimbrell
0e37994d6c feat(entity): the client's module (a car or rocket part) component (28)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 06:57:54 -05:00
Aaron Kimbrell
62c770aa56 feat(entity): the client's blueprint component (24)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 06:56:19 -05:00
Aaron Kimbrell
e2b2c4c48d feat(entity): the client's chest component (22)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 06:54:42 -05:00
Aaron Kimbrell
939e30e6a8 feat(entity): the client's rebuild activator component (14)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 06:53:03 -05:00
Aaron Kimbrell
d4cd459747 feat(entity): the client's build controller component (13)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 06:51:13 -05:00
Aaron Kimbrell
60aaa9ec3f feat(entity): the client's modular build (rocket and car building) component (12)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 06:49:28 -05:00
Aaron Kimbrell
b9ad46a52e feat(entity): the client's platform boundary component (27)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 06:46:20 -05:00
Aaron Kimbrell
a9c4a2fe26 feat(entity): the client's culling plane component (116)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 06:43:53 -05:00
Aaron Kimbrell
e37f919700 feat(entity): the client's 3D ambient sound component (56)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 06:41:32 -05:00
Aaron Kimbrell
ba748d17d2 feat(entity): the client's 2D ambient sound component (55)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 06:39:41 -05:00
Aaron Kimbrell
b971d91a25 feat(entity): the client's sound repeater component (54)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 06:38:00 -05:00
Aaron Kimbrell
ee86102e97 feat(entity): NPC minifigures have the client's minifig component
The client makes LWOMiniFigComponent (35) from the registry; DLU had nothing for it. It sends nothing (the client reads the MinifigComponent row itself), so constructions are unchanged; 488 LOTs gain it (LoaderSnapshotTest).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 06:35:45 -05:00
Aaron Kimbrell
822aba4194 fix(entity): a model's destroyable has armor 1, as live sent it
Live constructions of models on a Raven Bluff property (LOT 14, LOT 8069) carry the destroyable with health 1 / 1.0, armor 1 / 0, faction -1, smashable; DLU's had armor 0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 06:33:25 -05:00
Aaron Kimbrell
3bd299d682 fix(entity): a quick build without a destroyable gets one, as the client makes it
DoObjectComponentLoad adds a destroyable (componentID -1) to a quick build that has none and marks it smashable. DLU's quick build wrote three empty flags instead. The construction's destroyable now matches live field for field (AG LOT 7804: health 1 / 1.0, armor 1 / 0, faction -1, smashable). 117 LOTs gain it; nothing else changes (LoaderSnapshotTest).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 06:31:19 -05:00
Aaron Kimbrell
cc337a298d fix(entity): models get their item component, as the client makes it
The client makes the registry's item component for models too (only a pet takes it away); DLU skipped it and the model component wrote the item block itself, for the 30 model LOTs without an item row as well, and with the object id as ug_id. Live (Raven Bluff property capture): the item block carries the userModelID for brick built models (LOT 14) and 0 for reward models (LOT 8069). 1,455 LOTs gain the item component; nothing else changes (LoaderSnapshotTest).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 06:27:36 -05:00
Aaron Kimbrell
b2192e158c refactor(entity): components are made in the client's load order
Entity::Initialize walks ComponentOrderVector::Initialize's list (0x0101f8e0) as ObjectLoader2::DoObjectComponentLoad does; ids a component needs from a later one come from the registry; the trigger is added after the walk. All 15,962 LOTs get the same components as before (LoaderSnapshotTest).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 06:17:06 -05:00
Aaron Kimbrell
9c4d14173e test: write every LOT's component list from a real CDServer.sqlite (DLU_LOADER_SNAPSHOT), to compare loaders
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 06:17:06 -05:00
Aaron Kimbrell
c11fd81154 fix(entity): a proximity monitor row with one radius no longer crashes the world (LOT 9833)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 06:13:18 -05:00
Aaron Kimbrell
41ebf3d82d docs: issue tracker: issues 964 and 1352
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 04:55:17 -05:00
Aaron Kimbrell
e5d61ee90e fix(scripts): lightning garden orbs knock players back again (issue 1352)
As L_LIGHTNING_ORB_SERVER: knockback (dx*2.5, 15, dz*2.5) and the orb's knockback effect; it was off while platforms didn't run on the server.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 04:55:03 -05:00
Aaron Kimbrell
6ff42bf312 fix(moving platform): a mover started at a waypoint waits there first (issue 964)
LWOPlatform::ResumeTravelling: not travelling at a waypoint it waits the waypoint's wait; the AG monument elevator rose at once.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 04:55:03 -05:00
Aaron Kimbrell
68ca12c3e4 feat(scripts): Ninjago spinner traps (L_NJ_SPINNER_SERVER and its 40 variants)
Spinjitzu or events move the spinner up (active: blade damage 971, arrow pulses 972, spawner networks) or down; reset timers, once only, collision switches, group events and cinematics as the Lua. Proximities are spheres (live: cylinders).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 03:29:42 -05:00
Aaron Kimbrell
4fcce48397 fix(proximity): a proximity set again replaces the old one; UnsetProximityRadius
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 03:29:42 -05:00
Aaron Kimbrell
e34ae60724 fix(moving platform): a rotater only spins (start/stop), it doesn't run a mover's waypoints
LWOPlatformRotator's HandleStoppedLogic (0x00bdc660) only keeps its angular velocity from rotX/rotY/rotZ and rate; its path never arrives. No live zone sets platformIsRotater.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 03:25:22 -05:00
Aaron Kimbrell
ed62a5850f test: a mover's construction writes its path bit
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 03:23:25 -05:00
Aaron Kimbrell
8444effa81 test: SavingTest fails instead of crashing when its XML isn't next to it
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 03:23:25 -05:00
Aaron Kimbrell
951f9368ae test: each game test starts without the CDClient the one before it opened
Tests that open an in-memory CDClient with only their tables left it connected, so later tests that make their own tables when none is connected failed (DestroyableTest, MovementBlockerScenarioTest, QuickBuildCompleteTests in a full run).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 03:23:25 -05:00
Aaron Kimbrell
e42d44c804 feat(dashboard): queue_on_property_save setting and the models waiting for their property to be saved
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 03:16:56 -05:00
Aaron Kimbrell
7729d14fa4 feat(ugc): queue_on_property_save: only queued models are made, a property's are queued when it is saved
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 03:16:56 -05:00
Aaron Kimbrell
5ad1a75da5 feat(ugc): ugc.queued: models saved, made again or on a saved property
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 03:16:56 -05:00
Aaron Kimbrell
c6f6aa5d2b fix(scripts): AG elevator, bus door and property platform drive their movers as their live scripts did
StopPathing, StartPathing and GoToWaypoint instead of hand-made resyncs; a built platform starts before the scripts hear of it so a script can stop it; the FV tree platform's resync hack is gone.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 23:36:00 -05:00
Aaron Kimbrell
83f321bec6 feat(moving platform): the server runs movers as live did and answers resyncs with their state
The client's LWOPlatform logic (ArrivedAtWaypoint 0x00c86c30, ProcessStateChange 0x00cce380, GetNextWaypoint, the waypoint speeds) runs on the server: stopped at a waypoint (25 at an end) for its wait, then travelling (2), serialized on arrival and departure as in the NT mover captures; constructions carry the path and the mover state; RequestPlatformResync gets the current state, percent and position. The LOT 9483 timers are gone.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 23:36:00 -05:00
Aaron Kimbrell
3e5acd42ab feat(ugc): the color variation settings apply to LU Toolbox in Blender too
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 22:49:47 -05:00
Aaron Kimbrell
73600acb4e feat(ugc): live accurate color variation (-6 to 6 per channel, opaque bricks only)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 22:49:47 -05:00
Aaron Kimbrell
030efdaa0f fix(property): naming a model no longer renames the property
The model info window sends UpdatePropertyOrModelForFilterCheck with isProperty false (client 0x00cc42e0); only the property editor sends it true (0x00c2e710).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 22:06:10 -05:00
Aaron Kimbrell
9bcc132dde fix(dashboard): UGC page: Make again with… replaces the option pickers that looked like settings; a model's makes listed
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 21:27:57 -05:00
Aaron Kimbrell
a72d99f531 feat(dashboard): /api/ugc/:id/runs lists a model's makes
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 21:27:57 -05:00