Repository navigation
Own backend: the map's own triggers (step 13) and the events watch's gate - #59
Merged
Merged
Conversation
…d: step 13 The map's TRIG section and the script's trigger() records are laid out as the game's own nodes in the payload, a copy for each player whose list the game would copy them into, chained after the player's entry and before their gate; the TRIG section holds the start-up alone. The gate is turned around so the programs run from the last player's list still there, after every player's own triggers, as eudplib's build runs them. hyperTriggers() records are left out: the map's triggers run every frame as it is, and the game holds a list with hyper triggers in it to every second frame (measured). Found by the probe: the start-up left the current player at the EPD it wrote through, so the first frame's Wait took nobody's slot (the start-up now puts the player back); a deaths() read of a cell 12 to 26 dwords into the table is a player group's number as a player field, so such a cell is asked as the game's own Deaths condition of its player and unit. eudplib's build runs a trigger whose Disabled flag is set where the game does not. The ledger: step 13's 13 rows taken. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01En4SHqafb1QFJ4xgbUkAe5
…aces by When a program's events are created, died and killed alone, four triggers before the walk over the unit places compare what the game shows with what the watch last read: the head of the free list and the place behind it (a unit made pops the head; a place freed goes in behind it), and each player's counts of units and of buildings (0x581DE4 and 0x581F34, taken off as a unit starts to die or is removed; read in the lifted game first). All holding, the watch is passed by; one failing says which group and the watch runs, after which the numbers are read again as far as the frame's changes reach. A wrong number only costs the next frames the watch. A quiet frame of the events probe without on.order: 1.9 µs against eudplib's 5.1 and 6.7 before, the gate 0.25 µs of it; every line at the same frame as before. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01En4SHqafb1QFJ4xgbUkAe5
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01En4SHqafb1QFJ4xgbUkAe5
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01En4SHqafb1QFJ4xgbUkAe5
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Step 13 of the way off eudplib: the map's own triggers in a map of our own — and, in a second commit, the events watch's gate (step 11's one loss to eudplib).
Step 13
trigger()records are laid out as the game's own nodes in the payload, a copy for each player whose list the game would copy them into (the slots named, All Players, a force; a player not in the game gets none), chained after the player's entry and before their gate. Conditions, actions and flags byte for byte as the TRIG section would hold them; texts and sound files among the map's strings. The TRIG section holds the start-up alone.hyperTriggers()records are left out: a map of our own goes through its triggers every frame as it is, and the game holds a list with hyper triggers in it to every second frame (measured in the lifted game; eudplib's build too).Waittook nobody's slot); adeaths(P2, units.TerranGhost)read gave the current player's Marines — a deaths cell 12 to 26 dwords in is a player group's number as a player field, so it is now asked as the game's own Deaths condition of that player and unit.Ledger: step 13's 13 rows flip to takes, nothing else moves. Numbers (lifted game,
probes/own-triggers.ts, a quiet frame): ours 0.4 µs over 10 triggers, eudplib 3.3 µs over 111; the first frame 6 µs against 1,082. Every line the same at the same frame both ways (eudplib without the hyper triggers), but the disabled trigger eudplib runs.The watch's gate (no
on.order/on.morphed)tools/step13/gate-research.mts). All holding, the watch is passed by; one failing says which group and the watch runs, after which the numbers are read again as far as the frame's changes reach (the head pair when a unit came on, the counts of the owners the handler marked, the failing group alone when nothing was found). A wrong number only costs the next frames the watch.probes/own-events.tswithouton.order, 80 places): a quiet frame 1.9 µs (the gate 0.25 of it) against eudplib's 5.1 and 6.7 before; a frame a dead unit's place is freed 15 µs. Every line at the same frame as before.Not played in Remastered yet (
Maps/TrigScript/own-step13-triggers.scx,own-step11-events-gated.scx). Plan: "The map's own triggers on our own backend (2026-10-23)", "The watch's gate (2026-10-23)" and the Open list.🤖 Generated with Claude Code
https://claude.ai/code/session_01En4SHqafb1QFJ4xgbUkAe5