Files
WildkinsandGitHub e4192f9b8f Lag War Day 5.5: are you serious dude (#21889)
we have a gorillion hard deletions and it turns out half of them are
because we set the "ALWAYS HARD DELETE THIS" flag rather than just like.
fixing the hard delete.

cool
2026-02-21 01:41:50 +00:00

151 lines
5.2 KiB
Plaintext

//base type for controllers of two-door systems
/obj/machinery/embedded_controller/radio/airlock
obj_flags = OBJ_FLAG_MOVES_UNSUPPORTED
// Setup parameters only
radio_filter = RADIO_AIRLOCK
var/tag_exterior_door
var/tag_interior_door
var/tag_airpump
var/tag_chamber_sensor
var/tag_exterior_sensor
var/tag_interior_sensor
var/tag_airlock_mech_sensor
var/tag_shuttle_mech_sensor
var/tag_secure = FALSE
var/tag_air_alarm
var/cycle_to_external_air = FALSE
var/has_interior_sensor
var/has_exterior_sensor
/obj/machinery/embedded_controller/radio/airlock/Initialize(mapload, given_id_tag, given_frequency, given_tag_exterior_door, given_tag_interior_door, given_tag_airpump, given_tag_chamber_sensor)
. = ..()
if(given_id_tag)
id_tag = given_id_tag
if(given_frequency)
set_frequency(given_frequency)
if(given_tag_exterior_door)
tag_exterior_door = given_tag_exterior_door
if(given_tag_interior_door)
tag_interior_door = given_tag_interior_door
if(given_tag_airpump)
tag_airpump = given_tag_airpump
if(given_tag_chamber_sensor)
tag_chamber_sensor = given_tag_chamber_sensor
program = new /datum/computer/file/embedded_program/airlock(src)
/obj/machinery/embedded_controller/radio/airlock/attackby(obj/item/attacking_item, mob/user)
//Swiping ID on the access button
if (attacking_item.GetID())
attack_hand(user)
return TRUE
return ..()
/obj/machinery/embedded_controller/radio/airlock/attack_hand(mob/user)
if(!allowed(user))
to_chat(user, SPAN_WARNING("Access denied."))
return FALSE
return ..()
//Advanced airlock controller for when you want a more versatile airlock controller - useful for turning simple access control rooms into airlocks
/obj/machinery/embedded_controller/radio/airlock/advanced_airlock_controller
name = "Advanced Airlock Controller"
/obj/machinery/embedded_controller/radio/airlock/advanced_airlock_controller/ui_interact(mob/user, datum/tgui/ui)
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, "AirlockConsoleAdvanced", name, ui_x=470, ui_y=290)
ui.open()
/obj/machinery/embedded_controller/radio/airlock/advanced_airlock_controller/ui_data(mob/user)
var/list/data = list()
data["chamber_pressure"] = round(program.memory["chamber_sensor_pressure"])
data["has_exterior_sensor"] = has_exterior_sensor
data["external_pressure"] = round(program.memory["external_sensor_pressure"])
data["has_interior_sensor"] = has_interior_sensor
data["internal_pressure"] = round(program.memory["internal_sensor_pressure"])
data["processing"] = program.memory["processing"]
data["purge"] = program.memory["purge"]
data["secure"] = program.memory["secure"]
return data
/obj/machinery/embedded_controller/radio/airlock/advanced_airlock_controller/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state)
. = ..()
if(.)
return
if(action == "command")
var/command_name = sanitize(params["command"])
program.receive_user_command(command_name)
//Airlock controller for airlock control - most airlocks on the station use this
/obj/machinery/embedded_controller/radio/airlock/airlock_controller
name = "Airlock Controller"
tag_secure = TRUE
/obj/machinery/embedded_controller/radio/airlock/airlock_controller/ui_interact(mob/user, datum/tgui/ui)
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, "AirlockConsoleStandard", name, ui_x=470, ui_y=290)
ui.open()
/obj/machinery/embedded_controller/radio/airlock/airlock_controller/ui_data(mob/user)
var/list/data = list()
data["chamber_pressure"] = round(program.memory["chamber_sensor_pressure"])
data["processing"] = program.memory["processing"]
return data
/obj/machinery/embedded_controller/radio/airlock/airlock_controller/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state)
. = ..()
if(.)
return
if(action == "command")
var/command_name = sanitize(params["command"])
program.receive_user_command(command_name)
//Access controller for door control - used in virology and the like
/obj/machinery/embedded_controller/radio/airlock/access_controller
icon = 'icons/obj/airlock_machines.dmi'
icon_state = "access_control_standby"
name = "Access Controller"
tag_secure = TRUE
/obj/machinery/embedded_controller/radio/airlock/access_controller/update_icon()
if(on && program)
if(program.memory["processing"])
icon_state = "access_control_process"
else
icon_state = "access_control_standby"
else
icon_state = "access_control_off"
/obj/machinery/embedded_controller/radio/airlock/access_controller/ui_interact(mob/user, datum/tgui/ui)
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, "AirlockConsoleAccess", name, ui_x=470, ui_y=290)
ui.open()
/obj/machinery/embedded_controller/radio/airlock/access_controller/ui_data(mob/user)
var/list/data = list()
data["exterior_status"] = round(program.memory["exterior_status"])
data["interior_status"] = round(program.memory["interior_status"])
data["processing"] = program.memory["processing"]
return data
/obj/machinery/embedded_controller/radio/airlock/access_controller/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state)
. = ..()
if(.)
return
if(action == "command")
var/command_name = sanitize(params["command"])
program.receive_user_command(command_name)