32 KiB
Reactor Maintenance Campaign Design
This document prepares the handcrafted campaign for implementation. It references docs/design.md terminology directly; campaign text should not introduce mechanics that are absent from the design document.
Campaign Goals
- Teach one
LengthyActiongrammar at a time, then combine systems. - Keep
MoveRobot, inspection, and visible-state reading calm and free. - Make every environment-changing action trigger exactly one
Pulse. - Keep
Forecastoutput systemic and available only at an active and poweredAllSeeingEyeTerminal. - Avoid treating missing
ReactorReadinessas a failure state; it only blocksReady. - Use
UnsafeEntryLossonly whenMoveRobotenters anUnsafedestination cell. - Keep the campaign small enough for a two-week game jam.
Campaign Structure
The campaign uses one tutorial plus six groups. Group 1 intentionally has two levels; Groups 2-6 have three levels each.
| Group | Levels | Networks | Main Lesson |
|---|---|---|---|
| Tutorial | 1 | Fuel |
LengthyAction triggers Pulse; Ready then ActivateReactor wins. |
| 1 | 2 | Fuel |
FlowProp, IsolationValveProp, reachable leaks, and direct ReactorReadiness. |
| 2 | 3 | Coolant |
ConsumerProp, Producing, SprinklerControlProp, wall-mounted CoolantSprinklerValve, SprinklerWater, pressure recovery. |
| 3 | 3 | Electricity |
wall Electricity leaks, repair faces, powered DoorProp, and powered AllSeeingEyeTerminal. |
| 4 | 3 | Fuel + Electricity |
first dual-system interaction: Ignite creates recurring Heat. |
| 5 | 3 | Coolant + Electricity |
SprinklerWater, Evaporation, and wet-electricity Conduct risk. |
| 6 | 3 | Fuel + Coolant + Electricity |
full startup with fire, suppression, wet conduction, and terminal-local Forecast use. |
Authoring Rules
Before AllSeeingEyeTerminal appears in 3-2, all levels must be readable from surface props and visible effects alone. Use simple branches, clear source positions, visible leak access, and obvious valve placement.
Every non-tutorial level must offer at least two plausible first LengthyAction choices. The later the group, the more those choices should require sequencing rather than a single obvious answer.
Do not author level-specific forecast strings. The campaign can require that systemic Forecast output is useful, but the level spec must describe the underlying state that fixed forecast rules can detect.
Do not describe numeric surface thresholds or campaign-specific formulas. Use Unsafe only as the formal movement consequence defined in docs/design.md.
Each level below includes:
Purpose: the reason the level exists.Setup: authored starting conditions.Timeline: intended reasoning andPulseconsequences.Win: requiredReactorReadinessandActivateReactorcondition.Lose: terminal failure orUnsafeEntryLossconditions.ImplementationNotes: content constraints for level data.
Tutorial: First Pulse
T0 - Wake The Feed
Purpose: Teach that one accepted LengthyAction triggers one Pulse, after which Ready can be activated.
Setup:
- Networks:
Fuel. - One disabled
FuelFlowPropfeeds theReactorControlProp. - Required consumer counts are zero.
- No leaks, no surface hazards, no
DoorProp, noAllSeeingEyeTerminal. - Robot starts a few floor cells away from the
FlowProp.
Timeline:
- Player uses
MoveRobotand inspection freely. - Player uses
InteractPropon theFuelFlowProp. - One
PulsepropagatesFuelto theReactorControlProp. - Level enters
Ready. - Player uses
ActivateReactor.
Win: ReactorControlProp has positive Fuel amount and pressure, required consumer counts are zero, and ActivateReactor changes level state to Won.
Lose: No designed loss condition beyond invalid actions; this is guided tutorial content.
ImplementationNotes:
- This is the only single-action setup.
- Do not include
Forecast; noAllSeeingEyeTerminalexists.
Group 1: Fuel
Group 1 teaches pressure-fed Fuel faults with no required ConsumerProp instances and no Forecast. Branches must be visually obvious from FlowProp, IsolationValveProp, leak access, and ReactorControlProp placement.
1-1 - Bleed Line
Purpose: Teach that source startup, reactor feed, and leak isolation are separate decisions.
Setup:
- Networks:
Fuel. - One disabled
FuelFlowProp. - One
ReactorControlPropon a main branch that starts blocked by a closedIsolationValveProp. - One leaking
Fuelsegment on a short side branch with a reachable floor access cell. - One open
IsolationValvePropon the side branch before the leak. - Required consumer counts are zero.
Timeline:
- First choice A: enable the
FlowProp;Pulsefeeds the open leak branch and creates visibleLeakedFuel, but the closed reactor-feed valve keepsReactorReadinessmissing. - First choice B: open the reactor-feed
IsolationValveProp;Pulsechanges the route but does not createReactorReadinessbecause the source is still disabled. - First choice C: close the leak-branch
IsolationValveProp;Pulseprevents fresh leak injection but leaves the reactor unfed. - Player isolates or repairs the leak, enables the source, and opens the reactor-feed branch.
- Player uses
ActivateReactor.
Win: ReactorReadiness is true for Fuel with zero required consumers, then ActivateReactor.
Lose: Heat terminal failure is not present; LeakedFuel alone does not cause UnsafeEntryLoss.
ImplementationNotes:
- The leak branch must be visually identifiable without underground visibility.
- No first
LengthyActionshould make the levelReady.
1-2 - Valve Choice
Purpose: Teach branch-specific isolation versus over-isolating the main feed.
Setup:
- Networks:
Fuel. - One enabled
FuelFlowPropfeeds a fork. - One fork branch reaches the
ReactorControlPropthrough a closed reactor-feedIsolationValveProp. - The other fork branch reaches a leaking
Fuelsegment. - One main
IsolationValvePropbefore the fork. - One leak-branch
IsolationValvePropbefore the leaking segment. - Required consumer counts are zero.
Timeline:
- First choice A: close the main
IsolationValveProp;Pulsestops fresh leak injection and also prevents future reactor feed until reopened. - First choice B: close the leak-branch
IsolationValveProp;Pulsestops fresh leak injection while preserving the main route. - First choice C: repair the leak;
Pulsestops future leak injection but leaves the reactor-feed valve still closed. - Player opens the reactor-feed branch and keeps or restores the main feed.
- Player uses
ActivateReactor.
Win: ReactorReadiness is true for Fuel with zero required consumers, then ActivateReactor.
Lose: No designed UnsafeEntryLoss from LeakedFuel alone; terminal failure only if fixed rules mark the level Lost.
ImplementationNotes:
- Use surface labels or prop placement to distinguish main valve and leak-branch valve.
- The level must not begin
Ready; the reactor-feed branch starts closed.
Group 2: Coolant
Group 2 introduces ConsumerProp requirements and CoolantSprinklerValve pressure tradeoffs. Since Coolant alone is not a fire system yet, these levels focus on Producing consumers, SprinklerControlProp, SprinklerWater, Evaporation, and pressure recovery.
2-1 - Prime The Pump
Purpose: Introduce ConsumerProp as a required production checklist.
Setup:
- Networks:
Coolant. - One enabled
CoolantFlowProp. - Two visible
CoolantConsumerPropinstances:- one starts
Enabledbut is behind a closed branchIsolationValveProp, so it is notProducing, - one starts
Disabledon a supplied branch, so it is supplied but notProducing.
- one starts
- One
ReactorControlProp. - Required consumers: two
Coolant. - The
ReactorControlPropis fed from the main branch.
Timeline:
- First choice A: enable the supplied but disabled
ConsumerProp;Pulsemakes only that consumerProducing. - First choice B: open the blocked branch
IsolationValveProp;Pulsesupplies the already enabled consumer. - First choice C: close the main branch;
Pulsedemonstrates that consumer production depends on supply and delays readiness. - Player sets both consumer branches so both
CoolantConsumerPropinstances areEnabledandProducing. - Player uses
ActivateReactor.
Win: ReactorControlProp has positive Coolant amount and pressure, two required Coolant ConsumerProp instances are Enabled and Producing, then ActivateReactor.
Lose: No designed terminal pressure; only invalid actions or explicit terminal rules.
ImplementationNotes:
- This level introduces the difference between
Enabled,Supplied, andProducingbefore anyCoolantSprinklerValve. - Use visible prop placement; no
AllSeeingEyeTerminal.
2-2 - Sprinkler Debt
Purpose: Teach that an enabled wall-mounted CoolantSprinklerValve can reduce pressure until disabled or isolated.
Setup:
- Networks:
Coolant. - One enabled
CoolantFlowProp. - One wall-mounted
CoolantSprinklerValvestarts discharging because its linkedSprinklerControlPropstartsEnabled. - One nearby
SprinklerControlPropis the only direct sprinkler interaction. - The sprinkler has one adjacent floor outlet/access face and emits
SprinklerWater. - One
CoolantConsumerPropand theReactorControlPropare on the same pressure-sensitive branch. - Required consumers: one
Coolant. - One upstream
IsolationValvePropcan shut the sprinkler branch without shutting the consumer branch.
Timeline:
- First choice A: disable the linked
SprinklerControlProp;Pulsestops discharge and allows pressure recovery. - First choice B: close the sprinkler-branch
IsolationValveProp;Pulsestops discharge by cutting supply to the sprinkler. - First choice C: enable or adjust the required
ConsumerPropfirst;Pulsekeeps sprinkler debt visible. SprinklerWaterevaporates through normalSteprules during pulses caused by useful actions.- Player reaches
ReactorReadinessafterCoolantpressure and required consumer production recover. - Player uses
ActivateReactor.
Win: ReactorControlProp has positive Coolant amount and pressure, one Coolant ConsumerProp is Enabled and Producing, then ActivateReactor.
Lose: No authored Heat or fire; avoid loss pressure except explicit terminal rules.
ImplementationNotes:
- Do not author standalone
Heatin thisCoolant-only level. - Sprinkler is wall-mounted with exactly one outlet/access floor face and exactly one linked
SprinklerControlProp. - This level visually teaches
SprinklerWaterandEvaporationwithout suppression yet.
2-3 - Split Flow
Purpose: Teach JunctionProp routing and consumer requirements in a readable Coolant network.
Setup:
- Networks:
Coolant. - One enabled
CoolantFlowProp. - One
JunctionPropcontrols two consumer branches. - Three visible
CoolantConsumerPropinstances. - One wall-mounted
CoolantSprinklerValvestartsDisabledbecause its linkedSprinklerControlPropstartsDisabled. - Required consumers: two
Coolant. - One branch has a weakened or leaking
Coolantsegment that emitsSprinklerWaterwhen fed.
Timeline:
- First choice A: cycle the
JunctionProp;Pulsechanges which consumers can becomeProducing. - First choice B: close the damaged branch
IsolationValveProp;Pulsestops freshSprinklerWaterinjection but reduces available production paths. - First choice C: repair the
Coolantleak;Pulsestops future leak injection but does not remove existingSprinklerWater. - Player configures routing so two
Coolantconsumers areEnabledandProducing. - Player uses
ActivateReactor.
Win: ReactorControlProp has positive Coolant amount and pressure, two Coolant ConsumerProp instances are Enabled and Producing, then ActivateReactor.
Lose: No designed UnsafeEntryLoss from SprinklerWater alone; otherwise no designed terminal pressure.
ImplementationNotes:
- Keep all relevant branches readable from surface prop placement.
- No
Forecast; noAllSeeingEyeTerminal.
Group 3: Electricity
Group 3 introduces wall Electricity leaks, powered DoorProp behavior, and then powered AllSeeingEyeTerminal. Level 3-1 must remain readable without underground visibility.
3-1 - Door Circuit
Purpose: Introduce DoorProp power requirements while reinforcing wall Electricity leak handling.
Setup:
- Networks:
Electricity. - One enabled
ElectricityFlowProp. - One
DoorPropbeginsClosedand its local supply branch starts blocked by anIsolationValveProp. - One wall-based
Electricityleak with exactly one adjacent floor emission/repair face. - One
ElectricityConsumerPropstartsDisabledon the blocked door-supply branch. - One
ReactorControlPropis fed by the blocked door-supply branch. - Required consumers: one
Electricity. - One
IsolationValvePropcan cut voltage to the leaking wall segment.
Timeline:
- First choice A: interact with the unpowered
DoorProp;Pulseresolves, the door staysClosed, and the leak can continue. - First choice B: open the door-supply
IsolationValveProp;Pulsepowers the door and keeps the leak state readable. - First choice C: isolate or repair the wall leak first;
PulsereducesLeakedElectricityrisk before door operation. - Player powers and toggles the
DoorProp, then restores consumer production and reactor feed. - Player uses
ActivateReactor.
Win: ReactorControlProp has positive Electricity amount and voltage, one Electricity ConsumerProp is Enabled and Producing, then ActivateReactor.
Lose: UnsafeEntryLoss from moving into Unsafe LeakedElectricity; terminal failure if fixed rules mark Lost.
ImplementationNotes:
- Emission/repair face must be visually unambiguous.
- No
Forecast; noAllSeeingEyeTerminal. - Door supply and leak isolation must be readable from nearby props.
3-2 - The First Eye
Purpose: Introduce powered AllSeeingEyeTerminal access and terminal-local Forecast.
Setup:
- Networks:
Electricity. - One
AllSeeingEyeTerminalin a side room. - The terminal's local supply branch starts blocked by an
IsolationValveProp. - One
ElectricityConsumerPropstartsDisabledon a clearly separate supplied branch. - One
ReactorControlPropstarts blocked by a closed reactor-feedIsolationValveProp. - Required consumers: one
Electricity. - One simple wall
Electricityleak is visible from the surface. - One optional
DoorPropis present only if its powered state remains obvious without terminal visibility.
Timeline:
- First choice A: interact with the unpowered
AllSeeingEyeTerminal;Pulseresolves, but no underground view orForecastappears. - First choice B: power the terminal branch;
Pulsemakes later terminal use effective. - First choice C: isolate or repair the visible leak first;
Pulsereduces visible risk but delays terminal information. - Player activates the powered terminal, uses systemic
Forecast, restores required production and control feed. - Player uses
ActivateReactor.
Win: ReactorControlProp has positive Electricity amount and voltage, one Electricity ConsumerProp is Enabled and Producing, then ActivateReactor.
Lose: UnsafeEntryLoss from entering Unsafe LeakedElectricity; terminal failure if fixed rules mark Lost.
ImplementationNotes:
- This is the first campaign level with
Forecast. Forecastoutput must be systemic; do not author level text.- The level remains solvable from visible information, but powering the terminal should clearly improve confidence.
3-3 - Blind Grid
Purpose: Require powered AllSeeingEyeTerminal use in a complex electricity routing puzzle.
Setup:
- Networks:
Electricity. - One
AllSeeingEyeTerminalstarts unpowered on a branch that can be energized early. - Two required
ElectricityConsumerPropinstances sit on different branches. - One
DoorPropcontains surface propagation along a useful route and requires local power. - One visible wall
Electricityleak and one weakened high-voltage segment are on different possible routes. - Required consumers: two
Electricity.
Timeline:
- First choice A: power the terminal branch;
Pulseenables a later useful terminal interaction while other risks advance. - First choice B: interact with the unpowered terminal first;
Pulsechanges nothing and demonstrates the cost of missing power. - First choice C: route power toward visible consumers without terminal information;
Pulsemay feed one consumer while worsening the hidden weak route. - Player activates the powered terminal, reads underground topology and systemic
Forecast, then chooses which branches to isolate, repair, or power. - Player produces both required consumers and powers the
ReactorControlProp. - Player uses
ActivateReactor.
Win: ReactorControlProp has positive Electricity amount and voltage, two Electricity ConsumerProp instances are Enabled and Producing, then ActivateReactor.
Lose: UnsafeEntryLoss from Unsafe LeakedElectricity, terminal Heat if generated by fixed rules, or another fixed terminal rule.
ImplementationNotes:
- This is the first level where terminal use is essential rather than optional.
- The visible-only read should be plausible but incomplete.
Group 4: Fuel + Electricity
Group 4 introduces the first dual-system interaction: Fuel and Electricity can Ignite, generating recurring Heat. From this point onward, Heat is a recurring campaign problem.
4-1 - First Spark
Purpose: Teach that combining LeakedFuel and LeakedElectricity can create Heat.
Setup:
- Networks:
Fuel,Electricity. - One visible
Fuelleak emits near a corridor. - One wall
Electricityleak emits toward the same corridor. - One
FuelConsumerProp, oneElectricityConsumerProp, and oneReactorControlPropon both networks. - Required consumers: one
Fuel, oneElectricity. - One
IsolationValvePropcan isolate either damaged branch.
Timeline:
- First choice A: enable
Fuel;PulsegrowsLeakedFuel. - First choice B: enable
Electricity;PulsegrowsLeakedElectricity. - First choice C: isolate or repair one leak before both networks are active.
- If both leaked values meet, fixed surface rules can
Igniteand createHeat. - Player stabilizes at least one leak path, restores required production, and activates.
Win: ReactorReadiness is true for Fuel and Electricity, required consumers are Enabled and Producing, then ActivateReactor.
Lose: terminal Heat, UnsafeEntryLoss from Unsafe Heat, LeakedElectricity, or wet-electric cells, or fixed terminal failure.
ImplementationNotes:
- Use only designed interactions from the hazard pair table.
Heatappears as a consequence ofIgnite, not as an arbitrary authored patch.
4-2 - Break Before Make
Purpose: Teach source sequencing: fixing or isolating first can be safer than powering both networks.
Setup:
- Networks:
Fuel,Electricity. Fuelsource starts enabled and a small visibleLeakedFuelpatch exists.Electricitysource starts disabled.- One wall
Electricityleak is near the fuel patch. - One powered
DoorPropcan contain surface spread if operated before electricity/fuel overlap grows. - Required consumers: one
Fuel, oneElectricity.
Timeline:
- First choice A: enable
Electricity;Pulsemay createHeatif leaked values interact. - First choice B: close or open a powered
DoorPropto change surface propagation before energizing. - First choice C: isolate or repair the
Fuelleak first. - Player prevents or contains
Ignite, then restores both required services. - Player uses
ActivateReactor.
Win: ReactorReadiness is true for Fuel and Electricity, required consumers are Enabled and Producing, then ActivateReactor.
Lose: terminal Heat or UnsafeEntryLoss from Unsafe cells.
ImplementationNotes:
- Door mechanics are centered on electricity supply: the
DoorPropcan only toggle while powered. - If an
AllSeeingEyeTerminalis present, itsForecastis optional and terminal-local.
4-3 - Hot Bypass
Purpose: Combine structural integrity, route choice, and fire risk.
Setup:
- Networks:
Fuel,Electricity. - Two visible branches can satisfy each required consumer set.
- One high-voltage branch threatens structural degradation near a
Fuelleak path. - One
DoorPropcan containHeatorLeakedElectricitypropagation if powered and closed. - Required consumers: one
Fuel, oneElectricity. - One
HeatShieldsupply is available for movement safety.
Timeline:
- First choice A: route
Electricitythrough the high-voltage branch;Pulsemay create a new wall leak by fixed integrity rules. - First choice B: isolate the
Fuelbypass;Pulsereduces ignition risk but changes available production path. - First choice C: pick up
HeatShield;Pulseimproves future movement safety but does not solve the system. - Player chooses one stable production route per network.
- Player uses
ActivateReactor.
Win: ReactorReadiness is true for Fuel and Electricity, required consumers are Enabled and Producing, then ActivateReactor.
Lose: terminal Heat, UnsafeEntryLoss from Unsafe cells, or fixed terminal failure.
ImplementationNotes:
HeatShieldonly affects movement safety; it does not quenchHeat.- Avoid perfect cleanup requirements.
Group 5: Coolant + Electricity
Group 5 teaches that SprinklerWater is useful system material but dangerous with Electricity. Evaporation becomes important without adding a wait command.
5-1 - Charged Water
Purpose: Teach wet-electricity Conduct.
Setup:
- Networks:
Coolant,Electricity. - One wall-mounted
CoolantSprinklerValvestarts discharging because its linkedSprinklerControlPropstartsEnabled. - Initial
SprinklerWateris visible in a corridor between the sprinkler outlet and an electricity emission face. - One wall
Electricityleak emits toward that corridor. - Required consumers: one
Coolant, oneElectricity. - One
IsolationValvePropcan cut voltage to the leak branch.
Timeline:
- First choice A: disable the linked
SprinklerControlProp;Pulsestops newSprinklerWaterand allows pressure recovery. - First choice B: isolate or repair the
Electricityleak first;Pulsereduces wet-conduction risk before drying. - First choice C: energize electricity production first;
Pulseshows why wet cells andLeakedElectricityare a bad combination. - If
LeakedElectricityreaches wet cells, fixed rules useConduct. - Player restores both required services and activates.
Win: ReactorReadiness is true for Coolant and Electricity, required consumers are Enabled and Producing, then ActivateReactor.
Lose: UnsafeEntryLoss from Unsafe wet-electric cells or fixed terminal failure.
ImplementationNotes:
- No authored forecast prose; terminal-local systemic
Forecastmay warn about wet conduction if a powered terminal exists. - Do not present sprinkler activation as the intended first solution; the problem starts from an already wet corridor.
5-2 - Dry Before Live
Purpose: Teach that Evaporation can be part of useful action sequencing.
Setup:
- Networks:
Coolant,Electricity. - Initial
SprinklerWaterexists on a floor route near anElectricityleak face. - A wall-mounted
CoolantSprinklerValvemaintains wetness and pressure debt because its linkedSprinklerControlPropstartsEnabled. - A powered
DoorPropcan contain electrical surface propagation. - Required consumers: one
Coolant, oneElectricity.
Timeline:
- First choice A: disable the linked
SprinklerControlProp;Pulsestops newSprinklerWaterand allowsEvaporation. - First choice B: close an upstream
IsolationValveProp;Pulsecuts sprinkler supply and changes coolant pressure. - First choice C: power and operate the
DoorPropbefore energizing the leak branch. - Player uses meaningful network actions while
Evaporationreduces wetness. - Player energizes safely, restores both services, and activates.
Win: ReactorReadiness is true for Coolant and Electricity, required consumers are Enabled and Producing, then ActivateReactor.
Lose: UnsafeEntryLoss from Unsafe wet-electric cells or fixed terminal failure.
ImplementationNotes:
- Do not add a wait or fast-forward action.
- Do not author standalone
Heat; drying comes fromEvaporationrules during pulses.
5-3 - Eye In The Storm
Purpose: Combine AllSeeingEyeTerminal with wet-conduction routing.
Setup:
- Networks:
Coolant,Electricity. - One
AllSeeingEyeTerminalis reachable but must be powered before activation revealsForecast. - Two wall-mounted
CoolantSprinklerValveinstances affect different outlet faces through linkedSprinklerControlPropinstances. - One
Electricityroute overlaps one wettable corridor underground. - Required consumers: one
Coolant, oneElectricity.
Timeline:
- First choice A: power the
AllSeeingEyeTerminalbranch; a later terminal interaction enables terminal-local visibility and systemicForecast. - First choice B: disable the nearest
SprinklerControlPropor isolate its coolant supply without terminal information. - First choice C: isolate electricity before changing sprinkler state.
- Player uses terminal-local information to avoid wet conduction and restore required production.
- Player uses
ActivateReactor.
Win: ReactorReadiness is true for Coolant and Electricity, required consumers are Enabled and Producing, then ActivateReactor.
Lose: UnsafeEntryLoss from Unsafe wet-electric cells, or fixed terminal failure.
ImplementationNotes:
- Terminal should reveal why one sprinkler/electric route combination is riskier.
Forecastremains systemic and terminal-local.
Group 6: Full Startup
Group 6 uses Fuel, Coolant, and Electricity. Heat can arise from Fuel + Electricity; CoolantSprinklerValve and SprinklerWater provide suppression while creating pressure and wet-conduction tradeoffs.
6-1 - Three-Key Start
Purpose: First all-network level with one readable problem per network.
Setup:
- Networks:
Fuel,Coolant,Electricity. ReactorControlPropsits on all three networks.- Required consumers: one
Fuel, oneCoolant, oneElectricity. - One visible
Fuelleak, one wall-mountedCoolantSprinklerValvewhose linkedSprinklerControlPropstartsEnabled, and one wallElectricityleak. - One optional
AllSeeingEyeTerminalis off the direct route and requires positiveElectricityflow. - One
HeatShieldand one relevantRemedySupplyPropare available for short-term mitigation.
Timeline:
- First choice A: isolate or repair the
Fuelleak. - First choice B: disable the linked
SprinklerControlPropor isolate the sprinkler branch to restore pressure. - First choice C: isolate or repair the
Electricityleak before wet cells conduct. - First choice D: power the
AllSeeingEyeTerminalbranch for later terminal-localForecast. - First choice E: pick up
HeatShieldor aRemedySupplyPropto buy access to one risky intervention. - Player restores required production for all three carriers.
- Player uses
ActivateReactor.
Win: ReactorReadiness is true for all three carriers, one required ConsumerProp per carrier is Enabled and Producing, then ActivateReactor.
Lose: terminal Heat, UnsafeEntryLoss from Unsafe cells, wet-electric terminal failure, or other fixed terminal failure.
ImplementationNotes:
- Keep this forgiving and compact.
- Do not require hazard cleanup after
Ready. - Inventory mitigation should help with access or timing, not replace network repair and routing.
6-2 - Cascade Lockout
Purpose: Require ordering because one fix can worsen another surface interaction.
Setup:
- Networks:
Fuel,Coolant,Electricity. - A
Fuelleak can meet anElectricityleak andIgnite. - A wall-mounted
CoolantSprinklerValvecan quench or dilute but createsSprinklerWaterwhile its linkedSprinklerControlPropisEnabled. - A powered
DoorPropcan contain one surface spread path. - One
AllSeeingEyeTerminalis reachable and requires positiveElectricityflow. - Required consumers: one per carrier.
Timeline:
- First choice A: use the
SprinklerControlPropto suppress/dilute;Pulsecreates wet-conduction risk. - First choice B: isolate electricity before using sprinkler;
Pulsedelays electricity production. - First choice C: power and toggle the
DoorPropto change containment. - First choice D: power the
AllSeeingEyeTerminalbranch for later systemicForecast. - Player chooses containment, suppression, isolation, and production order.
- Player uses
ActivateReactor.
Win: ReactorReadiness is true for all three carriers, one required ConsumerProp per carrier is Enabled and Producing, then ActivateReactor.
Lose: terminal Heat, UnsafeEntryLoss from Unsafe cells, wet-electric terminal failure, or other fixed terminal failure.
ImplementationNotes:
- This is the main test of previous group lessons in one compact level.
- Door operation must depend on local
Electricitysupply.
6-3 - Critical Path
Purpose: Final capstone with multiple valid solution orders.
Setup:
- Networks:
Fuel,Coolant,Electricity. ReactorControlPropsits on all three networks.- Two
ConsumerPropinstances per carrier exist; one per carrier is required. - One
Fuelleak, one wall-mountedCoolantSprinklerValvewhose linkedSprinklerControlPropstartsEnabled, one wallElectricityleak, one poweredDoorProp, and one weakened structural segment. - One powered-route
AllSeeingEyeTerminal, oneHeatShield, and one relevantRemedySupplyPropare available.
Timeline:
- First choice A: power the
AllSeeingEyeTerminalbranch; a later terminal interaction grants terminal-local topology andForecastwhile hazards advance. - First choice B: isolate or repair the
Fuelleak beforeIgnite. - First choice C: disable the linked
SprinklerControlPropor isolate the sprinkler before energizing wet areas. - First choice D: isolate or repair electricity before using sprinkler suppression.
- First choice E: pick up
HeatShieldor aRemedySupplyPropfor movement/access safety. - Player selects a minimum viable producing consumer set and stabilizes the most terminal interaction.
- Player uses
ActivateReactoras soon asReadyappears.
Win: ReactorReadiness is true for all three carriers, one required ConsumerProp per carrier is Enabled and Producing, then ActivateReactor.
Lose: terminal Heat, UnsafeEntryLoss from Unsafe cells, wet-electric terminal failure, or other fixed terminal failure.
ImplementationNotes:
- Winning with controlled remaining hazards is valid.
Forecastoutput should come only from fixed systemic rules while at the active and powered terminal.
Implementation Checklist
- Add campaign manifest entries in this document order once level data exists.
- Use stable level names because save data and UI can reference them.
- Implement one tutorial level first, then one representative level from each group before filling every group.
- Prioritize mechanics in this order:
Pulseplayback andReactorReadiness.Fuelsource, leak, repair, isolation, andActivateReactor.CoolantConsumerProp,SprinklerControlProp, wall-mountedCoolantSprinklerValve, pressure drop, andEvaporation.Electricitywall leaks,UnsafeEntryLoss, poweredDoorProp.- Powered
AllSeeingEyeTerminaland terminal-local systemicForecast. Ignite,Heat,Dilute,Quench, and wet-electricConduct.- Full campaign content pass.
- If scope tightens, ship tutorial, Group 1, one level each from Groups 2-5, and one final Group 6 level.
Test Expectations
Campaign implementation should add tests for:
- every level loading and validating,
- required consumer counts matching intended group mechanics,
- tutorial solvable with exactly one
LengthyActionbeforeActivateReactor, - every non-tutorial level exposing at least two valid first
LengthyActionchoices, - win criteria reachable for each authored level,
- no level requiring a wait or fast-forward command,
- no
Forecastvisible away from an active and poweredAllSeeingEyeTerminal, - unpowered
DoorPropandAllSeeingEyeTerminalinteractions causing no state change while still triggering aPulse, - no direct interaction with
CoolantSprinklerValve; sprinkler changes happen through linkedSprinklerControlProp, - no pulse-only stationary robot hazard loss,
- campaign manifest order matching this document.