- Bootstrap: Doorstop entry point, loads Harmony/Newtonsoft from the MSCO folder, hooks
PlayMakerArrayListProxy.Awake and starts MSCO in the main menu; skips the news screen
- No MSCLoader reference anymore; key bindings in PlayerPrefs, bind console command
- Harmony 1.2 and Newtonsoft.Json in lib/ (MIT notices); build copies to <game>\MSCO
- README/CHANGELOG updated
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ModVersion (2.8.1, shown in MSCLoader/MSC Launcher) and ProtocolVersion
(2.8) are separate; only the first two digits are compared (P2P host, Steam
lobby, server info, server browser) and only the protocol version is sent,
so minor updates stay compatible with 2.8 servers, hosts and players.
README: how to publish minor and major updates.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- DoorSync matched every FSM with door/hood/lid/trunk in its name, including
the door parts' removal/assembly/bolt/paint FSMs and trigger_ objects, and
forced their states at the other players: doors hung crooked, snapped back
or came off. Those are excluded now (assembly runs via FsmSync).
- HingeSync: on a parked vehicle everyone nearby sent the angle, so doors
ping-ponged. Now only the player who clicked near the door (4 s) sends;
on a driven vehicle the driver sends; received angles are held 3 s.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
StartGame carries a second flag (new game); the client then starts MSC's new
game instead of loading the (empty) received save.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A '-' button collapses the fullscreen launcher into a small MSCO bar at the
top; the game's start menu is visible and clickable again and its music is
unmuted. Clicking the bar opens the launcher; prompts (disconnected,
reconnecting, join confirmation, version warning) open it automatically.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- VehicleStateSync also tracks the CARPARTS and Database roots (wear, damaged
parts, tire wear, oilpan oil, battery charge, carb/ignition settings,
suspension, odometer); the Satsuma's driver is authoritative for them
- Paint colors (FsmColor) as four float channels (compatible with old servers)
and applied to the part's material
- FSMs are re-examined when a part is installed/removed (path changes);
before, anything not on the car at the first scan was never synced
- ControlSync: handbrake, sun visors, seat recline, seat belt, CD player,
interior light; pending states for controls not found yet
- Late joiners: job/shop values and switch states from the server snapshot;
P2P host resends all switch states every 15 s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
GameCharacter clones a MSC human (bodymesh + skeleton, no scripts, physics or
animation), puts it into its bind pose, aligns and scales it, and drives the
bones every frame from the joint points of the existing MSCO figure (hip,
knee, ankle, shoulder, elbow, hand, head pitch, torso lean) by rotating each
limb from its rest direction. Limb bones are picked geometrically, so bone
naming conventions do not matter. Variant per player id; console 'model
classic|game' switches, the MSCO figure is the automatic fallback.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- A driven vehicle is no longer released after 3 s without data (a short hitch
of the driver, e.g. saving, stopped the car instantly on the passenger's side
and ripped the parts off, which then synced to everyone): 30 s timeout, on
release it keeps the driver's velocity and part joints stay unbreakable for
3 more seconds
- Cargo in a moving vehicle belongs to its driver (passengers no longer claim
items in the car, which then followed late and kinematic at the driver's end
and knocked seats and parts off)
- Passenger: sit down automatically by stepping into the open passenger door,
also without a driver (seat from the game's DriverHeadPivot); Space or P to
get out
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>