Fix Ink compilation errors (part 1)

- Add missing VAR declarations
- Replace EXTERNAL declarations with proper VARs
- Fix conditional syntax (add proper else clauses)
- Replace -> END with #exit_conversation and loop to start
- Add start knots to operative dialogue files

Files fixed:
- m04_opening_briefing.ink
- m04_npc_operative_cipher.ink
- m04_npc_operative_relay.ink
- m04_npc_operative_static.ink
- m04_npc_voltage.ink (partial)

Remaining to fix:
- m04_npc_robert_chen.ink
- m04_phone_agent0x99.ink
- m04_phone_robert_chen.ink
- m04_terminal_attack_trigger.ink
- m04_terminal_scada_display.ink
- m04_closing_debrief.ink
This commit is contained in:
Z. Cliffe Schreuders
2026-01-14 09:46:33 +00:00
parent 2cf4005700
commit 441f0fc7a9
5 changed files with 82 additions and 54 deletions

View File

@@ -7,10 +7,9 @@
// Variables for tracking combat state
VAR cipher_alerted_team = false
VAR cipher_defeated = false
// External variables (set by game)
EXTERNAL player_detected()
EXTERNAL radio_interrupted()
VAR radio_interrupted = false
VAR player_health_low = false
VAR player_defeated = false
// ===========================================
// CIPHER DETECTION
@@ -18,6 +17,9 @@ EXTERNAL radio_interrupted()
// Optional Task 2.9: Neutralize Operative #1
// ===========================================
=== start ===
-> cipher_detection
=== cipher_detection ===
#speaker:operative_cipher
@@ -91,11 +93,14 @@ You picked the wrong facility to infiltrate.
{cipher_defeated:
-> cipher_defeated_outcome
- player_defeated:
}
{player_defeated:
-> cipher_victory
- else:
}
{not cipher_defeated and not player_defeated:
-> cipher_combat_sequence
}
-> cipher_combat_sequence
=== cipher_defeated_outcome ===
#speaker:operative_cipher
@@ -109,8 +114,9 @@ You won't... stop the attack...
// Cipher drops Level 2 keycard, radio, intelligence document
// TRIGGERS: Task 2.9 complete (optional)
-> END
#complete_task:neutralize_operative_cipher
#exit_conversation
-> start
=== cipher_victory ===
#speaker:operative_cipher
@@ -120,8 +126,9 @@ You won't... stop the attack...
Stay down.
// Player respawns at checkpoint
-> END
#player_defeated
#exit_conversation
-> start
// ===========================================
// OPTIONAL: CIPHER SURRENDER/INTERROGATION
@@ -172,5 +179,6 @@ You'd have to disable all three to stop it.
// Cipher restrained and secured
// TRIGGERS: Task 2.9 complete (optional)
-> END
#complete_task:neutralize_operative_cipher
#exit_conversation
-> start

View File

@@ -7,10 +7,9 @@
// Variables for tracking combat state
VAR relay_alerted_team = false
VAR relay_defeated = false
// External variables (set by game)
EXTERNAL player_detected()
EXTERNAL radio_interrupted()
VAR radio_interrupted = false
VAR player_health_low = false
VAR player_defeated = false
// ===========================================
// RELAY DETECTION
@@ -18,6 +17,9 @@ EXTERNAL radio_interrupted()
// Optional Task 2.10: Neutralize Operative #2
// ===========================================
=== start ===
-> relay_patrol_alert
=== relay_patrol_alert ===
#speaker:operative_relay
@@ -80,11 +82,14 @@ Voltage, we've got company!
{relay_defeated:
-> relay_defeated_outcome
- player_defeated:
}
{player_defeated:
-> relay_victory
- else:
}
{not relay_defeated and not player_defeated:
-> relay_combat_sequence
}
-> relay_combat_sequence
=== relay_defeated_outcome ===
#speaker:operative_relay
@@ -98,8 +103,9 @@ The attack... will still... happen...
// Relay drops Master keycard, radio, bypass device schematics
// TRIGGERS: Task 2.10 complete (optional)
-> END
#complete_task:neutralize_operative_relay
#exit_conversation
-> start
=== relay_victory ===
#speaker:operative_relay
@@ -109,8 +115,9 @@ The attack... will still... happen...
Stay out of Critical Mass operations.
// Player respawns at checkpoint
-> END
#player_defeated
#exit_conversation
-> start
// ===========================================
// OPTIONAL: RELAY SURRENDER/INTERROGATION
@@ -164,5 +171,6 @@ You'd need to physically disconnect them.
// Relay restrained and secured
// TRIGGERS: Task 2.10 complete (optional)
-> END
#complete_task:neutralize_operative_relay
#exit_conversation
-> start

View File

