mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-16 09:29:38 +01:00
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
151 lines
5.2 KiB
Plaintext
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)
|