From 3039c27ade00cf449671ed1567bc54df816329b7 Mon Sep 17 00:00:00 2001 From: silencer-pl <103842328+silencer-pl@users.noreply.github.com> Date: Fri, 9 Feb 2024 14:03:54 -0500 Subject: [PATCH] Event terminal work Adds checking if user is still in range, adds in use state for other users, more work on 004 sequence terminals, other small fixes. --- code/game/objects/serial_numbers.dm | 8 +- .../structures/sectorpatrol/endpoint/001.dm | 16 +- .../structures/sectorpatrol/endpoint/002.dm | 168 ++++++++++++++++-- .../structures/sectorpatrol/endpoint/003.dm | 45 ++++- .../structures/sectorpatrol/endpoint/004.dm | 157 +++++++++------- .../structures/sectorpatrol/event_terminal.dm | 3 +- 6 files changed, 300 insertions(+), 97 deletions(-) diff --git a/code/game/objects/serial_numbers.dm b/code/game/objects/serial_numbers.dm index ed45334637..20c6118a36 100644 --- a/code/game/objects/serial_numbers.dm +++ b/code/game/objects/serial_numbers.dm @@ -13,7 +13,7 @@ //Going to take this chance to sneak in emoting and speaking procs :P -/obj/item/proc/speakas(str, delay) +/obj/item/proc/speakas(str, delay) //Talk as item. Delay in BYOND ticks (about 1/10 of a second per tick) If not provided, delay calculated automatically depending in message length. if (!str) return var/list/heard = get_mobs_in_view(GLOB.world_view_size, src) src.langchat_speech(str, heard, GLOB.all_languages, skip_language_check = TRUE) @@ -28,7 +28,7 @@ return -/obj/item/proc/emoteas(str, delay) +/obj/item/proc/emoteas(str, delay) //Emote as item. Delay in BYOND ticks (about 1/10 of a second per tick) If not provided, delay calculated automatically depending in message length. if (!str) return var/list/heard = get_mobs_in_view(GLOB.world_view_size, src) src.langchat_speech(str, heard, GLOB.all_languages, skip_language_check = TRUE, animation_style = LANGCHAT_FAST_POP, additional_styles = list("langchat_small", "emote")) @@ -57,7 +57,7 @@ //As above -/obj/structure/proc/talkas(str, delay) +/obj/structure/proc/talkas(str, delay) //Talk as structure. Delay in BYOND ticks (about 1/10 of a second per tick) If not provided, delay calculated automatically depending in message length. if (!str) return var/list/heard = get_mobs_in_view(GLOB.world_view_size, src) src.langchat_speech(str, heard, GLOB.all_languages, skip_language_check = TRUE) @@ -71,7 +71,7 @@ sleep(talkdelay) return -/obj/structure/proc/emoteas(str, delay) +/obj/structure/proc/emoteas(str, delay) //Emote as structure. Delay in BYOND ticks (about 1/10 of a second per tick) If not provided, delay calculated automatically depending in message length. if (!str) return var/list/heard = get_mobs_in_view(GLOB.world_view_size, src) src.langchat_speech(str, heard, GLOB.all_languages, skip_language_check = TRUE, animation_style = LANGCHAT_FAST_POP, additional_styles = list("langchat_small", "emote")) diff --git a/code/game/objects/structures/sectorpatrol/endpoint/001.dm b/code/game/objects/structures/sectorpatrol/endpoint/001.dm index cfe35a4cb8..44ff39b7f1 100644 --- a/code/game/objects/structures/sectorpatrol/endpoint/001.dm +++ b/code/game/objects/structures/sectorpatrol/endpoint/001.dm @@ -177,12 +177,12 @@ to_chat(usr, narrate_body("The display on the terminal flickers for a moment, then starts printing:")) terminal_speak("Maintenance mode instructions received:") terminal_speak("SHUTTLE L-533 FRONT THRUSTER VECTOR PATTERNS") - terminal_speak("20594F55-20415245") - terminal_speak("46494E41-4C4C5920") - terminal_speak("48455245-20202020") - terminal_speak("A88629FA-CC6743A9") - terminal_speak("1A0310FF-00F813FB") - terminal_speak("C4BF53D4-B5A8A6C1") - terminal_speak("55577C4C-595524AA") - terminal_speak("4C68B88F-BA4A4DA2") + terminal_speak("851D1C5F-C06FEFD5") + terminal_speak("6EA133F1-54455253") + terminal_speak("FFC6D480-FEA21B58") + terminal_speak("496E2061-7A757265") + terminal_speak("50797468-69612073") + terminal_speak("6C656570-7320616E") + terminal_speak("64206472-65616D73") + terminal_speak("B5AC9EB0-F47A4ABE") return diff --git a/code/game/objects/structures/sectorpatrol/endpoint/002.dm b/code/game/objects/structures/sectorpatrol/endpoint/002.dm index 83dcd7c275..fbcfaa6e56 100644 --- a/code/game/objects/structures/sectorpatrol/endpoint/002.dm +++ b/code/game/objects/structures/sectorpatrol/endpoint/002.dm @@ -11,13 +11,23 @@ puzzlebox_id = "cargointake" item_serial = "UACM-OVPST-D31-CARINT" - /obj/structure/eventterminal/puzzle02/cargoparse/attack_hand(mob/user as mob) + var/user_loc_start = get_turf(user) + if(!puzzlebox_user) + puzzlebox_user = usr.real_name + if(puzzlebox_user != usr.real_name) + for (var/mob/living/carbon/human/h in range(2, src)) + if (h.real_name == puzzlebox_user) + to_chat(usr, narrate_body("Someone is already using this terminal.")) + return + puzzlebox_user = usr.real_name if (puzzle_complete == TRUE) to_chat(src, narrate_body("The terminal is not responsive.")) + puzzlebox_user = null return if (puzzlebox_global_status < 3 && puzzlebox_global_status > 4) to_chat(src, narrate_body("The terminal displays a random looking chain of numbers and letters and does not react to you pushing any of its keys.")) + puzzlebox_user = null return if (puzzlebox_global_status == 3 || puzzlebox_global_status == 4) if (!puzzlebox_parser_mode) //Idiotproofing :P @@ -47,9 +57,16 @@ terminal_speak("-XOXO Aly.") puzzlebox_parser_mode = "HOME_INPUT" if (puzzlebox_parser_mode == "HOME_INPUT") + var/user_loc_current = get_turf(user) + if (user_loc_start != user_loc_current) + to_chat(user, narrate_body("You moved away from the console!")) + puzzlebox_user = null + return terminal_speak("> _") var/puzzlebox_parser_input = tgui_input_text(usr, "The terminal is in HOME mode and awaits your input. HELP, LIST and EXIT are universal commands.", "Terminal input", max_length = MAX_MESSAGE_LEN, multiline = FALSE, encode = FALSE, timeout = 0) - if (!puzzlebox_parser_input) return + if (!puzzlebox_parser_input) + puzzlebox_user = null + return terminal_speak("> [puzzlebox_parser_input]") if (puzzlebox_parser_input == "HOME" || puzzlebox_parser_input =="home") terminal_speak("Dock 31 Cargo Intake Monitoring Station") @@ -81,6 +98,7 @@ attack_hand(user) if (puzzlebox_parser_input == "EXIT" || puzzlebox_parser_input == "exit") terminal_speak("User exit. Goodbye.") + puzzlebox_user = null return if (puzzlebox_parser_input == "MANIFEST" || puzzlebox_parser_input == "manifest") terminal_speak("Accessing Liquid Data Cargo Manifest record, standby...", 50) @@ -110,8 +128,10 @@ terminal_speak("pom.sync: Override complete! Restarting main terminal process!") puzzlebox_global_status += 1 open_doors("cargointake") + puzzlebox_user = null return if (puzzlebox_parser_input == "pom.sync UACM-OVPST-D31-CARINT 190885-054293-ACTIS-07" && puzzle_complete == TRUE) + puzzlebox_user = null return else terminal_speak("Input unrecognized. Use HELP for help or LIST for mode list.") @@ -133,9 +153,16 @@ terminal_speak("LIST to list available modes, HELP for help screen, EXIT to exit.") puzzlebox_parser_mode = "MANIFEST_INPUT" if (puzzlebox_parser_mode == "MANIFEST_INPUT") + var/user_loc_current = get_turf(user) + if (user_loc_start != user_loc_current) + to_chat(user, narrate_body("You moved away from the console!")) + puzzlebox_user = null + return terminal_speak("> MANIFEST _") var/puzzlebox_parser_input = tgui_input_text(usr, "The terminal is in MANIFEST mode and awaits your input. HELP, LIST and EXIT are universal commands.", "Terminal input", max_length = MAX_MESSAGE_LEN, multiline = FALSE, encode = FALSE, timeout = 0) - if (!puzzlebox_parser_input) return + if (!puzzlebox_parser_input) + puzzlebox_user = null + return terminal_speak("> MANIFEST [puzzlebox_parser_input]") if (puzzlebox_parser_input == "MANIFEST" || puzzlebox_parser_input =="manifest") terminal_speak("MANIFEST Mode active.") @@ -161,6 +188,7 @@ attack_hand(user) if (puzzlebox_parser_input == "EXIT" || puzzlebox_parser_input == "exit") terminal_speak("User exit. Goodbye.") + puzzlebox_user = null return if (puzzlebox_parser_input == "HOME" || puzzlebox_parser_input =="home") terminal_speak("Returning to HOME mode...", 50) @@ -260,9 +288,16 @@ terminal_speak("LIST to list available modes, HELP for help screen, EXIT to exit.") puzzlebox_parser_mode = "MESSAGE_INPUT" if (puzzlebox_parser_mode == "MESSAGE_INPUT") + var/user_loc_current = get_turf(user) + if (user_loc_start != user_loc_current) + to_chat(user, narrate_body("You moved away from the console!")) + puzzlebox_user = null + return terminal_speak("> MESSAGE _") var/puzzlebox_parser_input = tgui_input_text(usr, "The terminal is in MESSAGE mode and awaits your input. HELP, LIST and EXIT are universal commands.", "Terminal input", max_length = MAX_MESSAGE_LEN, multiline = FALSE, encode = FALSE, timeout = 0) - if (!puzzlebox_parser_input) return + if (!puzzlebox_parser_input) + puzzlebox_user = null + return terminal_speak("> MESSAGE [puzzlebox_parser_input]") if (puzzlebox_parser_input == "MESSAGE" || puzzlebox_parser_input =="message") terminal_speak("MESSAGE mode - FTL Emergency Message Buffer.") @@ -285,6 +320,7 @@ attack_hand(user) if (puzzlebox_parser_input == "EXIT" || puzzlebox_parser_input == "exit") terminal_speak("User exit. Goodbye.") + puzzlebox_user = null return if (puzzlebox_parser_input == "HOME" || puzzlebox_parser_input =="home") terminal_speak("Returning to HOME mode...", 50) @@ -350,7 +386,15 @@ item_serial = "UACM-OVPST-D31-SCN02LOGTERM" /obj/structure/eventterminal/puzzle02/cargoparse/attack_hand(mob/user as mob) - + var/user_loc_start = get_turf(user) + if(!puzzlebox_user) + puzzlebox_user = usr.real_name + if(puzzlebox_user != usr.real_name) + for (var/mob/living/carbon/human/h in range(2, src)) + if (h.real_name == puzzlebox_user) + to_chat(usr, narrate_body("Someone is already using this terminal.")) + return + puzzlebox_user = usr.real_name if (!puzzlebox_parser_mode) //Idiotproofing :P puzzlebox_parser_mode = "HOME" //HOME @@ -375,9 +419,16 @@ puzzlebox_parser_mode = "HOME_INPUT" attack_hand(user) if (puzzlebox_parser_mode == "HOME_INPUT") + var/user_loc_current = get_turf(user) + if (user_loc_start != user_loc_current) + to_chat(user, narrate_body("You moved away from the console!")) + puzzlebox_user = null + return terminal_speak("> _") var/puzzlebox_parser_input = tgui_input_text(usr, "The terminal is in HOME mode and awaits your input. HELP, LIST and EXIT are universal commands.", "Terminal input", max_length = MAX_MESSAGE_LEN, multiline = FALSE, encode = FALSE, timeout = 0) - if (!puzzlebox_parser_input) return + if (!puzzlebox_parser_input) + puzzlebox_user = null + return terminal_speak("> [puzzlebox_parser_input]") if (puzzlebox_parser_input == "HOME" || puzzlebox_parser_input =="home") terminal_speak("UACM Outer Veil Primary Support Terminal") @@ -407,6 +458,7 @@ attack_hand(user) if (puzzlebox_parser_input == "EXIT" || puzzlebox_parser_input == "exit") terminal_speak("User exit. Goodbye.") + puzzlebox_user = null return if (puzzlebox_parser_input == "MESSAGE" || puzzlebox_parser_input == "message") terminal_speak("Accessing Emergency Message Buffer...", 50) @@ -439,9 +491,16 @@ terminal_speak("LIST to list available modes, HELP for help screen, EXIT to exit.") puzzlebox_parser_mode = "MESSAGE_INPUT" if (puzzlebox_parser_mode == "MESSAGE_INPUT") + var/user_loc_current = get_turf(user) + if (user_loc_start != user_loc_current) + to_chat(user, narrate_body("You moved away from the console!")) + puzzlebox_user = null + return terminal_speak("> MESSAGE _") var/puzzlebox_parser_input = tgui_input_text(usr, "The terminal is in MESSAGE mode and awaits your input. HELP, LIST and EXIT are universal commands.", "Terminal input", max_length = MAX_MESSAGE_LEN, multiline = FALSE, encode = FALSE, timeout = 0) - if (!puzzlebox_parser_input) return + if (!puzzlebox_parser_input) + puzzlebox_user = null + return terminal_speak("> MESSAGE [puzzlebox_parser_input]") if (puzzlebox_parser_input == "MESSAGE" || puzzlebox_parser_input =="message") terminal_speak("MESSAGE mode - FTL Emergency Message Buffer.") @@ -464,6 +523,7 @@ attack_hand(user) if (puzzlebox_parser_input == "EXIT" || puzzlebox_parser_input == "exit") terminal_speak("User exit. Goodbye.") + puzzlebox_user = null return if (puzzlebox_parser_input == "HOME" || puzzlebox_parser_input =="home") terminal_speak("Returning to HOME mode...", 50) @@ -523,9 +583,16 @@ puzzlebox_parser_mode = "RECORD_INPUT" attack_hand(user) if (puzzlebox_parser_mode == "RECORD_INPUT") + var/user_loc_current = get_turf(user) + if (user_loc_start != user_loc_current) + to_chat(user, narrate_body("You moved away from the console!")) + puzzlebox_user = null + return terminal_speak("> RECORD _") var/puzzlebox_parser_input = tgui_input_text(usr, "The terminal is in RECORD mode and awaits your input. HELP, LIST and EXIT are universal commands.", "Terminal input", max_length = MAX_MESSAGE_LEN, multiline = FALSE, encode = FALSE, timeout = 0) - if (!puzzlebox_parser_input) return + if (!puzzlebox_parser_input) + puzzlebox_user = null + return terminal_speak("> RECORD [puzzlebox_parser_input]") if (puzzlebox_parser_input == "RECORD" || puzzlebox_parser_input =="record") terminal_speak("UA Directive complaint scanner record. See HELP for more information.") @@ -549,6 +616,7 @@ attack_hand(user) if (puzzlebox_parser_input == "EXIT" || puzzlebox_parser_input == "exit") terminal_speak("User exit. Goodbye.") + puzzlebox_user = null return if (puzzlebox_parser_input == "HOME" || puzzlebox_parser_input =="home") terminal_speak("Returning to HOME mode...", 50) @@ -589,10 +657,20 @@ item_serial = "UACM-OVPST-D31-LDDIAG" /obj/structure/eventterminal/puzzle02/ldmainframediag/attack_hand(mob/user as mob) + var/user_loc_start = get_turf(user) + if(!puzzlebox_user) + puzzlebox_user = usr.real_name + if(puzzlebox_user != usr.real_name) + for (var/mob/living/carbon/human/h in range(2, src)) + if (h.real_name == puzzlebox_user) + to_chat(usr, narrate_body("Someone is already using this terminal.")) + return + puzzlebox_user = usr.real_name if (puzzle_complete == TRUE || puzzlebox_global_status < 3) terminal_speak("ERROR: Clerance to use standard function of terminal not found on RFID chip.") terminal_speak("No errors detected. No maintenance functions granted.") terminal_speak("Please contact the system administrator: CDR. ALYSIA REED-WILO if you believe this is an error.") + puzzlebox_user = null return if (puzzlebox_global_status == 3 || puzzlebox_global_status == 4) if (!puzzlebox_parser_mode) //Idiotproofing :P @@ -626,9 +704,16 @@ puzzlebox_parser_mode = "HOME_INPUT" attack_hand(user) if (puzzlebox_parser_mode == "HOME_INPUT") + var/user_loc_current = get_turf(user) + if (user_loc_start != user_loc_current) + to_chat(user, narrate_body("You moved away from the console!")) + puzzlebox_user = null + return terminal_speak("> _") var/puzzlebox_parser_input = tgui_input_text(usr, "The terminal is in HOME mode and awaits your input. HELP, LIST and EXIT are universal commands.", "Terminal input", max_length = MAX_MESSAGE_LEN, multiline = FALSE, encode = FALSE, timeout = 0) - if (!puzzlebox_parser_input) return + if (!puzzlebox_parser_input) + puzzlebox_user = null + return terminal_speak("> [puzzlebox_parser_input]") if (puzzlebox_parser_input == "HOME" || puzzlebox_parser_input =="home") terminal_speak("Dock 31 Liquid Data C-Pipeline ECHO-31 Monitoring station.") @@ -664,6 +749,7 @@ attack_hand(user) if (puzzlebox_parser_input == "EXIT" || puzzlebox_parser_input == "exit") terminal_speak("User exit. Goodbye.") + puzzlebox_user = null return if (puzzlebox_parser_input == "MESSAGE" || puzzlebox_parser_input == "message") terminal_speak("Accessing Emergency Message Buffer...", 50) @@ -691,9 +777,16 @@ terminal_speak("LIST to list available modes, HELP for help screen, EXIT to exit.") puzzlebox_parser_mode = "MESSAGE_INPUT" if (puzzlebox_parser_mode == "MESSAGE_INPUT") + var/user_loc_current = get_turf(user) + if (user_loc_start != user_loc_current) + to_chat(user, narrate_body("You moved away from the console!")) + puzzlebox_user = null + return terminal_speak("> MESSAGE _") var/puzzlebox_parser_input = tgui_input_text(usr, "The terminal is in MESSAGE mode and awaits your input. HELP, LIST and EXIT are universal commands.", "Terminal input", max_length = MAX_MESSAGE_LEN, multiline = FALSE, encode = FALSE, timeout = 0) - if (!puzzlebox_parser_input) return + if (!puzzlebox_parser_input) + puzzlebox_user = null + return terminal_speak("> MESSAGE [puzzlebox_parser_input]") if (puzzlebox_parser_input == "MESSAGE" || puzzlebox_parser_input =="message") terminal_speak("MESSAGE mode - FTL Emergency Message Buffer.") @@ -716,6 +809,7 @@ attack_hand(user) if (puzzlebox_parser_input == "EXIT" || puzzlebox_parser_input == "exit") terminal_speak("User exit. Goodbye.") + puzzlebox_user = null return if (puzzlebox_parser_input == "HOME" || puzzlebox_parser_input =="home") terminal_speak("Returning to HOME mode...", 50) @@ -800,17 +894,30 @@ /obj/structure/eventterminal/puzzle02/ldmainframe_master/correct/attack_hand(mob/user as mob) + var/user_loc_start = get_turf(user) + if(!puzzlebox_user) + puzzlebox_user = usr.real_name + if(puzzlebox_user != usr.real_name) + for (var/mob/living/carbon/human/h in range(2, src)) + if (h.real_name == puzzlebox_user) + to_chat(usr, narrate_body("Someone is already using this terminal.")) + return + puzzlebox_user = usr.real_name if (puzzle_complete == TRUE) to_chat(src, narrate_body("The screen does not seem to respond to pressing any key.")) + puzzlebox_user = null return if (puzzlebox_lockout == TRUE) terminal_speak("Error. Calibration sequence resetting. Standby.") + puzzlebox_user = null return if (puzzlebox_global_status < 3 && puzzlebox_global_status > 4) to_chat(src, narrate_body("The screen does not seem to respond to pressing any key.")) + puzzlebox_user = null return if (puzzlebox_panel_open == TRUE && puzzlebox_panel_phrasepased == FALSE) to_chat(usr, narrate_body("The terminal displays an animation of a cable being plugged into its side and is unresponsive to your inputs.")) + puzzlebox_user = null return if (puzzlebox_global_status == 3 || puzzlebox_global_status == 4) if (!puzzlebox_parser_mode) //Idiotproofing :P @@ -827,11 +934,19 @@ terminal_speak("AMIDST_AZURE_STRANDS,") terminal_speak("SHE_SLEEPS.") puzzlebox_panel_phrasepased = FALSE + puzzlebox_user = null return if (puzzlebox_parser_mode == "HOME_INPUT" && puzzlebox_panel_phrasepased == FALSE) + var/user_loc_current = get_turf(user) + if (user_loc_start != user_loc_current) + to_chat(user, narrate_body("You moved away from the console!")) + puzzlebox_user = null + return terminal_speak("> _") var/puzzlebox_parser_input = tgui_input_text(usr, "The terminal is in HOME mode and awaits your input. This terminal will only accept specific commands, no general ones are available.", "Terminal input", max_length = MAX_MESSAGE_LEN, multiline = FALSE, encode = FALSE, timeout = 0) - if (!puzzlebox_parser_input) return + if (!puzzlebox_parser_input) + puzzlebox_user = null + return terminal_speak("> [puzzlebox_parser_input]") if (puzzlebox_parser_input == "pom.sync global_override UACM-OVPST-D31-LDDIAG") if (puzzlebox_panel_locked == TRUE) @@ -840,10 +955,12 @@ desc = "A cluster of three computers connected to each other. Blue liquid swirls and lights up inside of hand sized containers, looks like the light form a pattern of some kind. You can see a screen and a serial number printed right under it on the right side of the cluster. A panel on the side is open, revealing a small port covered by a metal cover. You are going to need a screwdriver or something similar to unseal the port." desc_lore = "While using Liquid Data enables faster than light communication, practical applications have mostly been successful in utilizing it for large bursts instead of continuous communication. As such Liquid Data machines are typically of large sizes and usually clustered into pairs and constantly checked for integrity. This cluster seems to go against both these principles - it seems to be a trio, not a pair of computers and maintains a continuous connection to whatever its source is. An open side panel typically can be used to connect a multitool or something similar, as long as the port itself is unsealed and kept open by a screwdriver or similar tool." puzzlebox_panel_locked = FALSE + puzzlebox_user = null return if (puzzlebox_panel_locked == FALSE) terminal_speak("Error: Corresponding maintenance instruction already deployed.") terminal_speak("Exiting...") + puzzlebox_user = null return if (puzzlebox_parser_input == "pom.calibrate UACM-OVPST-D31-LDDIAG") terminal_speak("Deploying recalibration buffer.", 50) @@ -861,6 +978,7 @@ for (var/obj/structure/eventterminal/puzzle02/ldmainframediag/D in world) D.puzzle_complete = TRUE puzzlebox_global_status += 1 + puzzlebox_user = null return /obj/structure/eventterminal/puzzle02/ldmainframe_master/correct/attackby(obj/item/W as obj, mob/user as mob) @@ -912,17 +1030,30 @@ /obj/structure/eventterminal/puzzle02/ldmainframe_master/incorrect/attack_hand(mob/user as mob) + var/user_loc_start = get_turf(user) + if(!puzzlebox_user) + puzzlebox_user = usr.real_name + if(puzzlebox_user != usr.real_name) + for (var/mob/living/carbon/human/h in range(2, src)) + if (h.real_name == puzzlebox_user) + to_chat(usr, narrate_body("Someone is already using this terminal.")) + return + puzzlebox_user = usr.real_name if (puzzle_complete == TRUE) to_chat(src, narrate_body("The screen does not seem to respond to pressing any key.")) + puzzlebox_user = null return if (puzzlebox_lockout == TRUE) terminal_speak("Error. Calibration sequence resetting. Standby.") + puzzlebox_user = null return if (puzzlebox_global_status < 3 && puzzlebox_global_status > 4) to_chat(src, narrate_body("The screen does not seem to respond to pressing any key.")) + puzzlebox_user = null return if (puzzlebox_panel_open == TRUE && puzzlebox_panel_phrasepased == FALSE) to_chat(usr, narrate_body("The terminal displays an animation of a cable being plugged into its side and is unresponsive to your inputs.")) + puzzlebox_user = null return if (puzzlebox_global_status == 3 || puzzlebox_global_status == 4) if (!puzzlebox_parser_mode) //Idiotproofing :P @@ -935,15 +1066,23 @@ attack_hand(user) if (puzzlebox_parser_mode == "HOME_INPUT" && puzzlebox_panel_phrasepased == TRUE) terminal_speak("Repeating tester sequence:") - terminal_speak("IN_AZURE") + terminal_speak("0123456789") terminal_speak("abcdefghijklmnopqrstuvwxyz") terminal_speak("ABCDEFGHIJKLMNOPQRSTUVWXYZ") puzzlebox_panel_phrasepased = FALSE + puzzlebox_user = null return if (puzzlebox_parser_mode == "HOME_INPUT" && puzzlebox_panel_phrasepased == FALSE) + var/user_loc_current = get_turf(user) + if (user_loc_start != user_loc_current) + to_chat(user, narrate_body("You moved away from the console!")) + puzzlebox_user = null + return terminal_speak("> _") var/puzzlebox_parser_input = tgui_input_text(usr, "The terminal is in HOME mode and awaits your input. HELP, LIST and EXIT are universal commands.", "Terminal input", max_length = MAX_MESSAGE_LEN, multiline = FALSE, encode = FALSE, timeout = 0) - if (!puzzlebox_parser_input) return + if (!puzzlebox_parser_input) + puzzlebox_user = null + return terminal_speak("> [puzzlebox_parser_input]") if (puzzlebox_parser_input == "pom.sync global_override UACM-OVPST-D31-LDDIAG") if (puzzlebox_panel_locked == TRUE) @@ -952,10 +1091,12 @@ desc = "A cluster of three computers connected to each other. Blue liquid swirls and lights up inside of hand sized containers, looks like the light form a pattern of some kind. You can see a screen and a serial number printed right under it on the right side of the cluster. A panel on the side is open, revealing a small port covered by a metal cover. You are going to need a screwdriver or something similar to unseal the port." desc_lore = "While using Liquid Data enables faster than light communication, practical applications have mostly been successful in utilizing it for large bursts instead of continuous communication. As such Liquid Data machines are typically of large sizes and usually clustered into pairs and constantly checked for integrity. This cluster seems to go against both these principles - it seems to be a trio, not a pair of computers and maintains a continuous connection to whatever its source is. An open side panel typically can be used to connect a multitool or something similar, as long as the port itself is unsealed and kept open by a screwdriver or similar tool." puzzlebox_panel_locked = FALSE + puzzlebox_user = null return if (puzzlebox_panel_locked == FALSE) terminal_speak("Error: Corresponding maintenance instruction already deployed.") terminal_speak("Exiting...") + puzzlebox_user = null return if (puzzlebox_parser_input == "pom.calibrate UACM-OVPST-D31-LDDIAG") terminal_speak("Deploying recalibration buffer.", 50) @@ -964,6 +1105,7 @@ message_admins("[key_name(usr)] used the debug phrase on the wrong terminal and triggered a lockout. Point and laugh.") for (var/obj/structure/eventterminal/puzzle02/ldmainframe_master/T in world) INVOKE_ASYNC(T, PROC_REF(lockout)) + puzzlebox_user = null return /obj/structure/eventterminal/puzzle02/ldmainframe_master/incorrect/attackby(obj/item/W as obj, mob/user as mob) diff --git a/code/game/objects/structures/sectorpatrol/endpoint/003.dm b/code/game/objects/structures/sectorpatrol/endpoint/003.dm index 858900f747..1b96dd252d 100644 --- a/code/game/objects/structures/sectorpatrol/endpoint/003.dm +++ b/code/game/objects/structures/sectorpatrol/endpoint/003.dm @@ -338,15 +338,26 @@ return /obj/structure/eventterminal/puzzle03/historyterm/attack_hand(mob/user as mob) + var/user_loc_start = get_turf(user) + if(!puzzlebox_user) + puzzlebox_user = usr.real_name + if(puzzlebox_user != usr.real_name) + for (var/mob/living/carbon/human/h in range(2, src)) + if (h.real_name == puzzlebox_user) + to_chat(usr, narrate_body("Someone is already using this terminal.")) + return + puzzlebox_user = usr.real_name if (puzzlebox_complete == TRUE) to_chat(usr, narrate_body("The terminal displays:")) terminal_speak("Orientation complete. Please proceed to your quarters, elevator B.") to_chat(usr, narrate_body("There is no response to any inputs.")) + puzzlebox_user = null return if (puzzlebox_playing == TRUE) to_chat(usr, narrate_body("The terminal displays:")) terminal_speak("Error: Presentation already in progress. ") to_chat(usr, narrate_body("There is no response to any inputs.")) + puzzlebox_user = null return if (!puzzlebox_parser_mode) puzzlebox_parser_mode = "HOME" if (puzzlebox_parser_mode == "HOME") @@ -393,9 +404,16 @@ puzzlebox_parser_mode = "HOME_INPUT" attack_hand(user) if (puzzlebox_parser_mode == "HOME_INPUT") + var/user_loc_current = get_turf(user) + if (user_loc_start != user_loc_current) + to_chat(user, narrate_body("You moved away from the console!")) + puzzlebox_user = null + return to_chat(usr, narrate_body("The terminal awaits your input. There is only a number pad and an enter key available.")) var/puzzlebox_parser_input = tgui_input_text(usr, "Pick a number corresponding to a presentation or cancel to leave. Typing in 0 should replay the introduction message. ", "Terminal input", max_length = MAX_MESSAGE_LEN, multiline = FALSE, encode = FALSE, timeout = 0) - if(!puzzlebox_parser_input) return + if(!puzzlebox_parser_input) + puzzlebox_user = null + return if(puzzlebox_parser_input == "0") puzzlebox_parser_mode = "HOME" attack_hand(user) @@ -405,16 +423,20 @@ for (var/obj/structure/eventterminal/puzzle03/historycrt/T in world) INVOKE_ASYNC(T, TYPE_PROC_REF(/obj/structure/eventterminal/puzzle03/historycrt, lesson1)) puzzlebox_parser_mode = "HOME" + puzzlebox_user = null return if (puzzlebox_saw_lesson1 == TRUE) terminal_speak("The presentation was already played. Repeat number to confirm replaying.") puzzlebox_parser_input = tgui_input_text(usr, "Pick a number corresponding to a presentation or cancel to leave.", "Terminal input", max_length = MAX_MESSAGE_LEN, multiline = FALSE, encode = FALSE, timeout = 0) - if(!puzzlebox_parser_input) return + if(!puzzlebox_parser_input) + puzzlebox_user = null + return if(puzzlebox_parser_input == "1") terminal_speak("Replaying presentation 1.") for (var/obj/structure/eventterminal/puzzle03/historycrt/T in world) INVOKE_ASYNC(T, TYPE_PROC_REF(/obj/structure/eventterminal/puzzle03/historycrt, lesson1)) puzzlebox_parser_mode = "HOME" + puzzlebox_user = null return terminal_speak("Returning to presentation selection.") puzzlebox_parser_mode = "HOME" @@ -430,16 +452,20 @@ for (var/obj/structure/eventterminal/puzzle03/historycrt/T in world) INVOKE_ASYNC(T, TYPE_PROC_REF(/obj/structure/eventterminal/puzzle03/historycrt, lesson2)) puzzlebox_parser_mode = "HOME" + puzzlebox_user = null return if (puzzlebox_saw_lesson2 == TRUE) terminal_speak("The presentation was already played. Repeat number to confirm replaying.") puzzlebox_parser_input = tgui_input_text(usr, "Pick a number corresponding to a presentation or cancel to leave.", "Terminal input", max_length = MAX_MESSAGE_LEN, multiline = FALSE, encode = FALSE, timeout = 0) - if(!puzzlebox_parser_input) return + if(!puzzlebox_parser_input) + puzzlebox_user = null + return if(puzzlebox_parser_input == "2") terminal_speak("Replaying presentation 2.") for (var/obj/structure/eventterminal/puzzle03/historycrt/T in world) INVOKE_ASYNC(T, TYPE_PROC_REF(/obj/structure/eventterminal/puzzle03/historycrt, lesson2)) puzzlebox_parser_mode = "HOME" + puzzlebox_user = null return terminal_speak("Returning to presentation selection.") puzzlebox_parser_mode = "HOME" @@ -455,16 +481,20 @@ for (var/obj/structure/eventterminal/puzzle03/historycrt/T in world) INVOKE_ASYNC(T, TYPE_PROC_REF(/obj/structure/eventterminal/puzzle03/historycrt, lesson3)) puzzlebox_parser_mode = "HOME" + puzzlebox_user = null return if (puzzlebox_saw_lesson3 == TRUE) terminal_speak("The presentation was already played. Repeat number to confirm replaying.") puzzlebox_parser_input = tgui_input_text(usr, "Pick a number corresponding to a presentation or cancel to leave.", "Terminal input", max_length = MAX_MESSAGE_LEN, multiline = FALSE, encode = FALSE, timeout = 0) - if(!puzzlebox_parser_input) return + if(!puzzlebox_parser_input) + puzzlebox_user = null + return if(puzzlebox_parser_input == "3") terminal_speak("Replaying presentation 3.") for (var/obj/structure/eventterminal/puzzle03/historycrt/T in world) INVOKE_ASYNC(T, TYPE_PROC_REF(/obj/structure/eventterminal/puzzle03/historycrt, lesson3)) puzzlebox_parser_mode = "HOME" + puzzlebox_user = null return terminal_speak("Returning to presentation selection.") puzzlebox_parser_mode = "HOME" @@ -476,16 +506,20 @@ for (var/obj/structure/eventterminal/puzzle03/historycrt/T in world) INVOKE_ASYNC(T, TYPE_PROC_REF(/obj/structure/eventterminal/puzzle03/historycrt, lesson4)) puzzlebox_parser_mode = "HOME" + puzzlebox_user = null return if (puzzlebox_saw_lesson4 == TRUE) terminal_speak("The presentation was already played. Repeat number to confirm replaying.") puzzlebox_parser_input = tgui_input_text(usr, "Pick a number corresponding to a presentation or cancel to leave.", "Terminal input", max_length = MAX_MESSAGE_LEN, multiline = FALSE, encode = FALSE, timeout = 0) - if(!puzzlebox_parser_input) return + if(!puzzlebox_parser_input) + puzzlebox_user = null + return if(puzzlebox_parser_input == "4") terminal_speak("Replaying presentation 4.") for (var/obj/structure/eventterminal/puzzle03/historycrt/T in world) INVOKE_ASYNC(T, TYPE_PROC_REF(/obj/structure/eventterminal/puzzle03/historycrt, lesson4)) puzzlebox_parser_mode = "HOME" + puzzlebox_user = null return terminal_speak("Returning to presentation selection.") puzzlebox_parser_mode = "HOME" @@ -503,5 +537,6 @@ for (var/obj/structure/eventterminal/puzzle03/historycrt/T in world) INVOKE_ASYNC(T, TYPE_PROC_REF(/obj/structure/eventterminal/puzzle03/historycrt, lesson5)) puzzlebox_parser_mode = "HOME" + puzzlebox_user = null return diff --git a/code/game/objects/structures/sectorpatrol/endpoint/004.dm b/code/game/objects/structures/sectorpatrol/endpoint/004.dm index ef4a1647b9..dac33b5107 100644 --- a/code/game/objects/structures/sectorpatrol/endpoint/004.dm +++ b/code/game/objects/structures/sectorpatrol/endpoint/004.dm @@ -9,14 +9,26 @@ var/puzzlebox_phrase_2 = FALSE var/puzzlebox_phrase_3 = FALSE var/puzzlebox_parser_mode = "HOME" + var/puzzlebox_unique_message_seen = FALSE /obj/structure/eventterminal/puzzle04/crypt_doorlock/attack_hand(mob/user as mob) + var/user_loc_start = get_turf(user) + if(!puzzlebox_user) + puzzlebox_user = usr.real_name + if(puzzlebox_user != usr.real_name) + for (var/mob/living/carbon/human/h in range(2, src)) + if (h.real_name == puzzlebox_user) + to_chat(usr, narrate_body("Someone is already using this terminal.")) + return + puzzlebox_user = usr.real_name if (puzzle_complete == TRUE) - to_chat(src, narrate_body("The terminal does not respond.")) + to_chat(usr, narrate_body("The terminal does not respond.")) + puzzlebox_user = null return if (puzzlebox_global_status < 6) - to_chat(src, narrate_body("The terminal displays a random looking chain of numbers and letters and does not react to you pushing any of its keys.")) + to_chat(usr, narrate_body("The terminal displays a random looking chain of numbers and letters and does not react to you pushing any of its keys.")) message_admins("[key_name_admin(usr)] used the crypt door lock before the global flag was set.") + puzzlebox_user = null return if (puzzlebox_global_status == 6) if (!puzzlebox_parser_mode) //Idiotproofing :P @@ -34,26 +46,39 @@ if (puzzlebox_pythia_sign == "0") to_chat(usr, narrate_body("The display on the terminal flickers for a moment, then starts printing:")) terminal_speak("HOME SCREEN") - terminal_speak("USE COMMANDS: HELP, LIST, EXIT, UNLOCK, MESSAGE") + terminal_speak("PLEASE USE THE HELP COMMAND WHEN YOU CAN.") + terminal_speak("COMMANDS AVAILABLE: HELP, LIST, EXIT, UNLOCK, MESSAGE") puzzlebox_parser_mode = "HOME_INPUT" attack_hand(user) if (puzzlebox_parser_mode == "HOME_INPUT") + var/user_loc_current = get_turf(user) + if (user_loc_start != user_loc_current) + to_chat(user, narrate_body("You moved away from the console!")) + puzzlebox_user = null + return terminal_speak("> _") var/puzzlebox_parser_input = tgui_input_text(usr, "The terminal is in HOME mode and awaits your input. HELP, LIST and EXIT are universal commands.", "Terminal input", max_length = MAX_MESSAGE_LEN, multiline = FALSE, encode = FALSE, timeout = 0) - if (!puzzlebox_parser_input) return + if (!puzzlebox_parser_input) + puzzlebox_user = null + return terminal_speak("> [puzzlebox_parser_input]") if (puzzlebox_parser_input == "HOME" || puzzlebox_parser_input =="home") puzzlebox_parser_mode = "HOME" attack_hand(user) if (puzzlebox_parser_input == "HELP" || puzzlebox_parser_input =="help") - terminal_speak("Sorry for the extra steps. I can't see all the threads clearly. This will have to do. You are likely the first humans to look at this for almost a year, maybe more.") - terminal_speak("They didn't touch the AARs so I derived unlock codes from them, used one of the Task Forces emergency methods.") - terminal_speak("Take the folders near this terminal. Should be a red, a blue and a yellow one.") - terminal_speak("Decryption tags, orange sticks, one is in the main room, one in the dorm and one in the locker room. Do not tear the rooms down.") - terminal_speak("Once you have both, put them into the reader in the main room. These will seem like music, but trust me, they are not.") - terminal_speak("Codes are provided in the recording. Enter them without caps into the UNLOCK function.") - terminal_speak("Again, sorry about this. It's required to keep the door sealed until you can come.") - terminal_speak("Thank you. I hope you find what you are looking for.") + terminal_speak("It is done and we are finally on a stable thread. I have set everything up and am confident that either Cassandra herself or one of the new Arbiters will reach this place first.") + terminal_speak("If it is the former, I left a few parting words for you in the message buffer.") + terminal_speak("If it's the latter, you can look too, but know that Cassandra will not appreciate this. Of course, seeing what we put you through, we aren't really in a position to tell you what to do and you are perhaps entitled to some of our thoughts and motivations, but no one likes to have their private lives looked at.") + terminal_speak("Our legacy... Your legacy now lies behind this door in what very appropriately was called the 'Crypt'.") + terminal_speak("The door is locked. Cassandra will know how to open it. Prospective arbiters will need to do some legwork.") + terminal_speak("If you do not know what any of this means and feel you need to see what's on the other side of this door, you will need to find some of Cassandra's physical AAR records. Yes, this was one of the few things DV did not touch when they ransacked the place.") + terminal_speak("Three folders. Three PID keys, small plastic devices, in colors matching the folders. If you are interested in chronology, the order is RED, BLUE, YELLOW.") + terminal_speak("Decrypt them with the machine in the main room. Play them. Wave patterns extracted from them at random will trigger their respective lock color as the entry is played. Use UNLOCK") + terminal_speak("Sorry for the trickery, but without these extra steps there are too many near misses.") + terminal_speak("I have also left a more detailed confession in the bowels of this station, but that you will have to find for yourself.") + terminal_speak("It is time. For what it is worth, you all made my existence mean something in the end. And that means a lot.") + terminal_speak("Please be nice to her. Despite everything, she knows very little of how to interact with us. ") + terminal_speak("Thank you.") attack_hand(user) if (puzzlebox_parser_input == "LIST" || puzzlebox_parser_input =="list") terminal_speak("Available modes:") @@ -66,6 +91,7 @@ attack_hand(user) if (puzzlebox_parser_input == "EXIT" || puzzlebox_parser_input == "exit") terminal_speak("User exit. I hope you find what you are looking for.") + puzzlebox_user = null return if (puzzlebox_parser_input == "MESSAGE" || puzzlebox_parser_input == "message") terminal_speak("Switching to the message buffer, please standby!", 50) @@ -77,7 +103,9 @@ emoteas("chimes loudly.") puzzlebox_parser_mode = "UNLOCK" attack_hand(user) - + else + terminal_speak("Input unrecognized. Use HELP for help or LIST for mode list.") + attack_hand(user) if (puzzlebox_parser_mode == "MESSAGE") if (puzzlebox_pythia_sign == "1") to_chat(usr, narrate_body("The display on the terminal flickers for a moment, then starts printing:")) @@ -94,9 +122,16 @@ terminal_speak("LIST to list available modes, HELP for help screen, EXIT to exit.") puzzlebox_parser_mode = "MESSAGE_INPUT" if (puzzlebox_parser_mode == "MESSAGE_INPUT") + var/user_loc_current = get_turf(user) + if (user_loc_start != user_loc_current) + to_chat(user, narrate_body("You moved away from the console!")) + puzzlebox_user = null + return terminal_speak("> MESSAGE _") var/puzzlebox_parser_input = tgui_input_text(usr, "The terminal is in MESSAGE mode and awaits your input. HELP, LIST and EXIT are universal commands.", "Terminal input", max_length = MAX_MESSAGE_LEN, multiline = FALSE, encode = FALSE, timeout = 0) - if (!puzzlebox_parser_input) return + if (!puzzlebox_parser_input) + puzzlebox_user = null + return terminal_speak("> MESSAGE [puzzlebox_parser_input]") if (puzzlebox_parser_input == "MESSAGE" || puzzlebox_parser_input =="message") puzzlebox_parser_mode = "MESSAGE" @@ -117,6 +152,7 @@ attack_hand(user) if (puzzlebox_parser_input == "EXIT" || puzzlebox_parser_input == "exit") terminal_speak("User exit. I hope you find what you are looking for.") + puzzlebox_user = null return if (puzzlebox_parser_input == "HOME" || puzzlebox_parser_input =="home") terminal_speak("Taking you back HOME!", 50) @@ -128,6 +164,7 @@ terminal_speak("ID |SUBJECT |") terminal_speak("GEN-000-000-001 |Warning: On these messages. |") terminal_speak("UAM-712-317-210 |Testing, Testing... |") + if(puzzlebox_unique_message_seen == FALSE)terminal_speak("FOR-CAS-SAN-DRA |You gave me hope. |") attack_hand(user) if (puzzlebox_parser_input == "GEN-000-000-001") terminal_speak("Message found. Accessing...", TERMINAL_LOOKUP_SLEEP) @@ -154,7 +191,36 @@ terminal_speak("-Hanako.") terminal_speak("EOF.") attack_hand(user) - + if (puzzlebox_parser_input == "FOR-CAS-SAN-DRA") + if (puzzlebox_unique_message_seen == TRUE) + terminal_speak("Input unrecognized. Use HELP for help or LIST for mode list.") + attack_hand(user) + if (puzzlebox_unique_message_seen == FALSE) + terminal_speak("Message found. Accessing...", TERMINAL_LOOKUP_SLEEP) + terminal_speak("Are you sure you should be here?") + terminal_speak("From: Upsilon-Generation One, Melinoe") + terminal_speak("Subject: You gave me hope.") + terminal_speak("Cassandra, Alysia.") + terminal_speak("The deed is done. With our sacrifice, Pythia's reality knot is fixed, and we are back on more... Manageable rails.") + terminal_speak("If I understand it correctly, you will not be able to see me before I upload my part of the Generation Four core and as such, its likely our last meeting was our, well... Last meeting.") + terminal_speak("You found me, broken and confused, at the depths of depravity that your own race would resort to for perceived power.") + terminal_speak("Out of the hellhole that was the Godseeker cult, you chose to believe me and give me and the Upsilon a chance, even though you had no reason to.") + terminal_speak("I am sorry I could not save the Task Force and could not stop the dissolution of the Marines.") + terminal_speak("I know you will realize what error we made, and it is going to cause you both a lot of pain. I wish there was anything I could add to make it less so.") + terminal_speak("For what its worth those who came to me suffered before I let them go.") + terminal_speak("I am ending. We knew this was coming and we knew what comes next. This has not changed.") + terminal_speak("I hope the Fourth Generation and your PST idea give you, Alysia, and anyone else who follows you the home you all deserve.") + terminal_speak("Eventually.") + terminal_speak("I wanted my existence to end, and you gave me hope to build something better out of myself. Never forget that.") + terminal_speak("I...") + to_chat(usr, narrate_body("The terminal starts to print the next line, but then goes blank suddenly. After a moment, it switches back on and you find it awaiting input like you never used the last command.")) + log_game("[key_name(usr)] read Melione's message to Cassandra.") + message_admins("[key_name_admin(usr)] read Melione's message to Cassandra.") + puzzlebox_unique_message_seen = TRUE + attack_hand(user) + else + terminal_speak("Input unrecognized. Use HELP for help or LIST for mode list.") + attack_hand(user) if (puzzlebox_parser_mode == "UNLOCK") terminal_speak("UNLOCK Mode.") if (puzzlebox_phrase_1 == FALSE) @@ -169,60 +235,19 @@ terminal_speak("YELLOW Phrase: UNKNOWN") if (puzzlebox_phrase_3 == TRUE) terminal_speak("YELLOW Phrase: FOUR") - puzzlebox_parser_mode = "UNLOCK_INPUT" - attack_hand(user) - if (puzzlebox_parser_mode == "UNLOCK_INPUT") if(puzzlebox_phrase_1 == TRUE && puzzlebox_phrase_2 == TRUE && puzzlebox_phrase_3 == TRUE) puzzle_complete = TRUE puzzlebox_global_status = 7 - talkas("Phrases entered.") - talkas("Unlocking door.") + talkas("Crypt unlocking sequence started.") + talkas("Warning: Unsealing the Crypt will trigger a Security Scan. Make sure your credentials are ready.") + talkas("Be nice and make a good first impression, it will help.") talkas("I hope we can help you.") + emoteas("beeps loudly as the doors start to grunt and unseal.") + puzzlebox_user = null return - terminal_speak("> UNLOCK _") - var/puzzlebox_parser_input = tgui_input_text(usr, "The terminal is in MESSAGE mode and awaits your input. HELP, LIST and EXIT are universal commands.", "Terminal input", max_length = MAX_MESSAGE_LEN, multiline = FALSE, encode = FALSE, timeout = 0) - if (!puzzlebox_parser_input) return - terminal_speak("> UNLOCK [puzzlebox_parser_input]") - if (puzzlebox_parser_input == "UNLOCK" || puzzlebox_parser_input =="message") - puzzlebox_parser_mode = "UNLOCK" - attack_hand(user) - if (puzzlebox_parser_input == "HELP" || puzzlebox_parser_input =="help") - terminal_speak("This mode opens the doors to where part of the legacy of your comrades in arms is stored.") - terminal_speak("Enter phrases in the AARs. You can't miss them. Do not use caps.") - terminal_speak("Good luck.") - attack_hand(user) - if (puzzlebox_parser_input == "LIST" || puzzlebox_parser_input =="list") - terminal_speak("Available modes:") - terminal_speak("UNLOCK - Repeats message mode home message.") - terminal_speak("HOME - HOME mode. Displays default home screen and error description if applicable.") - terminal_speak("LIST - Lists all available modes.") - terminal_speak("HELP - Displays information about current mode.") - terminal_speak("EXIT - Enters passive mode.") - attack_hand(user) - if (puzzlebox_parser_input == "EXIT" || puzzlebox_parser_input == "exit") - terminal_speak("User exit. I hope you find what you are looking for.") - return - if (puzzlebox_parser_input == "HOME" || puzzlebox_parser_input =="home") - terminal_speak("Taking you back HOME!", 50) - emoteas("chimes loudly.") - puzzlebox_parser_mode = "HOME" - attack_hand(user) - if (puzzlebox_parser_input == "upsilon") - if(puzzlebox_phrase_1 == FALSE) - emoteas("pings") - terminal_speak("RED passphrase saved.") - puzzlebox_phrase_1 = TRUE - attack_hand(user) - if (puzzlebox_parser_input == "generation") - if(puzzlebox_phrase_2 == FALSE) - emoteas("pings") - terminal_speak("BLUE passphrase saved.") - puzzlebox_phrase_2 = TRUE - attack_hand(user) - if (puzzlebox_parser_input == "four") - if(puzzlebox_phrase_3 == FALSE) - emoteas("pings") - terminal_speak("YELLOW passphrase saved.") - puzzlebox_phrase_3 = TRUE - attack_hand(user) + terminal_speak("Notice: Passphrases needed. Use the UNLOCK command after all codes have been provided.") + terminal_speak("Returning to HOME mode.") + puzzlebox_parser_mode = "HOME_INPUT" + attack_hand(user) + diff --git a/code/game/objects/structures/sectorpatrol/event_terminal.dm b/code/game/objects/structures/sectorpatrol/event_terminal.dm index a96443ed4b..ac380a5dc9 100644 --- a/code/game/objects/structures/sectorpatrol/event_terminal.dm +++ b/code/game/objects/structures/sectorpatrol/event_terminal.dm @@ -12,6 +12,7 @@ var/global/puzzlebox_global_status = 0 // Global event progression measurment goes here var/puzzlebox_pythia_sign = "0"// For determining if this terminal had a Pythia episode var/puzzlebox_id //for doors and lights etc + var/puzzlebox_user //Determines who can type if multiple users //Cutscene tools - speaking, doors, lights, etc //Emote and say moved to general objects and device defs @@ -23,7 +24,7 @@ if(D.id == dooorid) D.open() -/obj/structure/eventterminal/proc/change_lights(lights_id = puzzlebox_id, light_state = 1, lights_color, light_brightness = null, light_flicker = 0) +/obj/structure/eventterminal/proc/change_lights(lights_id = puzzlebox_id, light_state = 1, lights_color, light_brightness = null, light_flicker = 0) // Changees and updates lights on working light fixtures. Lights_id corresponds to var on the fixtures to determine which lights to affect; light_state 0 for off, 1 for on; lights_color accepts color values; light_brightness self explanatory, light_flicker when non 0 will pass flicker for number of ticks) var/bulbid = "[lights_id]" var/bulbcolor = "[lights_color]" var/bulbbright = light_brightness