Date: 2026-04-20
- Street: safe action mode. Resolves actions without increasing trace.
- Signal: risky shortcut mode. Each hooked action resolution adds +1 trace.
- Trace: exposure meter tracked in
GameStateastraceLevelwith thresholdtraceThreshold.
- Authority owner remains
GameState. - New state:
actionMode: ActionMode(streetorsignal)traceLevel: InttraceThreshold: Int(currently4)isTraceTriggeredcomputed (traceLevel >= traceThreshold)
- New helpers:
applyStreetAction()(no trace mutation)applySignalAction()(traceLevel += 1+ one-time trigger log)
The Street/Signal hook is currently applied in performAttack():
- if mode is
street->applyStreetAction() - if mode is
signal->applySignalAction()
No turn ownership or turn-resolution architecture was changed.
When trace reaches threshold:
- deterministic one-time combat log entry:
TRACE TRIGGERED — hostile network awareness increased.
- deterministic escalation activation log:
TRACE ESCALATION — enemies adapting
This consequence is currently informational and intentionally lightweight.
- New state:
traceEscalationLevel(starts at0). - Trigger rule: once
traceLevel >= traceThreshold, escalation moves from0 -> 1exactly once per mission. - Gameplay effect at escalation
>= 1:- Player units take +1 incoming damage from enemy attack/spell resolution paths.
- Hook location:
- enemy-side damage calculations in
runEnemyAI(...)callescalatedIncomingDamage(...)before applying damage to player characters.
- enemy-side damage calculations in
- Determinism:
- no randomness in escalation activation.
- escalation resets on mission setup.
- Combat overlay shows:
TRACE: X/threshold - Existing diagnostics panel now also shows trace level and triggered status.
- Added compact action mode toggle button (
STREET/SIGNAL) in combat overlay.
- Added
applyTraceRecovery():- if
traceLevel > 0, reduce by 1. - clamped at 0 (cannot go negative).
- if
- Recovery does not reset escalation and does not undo escalation once triggered.
- Recovery hook:
performLayLow()action path (player-activated).- calls
applyTraceRecovery()then ends the actor turn viacompleteAction(...).
- Action cost:
- consumes the full turn.
- Visibility:
- combat log emits
TRACE REDUCED — laying lowwhen trace is reduced.
- combat log emits
Centralized tuning constants:
traceThreshold = 4traceGainPerSignal = 1traceRecoveryPerLayLow = 1escalationDamageBonus = 1
Intended pacing behavior:
- Players can usually use Signal about 2–3 times before escalation pressure becomes urgent.
- Escalation should feel avoidable with timely Lay Low actions, but never free because recovery costs tempo (full turn).
- Tension should appear around turns ~3–5 in normal combat flow.
Future tuning knobs (numbers only):
- Threshold up/down for faster/slower pressure.
- Recovery/gain parity for aggressive vs conservative runs.
- Escalation damage bonus for severity without adding mechanics.
Log semantics (trace-focused):
- Signal use logs:
TRACE +1 (Signal) - Lay Low recovery logs:
TRACE -1 (Lay Low)(orTRACE -0 (Lay Low)at floor) - Near-threshold warning logs at
traceLevel == traceThreshold - 1:TRACE WARNING — near escalation
Meaning of warning state:
- Warning indicates the next Signal will trigger escalation if no recovery occurs first.
- Intended player interpretation: pause aggression, consider Lay Low tempo tradeoff.
Telemetry snapshot string:
traceTelemetrySummary()returns:traceLevel/threshold- escalation active flag
- current action mode
- Runtime-selectable presets:
MissionPreset.lowPressureMissionPreset.standardMissionPreset.highPressure
- Preset effect (v1): trace threshold only.
lowPressure→ threshold5standard→ threshold4highPressure→ threshold3
- No mechanic changes: Signal gain/recovery cadence and escalation behavior are unchanged.
- Presets control escalation timing
- Mission type controls win condition
- Systems remain identical across combinations
- Added
PlayerRolewith:normalhacker
- Current role state defaults to
normal. - Hacker modifier (one effect only):
- keeps normal Signal gain.
- improves Lay Low recovery by +1 trace.
- No other role abilities are implemented in this pass.
- Added
streettoPlayerRole. - Street modifier (one effect only):
- reduces incoming escalated damage by 1 in
escalatedIncomingDamage(...).
- reduces incoming escalated damage by 1 in
- Escalation trigger, threshold, and trace loop are unchanged.
- Threshold tiering (soft, hard, critical trace states).
- Trace decay/recovery windows.
- Enemy behavior modifiers when trace is triggered.
- Mission-specific trace thresholds.
- Different trace gain by action type.
Requested command:
xcodebuild -project HexWire.xcodeproj -scheme HexWire -destination 'platform=iOS Simulator,name=iPhone 16' build
Result in this environment: NOT_COMPUTABLE (xcodebuild: command not found).