From abe534dbc0fd620279569f1912e9555cf67f5e86 Mon Sep 17 00:00:00 2001 From: "Z. Cliffe Schreuders" Date: Wed, 19 Nov 2025 13:44:28 +0000 Subject: [PATCH] fix: Correct Ink syntax for EXTERNAL variables and conditionals CRITICAL FIXES: - Add empty parentheses to all EXTERNAL declarations * EXTERNAL player_name() instead of EXTERNAL player_name * EXTERNAL current_mission_id() instead of EXTERNAL current_mission_id * Fixed in all hub files and personal conversation files - Fix conditional syntax to require explicit else clauses * Changed from implicit multi-condition to explicit {- condition: ... - else: ...} * Fixed in all entry points and hub menus - Fix player_name references throughout to use function call syntax * {player_name()} instead of {player_name} - Fix remaining double-prefix bug in dr_chen file * npc_npc_chen_rapport -> npc_chen_rapport FILES UPDATED: - netherton_hub.ink - netherton_ongoing_conversations.ink - chen_hub.ink - dr_chen_ongoing_conversations.ink - haxolottle_hub.ink - haxolottle_ongoing_conversations.ink These changes fix Ink compiler errors: - 'Expected declaration of arguments for EXTERNAL, even if empty' - 'Expected an '- else:' clause here rather than an extra condition' All files should now compile successfully with inklecate. --- story_design/ink/chen_hub.ink | 73 +++++++++-------- .../ink/dr_chen_ongoing_conversations.ink | 17 ++-- story_design/ink/haxolottle_hub.ink | 81 ++++++++++--------- .../ink/haxolottle_ongoing_conversations.ink | 4 +- story_design/ink/netherton_hub.ink | 69 ++++++++-------- .../ink/netherton_ongoing_conversations.ink | 4 +- 6 files changed, 129 insertions(+), 119 deletions(-) diff --git a/story_design/ink/chen_hub.ink b/story_design/ink/chen_hub.ink index f5c160a..e3d9bf2 100644 --- a/story_design/ink/chen_hub.ink +++ b/story_design/ink/chen_hub.ink @@ -19,11 +19,11 @@ INCLUDE dr_chen_ongoing_conversations.ink // These are provided by the game engine // =========================================== -EXTERNAL player_name // LOCAL - Player's agent name -EXTERNAL current_mission_id // LOCAL - Current mission being discussed -EXTERNAL npc_location // LOCAL - Where conversation happens ("lab", "equipment_room", "briefing_room", "field_support") -EXTERNAL mission_phase // LOCAL - Phase of current mission ("pre_briefing", "active", "debriefing", "downtime") -EXTERNAL equipment_status // LOCAL - Status of player's equipment ("nominal", "damaged", "needs_upgrade") +EXTERNAL player_name() // LOCAL - Player's agent name +EXTERNAL current_mission_id() // LOCAL - Current mission being discussed +EXTERNAL npc_location() // LOCAL - Where conversation happens ("lab", "equipment_room", "briefing_room", "field_support") +EXTERNAL mission_phase() // LOCAL - Phase of current mission ("pre_briefing", "active", "debriefing", "downtime") +EXTERNAL equipment_status() // LOCAL - Status of player's equipment ("nominal", "damaged", "needs_upgrade") // =========================================== // GLOBAL VARIABLES (shared across all NPCs) @@ -40,16 +40,17 @@ VAR professional_reputation = 0 // GLOBAL - Agent standing === chen_conversation_entry === // This is the main entry point - game engine calls this -{npc_location == "lab": - Dr. Chen: {player_name}! *looks up from workbench* Perfect timing. Come check this out! -- npc_location == "equipment_room": - Dr. Chen: Oh hey! Here for gear? I just finished calibrating some new equipment. -- npc_location == "briefing_room": - Dr. Chen: Agent {player_name}. *gestures to technical displays* Let's talk about the tech side of this operation. -- npc_location == "field_support": - Dr. Chen: *over comms* Reading you loud and clear. What do you need? -- else: - Dr. Chen: Hey! What brings you by? +{ + - npc_location() == "lab": + Dr. Chen: {player_name()}! *looks up from workbench* Perfect timing. Come check this out! + - npc_location() == "equipment_room": + Dr. Chen: Oh hey! Here for gear? I just finished calibrating some new equipment. + - npc_location() == "briefing_room": + Dr. Chen: Agent {player_name()}. *gestures to technical displays* Let's talk about the tech side of this operation. + - npc_location() == "field_support": + Dr. Chen: *over comms* Reading you loud and clear. What do you need? + - else: + Dr. Chen: Hey! What brings you by? } -> chen_main_hub @@ -64,47 +65,48 @@ VAR professional_reputation = 0 // GLOBAL - Agent standing // Show different options based on location, mission phase, and relationship level // PERSONAL FRIENDSHIP OPTION (always available if topics exist) -+ {has_available_personal_topics() and mission_phase != "active"} [How are you doing, Dr. Chen?] ++ {has_available_personal_topics() and mission_phase() != "active"} [How are you doing, Dr. Chen?] Dr. Chen: Oh! *surprised by personal question* - {npc_chen_rapport >= 70: - Dr. Chen: You know, I really appreciate when people ask that. Want to chat for a bit? - - else: - Dr. Chen: I'm good! Busy, but good. What's up? + { + - npc_chen_rapport >= 70: + Dr. Chen: You know, I really appreciate when people ask that. Want to chat for a bit? + - else: + Dr. Chen: I'm good! Busy, but good. What's up? } -> jump_to_personal_conversations // EQUIPMENT AND TECHNICAL SUPPORT (high priority when damaged or needs upgrade) -+ {equipment_status == "damaged"} [My equipment took damage in the field] ++ {equipment_status() == "damaged"} [My equipment took damage in the field] Dr. Chen: *immediately concerned* Let me see it. What happened? -> equipment_repair_discussion -+ {equipment_status == "needs_upgrade"} [Request equipment upgrades for upcoming mission] ++ {equipment_status() == "needs_upgrade"} [Request equipment upgrades for upcoming mission] Dr. Chen: Upgrades! Yes! I've been working on some new gear. Let me show you what's available. -> equipment_upgrade_menu -+ {mission_phase == "active" and npc_location == "field_support"} [I need technical support in the field] ++ {mission_phase() == "active" and npc_location() == "field_support"} [I need technical support in the field] Dr. Chen: *alert* Okay, talk to me. What's the technical problem? -> field_technical_support // MISSION-SPECIFIC TECHNICAL DISCUSSIONS -+ {current_mission_id == "ghost_in_machine" and mission_phase == "pre_briefing"} [What tech will I need for Ghost Protocol?] ++ {current_mission_id() == "ghost_in_machine" and mission_phase() == "pre_briefing"} [What tech will I need for Ghost Protocol?] Dr. Chen: Ghost Protocol! Okay, so I've prepared some specialized equipment for this one. Let me walk you through it. -> mission_ghost_equipment_briefing -+ {current_mission_id == "ghost_in_machine" and mission_phase == "debriefing"} [Technical debrief for Ghost Protocol] ++ {current_mission_id() == "ghost_in_machine" and mission_phase() == "debriefing"} [Technical debrief for Ghost Protocol] Dr. Chen: How did the equipment perform? I need field data to improve the designs. -> mission_ghost_tech_debrief -+ {current_mission_id == "data_sanctuary"} [What tech is protecting the Data Sanctuary?] ++ {current_mission_id() == "data_sanctuary"} [What tech is protecting the Data Sanctuary?] Dr. Chen: *pulls up schematics* The sanctuary has multi-layered security. Let me explain the architecture. -> mission_sanctuary_tech_overview // GENERAL TECHNICAL TOPICS -+ {mission_phase == "downtime"} [Ask about experimental technology] ++ {mission_phase() == "downtime"} [Ask about experimental technology] Dr. Chen: *eyes light up* Oh! You want to hear about the experimental stuff? Because I have some REALLY cool projects going. -> experimental_tech_discussion -+ {mission_phase == "downtime" and npc_chen_rapport >= 50} [Offer to help test experimental equipment] ++ {mission_phase() == "downtime" and npc_chen_rapport >= 50} [Offer to help test experimental equipment] Dr. Chen: *excited* You'd volunteer for field testing? That would be incredibly helpful! -> volunteer_field_testing @@ -113,18 +115,19 @@ VAR professional_reputation = 0 // GLOBAL - Agent standing -> technical_training_discussion // EXIT OPTIONS -+ {mission_phase == "active" and npc_location == "field_support"} [That's all I needed, thanks] ++ {mission_phase() == "active" and npc_location() == "field_support"} [That's all I needed, thanks] Dr. Chen: Roger that. I'll keep monitoring your situation. Call if you need anything! #exit_conversation -> END + [That's all for now, Chen] - {npc_chen_rapport >= 80: - Dr. Chen: Sounds good! *warm smile* Always great talking with you. Stay safe out there! - - npc_chen_rapport >= 50: - Dr. Chen: Alright! Let me know if you need anything. Seriously, anytime. - - else: - Dr. Chen: Okay. Good luck with the mission! + { + - npc_chen_rapport >= 80: + Dr. Chen: Sounds good! *warm smile* Always great talking with you. Stay safe out there! + - npc_chen_rapport >= 50: + Dr. Chen: Alright! Let me know if you need anything. Seriously, anytime. + - else: + Dr. Chen: Okay. Good luck with the mission! } #exit_conversation -> END diff --git a/story_design/ink/dr_chen_ongoing_conversations.ink b/story_design/ink/dr_chen_ongoing_conversations.ink index 7597a86..6d6691f 100644 --- a/story_design/ink/dr_chen_ongoing_conversations.ink +++ b/story_design/ink/dr_chen_ongoing_conversations.ink @@ -56,8 +56,8 @@ VAR professional_reputation = 0 // GLOBAL - Agent standing (affects all // Provided by game engine when conversation starts // =========================================== -EXTERNAL player_name // LOCAL - Player's agent name -EXTERNAL current_mission_id // LOCAL - Current mission identifier +EXTERNAL player_name() // LOCAL - Player's agent name +EXTERNAL current_mission_id() // LOCAL - Current mission identifier // =========================================== // ENTRY POINT - Conversation Selector @@ -83,12 +83,13 @@ EXTERNAL current_mission_id // LOCAL - Current mission identifier === phase_1_hub === -{total_missions_completed == 1: - Dr. Chen: Agent {player_name}! Great timing. Just finished calibrating the new sensor array. What can I help you with today? -- npc_npc_chen_rapport >= 60: - Dr. Chen: Oh hey! Got a minute? I've been dying to show someone this new encryption bypass I developed. -- else: - Dr. Chen: Agent {player_name}. Need tech support? Equipment upgrades? I'm all ears. +{ + - total_missions_completed == 1: + Dr. Chen: Agent {player_name()}! Great timing. Just finished calibrating the new sensor array. What can I help you with today? + - npc_chen_rapport >= 60: + Dr. Chen: Oh hey! Got a minute? I've been dying to show someone this new encryption bypass I developed. + - else: + Dr. Chen: Agent {player_name()}. Need tech support? Equipment upgrades? I'm all ears. } + {not npc_chen_discussed_tech_philosophy} [Ask about their approach to technology] diff --git a/story_design/ink/haxolottle_hub.ink b/story_design/ink/haxolottle_hub.ink index 19d0972..5342c0a 100644 --- a/story_design/ink/haxolottle_hub.ink +++ b/story_design/ink/haxolottle_hub.ink @@ -20,11 +20,11 @@ INCLUDE haxolottle_ongoing_conversations.ink // These are provided by the game engine // =========================================== -EXTERNAL player_name // LOCAL - Player's agent codename (not real name!) -EXTERNAL current_mission_id // LOCAL - Current mission being discussed -EXTERNAL npc_location // LOCAL - Where conversation happens ("handler_station", "briefing_room", "comms_active", "safehouse") -EXTERNAL mission_phase // LOCAL - Phase of current mission ("planning", "active", "debriefing", "downtime") -EXTERNAL operational_stress_level // LOCAL - How stressed the current situation is ("low", "moderate", "high", "crisis") +EXTERNAL player_name() // LOCAL - Player's agent codename (not real name!) +EXTERNAL current_mission_id() // LOCAL - Current mission being discussed +EXTERNAL npc_location() // LOCAL - Where conversation happens ("handler_station", "briefing_room", "comms_active", "safehouse") +EXTERNAL mission_phase() // LOCAL - Phase of current mission ("planning", "active", "debriefing", "downtime") +EXTERNAL operational_stress_level() // LOCAL - How stressed the current situation is ("low", "moderate", "high", "crisis") // =========================================== // GLOBAL VARIABLES (shared across all NPCs) @@ -41,16 +41,17 @@ VAR professional_reputation = 0 // GLOBAL - Agent standing === haxolottle_conversation_entry === // This is the main entry point - game engine calls this -{npc_location == "handler_station": - Haxolottle: Agent {player_name}! *swivels chair around from monitors* Good to see you. What's up? -- npc_location == "briefing_room": - Haxolottle: *sits across from you with tablet* Okay, let's review the handler support plan for this operation. -- npc_location == "comms_active": - Haxolottle: *over secure comms, calm and focused* Reading you clearly, {player_name}. How can I help? -- npc_location == "safehouse": - Haxolottle: *relaxed posture, coffee mug nearby* Hey. Safe to talk here. What do you need? -- else: - Haxolottle: {player_name}! What brings you by? +{ + - npc_location() == "handler_station": + Haxolottle: Agent {player_name()}! *swivels chair around from monitors* Good to see you. What's up? + - npc_location() == "briefing_room": + Haxolottle: *sits across from you with tablet* Okay, let's review the handler support plan for this operation. + - npc_location() == "comms_active": + Haxolottle: *over secure comms, calm and focused* Reading you clearly, {player_name()}. How can I help? + - npc_location() == "safehouse": + Haxolottle: *relaxed posture, coffee mug nearby* Hey. Safe to talk here. What do you need? + - else: + Haxolottle: {player_name()}! What brings you by? } -> haxolottle_main_hub @@ -65,82 +66,84 @@ VAR professional_reputation = 0 // GLOBAL - Agent standing // Show different options based on location, mission phase, stress level, and friendship // CRISIS HANDLING (takes priority during high-stress situations) -+ {operational_stress_level == "crisis" and mission_phase == "active"} [I need immediate handler support!] ++ {operational_stress_level() == "crisis" and mission_phase() == "active"} [I need immediate handler support!] Haxolottle: *instantly alert* Talk to me. What's happening? -> crisis_handler_support // PERSONAL FRIENDSHIP OPTION (available during downtime if topics exist) -+ {has_available_personal_topics() and mission_phase == "downtime"} [Want to chat? Non-work stuff?] ++ {has_available_personal_topics() and mission_phase() == "downtime"} [Want to chat? Non-work stuff?] Haxolottle: *grins* Personal conversation? According to Regulation 847, that's encouraged for psychological wellbeing. - {npc_haxolottle_friendship_level >= 60: - Haxolottle: And honestly, I could use a break from staring at monitors. What's on your mind? - - else: - Haxolottle: Sure, I've got time. What do you want to talk about? + { + - npc_haxolottle_friendship_level >= 60: + Haxolottle: And honestly, I could use a break from staring at monitors. What's on your mind? + - else: + Haxolottle: Sure, I've got time. What do you want to talk about? } -> jump_to_personal_conversations // ACTIVE MISSION HANDLER SUPPORT -+ {mission_phase == "active" and operational_stress_level != "crisis"} [Request handler support] ++ {mission_phase() == "active" and operational_stress_level() != "crisis"} [Request handler support] Haxolottle: On it. What do you need? -> active_mission_handler_support -+ {mission_phase == "active"} [Request intel update] ++ {mission_phase() == "active"} [Request intel update] Haxolottle: *pulls up intel feeds* Let me give you the current situation... -> intel_update_active -+ {mission_phase == "active" and operational_stress_level == "high"} [Situation is getting complicated] ++ {mission_phase() == "active" and operational_stress_level() == "high"} [Situation is getting complicated] Haxolottle: *focused* Okay. Talk me through what's happening. We'll adapt. -> complicated_situation_support // MISSION PLANNING AND BRIEFING -+ {current_mission_id == "ghost_in_machine" and mission_phase == "planning"} [Review handler plan for Ghost Protocol] ++ {current_mission_id() == "ghost_in_machine" and mission_phase() == "planning"} [Review handler plan for Ghost Protocol] Haxolottle: Ghost Protocol. Right. *pulls up mission docs* Let's go through the support plan. -> mission_ghost_handler_briefing -+ {current_mission_id == "data_sanctuary" and mission_phase == "planning"} [Discuss Data Sanctuary handler support] ++ {current_mission_id() == "data_sanctuary" and mission_phase() == "planning"} [Discuss Data Sanctuary handler support] Haxolottle: Data Sanctuary defensive operation. I'll be coordinating multi-agent support. Here's how we'll handle it. -> mission_sanctuary_handler_plan -+ {mission_phase == "planning"} [Ask about contingency planning] ++ {mission_phase() == "planning"} [Ask about contingency planning] Haxolottle: Contingencies! Yes. Let's talk about what happens when things go sideways. Haxolottle: Per the axolotl principle—*slight smile*—we plan for regeneration. -> contingency_planning_discussion // DEBRIEFING -+ {mission_phase == "debriefing"} [Debrief the operation] ++ {mission_phase() == "debriefing"} [Debrief the operation] Haxolottle: *opens debrief form* Alright. Let's walk through what happened. Start from the beginning. -> operation_debrief -+ {mission_phase == "debriefing" and operational_stress_level == "high"} [That mission was rough] ++ {mission_phase() == "debriefing" and operational_stress_level() == "high"} [That mission was rough] Haxolottle: *concerned* Yeah, I saw. Are you okay? Physically? Mentally? -> rough_mission_debrief // GENERAL HANDLER TOPICS (available during downtime) -+ {mission_phase == "downtime"} [Ask about current threat landscape] ++ {mission_phase() == "downtime"} [Ask about current threat landscape] Haxolottle: *brings up threat analysis dashboard* So, here's what ENTROPY is up to lately... -> threat_landscape_update -+ {mission_phase == "downtime" and npc_haxolottle_friendship_level >= 40} [Ask for operational advice] ++ {mission_phase() == "downtime" and npc_haxolottle_friendship_level >= 40} [Ask for operational advice] Haxolottle: You want my handler perspective? *settles in* Sure. What's the question? -> operational_advice_from_handler -+ {npc_haxolottle_friendship_level >= 50 and mission_phase == "downtime"} [Ask about handler tradecraft] ++ {npc_haxolottle_friendship_level >= 50 and mission_phase() == "downtime"} [Ask about handler tradecraft] Haxolottle: Handler tradecraft! You're interested in the behind-the-scenes stuff? -> handler_tradecraft_discussion // EXIT OPTIONS -+ {mission_phase == "active"} [That's all I needed. Thanks, Hax.] ++ {mission_phase() == "active"} [That's all I needed. Thanks, Hax.] Haxolottle: Roger. I'm monitoring your situation. Call if you need anything. Stay safe out there. #exit_conversation -> END + [That's all for now] - {npc_haxolottle_friendship_level >= 70: - Haxolottle: Alright, {player_name}. *genuine warmth* Always good talking with you. Take care of yourself. - - npc_haxolottle_friendship_level >= 40: - Haxolottle: Sounds good. Let me know if you need anything. Really, anytime. - - else: - Haxolottle: Okay. Talk later! + { + - npc_haxolottle_friendship_level >= 70: + Haxolottle: Alright, {player_name()}. *genuine warmth* Always good talking with you. Take care of yourself. + - npc_haxolottle_friendship_level >= 40: + Haxolottle: Sounds good. Let me know if you need anything. Really, anytime. + - else: + Haxolottle: Okay. Talk later! } #exit_conversation -> END diff --git a/story_design/ink/haxolottle_ongoing_conversations.ink b/story_design/ink/haxolottle_ongoing_conversations.ink index 900d978..5b815d6 100644 --- a/story_design/ink/haxolottle_ongoing_conversations.ink +++ b/story_design/ink/haxolottle_ongoing_conversations.ink @@ -62,8 +62,8 @@ VAR professional_reputation = 0 // GLOBAL - Agent standing (affects all // Provided by game engine when conversation starts // =========================================== -EXTERNAL player_name // LOCAL - Player's agent name -EXTERNAL current_mission_id // LOCAL - Current mission identifier +EXTERNAL player_name() // LOCAL - Player's agent name +EXTERNAL current_mission_id() // LOCAL - Current mission identifier // =========================================== // ENTRY POINT - Conversation Selector diff --git a/story_design/ink/netherton_hub.ink b/story_design/ink/netherton_hub.ink index 5bd9bf3..41268d8 100644 --- a/story_design/ink/netherton_hub.ink +++ b/story_design/ink/netherton_hub.ink @@ -20,10 +20,10 @@ INCLUDE netherton_ongoing_conversations.ink // These are provided by the game engine // =========================================== -EXTERNAL player_name // LOCAL - Player's agent name -EXTERNAL current_mission_id // LOCAL - Current mission being discussed -EXTERNAL npc_location // LOCAL - Where conversation happens ("office", "safehouse", "field", "briefing_room") -EXTERNAL mission_phase // LOCAL - Phase of current mission ("pre_briefing", "active", "debriefing", "downtime") +EXTERNAL player_name() // LOCAL - Player's agent name +EXTERNAL current_mission_id() // LOCAL - Current mission being discussed +EXTERNAL npc_location() // LOCAL - Where conversation happens ("office", "safehouse", "field", "briefing_room") +EXTERNAL mission_phase() // LOCAL - Phase of current mission ("pre_briefing", "active", "debriefing", "downtime") // =========================================== // GLOBAL VARIABLES (shared across all NPCs) @@ -40,16 +40,17 @@ VAR professional_reputation = 0 // GLOBAL - Agent standing === netherton_conversation_entry === // This is the main entry point - game engine calls this -{npc_location == "office": - Netherton: Agent {player_name}. *gestures to chair* What do you need? -- npc_location == "briefing_room": - Netherton: Agent. *stands at tactical display* We have matters to discuss. -- npc_location == "field": - Netherton: *over secure comms* Agent. Report. -- npc_location == "safehouse": - Netherton: *sits across from you in the secure room* We're clear to talk here. What's on your mind? -- else: - Netherton: Agent {player_name}. What requires my attention? +{ + - npc_location() == "office": + Netherton: Agent {player_name()}. *gestures to chair* What do you need? + - npc_location() == "briefing_room": + Netherton: Agent. *stands at tactical display* We have matters to discuss. + - npc_location() == "field": + Netherton: *over secure comms* Agent. Report. + - npc_location() == "safehouse": + Netherton: *sits across from you in the secure room* We're clear to talk here. What's on your mind? + - else: + Netherton: Agent {player_name()}. What requires my attention? } -> netherton_main_hub @@ -64,58 +65,60 @@ VAR professional_reputation = 0 // GLOBAL - Agent standing // Show different options based on location, mission phase, and relationship level // PERSONAL RELATIONSHIP OPTION (always available if topics exist) -+ {has_available_personal_topics() and mission_phase != "active"} [How are you, Director?] ++ {has_available_personal_topics() and mission_phase() != "active"} [How are you, Director?] Netherton: *slight pause, as if surprised by personal question* - {npc_netherton_respect >= 70: - Netherton: That's... considerate of you to ask, Agent. I have a moment for personal discussion. - - else: - Netherton: An unusual question. But acceptable. What do you wish to discuss? + { + - npc_netherton_respect >= 70: + Netherton: That's... considerate of you to ask, Agent. I have a moment for personal discussion. + - else: + Netherton: An unusual question. But acceptable. What do you wish to discuss? } -> jump_to_personal_conversations // MISSION-SPECIFIC CONVERSATIONS (context-dependent) -+ {current_mission_id == "ghost_in_machine" and mission_phase == "pre_briefing"} [Request briefing for Ghost Protocol operation] ++ {current_mission_id() == "ghost_in_machine" and mission_phase() == "pre_briefing"} [Request briefing for Ghost Protocol operation] Netherton: Very well. Let me bring you up to speed on Ghost Protocol. -> mission_ghost_briefing -+ {current_mission_id == "ghost_in_machine" and mission_phase == "active"} [Request tactical guidance] ++ {current_mission_id() == "ghost_in_machine" and mission_phase() == "active"} [Request tactical guidance] Netherton: *reviews your position on tactical display* What do you need? -> mission_ghost_tactical_support -+ {current_mission_id == "ghost_in_machine" and mission_phase == "debriefing"} [Debrief Ghost Protocol operation] ++ {current_mission_id() == "ghost_in_machine" and mission_phase() == "debriefing"} [Debrief Ghost Protocol operation] Netherton: Submit your report, Agent. -> mission_ghost_debrief -+ {current_mission_id == "data_sanctuary"} [About the Data Sanctuary operation...] ++ {current_mission_id() == "data_sanctuary"} [About the Data Sanctuary operation...] Netherton: The Data Sanctuary. A delicate situation. What questions do you have? -> mission_sanctuary_discussion -+ {mission_phase == "downtime" and npc_netherton_respect >= 60} [Ask for operational advice] ++ {mission_phase() == "downtime" and npc_netherton_respect >= 60} [Ask for operational advice] Netherton: You want my counsel? *slight approval* Very well. -> operational_advice_discussion // GENERAL PROFESSIONAL TOPICS (available when not in active mission) -+ {mission_phase != "active"} [Ask about SAFETYNET operations status] ++ {mission_phase() != "active"} [Ask about SAFETYNET operations status] Netherton: *brings up secure display* Current operations status... -> safetynet_status_update -+ {professional_reputation >= 50 and mission_phase == "downtime"} [Request additional training opportunities] ++ {professional_reputation >= 50 and mission_phase() == "downtime"} [Request additional training opportunities] Netherton: Initiative. Good. What areas do you wish to develop? -> training_discussion // EXIT OPTIONS -+ {mission_phase == "active"} [That's all I needed, Director] ++ {mission_phase() == "active"} [That's all I needed, Director] Netherton: Understood. Execute the mission. Report any developments. #exit_conversation -> END + [That will be all, Director] - {npc_netherton_respect >= 80: - Netherton: Very well, Agent {player_name}. *almost warm* Continue your excellent work. - - npc_netherton_respect >= 60: - Netherton: Dismissed. Maintain your current performance level. - - else: - Netherton: Dismissed. + { + - npc_netherton_respect >= 80: + Netherton: Very well, Agent {player_name()}. *almost warm* Continue your excellent work. + - npc_netherton_respect >= 60: + Netherton: Dismissed. Maintain your current performance level. + - else: + Netherton: Dismissed. } #exit_conversation -> END diff --git a/story_design/ink/netherton_ongoing_conversations.ink b/story_design/ink/netherton_ongoing_conversations.ink index 872e02c..2fe18e9 100644 --- a/story_design/ink/netherton_ongoing_conversations.ink +++ b/story_design/ink/netherton_ongoing_conversations.ink @@ -55,8 +55,8 @@ VAR professional_reputation = 0 // GLOBAL - Agent standing (affects all // Provided by game engine when conversation starts // =========================================== -EXTERNAL player_name // LOCAL - Player's agent name -EXTERNAL current_mission_id // LOCAL - Current mission identifier +EXTERNAL player_name() // LOCAL - Player's agent name +EXTERNAL current_mission_id() // LOCAL - Current mission identifier // =========================================== // ENTRY POINT - Conversation Selector