Files
Aurora.3/code/modules/mob/living/silicon/computer.dm
2022-10-30 11:47:32 +01:00

99 lines
2.6 KiB
Plaintext

/mob/living/silicon
var/computer_path
/mob/living/silicon/pai
computer_path = /obj/item/modular_computer/silicon/pai
/mob/living/silicon/robot
computer_path = /obj/item/modular_computer/silicon/robot
/mob/living/silicon/robot/drone
computer_path = /obj/item/modular_computer/silicon/robot/drone
/mob/living/silicon/ai
var/datum/nano_module/computer_ntnetmonitor/ntnet_monitor
computer_path = /obj/item/modular_computer/silicon/ai
/mob/living/silicon/ai
silicon_subsystems = list(
/mob/living/silicon/proc/subsystem_alarm_monitor,
/mob/living/silicon/proc/subsystem_law_manager,
/mob/living/silicon/ai/proc/subsystem_ntnet_monitor,
/mob/living/silicon/proc/computer_interact,
/mob/living/silicon/proc/silicon_mimic_accent
)
/mob/living/silicon/robot/combat
register_alarms = 0
silicon_subsystems = list(
/mob/living/silicon/proc/subsystem_law_manager,
/mob/living/silicon/proc/silicon_mimic_accent
)
/mob/living/silicon/ai/Destroy()
QDEL_NULL(ntnet_monitor)
return ..()
/mob/living/silicon/proc/init_subsystems()
alarm_monitor = new(src)
law_manager = new(src)
rcon = new(src)
if(computer_path)
computer = new computer_path(src)
if(!register_alarms)
return
for(var/datum/alarm_handler/AH in SSalarm.all_handlers)
AH.register_alarm(src, /mob/living/silicon/proc/receive_alarm)
queued_alarms[AH] = list() // Makes sure alarms remain listed in consistent order
/mob/living/silicon/ai/init_subsystems()
..()
ntnet_monitor = new(src)
/****************
* Computer *
*****************/
/mob/living/silicon/proc/computer_interact()
set name = "Open Computer Interface"
set category = "Subsystems"
computer.attack_self(src)
/mob/living/silicon/pai/proc/personal_computer_interact()
set name = "Access Local Computer"
set category = "Subsystems"
if(!parent_computer)
to_chat(usr, SPAN_WARNING("You don't have a local computer to interface with!"))
return
parent_computer.attack_self(src)
/********************
* Alarm Monitor *
********************/
/mob/living/silicon/proc/subsystem_alarm_monitor()
set name = "Alarm Monitor"
set category = "Subsystems"
alarm_monitor.ui_interact(usr, state = self_state)
/****************
* Law Manager *
****************/
/mob/living/silicon/proc/subsystem_law_manager()
set name = "Law Manager"
set category = "Subsystems"
law_manager.ui_interact(usr, state = conscious_state)
/********************
* NTNet Monitor *
********************/
/mob/living/silicon/ai/proc/subsystem_ntnet_monitor()
set name = "NTNet Monitoring"
set category = "Subsystems"
ntnet_monitor.ui_interact(usr, state = conscious_state)