Files
Commonwealth-Online-Public/changelog.md
T
andrew 2f37feb5b7 Restore LooksMenu camera state
Capture the pre-LooksMenu third-person camera settings and restore them when character customization closes, so first-time customization returns to the normal over-the-shoulder view and movement controls. Also clear the saved snapshot during reset paths so cleanup still runs if the menu flow exits early.
2026-06-28 18:59:59 +12:00

6.6 KiB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

For testing notes, milestone summaries, known issues, and next steps, see docs/dev-log.md. Do not include testing content in this file.

[Unreleased]

Added

  • Server-authoritative weather and time control via serverWorldState packets from the dev server GUI.
  • Weather / Time tab in server/dev_server_app.py with preset buttons for fw weather form IDs and set gamehour to HHmm time values.
  • server/world_state_presets.py with shared weather and time preset definitions.
  • protocol/server-world-state.md documenting the new packet type.
  • Event-driven world time resync via optional timeSync field on worldState packets; the current world-state host pushes time after menus, loading screens, save/load, wait/sleep, and other time freezes.
  • timeSync tracking in server/fake_client.py host world-state snapshot output.

Fixed

  • If a server profile exists but its associated save was deleted, joining from the main menu now falls back to first-time character creation and re-binds the profile to the newly created save instead of hard-failing.
  • Pending first-time profile binding now completes as soon as a save exists even if character-creation phase flags are still active, preventing repeated coc first-time launches on reconnect.
  • Session launch now resolves equivalent server endpoints (for example localhost, 127.0.0.1, and legacy host-case variants) to an existing server profile before deciding first-time join flow, preventing unintended new-character creation when reconnecting.
  • Server profile persistence now uses a sanitized save-folder path with a Documents fallback and write-failure logging, preventing silent loss of server profile bindings across game restarts.
  • Pending profile binding now accepts exit saves (including Exitsave...) so the last auto-save on game exit can be rebound and loaded on reconnect, reducing accidental progress loss.
  • Fixed Windows build issues in server profile path fallback by replacing unsafe getenv usage and accepting std::string_view save-folder names in folder sanitization.
  • Reconnect now refreshes stale associated Exitsave... names to the newest available exit save before load, preventing fallback to first-time flow when exit-save filenames rotate between sessions.
  • Server GUI weather now runs fw <8-digit-form-id> on the current worldStateHostPlayerId client (not hardcoded to player 1), scheduled on the game thread.
  • Weather serverWorldState handling now defers until world-state host assignment is known, then skips only non-host clients.
  • Weather serverWorldState packets are broadcast to all clients so the designated host receives them even after host reassignment.
  • Server restart now resets player/host assignment so the first client is playerId 1 again, preventing GUI weather from being ignored after restart.
  • Plugin now defers server weather commands until player assignment is available, preventing initial GUI clicks from being dropped right after connect.
  • Replaced invalid default GUI weather IDs with valid Fallout 4 weather form IDs so fw <id> no longer fails with "Invalid weather ...".
  • Corrected Clear preset ID typo from 0002852a to valid 0002b52a (CommonwealthClear).
  • Time apply now converts timeHHmm to Fallout game-hour float before executing set gamehour, fixing 2200-style values applying incorrectly.
  • Corrected CO_Vault109StartQuestScript.psc to compile against Fallout 4 Papyrus by replacing unsupported Actor.ShowLooksMenu/UI.IsMenuOpen calls with Game.ShowRaceMenu and Utility.IsInMenuMode.
  • Race customization now forces third-person camera and a short pre-menu settle delay before ShowRaceMenu, fixing cases where the menu opens but the player model is not visible.
  • CO_Vault109StartQuestScript now uses configurable RaceMenuMode (default 0) plus RaceMenuFallbackMode (default 1) for ShowRaceMenu.
  • Race menu open flow now retries with fallback mode if the primary mode does not enter menu mode.
  • Moved first-time character customization menu control out of CO_Vault109StartQuestScript.psc; the quest now only handles spawn/stage while plugin C++ session-launch flow owns Looks/SPECIAL sequencing.
  • First-time C++ character creation now prepares camera context with ForceThirdPerson, opens Looks via ShowLooksMenu 14, retries with Actor.ShowLooksMenu fallback, and times out/reset safely if Looks menu never opens.
  • When LooksMenu is confirmed open, C++ now applies chargen camera context (SetInChargen 1 + ForceThirdPerson) and restores it on close, fixing first-person camera persistence during customization.
  • Looks menu camera correction now directly sets PlayerCamera to third-person state for several polls while LooksMenu is open, avoiding reliance on console-only camera commands.
  • Looks menu camera correction now configures the ThirdPersonState for face editing by zeroing shoulder offsets, flipping camera yaw toward the player, enabling free rotation, and applying a closer zoom offset.
  • Looks menu camera cleanup now restores the pre-customization third-person offsets, yaw, zoom, and free-rotation flags so movement controls return to normal after first-time customization closes.

Changed

  • Weather presets store the exact fw console argument (8-digit hex); edit server/world_state_presets.py only if a preset ID fails in your console.
  • Updated protocol weather examples/default preset table to match the new valid Fallout 4 preset IDs.
  • World time no longer re-applies on every worldState heartbeat; weather heartbeats continue at ~1 Hz while time stays in sync during normal gameplay.
  • Updated Weather/Time UI and protocol wording to use world-state host terminology instead of hardcoded player-1 wording.
  • Reformatted changelog.md to follow Keep a Changelog.
  • First-time character creation launch now uses coc COVault109 and waits for the COVault109 start cell instead of SanctuaryExt.
  • First-time COVault109 launch now starts CO_Vault109StartQuest once per first-time join flow so the quest can move the player to its preset spawn marker.
  • CO_Vault109StartQuest now opens ShowRaceMenu(player, 1) after stage-10 spawn completion, waits for menu mode to close, then opens ShowSPECIALMenu for name/S.P.E.C.I.A.L. setup.

[0.0.1] - 2026-06-23

Added

Changed

Removed

  • docs/changelog.md — moved to project root.