From d61f2d693491d87fc931709f5b4e320f77b1bd28 Mon Sep 17 00:00:00 2001 From: Brian Fertig Date: Thu, 17 Sep 2026 17:18:53 -0600 Subject: [PATCH] Add combat comms, block jump/landing during fights, and retime pirate am MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add OAC "enemies detected" / "enemies defeated" visual comms with random voice pools, fired on CombatSystem active-flag flips - Deny jumping or landing while a fight is live so the wave run can't be escaped or hidden on a surface - Move the 'Pirate Problems' ambush trigger to the midpoint of the entry-gate → capital-world stretch, persisting lastJumpFrom through saves for a stable midpoint --- assets/speech/oac/enemies-defeated-01.mp3 | Bin 0 -> 22580 bytes assets/speech/oac/enemies-defeated-02.mp3 | Bin 0 -> 36902 bytes assets/speech/oac/enemies-defeated-03.mp3 | Bin 0 -> 31610 bytes assets/speech/oac/enemies-detected-01.mp3 | Bin 0 -> 20708 bytes assets/speech/oac/enemies-detected-02.mp3 | Bin 0 -> 26609 bytes assets/speech/oac/enemies-detected-03.mp3 | Bin 0 -> 24416 bytes data/comms.json | 32 +++- data/gates.json | 3 +- data/landing.json | 6 + data/quests.json | 2 +- dev/comms.test.mjs | 79 ++++++++- dev/jump-travel.test.mjs | 31 +++- js/galaxy/JumpTravel.js | 23 +++ js/save/SaveData.js | 11 ++ js/scenes/GameScene.js | 190 ++++++++++++++++++---- 15 files changed, 341 insertions(+), 36 deletions(-) create mode 100644 assets/speech/oac/enemies-defeated-01.mp3 create mode 100644 assets/speech/oac/enemies-defeated-02.mp3 create mode 100644 assets/speech/oac/enemies-defeated-03.mp3 create mode 100644 assets/speech/oac/enemies-detected-01.mp3 create mode 100644 assets/speech/oac/enemies-detected-02.mp3 create mode 100644 assets/speech/oac/enemies-detected-03.mp3 diff --git a/assets/speech/oac/enemies-defeated-01.mp3 b/assets/speech/oac/enemies-defeated-01.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..95b40484e8ae59f83bcbddaa1592de9bb9205848 GIT binary patch literal 22580 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 O{%`qz_Y?hJEdO6CI`{Pe literal 0 HcmV?d00001 diff --git a/assets/speech/oac/enemies-detected-01.mp3 b/assets/speech/oac/enemies-detected-01.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..8d5c5e2f30d0a3179ea15c73f22ec9d207d8d166 GIT binary patch literal 20708 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 U;w@~v0?D25@e0s5#vm340EB(y+yDRo literal 0 HcmV?d00001 diff --git a/assets/speech/oac/enemies-detected-02.mp3 b/assets/speech/oac/enemies-detected-02.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..027c188a0527d5b8997ede5b674818b57613f93b GIT binary patch literal 26609 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 O?Z5hec+dZ<{XYN-+PLQc literal 0 HcmV?d00001 diff --git a/assets/speech/oac/enemies-detected-03.mp3 b/assets/speech/oac/enemies-detected-03.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..91b3f7277b86ff06a310973f8d45f17f5a2bd05b GIT binary patch literal 24416 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

