Jelajahi Sumber

Gate Ember landing on completion of the arrival cinematic

Millie 4 hari lalu
induk
melakukan
6ca951f76a

+ 14 - 0
MISSION_EMBER_REFERENCE.md

@@ -35,3 +35,17 @@ identities and data; those alone do not establish every authored script conditio
 Live log evidence from the previous build: bridge Auth requests were staged at service ticks
 97082–97268, before mission world entry at 102262 and held region 64 at 104814. Ten squad
 requests were staged at 104915–107153. Transport staging does not establish visible state or AI.
+
+## Arrival cutscene reference
+
+Additional reference supplied by Millie: https://www.youtube.com/watch?v=IUmUYHELJAY
+(21 seconds, inspected locally at two-second intervals on 2026-09-05).
+The clip shows the player's ship approaching the Almighty, a view along its exterior weapon
+structure, and a fade to black. Millie specifies the sequence as ordinary fly-in, then this
+cinematic, then player spawn. The clip itself ends before the player spawn.
+
+The controller selects authored cinematic state 49 and its type-6 bookend slot, then selects
+playable state 64 only on that slot's termination event. Early region-64 reports cannot start
+landing combat or guidance before that handoff. No 21-second timer is used: completion/skip
+comes from the cinematic event. The selected package asset and the absence of a premature
+player spawn still need visual confirmation in the running game.

+ 8 - 3
MISSION_EMBER_STATUS.md

@@ -30,9 +30,14 @@ the scenario catalogue itself and rebuilt the old cache successfully into `build
 newly recovered eleventh landing squad. The runtime logs typed Ghost-link Sense fields for
 the next console playtest without interpreting them as an interaction yet.
 
-Installation is pending: Destiny 2 was running, so the installer exited before changing any
-game file. Prepared installer: `/tmp/install-ember-corrected.py`. It backs up the previous
-runtime, SDK, scripts and settings, then verifies installed file hashes.
+Installation completed after the game closed. The previous runtime, SDK, scripts and settings
+are backed up in `build/video-audit-backup-20260905-074152`. All installed file hashes matched
+the prepared files. Settings now select bubble 6/state 49 for cinematic arrival. A follow-up
+Lua gate additionally rejects early playable-region reports before cinematic completion.
+
+Millie supplied a separate 21-second arrival cutscene reference and specified ordinary fly-in,
+then the cutscene, then player spawn. The reference document records that evidence. The selected
+bookend asset still needs visual confirmation during play.
 
 Workspace recovery: the parent checkout was moved to Trash during the audit. The mission
 folder now has its own recovered `.git` directory, retaining branch `mission-ember` and all

+ 1 - 1
scripts/mission_ember.lua

@@ -13,7 +13,7 @@ return {
         -- A settle-only delta omits region fields; it does not mean that the player left.
         if region ~= nil then context:set_variable("ember.region", region) end
         region = state:variable("ember.region")
-        if region == landing.region then
+        if region == landing.region and opening.playable(state) then
             landing.enter(context, state)
             landing.client_state(context, state, event)
         end

+ 1 - 0
scripts/mission_ember/opening.lua

@@ -12,6 +12,7 @@ return function(mission, landing)
     end
     return {
         initial_state = entry,
+        playable = function(state) return phase(state) == 2 end,
         client_state = function(context, state, event)
             local held = event.held_region_index or event.current_region_index
             -- Only a held-region report starts the movie; a requested destination is insufficient.

+ 3 - 0
tests/mission_ember_controller_test.lua

@@ -93,6 +93,9 @@ end
 assert(#closed == 0 and resets == 0 and placements == 0)
 program.on_event_client_state_changed(context, state, {region_index = 49})
 assert(#movies == 0, "a requested region is not a held cinematic")
+region(64)
+assert(placements == 0 and #closed == 0 and #cues == 0,
+       "playable-region reports cannot start the landing before cinematic completion")
 region(49); region(49)
 assert(#movies == 1 and movies[1] == true and placements == 0)
 program.on_event_cinematic_terminated(context, state, {registry_key = 8, slot_type = 6, slot_index = 0})