Files
EscapistsReintroduced/docs/discovery-map-usability.md
T

16 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Discovery markers during ordinary play
`ERR_DiscoveryMap.c` now creates successor-owned objective markers with their label already set, refreshes the existing native text widget when knowledge changes, and prevents native annotation editing/dragging/deletion from altering objective facts. Discovery knowledge and location coordinates remain server-owned; local marker presentation adds no synchronization or mission progress authority.
The installed native implementation establishes the defects:
- `SCR_MapMarkerManagerComponent.InsertStaticMarker:169–175` assigns a local player owner and synchronously calls `OnCreateMarker`.
- `SCR_MapMarkerBase.SetCustomText:198–201` changes only stored data. `OnCreateMarker:344–378` initializes a widget from that data; `OnUpdate:409–431` updates position, not label text. Previously a map already open during discovery could show a blank newly-created marker or retain `Unknown location` after identification until reopening.
- `SCR_MapMarkersUI.IsOwnedMarker:114–123` controls editing and dragging at lines 1080,1287,1303. Its deletion entry and quickbind check `CanBeRemovedByOwner` at lines947,1049. Previously objective markers passed all these native checks, so a player could remove a discovery marker permanently or move it to a false coordinate; the successor's cached knowledge prevented restoration.
The new `ERR_DiscoveryMarker` subclass changes only these authored local markers. It clears the insertion-assigned owner at the native creation boundary and marks itself nonremovable. Its label is scenario-authored rather than a player annotation, so its own creation and label updates use the native synchronous text path; unrelated player marker filtering and behavior remain unchanged. Label updates while closed retain model data for native recreation without creating duplicate markers.
`ERR_NativeDiscoveryMapProbe.Run()` is an opt-in WORKBENCH check, to invoke once after a real local fixture participant and native marker manager exist. It creates two owned hidden native marker widgets: the unchanged vanilla marker demonstrates the stale text and user-annotation eligibility; the successor marker demonstrates immediate label refresh and protected ownership. It then detaches/recreates its own widget and checks retained text and exact marker-count cleanup. No mission locations, discovery state, inventories, map menus or player input are altered. Invoke `Stop()` from fixture cleanup if interrupted. The probe has not been run by this agent; native compilation and the actual result remain pending centrally. `python3 tools/check.py` passed after these changes.
The audit also inspected native prison gate inheritance/context, stock `SCR_OpenStorageAction`, radio tuning phase/knowledge checks and native helicopter/result presentation. Source alone does not establish held-input reachability, collision clearance while walking through the gate, dragging stock in a real inventory window or manual boarding/flying. These remain ordinary-play tests; direct completion fixtures cannot substitute for them. A separate inherited-gate destruction/progression vulnerability was reported for follow-up, without changing gate health in this marker patch.