@@ -6,10 +6,10 @@
// Variables for tracking combat state
VAR static_defeated = false
// External variables (set by game)
EXTERNAL voltage_captured()
EXTERNAL player_priority()
VAR voltage_captured = false
VAR player_priority = ""
VAR player_health_low = false
VAR player_defeated = false
// ===========================================
// STATIC CONFRONTATION
@@ -17,6 +17,9 @@ EXTERNAL player_priority()
// Part of Task 3.1: Confront Voltage
// ===========================================
=== start ===
-> static_voltage_support
=== static_voltage_support ===
#speaker:operative_static
@@ -31,20 +34,21 @@ Voltage, we have company!
// Fights alongside Voltage
-> static_combat_support
- player_priority == "disable":
}
{player_priority == "disable":
// Player prioritizing laptop trigger
Go! I'll cover you!
// Covers Voltage's escape
-> static_combat_delay
- else:
}
{player_priority != "capture" and player_priority != "disable":
// Default combat support
-> static_combat_support
}
-> static_combat_support
=== static_combat_support ===
#speaker:operative_static
@@ -90,11 +94,14 @@ You're not stopping this operation!
{static_defeated:
-> static_defeated_outcome
- player_defeated:
}
{player_defeated:
-> static_victory
- else:
}
{not static_defeated and not player_defeated:
-> static_combat_sequence
}
-> static_combat_sequence
=== static_defeated_outcome ===
#speaker:operative_static
@@ -106,8 +113,8 @@ You're not stopping this operation!
The Architect... will continue...
// Static drops radio, encrypted communications device
-> END
#exit_conversation
-> start
=== static_victory ===
#speaker:operative_static
@@ -118,7 +125,6 @@ The Architect... will continue...
// If Voltage was captured but player lost
Voltage is captured, but you're done.
- else:
// Player defeated, Voltage status varies
@@ -126,8 +132,9 @@ The Architect... will continue...
}
// Player respawns
-> END
#player_defeated
#exit_conversation
-> start
// ===========================================
// STATIC SURRENDER (Rare - Only if Voltage Captured)
@@ -196,5 +203,5 @@ You stopped this one. How many others can you stop?
// Static restrained
// TRIGGERS: Part of Task 3.1 completion
-> END
#exit_conversation
-> start

View File

@@ -12,13 +12,13 @@ VAR combat_difficulty = "normal" // Combat difficulty modifier
VAR voltage_defeated_before_trigger = false
VAR voltage_triggered_attack = false
VAR attack_partially_triggered = false
VAR operatives_defeated = 0 // Number of operatives defeated
VAR attack_trigger_secured = false // Trigger already disabled?
VAR voltage_defeated = false // Voltage defeated in combat?
VAR voltage_escaped = false // Voltage escaped?
// External variables (set by game)
EXTERNAL player_name()
EXTERNAL operatives_defeated()
EXTERNAL attack_trigger_secured()
EXTERNAL voltage_defeated()
EXTERNAL voltage_escaped()
// ===========================================
// CONFRONTATION START
@@ -338,8 +338,9 @@ This attack. One facility. You stopped your battle. We're winning the war.
// SAFETYNET team arrives to take custody
// TRIGGERS: Task 3.1 complete (confront_voltage)
-> END
#complete_task:confront_voltage
#exit_conversation
-> start
// ===========================================
// ESCAPE OUTCOMES
@@ -367,8 +368,8 @@ You're too late!
// TRIGGERS: attack_partially_triggered event
// Task 3.2 becomes emergency intervention mode
-> END
#exit_conversation
-> start
=== voltage_escape_route ===
#speaker:voltage
@@ -393,8 +394,9 @@ This isn't over. You won your battle. We're winning the war.
// TRIGGERS: voltage_escaped event
// Task 3.1 complete (confront_voltage)
-> END
#complete_task:confront_voltage
#exit_conversation
-> start
=== voltage_escape_attempt ===
#speaker:voltage

View File

@@ -11,6 +11,7 @@ VAR knows_full_threat = false // Did player ask about chemical threat?
VAR knows_entropy_cell = false // Did player ask about Critical Mass?
VAR mission_priority = "" // investigation, speed, stealth
VAR combat_ready = false // Player acknowledged combat risk
VAR mission_briefed = false // Briefing completed
// External variables (set by game)
EXTERNAL player_name()
@@ -33,7 +34,8 @@ This one's different from Ransomware Incorporated. More dangerous.
* [Ask what makes it dangerous]
You: What makes this cell more dangerous?
-> threat_level_explanation
Agent 0x99: They're infrastructure specialists. Not just disruption—they weaponize critical systems.
-> briefing_main
* [Express readiness]
~ handler_trust += 10
@@ -321,5 +323,6 @@ Agent 0x99: {combat_ready: Combat may be unavoidable. Stay tactical.| Stay alert
Agent 0x99: Good luck, {player_name()}. Bring those operatives down.
~ mission_briefed = true
-> END
#complete_task:opening_briefing
#exit_conversation
-> start