j 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 Z{M9Af|Bo)&{|Ni9|M)*TX8#BN{{l^l6)6A! literal 0 HcmV?d00001 diff --git a/data/comms.json b/data/comms.json index 1c21dd7..3057231 100644 --- a/data/comms.json +++ b/data/comms.json @@ -1,5 +1,5 @@ { - "$comment": "COMMS — the characters of the ship speaking to the player (OAC first). Three comm types: 'ack' pauses the action and holds the box open (muted looping video + text + voice) until the player clicks ACKNOWLEDGE; 'visual' shows the box (video plays once + text + voice) and fades out when the voice ends; 'audio' is voice only — no box, no pause. Comms are EVENTS: each one binds a trigger (when) + a sender (who) + text + a speech clip (what). Trigger vocabulary (live): 'newGame' — the fresh-run tutorial welcome (oac-intro → oac-tether → oac-scan; the hub's FIFO plays each right after the previous is acknowledged); 'firstScan' — oac-upgrade reacts to the player's first SCAN press (GameScene.startScan), 5 s after the click; 'tetherResearch' — oac-minerals → oac-fly-mine react to the player committing to the Tether Level 2 research (GameScene.beginResearch, held by the busy() contract until the console closes); 'firstCluster' — oac-first-cluster celebrates the run's first asteroid-cluster discovery (GameScene.celebrateDiscovery), 1.5 s after the chime so the discovery SFX lands first; 'minerals200' — oac-tether2 confirms the moment the run's lifetime mining first crosses 200 (the 'Mine 200 Minerals' quest line and the tether-l2 build cost; GameScene's ore event); 'tetherL2Launch' — oac-relaunch → oac-explore, the launch-back pair: SurfaceScene's take-off that puts the player in space after the home world's level-2 tether is installed (the run's build record is the witness); the hub's FIFO plays the pair back-to-back; 'firstWorld' — trestle-meetup → trestle-quest: the FIRST world the player discovers — the starter quest's own witness (discoveredWorldCount: any planet or space station, the home world never counts, in any system — the comm and the quest can never drift; GameScene.celebrateDiscovery, plus a scene-create arm for loaded saves that already hold discovered worlds), the hub's FIFO plays the pair back-to-back; 'researchComplete' — oac-research-complete, the AUDIO-ONLY sign-off on EVERY research completion (GameScene._completeResearch; once:false, held by the busy() contract while the research console is still open), and oac-research-new — the 'new research available' beat that ANSWERS the sign-off: armed the moment the sign-off's voice has FINISHED (the hub's onEnd — GameScene._commEnded) and only if a tech is still ready to research that isn't yet (researchAnyAvailable — nothing in flight, a node whose requires are met); the hub's FIFO plays it right behind the sign-off, so the two voices never overlap; 'systemComplete' — oac-system-complete, the system-complete milestone: the moment a system's NAV chart COMPLETES — its last planet/space station/jump-gate discovery (GameScene.celebrateDiscovery), which is exactly when its 'Unlock Jumpgates' research becomes AVAILABLE (the SYSTEM tree's available hook, js/research/SystemCategory.js) — NOT on the research's completion; once per system (once:false re-arms per system; the scene's arming set keeps it a single fire, so later cluster discoveries in a charted system don't re-arm it). 'questNew' — oac-quest-new: the quest-grant voice (GameScene._grantUnlockedQuests — the starter on the first boot, 'Leaving the Nest' on the starter's claim, every future unlock; once:false re-arms per grant); 'trestleBrief' — trestle-brief-1 → trestle-brief-2 → trestle-brief-3: the 'Leaving the Nest' quest's three back-to-back ACK briefs — armed the moment the home system's jumpgates go ONLINE (the activateGates effect in GameScene._applyResearchEffects — the player can now jump out of the nest; also the quest's grant, and scene create for loaded saves whose gates are already online — GameScene._trestleBeats). The hub's FIFO plays the sequence back-to-back (each 'ack' holds until its own ACKNOWLEDGE, so the 1→2→3 order is guaranteed); ALL THREE in the run's comms played-ledger (registry 'commsPlayed' — marked when a comm starts, saved with the run) are the quest's 'Talk to Trestle' witness (GameScene._questCheckEval), and a quit mid-sequence re-arms only the unplayed beats on the next load; 'trestleArrival' — trestle-arrive-1 → trestle-arrive-2: the 'Leaving the Nest' quest's ARRIVAL PAIR on the NEUTRAL CAPITAL WORLD (the destination trestle-brief-3's acknowledgment sends the player to) — the quest completes on the PLANET, not on entering the neighboring system: armed the moment the ship reaches the capital world (GameScene._checkDestinationReached), plus a scene-create arm in GameScene._trestleBeats for a loaded save parked at the capital's rim. The hub's FIFO plays the pair back-to-back (each 'ack' holds until its own ACKNOWLEDGE); BOTH in the run's comms played-ledger (registry 'commsPlayed' — marked when a comm starts, saved with the run) are the quest's 'Meet Trestle' witness (GameScene._questCheckEval). 'deliveredLaunch' — carol-delivered-1 → carol-delivered-2 → carol-delivered-3 → oac-delivered-1: the 'Special Delivery' quest's PAYOFF — armed the moment the player LAUNCHES after the package's home-world sale (GameScene.onSurfaceDeparture: the run's delivery witness, story.delivered, stands when the shop's CONFIRM sells it — data/goods.json → special-package) — Carol's thanks + the trade sign-off, then OAC's confirmation that buy/sell codes are live on every world (the four 'ack' beats chained by the hub's FIFO, each holding until its own ACKNOWLEDGE; the run's comms played-ledger keeps it a one-shot — a later re-arm is a no-op). Reserved for future comms: questComplete, discovery, landing, jump, buildComplete. Assets are loaded ON DEMAND by the hub (js/comms/CommsHub.js) when a comm is due — never in a scene's preload, so the initial load stays lean. A comm's `audioPool` (a list of speech files) speaks one clip at RANDOM per arm — the pick is made when the deferred-load spec is built (js/comms/CommsModel.js → commAssets), so only the chosen clip is fetched.", + "$comment": "COMMS — the characters of the ship speaking to the player (OAC first). Three comm types: 'ack' pauses the action and holds the box open (muted looping video + text + voice) until the player clicks ACKNOWLEDGE; 'visual' shows the box (video plays once + text + voice) and fades out when the voice ends; 'audio' is voice only — no box, no pause. Comms are EVENTS: each one binds a trigger (when) + a sender (who) + text + a speech clip (what). Trigger vocabulary (live): 'newGame' — the fresh-run tutorial welcome (oac-intro → oac-tether → oac-scan; the hub's FIFO plays each right after the previous is acknowledged); 'firstScan' — oac-upgrade reacts to the player's first SCAN press (GameScene.startScan), 5 s after the click; 'tetherResearch' — oac-minerals → oac-fly-mine react to the player committing to the Tether Level 2 research (GameScene.beginResearch, held by the busy() contract until the console closes); 'firstCluster' — oac-first-cluster celebrates the run's first asteroid-cluster discovery (GameScene.celebrateDiscovery), 1.5 s after the chime so the discovery SFX lands first; 'minerals200' — oac-tether2 confirms the moment the run's lifetime mining first crosses 200 (the 'Mine 200 Minerals' quest line and the tether-l2 build cost; GameScene's ore event); 'tetherL2Launch' — oac-relaunch → oac-explore, the launch-back pair: SurfaceScene's take-off that puts the player in space after the home world's level-2 tether is installed (the run's build record is the witness); the hub's FIFO plays the pair back-to-back; 'firstWorld' — trestle-meetup → trestle-quest: the FIRST world the player discovers — the starter quest's own witness (discoveredWorldCount: any planet or space station, the home world never counts, in any system — the comm and the quest can never drift; GameScene.celebrateDiscovery, plus a scene-create arm for loaded saves that already hold discovered worlds), the hub's FIFO plays the pair back-to-back; 'researchComplete' — oac-research-complete, the AUDIO-ONLY sign-off on EVERY research completion (GameScene._completeResearch; once:false, held by the busy() contract while the research console is still open), and oac-research-new — the 'new research available' beat that ANSWERS the sign-off: armed the moment the sign-off's voice has FINISHED (the hub's onEnd — GameScene._commEnded) and only if a tech is still ready to research that isn't yet (researchAnyAvailable — nothing in flight, a node whose requires are met); the hub's FIFO plays it right behind the sign-off, so the two voices never overlap; 'systemComplete' — oac-system-complete, the system-complete milestone: the moment a system's NAV chart COMPLETES — its last planet/space station/jump-gate discovery (GameScene.celebrateDiscovery), which is exactly when its 'Unlock Jumpgates' research becomes AVAILABLE (the SYSTEM tree's available hook, js/research/SystemCategory.js) — NOT on the research's completion; once per system (once:false re-arms per system; the scene's arming set keeps it a single fire, so later cluster discoveries in a charted system don't re-arm it). 'questNew' — oac-quest-new: the quest-grant voice (GameScene._grantUnlockedQuests — the starter on the first boot, 'Leaving the Nest' on the starter's claim, every future unlock; once:false re-arms per grant); 'trestleBrief' — trestle-brief-1 → trestle-brief-2 → trestle-brief-3: the 'Leaving the Nest' quest's three back-to-back ACK briefs — armed the moment the home system's jumpgates go ONLINE (the activateGates effect in GameScene._applyResearchEffects — the player can now jump out of the nest; also the quest's grant, and scene create for loaded saves whose gates are already online — GameScene._trestleBeats). The hub's FIFO plays the sequence back-to-back (each 'ack' holds until its own ACKNOWLEDGE, so the 1→2→3 order is guaranteed); ALL THREE in the run's comms played-ledger (registry 'commsPlayed' — marked when a comm starts, saved with the run) are the quest's 'Talk to Trestle' witness (GameScene._questCheckEval), and a quit mid-sequence re-arms only the unplayed beats on the next load; 'trestleArrival' — trestle-arrive-1 → trestle-arrive-2: the 'Leaving the Nest' quest's ARRIVAL PAIR on the NEUTRAL CAPITAL WORLD (the destination trestle-brief-3's acknowledgment sends the player to) — the quest completes on the PLANET, not on entering the neighboring system: armed the moment the ship reaches the capital world (GameScene._checkDestinationReached), plus a scene-create arm in GameScene._trestleBeats for a loaded save parked at the capital's rim. The hub's FIFO plays the pair back-to-back (each 'ack' holds until its own ACKNOWLEDGE); BOTH in the run's comms played-ledger (registry 'commsPlayed' — marked when a comm starts, saved with the run) are the quest's 'Meet Trestle' witness (GameScene._questCheckEval). 'deliveredLaunch' — carol-delivered-1 → carol-delivered-2 → carol-delivered-3 → oac-delivered-1: the 'Special Delivery' quest's PAYOFF — armed the moment the player LAUNCHES after the package's home-world sale (GameScene.onSurfaceDeparture: the run's delivery witness, story.delivered, stands when the shop's CONFIRM sells it — data/goods.json → special-package) — Carol's thanks + the trade sign-off, then OAC's confirmation that buy/sell codes are live on every world (the four 'ack' beats chained by the hub's FIFO, each holding until its own ACKNOWLEDGE; the run's comms played-ledger keeps it a one-shot — a later re-arm is a no-op). 'combatStart' — oac-enemies-detected: the COMBAT-LIVE beat — the moment CombatSystem's active flag flips ON (GameScene._setCombatBar: the wave run's lead, before the first hostile lands, or the ?combat pack's spawn) — OAC's visual contact call (box + voice, no pause — it rides over the live fight); the voice rolls ONE of the three enemies-detected clips at random per arm (audioPool); once:false — re-arms on every combat start; 'combatEnd' — oac-enemies-defeated: the COMBAT-OVER beat — the moment the last hostile is down (the active flag flips OFF, GameScene._setCombatBar), 1 s after the final kill (delayMs 1000 — the last explosion reads first) — OAC's visual sign-off; the voice rolls ONE of the three enemies-defeated clips at random per arm (audioPool); once:false — re-arms on every combat end. Reserved for future comms: questComplete, discovery, landing, jump, buildComplete. Assets are loaded ON DEMAND by the hub (js/comms/CommsHub.js) when a comm is due — never in a scene's preload, so the initial load stays lean. A comm's `audioPool` (a list of speech files) speaks one clip at RANDOM per arm — the pick is made when the deferred-load spec is built (js/comms/CommsModel.js → commAssets), so only the chosen clip is fetched.", "enabled": true, "audio": { "$comment": "The comm's voice plays at its OWN volume (volume) — the manager's master is left untouched (in v4 `sound.setVolume` IS the master, so ducking it would quiet the voice too). While the voice talks, the other playing sounds (the game music) are ducked PER-SOUND by musicDuck (a fraction of each one's own volume) and restored exactly when the voice ends.", @@ -331,6 +331,36 @@ "audio": "assets/speech/trestle/trestle-q4-03.mp3", "once": true, "delayMs": 0 + }, + { + "$comment": "The COMBAT-LIVE beat (trigger 'combatStart' — GameScene._setCombatBar, the moment CombatSystem's active flag flips ON: the wave run's lead, BEFORE the first hostile lands, or the ?combat pack's spawn — the same flip the combat bar's rise reads). VISUAL: OAC's box reads the contact call with the voice, no pause — it rides over the live fight (the busy() contract only holds it while a modal owns the screen or an action like mining is out). once:false — re-arms on EVERY combat start (the played-ledger never bars it; the hub's in-flight guard keeps one voice per flip). audioPool: the voice rolls ONE of the three enemies-detected clips at RANDOM per arm (the hub's deferred load fetches only the chosen file — the same contract as oac-system-complete's pool).", + "id": "oac-enemies-detected", + "from": "oac", + "type": "visual", + "trigger": "combatStart", + "text": "Contact. Hostile signatures inbound. Weapons free.", + "audioPool": [ + "assets/speech/oac/enemies-detected-01.mp3", + "assets/speech/oac/enemies-detected-02.mp3", + "assets/speech/oac/enemies-detected-03.mp3" + ], + "once": false, + "delayMs": 0 + }, + { + "$comment": "The COMBAT-OVER beat (trigger 'combatEnd' — GameScene._setCombatBar, the moment CombatSystem's active flag flips OFF: the LAST hostile down, the run's force spent). VISUAL: OAC's box reads the sign-off with the voice, no pause. delayMs 1000: the beat lands 1 s after the final kill so the last explosion reads first (the same 'beat the SFX' pattern as the discovery-chime delays). once:false — re-arms on EVERY combat end. audioPool: the voice rolls ONE of the three enemies-defeated clips at RANDOM per arm.", + "id": "oac-enemies-defeated", + "from": "oac", + "type": "visual", + "trigger": "combatEnd", + "text": "All hostiles destroyed. The area is clear.", + "audioPool": [ + "assets/speech/oac/enemies-defeated-01.mp3", + "assets/speech/oac/enemies-defeated-02.mp3", + "assets/speech/oac/enemies-defeated-03.mp3" + ], + "once": false, + "delayMs": 1000 } ], "reservedTriggers": [ diff --git a/data/gates.json b/data/gates.json index fb7ee0b..a61a501 100644 --- a/data/gates.json +++ b/data/gates.json @@ -56,7 +56,8 @@ "jumpDelayMs": 420, "toast": "JUMP — {dest}", "dormantToast": "JUMP GATE DORMANT — CHART {system} TO ACTIVATE ITS JUMP GATES", - "miningToast": "CANNOT JUMP WHILE MINING" + "miningToast": "CANNOT JUMP WHILE MINING", + "combatToast": "CANNOT JUMP WHILE UNDER ATTACK" }, "route": { "_comment": "ROUTE (js/galaxy/Route.js + GameScene): the player's plotted course to a SET DESTINATION (SYSTEM tab of the MAP console). The run persists only the destination (systemId + objectId); the path from the current system is derived (planRoute — the jump network is a spanning tree, so it is the unique route). While a route is active, the compass marks the NEXT STOP in ORANGE (compassColor), replacing that object's ordinary arrow, and shows it even while still UNDISCOVERED (it is the thing to find): in an intermediate system the next stop is that system's jump gate toward the destination (typeLabel 'Route Gate'); in the DESTINATION system the next stop is the destination OBJECT itself (destTypeLabel) — the last hop is across the system to the world, and it stays orange until the ship actually reaches it (GameScene._checkDestinationReached fires reachedToast, then the route clears). The NEXT STOP in this system ALSO wears an in-world orange pulse the moment it is on screen (js/entities/RoutePulse.js — GameScene marks it each frame): the FULL pulse on the route GATE (pulse), the SAME pulse SUBDUED on the destination OBJECT in the destination system (objectPulse). A jump to any other system re-plots from the detour (replotToast). A destination with NO specific object clears the moment its system is entered. setToast fires when the destination is set ({dest}/{hops}).", diff --git a/data/landing.json b/data/landing.json index 20adc15..e1768a9 100644 --- a/data/landing.json +++ b/data/landing.json @@ -39,6 +39,12 @@ "greyed out in comms, same as a reputation ban)." ], "enabled": true, + "combatDenyToast": { + "_comment": "The COMBAT gate (js/scenes/GameScene.js → startLanding): a live fight (CombatSystem.active — a wave run in flight or hostiles up) holds the ship in the air — landing would sleep the flight scene under the wave and let the player hide on the surface, so a landing request mid-combat is a flat denial on the console (the comms panel already closed — the toast is the ack; the ✗ mark reads the deny). Same shape as the capital's claim gate (data/quests.json → capitalDenyToast).", + "glyph": "✗", + "color": "#ff5c77", + "text": "CANNOT LAND WHILE UNDER ATTACK" + }, "videoBase": "assets/videos/", "volume": 1, "_hud_comment": "The upper-left HUD while the surface clip loops: the planet's NAME (Ethnocentric, the SAME shade the menu's game title uses — data/menu.json → colors.title — with a black stroke behind it so it holds over any clip) and, beneath it in the body face (Centauri), the planet TYPE + TETHER LEVEL (\"Terran World, Tether Level 1\"). Both decode in with the shared scramble (the name first). marginX/marginY = corner offsets (px); name/line = font sizes, letter spacing (px), stroke color/thickness, and line color (the theme's dim by default).", diff --git a/data/quests.json b/data/quests.json index 77ea983..44081d0 100644 --- a/data/quests.json +++ b/data/quests.json @@ -172,7 +172,7 @@ } }, { - "_comment": "THE FOURTH QUEST — 'Pirate Problems' (the run's third link after 'Special Delivery'). It GRANTS the moment 'Special Delivery' is COMPLETED AND CLAIMED AND its payoff chain is HEARD ALL THE WAY THROUGH (unlocks.claimed + unlocks.acked — the deliveredLaunch four-beat: carol-delivered-1/2/3 + oac-delivered-1, every one of them ACKed, not merely started — the run's comms acked-ledger, registry 'commsAcked', owned by js/comms/CommsHub.js's onAck hook; GameScene._grantUnlockedQuests supplies it to QuestState.isUnlockMet, so the grant lands on whichever of the two conditions completes last: the claim (claimQuest) or the final ACK (_commEnded's grant pass)). On its grant the run turns: the player's DESTINATION is set to the Neutral Capital world (GameScene._questStartBeats) and Trestle's three-beat warning plays (data/comms.json → trigger 'trestleQ4' — trestle-q4-1/2/3 on trestle-q4-01/02/03.mp3; the 'Speak with Trestle' step's witness is that sequence in the played-ledger, the same _trestleCheck seam as 'Leaving the Nest'). Then the run's story turns on the pirates: ENTERING the capital's system with the quest live, the ambush fires — ONE rolling wave of SIX frame-0 raiders (data/combat.json → waves.scripts.pirate_ambush; EnemyTypes: raider = frame 0), the wave ships materializing OFF-SCREEN around the player, each from a random direction (CombatSystem._spawnWaveEnemy — the same off-screen materialization as the ?combat pack), streaming in on their own chase AI (GameScene._maybeStartPirateAmbush fires the run); the wave's completion marks the 'combatDone' ledger (registry, SaveData-captured) — the 'Defend your ship from pirates' step's monotonic witness. 'Return to the Neutral Capital World' completes on the ARRIVAL itself — the ship within the capital world's keep-out rim with the quest held + unclaimed sets story.capitalReturned (GameScene._maybeWitnessCapitalReturn; the story ledger is SaveData-captured, monotonic). The bar's follow-up conversation is a later layer (the arrival is the step; the scene lands on it).", + "_comment": "THE FOURTH QUEST — 'Pirate Problems' (the run's third link after 'Special Delivery'). It GRANTS the moment 'Special Delivery' is COMPLETED AND CLAIMED AND its payoff chain is HEARD ALL THE WAY THROUGH (unlocks.claimed + unlocks.acked — the deliveredLaunch four-beat: carol-delivered-1/2/3 + oac-delivered-1, every one of them ACKed, not merely started — the run's comms acked-ledger, registry 'commsAcked', owned by js/comms/CommsHub.js's onAck hook; GameScene._grantUnlockedQuests supplies it to QuestState.isUnlockMet, so the grant lands on whichever of the two conditions completes last: the claim (claimQuest) or the final ACK (_commEnded's grant pass)). On its grant the run turns: the player's DESTINATION is set to the Neutral Capital world (GameScene._questStartBeats) and Trestle's three-beat warning plays (data/comms.json → trigger 'trestleQ4' — trestle-q4-1/2/3 on trestle-q4-01/02/03.mp3; the 'Speak with Trestle' step's witness is that sequence in the played-ledger, the same _trestleCheck seam as 'Leaving the Nest'). Then the run's story turns on the pirates: with the quest live, the ambush fires at the MIDPOINT of the entry-jumpgate → capital-world stretch — the player ENTERS the capital's system at the gate (a full stretch from the world), and the raiders materialize once the ship is within HALF that gate-to-world distance of the capital (GameScene._maybeStartPirateAmbush: the entry gate is the destination's return gate for the last jump's source system — the restore's lastJumpFrom, staged in jumpThroughGate and saved in captureState — falling back to the gate nearest the spawn, then the spawn itself; the trigger is dist(gate, capital)/2 via JumpTravel.ambushTriggerDistance, and update() arms it the frame the ship crosses the halfway point) — ONE rolling wave of SIX frame-0 raiders (data/combat.json → waves.scripts.pirate_ambush; EnemyTypes: raider = frame 0), the wave ships materializing OFF-SCREEN around the player, each from a random direction (CombatSystem._spawnWaveEnemy — the same off-screen materialization as the ?combat pack), streaming in on their own chase AI (GameScene._maybeStartPirateAmbush fires the run); the wave's completion marks the 'combatDone' ledger (registry, SaveData-captured) — the 'Defend your ship from pirates' step's monotonic witness. 'Return to the Neutral Capital World' completes on the ARRIVAL itself — the ship within the capital world's keep-out rim with the quest held + unclaimed sets story.capitalReturned (GameScene._maybeWitnessCapitalReturn; the story ledger is SaveData-captured, monotonic). The bar's follow-up conversation is a later layer (the arrival is the step; the scene lands on it).", "id": "pirate_problems", "category": "main", "icon": "diamond", diff --git a/dev/comms.test.mjs b/dev/comms.test.mjs index e793433..abc7606 100644 --- a/dev/comms.test.mjs +++ b/dev/comms.test.mjs @@ -22,7 +22,10 @@ * carol-delivered-1 → carol-delivered-2 → carol-delivered-3 → * oac-delivered-1 (the 'Special Delivery' payoff — the launch back * into space after the package's home-world sale, ack) on - * deliveredLaunch, with Carol registered as a sender); + * deliveredLaunch, oac-enemies-detected (visual, once:false, + * audioPool) on combatStart, and oac-enemies-defeated (visual, + * once:false, audioPool, the 1 s delay) on combatEnd, with Carol + * registered as a sender); * - the reserved triggers are RESERVED (no comm uses them yet); * - normalizeComm drops what can't be shown (bad type / no trigger / * no text for a box / no speech for an audio comm / unknown sender), @@ -90,8 +93,9 @@ const roster = listComms(cfg); // The shipped roster count (the data pins it: a stray unvalidated comm // landing in data/comms.json changes the number and fails this line — // 25 pre-'Pirate Problems' + the trestleQ4 warning trio (trestle-q4-1/ -// 2/3, data/comms.json) = 28). -check('the roster holds exactly the shipped comms', roster.length === 28); +// 2/3, data/comms.json) + the combat pair (oac-enemies-detected / +// oac-enemies-defeated) = 30). +check('the roster holds exactly the shipped comms', roster.length === 30); const byId = Object.fromEntries(roster.map((c) => [c.id, c])); const intro = byId['oac-intro']; check( @@ -300,6 +304,75 @@ check('oac-quest-new: speaks oac/quest-new.mp3', byId['oac-quest-new']?.audio == check('oac-quest-new: the clip ships on disk', existsSync(join(root, byId['oac-quest-new']?.audio ?? ''))); check('oac-quest-new: beats the grant SFX (delayMs > 0)', (byId['oac-quest-new']?.delayMs ?? 0) > 0); +// The combat pair — OAC's contact call the moment the fight goes live +// and the sign-off the moment the last hostile is down (GameScene +// ._setCombatBar — the CombatSystem active-flag flips; both once:false, +// both voiced by an audioPool — the same contract as oac-system-complete). +check( + 'oac-enemies-detected: the combat-start call (visual, combatStart, oac, once:false)', + !!byId['oac-enemies-detected'] && + byId['oac-enemies-detected'].from === 'oac' && + byId['oac-enemies-detected'].type === 'visual' && + byId['oac-enemies-detected'].trigger === 'combatStart' && + byId['oac-enemies-detected'].once === false, +); +const detPool = byId['oac-enemies-detected']?.audioPool ?? []; +check( + 'oac-enemies-detected: the three detected clips (audioPool, no fixed audio)', + byId['oac-enemies-detected']?.audio === null && + JSON.stringify(detPool) === + JSON.stringify([ + 'assets/speech/oac/enemies-detected-01.mp3', + 'assets/speech/oac/enemies-detected-02.mp3', + 'assets/speech/oac/enemies-detected-03.mp3', + ]), +); +check('oac-enemies-detected: every pool clip ships on disk', detPool.every((f) => existsSync(join(root, f)))); +check('oac-enemies-detected: fires AT the fight (delayMs === 0)', (byId['oac-enemies-detected']?.delayMs ?? -1) === 0); +check( + 'oac-enemies-detected: a played call RE-arms (once:false — every combat start)', + commsForTrigger(cfg, 'combatStart', new Set(['oac-enemies-detected'])).length === 1, +); +check( + 'oac-enemies-defeated: the combat-end sign-off (visual, combatEnd, oac, once:false)', + !!byId['oac-enemies-defeated'] && + byId['oac-enemies-defeated'].from === 'oac' && + byId['oac-enemies-defeated'].type === 'visual' && + byId['oac-enemies-defeated'].trigger === 'combatEnd' && + byId['oac-enemies-defeated'].once === false, +); +const defPool = byId['oac-enemies-defeated']?.audioPool ?? []; +check( + 'oac-enemies-defeated: the three defeated clips (audioPool, no fixed audio)', + byId['oac-enemies-defeated']?.audio === null && + JSON.stringify(defPool) === + JSON.stringify([ + 'assets/speech/oac/enemies-defeated-01.mp3', + 'assets/speech/oac/enemies-defeated-02.mp3', + 'assets/speech/oac/enemies-defeated-03.mp3', + ]), +); +check('oac-enemies-defeated: every pool clip ships on disk', defPool.every((f) => existsSync(join(root, f)))); +check('oac-enemies-defeated: waits 1 s for the last kill to land (delayMs === 1000)', (byId['oac-enemies-defeated']?.delayMs ?? -1) === 1000); +check( + 'oac-enemies-defeated: a played sign-off RE-arms (once:false — every combat end)', + commsForTrigger(cfg, 'combatEnd', new Set(['oac-enemies-defeated'])).length === 1, +); +const detAssets = commAssets(cfg, byId['oac-enemies-detected']); +check( + 'oac-enemies-detected assets: the pool rolls to a shipped clip, keyed', + detAssets.video?.key === 'comms_vid_oac' && + detPool.includes(detAssets.audio?.url) && + detAssets.audio?.key === audioKeyFor(detAssets.audio.url), +); +const defAssets = commAssets(cfg, byId['oac-enemies-defeated']); +check( + 'oac-enemies-defeated assets: the pool rolls to a shipped clip, keyed', + defAssets.video?.key === 'comms_vid_oac' && + defPool.includes(defAssets.audio?.url) && + defAssets.audio?.key === audioKeyFor(defAssets.audio.url), +); + // The 'Leaving the Nest' beats — Trestle's THREE-BRIEF sequence (the // home gates go online; ALL THREE in the run's comms played-ledger are // the quest's 'Talk to Trestle' witness — GameScene._trestleCheck) and diff --git a/dev/jump-travel.test.mjs b/dev/jump-travel.test.mjs index 78318b3..de343a7 100644 --- a/dev/jump-travel.test.mjs +++ b/dev/jump-travel.test.mjs @@ -43,6 +43,7 @@ const check = (label, cond) => { // ---------------------------------------------------------------------- const gates = read('gates.json'); const tether = read('tether.json'); +const landing = read('landing.json'); const jump = gates.jump; check('jump: section present', !!jump && typeof jump === 'object'); @@ -55,13 +56,24 @@ check('jump: the toast templates keep their placeholders', typeof jump?.toast === 'string' && jump.toast.includes('{dest}') && typeof jump?.dormantToast === 'string' && jump.dormantToast.includes('{system}') && typeof jump?.miningToast === 'string' && jump.miningToast.length > 0); +check('jump: combatToast is the live-fight denial (non-empty string)', + typeof jump?.combatToast === 'string' && jump.combatToast.length > 0); check('jump: the gap keeps the ship outside the keepout with room to spare', Number(jump?.arrivalGap ?? -1) + Number(gates.size ?? 0) + Number(gates.shipClearance ?? 0) > Number(gates.size ?? 0) + Number(gates.shipClearance ?? 0)); +// The COMBAT gates (GameScene.jumpThroughGate / startLanding — a live +// fight, CombatSystem.active, denies the jump AND the landing: the run +// can't leave the system it's fighting in, and can't hide on a surface +// while the wave runs): the toasts' shapes. +check('landing: combatDenyToast configured (glyph + text + color)', + !!landing.combatDenyToast && typeof landing.combatDenyToast.glyph === 'string' && + typeof landing.combatDenyToast.text === 'string' && landing.combatDenyToast.text.length > 0 && + /^#[0-9a-fA-F]{6}$/.test(landing.combatDenyToast.color ?? '')); + // ---------------------------------------------------------------------- // The pure geometry (js/galaxy/JumpTravel.js) // ---------------------------------------------------------------------- -const { returnGateFor, arrivalPoint, jumpArrival } = await import('../js/galaxy/JumpTravel.js'); +const { returnGateFor, arrivalPoint, jumpArrival, ambushTriggerDistance } = await import('../js/galaxy/JumpTravel.js'); const contentA = { jumps: [ @@ -100,6 +112,23 @@ check('jumpArrival: { x, y, heading, gateId } for a tree-edge jump', check('jumpArrival: null for a one-way shortcut (the scene falls back to the origin)', jumpArrival(contentA, 'D', cfg) === null); +// The 'Pirate Problems' ambush's trigger — HALF the gate→capital stretch +// (GameScene._maybeStartPirateAmbush fires the wave once the ship is +// within that distance of the capital world: the midpoint of the +// jumpgate→world line). +const gate0 = { x: 1000, y: 2000 }; +const cap0 = { x: 4000, y: 6000 }; // 3000, 4000 apart → 5000 +check('ambushTriggerDistance: half the gate→world stretch (the ambush midpoint)', + ambushTriggerDistance(gate0, cap0) === 2500); +check('ambushTriggerDistance: symmetric (gate/world order is immaterial)', + ambushTriggerDistance(cap0, gate0) === 2500); +check('ambushTriggerDistance: null on a missing point (no gate / no capital)', + ambushTriggerDistance(null, cap0) === null && + ambushTriggerDistance(gate0, null) === null && + ambushTriggerDistance({ x: 1 }, { y: 1 }) === null); +check('ambushTriggerDistance: null on a zero stretch (gate on the world)', + ambushTriggerDistance({ x: 5, y: 5 }, { x: 5, y: 5 }) === null); + // ---------------------------------------------------------------------- // A REAL galaxy (bootstrap config the way main.js does, from the data dir) // ---------------------------------------------------------------------- diff --git a/js/galaxy/JumpTravel.js b/js/galaxy/JumpTravel.js index 209881b..9e41213 100644 --- a/js/galaxy/JumpTravel.js +++ b/js/galaxy/JumpTravel.js @@ -82,3 +82,26 @@ export function jumpArrival(content, fromId, cfg = {}) { if (!gate) return null; return { ...arrivalPoint(gate, cfg), gateId: gate.id }; } + +/** + * The 'Pirate Problems' ambush's TRIGGER DISTANCE — half the + * gate→capital-world stretch (GameScene._maybeStartPirateAmbush): the + * raiders materialise once the player is that far from the capital + * world, i.e. at the MIDPOINT of the entry-jumpgate → world line, so + * the conflict starts halfway to the capital from the jumpgate. + * + * @param {{x:number,y:number}|null} gate the entry gate (a content + * record, or any {x, y} anchor — the scene's spawn fallback) + * @param {{x:number,y:number}|null} world the capital world + * @returns {number|null} dist(gate, world) / 2, or null when either + * point is missing or the stretch is degenerate (zero) + */ +export function ambushTriggerDistance(gate, world) { + const gx = Number(gate?.x); + const gy = Number(gate?.y); + const wx = Number(world?.x); + const wy = Number(world?.y); + if (![gx, gy, wx, wy].every(Number.isFinite)) return null; + const d = Math.hypot(gx - wx, gy - wy); + return d > 0 ? d / 2 : null; +} diff --git a/js/save/SaveData.js b/js/save/SaveData.js index 31d22bb..8143350 100644 --- a/js/save/SaveData.js +++ b/js/save/SaveData.js @@ -118,6 +118,17 @@ export function captureState(scene, now) { galaxyName: galaxy.name, currentSystemId: galaxy.currentSystemId, systemName: scene.systemRecord?.name ?? null, + // The last JUMP's source system (GameScene.lastJumpFromSystem — + // jumpThroughGate stages it into the restore record; the scene + // re-reads it from its own restore). The 'Pirate Problems' + // ambush's midpoint is measured from the ENTRY GATE + // (returnGateFor(content, lastJumpFrom) — + // GameScene._pirateAmbushEntryGate), so the field rides saves and a + // reload keeps the same midpoint. A save predating it has no field; + // the restore treats the absence as a fresh run (the ambush's + // nearest-gate fallback). + lastJumpFrom: + typeof scene.lastJumpFromSystem === 'string' ? scene.lastJumpFromSystem : null, ship: { x: Number(scene.ship.x), y: Number(scene.ship.y), diff --git a/js/scenes/GameScene.js b/js/scenes/GameScene.js index 5c41ab5..83563ff 100644 --- a/js/scenes/GameScene.js +++ b/js/scenes/GameScene.js @@ -18,7 +18,7 @@ import { Planet } from '../entities/Planet.js'; import { AsteroidCluster } from '../entities/AsteroidCluster.js'; import { Station } from '../entities/Station.js'; import { JumpGate } from '../entities/JumpGate.js'; -import { jumpArrival } from '../galaxy/JumpTravel.js'; +import { jumpArrival, returnGateFor, ambushTriggerDistance } from '../galaxy/JumpTravel.js'; import { Starfield } from '../visuals/Starfield.js'; import { NebulaAtmosphere } from '../visuals/NebulaAtmosphere.js'; import { NebulaLightning } from '../visuals/NebulaLightning.js'; @@ -448,6 +448,17 @@ export class GameScene extends Phaser.Scene { // playtime) in the registry (js/save/SaveData.js) — the ship and the // tether field don't exist yet, so apply it once they do (below). this._pendingRestore = consumeRestore(this.registry); + // The last JUMP's source system (jumpThroughGate stages it into the + // restore record; captureState carries it through a panel save too): + // the 'Pirate Problems' ambush measures its midpoint from the gate + // the player came in through — returnGateFor(content, lastJumpFrom) + // (GameScene._pirateAmbushEntryGate). Null on a fresh run or a save + // predating the field — the ambush's nearest-gate fallback stands + // in for it. + this.lastJumpFromSystem = + this._pendingRestore && typeof this._pendingRestore.lastJumpFrom === 'string' + ? this._pendingRestore.lastJumpFrom + : null; // A FRESH run (no staged restore) is what the 'newGame' comms fire // for (the welcome plays on a new game, never on a load) — and a // jump-cut restart (scene.restart, no resetRunState) is NOT one: its @@ -908,8 +919,11 @@ export class GameScene extends Phaser.Scene { // ---- COMBAT — the hostile pack (the ?combat boot) + the combat bar -- // COMBAT IS LIVE IN THE MAIN GAME: the 'Pirate Problems' quest - // (data/quests.json → pirate_problems) ambushes the player on the - // ENTER of the Neutral Capital's system — GameScene. + // (data/quests.json → pirate_problems) ambushes the player at the + // MIDPOINT of the entry-jumpgate → Neutral-Capital-world stretch — + // the enter lands the ship at the gate (a full stretch out); the + // wave starts when it reaches half that distance from the world — + // GameScene. // _maybeStartPirateAmbush fires the pirate_ambush wave run (data/ // combat.json → waves.scripts.pirate_ambush — one rolling wave of six // frame-0 raiders, materializing off-screen around the player from a @@ -1782,15 +1796,19 @@ export class GameScene extends Phaser.Scene { // and the quest guard (_trestleQ4Beats) keeps the beats off the // player before the grant. this._trestleQ4Beats(); - // The 'Pirate Problems' AMBUSH — this is the ENTER of the Neutral - // Capital's system (the scene was just built for it): with the quest - // live and its combat step open, the pirate wave starts — its ships - // materialize OFF-SCREEN around the player, each from a random - // direction (CombatSystem._spawnWaveEnemy), and converge on their - // own chase AI. The other arm is the grant itself (a save whose - // grant landed while the player was already IN the system — the - // same method is a no-op there only when the quest isn't live or - // the wave already ran). + // The 'Pirate Problems' AMBUSH — the ENTER of the Neutral Capital's + // system (the scene was just built for it): the ship is at the entry + // gate (a full gate→capital stretch from the world), so the wave + // starts here only when the spawn already sits within the MIDPOINT + // (a degenerate short stretch) — otherwise update() arms it the + // frame the flight crosses the halfway point (the same method's + // guards are no-op-gated either way). The third arm is the grant + // itself (_questStartBeats — a save whose grant landed while the + // player was already IN the system, past the midpoint or not). + // When it fires, its ships materialize OFF-SCREEN around the player, + // each from a random direction (CombatSystem._spawnWaveEnemy), and + // converge on their own chase AI. + this._ambushSpawn = this.ship ? { x: this.ship.x, y: this.ship.y } : null; this._maybeStartPirateAmbush(); } @@ -1845,11 +1863,20 @@ export class GameScene extends Phaser.Scene { * The action-deck swap (combat mode, Diablo 4 style — one bar in the * same place, depending on the mode): combat LIVE → the combat bar up * and the deck down; combat over → back to the deck. + * The COMBAT COMMS ride this same flip (data/comms.json → + * oac-enemies-detected / oac-enemies-defeated, both visual, both + * once:false): live → OAC's contact call (the wave run's lead — before + * the first hostile lands — or the ?combat pack's spawn); over (the + * last hostile down) → OAC's sign-off (its delayMs, 1 s, lands it + * after the final explosion's read). The hub's in-flight guard + the + * played ledger keep each flip to one voice. * @param {boolean} active */ _setCombatBar(active) { if (this.actionBar) this.actionBar.setVisible(!active); if (this.combatBar) this.combatBar.setVisible(active); + if (active) this.comms?.trigger('combatStart'); + else this.comms?.trigger('combatEnd'); } /** @@ -2368,6 +2395,13 @@ export class GameScene extends Phaser.Scene { this.tetherField.draw(_time); // the barrier (on-screen dots only) this.actionBar?.update(_time, delta); // the deck's living details this._checkDestinationReached(); // last leg done? clear the destination (REACHED) + // 'Pirate Problems' step 2 — the AMBUSH's arm: with the quest live + // and its combat step open, the pirate wave starts the moment the + // ship is within HALF the entry-gate → capital-world stretch — the + // conflict begins halfway to the world from the jumpgate (the + // method is no-op-gated, so the per-frame cost is a few ledger + // reads + one distance check). + this._maybeStartPirateAmbush(); // 'Pirate Problems' step 3 — the RETURN's witness: the ship at the // capital world's rim with the quest held + unclaimed sets // story.capitalReturned (monotonic; _maybeWitnessCapitalReturn is a @@ -2856,6 +2890,20 @@ export class GameScene extends Phaser.Scene { ); return; } + // COMBAT — a live fight (CombatSystem.active — a wave run in flight, + // the 'Pirate Problems' ambush included, or hostiles up) holds the + // ship in the system: a jump mid-wave would carry the run out of its + // own fight (the wave run is scene-local — the enemies and the + // fight's momentum would die with the scene, the run would simply + // vanish with the threat). Same flat denial shape as the mining + // guard above. + if (this.combat?.active) { + this.consoleToast( + String(config.get('gates.jump.combatToast', 'CANNOT JUMP WHILE UNDER ATTACK')), + { glyph: '⌁', glyphColor: toCss(themeColor('neon2', 0xff9b9b)) }, + ); + return; + } // Where we arrive: just past the return gate's keepout (JumpTravel). // Fallback — no return gate (a one-way shortcut, shortcuts are OFF in // the current config): the destination's origin (its center is empty — @@ -2881,6 +2929,14 @@ export class GameScene extends Phaser.Scene { const rec = captureState(this, this.time.now); rec.currentSystemId = destId; + // The AMBUSH's bookkeeping — which gate the player came in through: + // the new scene resolves its entry gate as + // returnGateFor(content, lastJumpFrom) and measures the 'Pirate + // Problems' midpoint from it (GameScene._pirateAmbushEntryGate). + // A panel save carries the field through (captureState), so a + // reload keeps the same midpoint; a save predating it simply lacks + // the field (the nearest-gate fallback). + rec.lastJumpFrom = from.id; rec.systemName = dest.name; rec.ship = { x: arrival.x, @@ -3164,6 +3220,10 @@ export class GameScene extends Phaser.Scene { * 'land' — an unsettled world → land (same gate for the * capital world, were it ever unsettled) * 'cancel' — just close (the console log is the ack) + * Both transports keep their OWN combat guard on top of the panel's + * (GameScene.jumpThroughGate / startLanding — a live fight, + * CombatSystem.active, denies the jump and the landing: the run can't + * leave the system it's fighting in). */ commsAction(id, target) { this.commsPanel.close(); // the buttons close the panel (like miningAction) @@ -3171,7 +3231,7 @@ export class GameScene extends Phaser.Scene { if (id === 'request-jump') { // The panel only offers this when the gate is active and // gates.jump.enabled — jumpThroughGate keeps its own guards - // (mining in progress, a missing destination). + // (mining in progress, a live combat, a missing destination). const gt = target.gate?.entity; if (gt) this.jumpThroughGate(gt); return; @@ -3219,6 +3279,26 @@ export class GameScene extends Phaser.Scene { console.info(`[orbit] comms: landing disabled for ${target.name}`); return; } + // COMBAT — a live fight (CombatSystem.active — a wave run in flight, + // the 'Pirate Problems' ambush included, or hostiles up) holds the + // ship in the air: landing would SLEEP the flight scene under the + // wave — the player would hide on the surface while the raiders + // wait, and the fight's momentum (the wave run is scene-local) would + // die with the sleep. The fight ends where it started, in the air. + // Same flat denial shape as the capital's claim gate below. + if (this.combat?.active) { + const t = config.get('landing.combatDenyToast', {}); + this.playSfx('ui_close'); + this.consoleToast( + String(t.text ?? 'CANNOT LAND WHILE UNDER ATTACK'), + { + glyph: t.glyph ?? '✗', + glyphColor: t.color ? toCss(t.color) : toCss(themeColor('red', 0xff5c77)), + durationMs: 3200, + }, + ); + return; + } // The CAPITAL WORLD holds its door until the 'Leaving the Nest' // reward is CLAIMED (the quest's 200 credits — the quest itself // completes when the ship arrives at this planet; the claim is the @@ -4490,10 +4570,12 @@ export class GameScene extends Phaser.Scene { } this._trestleQ4Beats(); // The AMBUSH's other arm: the grant may have landed while the player - // was already IN the capital's system (a late claim out there) — the - // create() arm only covers the enter. _maybeStartPirateAmbush is - // no-op-gated (quest live + step open + system match + not already - // running/done), so re-calling it here is safe. + // was already IN the capital's system (a late claim out there) — if + // the ship is already within the midpoint the wave starts here; if + // it's still gate-side, update()'s arm arms it once the flight + // crosses the halfway point. _maybeStartPirateAmbush is no-op-gated + // (quest live + step open + system match + not already running/done + // + within the midpoint trigger), so re-calling it here is safe. this._maybeStartPirateAmbush(); } @@ -4665,23 +4747,30 @@ export class GameScene extends Phaser.Scene { /** * The 'Pirate Problems' AMBUSH — the quest's 'Defend your ship from - * pirates' step: when the player ENTERS the Neutral Capital's system - * (the gate-to-capital stretch — 'all bets are off' out here) with the - * quest live (held + unclaimed) and its combat step still open, the - * pirate wave starts — ONE rolling wave of six frame-0 raiders - * (data/combat.json → waves.scripts.pirate_ambush), three at a time, - * each kill feeding a replacement until all six are down. The wave - * ships materialize OFF-SCREEN around the player, each from a random - * direction (CombatSystem._spawnWaveEnemy), and stream in on their - * own chase AI. Two arms call this: - * · create()'s tail — the ENTER of the system (the normal case); + * pirates' step: with the quest live (held + unclaimed) and its + * combat step still open, the pirate wave starts the moment the ship + * reaches the MIDPOINT of the entry-gate → capital-world stretch — + * HALF the jumpgate-to-world distance from the capital (the quest's + * destination is the capital, so the run's flight crosses it), NOT + * on the system's enter (the gate-side spawn is a full stretch out). + * ONE rolling wave of six frame-0 raiders (data/combat.json → + * waves.scripts.pirate_ambush), three at a time, each kill feeding a + * replacement until all six are down. The wave ships materialize + * OFF-SCREEN around the player, each from a random direction + * (CombatSystem._spawnWaveEnemy), and stream in on their own chase + * AI. Three arms call it (all no-op-gated by the guards below): + * · update() — the per-frame arm: the flight crosses the midpoint; + * · create()'s tail — the ENTER, when the spawn already sits + * within the midpoint (a degenerate short stretch); * · _questStartBeats — a grant that lands while the player is * already in the system (a late claim out there). * Guards (all must hold, in order): combat enabled + built; the * quest held + unclaimed; the combat step not yet cleared (the * monotonic done-ledger — a cleared ambush never re-fires); no wave * run in flight (a live fight is the fight); the capital target - * resolves in THIS system (the ambush lives where Trestle is). + * resolves in THIS system (the ambush lives where Trestle is); the + * midpoint resolves (entry gate + capital world both found) and the + * ship is within it of the capital world. * A mid-fight quit re-arms the ambush on load (the in-flight run is * scene-local) — the step's witness is the completion, not the * attempt, so the re-fire is the fair read. @@ -4698,12 +4787,55 @@ export class GameScene extends Phaser.Scene { if (this._combatDone().has(script)) return; // cleared once — the step stands const run = this.combat.waveRun; if (run && run.state !== 'done' && run.state !== 'cancelled') return; // in flight - if (this.galaxy?.neutralCapitalTarget?.()?.systemId !== this.systemRecord?.id) return; + const t = this.galaxy?.neutralCapitalTarget?.(); + if (!t?.objectId || t.systemId !== this.systemRecord?.id) return; // not this system + // The MIDPOINT TRIGGER — half the entry-gate → capital stretch: + // the raiders materialise at the halfway point, not at the gate. + const cap = (this.systemPlanets ?? []).find((p) => p.discoveryId === t.objectId); + const trigger = ambushTriggerDistance(this._pirateAmbushEntryGate(), cap); + if (trigger == null || !this.ship) return; // no stretch to halve + if (Math.hypot(this.ship.x - cap.x, this.ship.y - cap.y) > trigger) return; // not halfway yet this.combat.startWaves(script, { onComplete: () => this._recordCombatDone(script), }); } + /** + * The AMBUSH's entry gate — the gate the player CAME IN through (the + * midpoint is measured from it): the destination's return gate for + * the last jump's source system first (jumpThroughGate stages + * lastJumpFrom into the restore record — exact, and stable across a + * save parked mid-stretch), then the system's gate NEAREST the spawn + * point (a jump materialises the ship just past its return gate's + * keepout, so the nearest gate is the one they used — the fallback + * for a fresh run or a save that predates lastJumpFrom), and + * finally the spawn point itself (a gate-less system — the spawn IS + * where the ship came from). + * @returns {{x:number,y:number}|null} the gate record, or null + */ + _pirateAmbushEntryGate() { + if (typeof this.lastJumpFromSystem === 'string') { + const g = returnGateFor(this.systemContent, this.lastJumpFromSystem); + if (g && typeof g.x === 'number' && typeof g.y === 'number') return g; + } + const anchor = this._ambushSpawn ?? this.ship; + if (anchor && Array.isArray(this.systemGates)) { + let best = null; + let bestD = Infinity; + for (const gt of this.systemGates) { + const d = Math.hypot(gt.x - anchor.x, gt.y - anchor.y); + if (d < bestD) { + bestD = d; + best = gt; + } + } + if (best) return best; + } + return anchor && typeof anchor.x === 'number' && typeof anchor.y === 'number' + ? { x: anchor.x, y: anchor.y } + : null; + } + /** * The 'Pirate Problems' RETURN witness — the step's 'Return to the * Neutral Capital World': the moment the ship is at the capital