Preserve native chat during terrain takeover with fallback for missing chat

This commit is contained in:
2026-10-14 14:39:55 +02:00
parent e4ca37dfc1
commit 01994ed344
9 changed files with 170 additions and 15 deletions
+18 -2
View File
@@ -240,8 +240,12 @@ account admission. Publication and live-server changes remain with the owner.
- The private `Prefabs/ERR/TerrainTakeover.et` triggers client cleanup. It releases
only the captured original singleton components, waits for the new factions
before catalog/identity initialization, and receives the server's faction
delegates. Chat is replicated to every client. The ordinary authored connector
remains separate from this bootstrap.
delegates. The terrain's native chat service is retained on both peers, detached
from any removed entity/replication parent, and never replaced or attached to
the new mode. The ordinary authored connector retains its own chat service.
If the terrain has no chat service, `TerrainTakeoverWithChat.et` supplies a
non-streaming replicated chat child instead. Selection depends on service
presence, not terrain name; both variants share the same takeover mode.
- Arsenal, group, support-station and task managers release the original mode's
cached instances on both peers. Task, map-marker and respawn getters resolve
the current takeover mode even if an old destructor clears a shared cache.
@@ -260,6 +264,18 @@ account admission. Publication and live-server changes remain with the owner.
a separate connected Windows client. The connected test recreates the player's
controller and verifies the replacement managers in both rounds.
On 14 October, the original Everon client log showed delayed removal of the
original `ScriptedChatEntity` after the replacement registered, followed by
`Cannot send message - ChatEntity is missing.` This blocked native chat commands,
including administrator login, before authentication. `test_terrain_chat_retention.py`
checks shared-service retention, nested parent detachment and fallback selection.
The revised scripts compiled in Workbench; the authored-world native restart
smoke completed two rounds and 21 assertions with no script/runtime failures.
That run still reported existing engine/dependency errors, and the full repository
check stopped on the existing missing root ID in `ERRM_AtlasLeaf.et`.
Live remote login and takeover of both chat variants remain separate verification
steps; the authored-world smoke does not exercise those paths.
The earlier isolated prototype passed a Nogova Workbench prisoner-spawn test with
16 generated sites and zero script errors. See
[prototype evidence](evidence/scenario-takeover-2026-10-01/report.json). The current