mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 10:12:45 +00:00
102 lines
3.1 KiB
Plaintext
102 lines
3.1 KiB
Plaintext
/obj/machinery/pda_multicaster
|
|
name = "\improper PDA multicaster"
|
|
desc = "This machine mirrors messages sent to it to specific departments."
|
|
icon = 'icons/obj/stationobjs.dmi'
|
|
icon_state = "controller"
|
|
density = 1
|
|
anchored = 1
|
|
circuit = /obj/item/weapon/circuitboard/telecomms/pda_multicaster
|
|
use_power = 1
|
|
idle_power_usage = 750
|
|
var/on = 1 // If we're currently active,
|
|
var/toggle = 1 // If we /should/ be active or not,
|
|
var/list/internal_PDAs = list() // Assoc list of PDAs inside of this, with the department name being the index,
|
|
|
|
/obj/machinery/pda_multicaster/New()
|
|
..()
|
|
internal_PDAs = list("command" = new /obj/item/device/pda/multicaster/command(src),
|
|
"security" = new /obj/item/device/pda/multicaster/security(src),
|
|
"engineering" = new /obj/item/device/pda/multicaster/engineering(src),
|
|
"medical" = new /obj/item/device/pda/multicaster/medical(src),
|
|
"research" = new /obj/item/device/pda/multicaster/research(src),
|
|
"cargo" = new /obj/item/device/pda/multicaster/cargo(src),
|
|
"civilian" = new /obj/item/device/pda/multicaster/civilian(src))
|
|
|
|
/obj/machinery/pda_multicaster/prebuilt/New()
|
|
..()
|
|
|
|
component_parts = list()
|
|
component_parts += new /obj/item/weapon/circuitboard/telecomms/pda_multicaster(src)
|
|
component_parts += new /obj/item/weapon/stock_parts/subspace/ansible(src)
|
|
component_parts += new /obj/item/weapon/stock_parts/subspace/sub_filter(src)
|
|
component_parts += new /obj/item/weapon/stock_parts/manipulator(src)
|
|
component_parts += new /obj/item/weapon/stock_parts/subspace/treatment(src)
|
|
component_parts += new /obj/item/stack/cable_coil(src, 2)
|
|
RefreshParts()
|
|
|
|
/obj/machinery/pda_multicaster/Destroy()
|
|
for(var/atom/movable/AM in contents)
|
|
qdel(AM)
|
|
..()
|
|
|
|
/obj/machinery/pda_multicaster/update_icon()
|
|
if(on)
|
|
icon_state = initial(icon_state)
|
|
else
|
|
icon_state = "[initial(icon_state)]-p"
|
|
|
|
/obj/machinery/pda_multicaster/attackby(obj/item/I, mob/user)
|
|
if(I.is_screwdriver())
|
|
default_deconstruction_screwdriver(user, I)
|
|
else if(I.is_crowbar())
|
|
default_deconstruction_crowbar(user, I)
|
|
else
|
|
..()
|
|
|
|
/obj/machinery/pda_multicaster/attack_ai(mob/user)
|
|
attack_hand(user)
|
|
|
|
/obj/machinery/pda_multicaster/attack_hand(mob/user)
|
|
toggle_power(user)
|
|
|
|
/obj/machinery/pda_multicaster/proc/toggle_power(mob/user)
|
|
toggle = !toggle
|
|
visible_message("\the [user] turns \the [src] [toggle ? "on" : "off"].")
|
|
update_power()
|
|
if(!toggle)
|
|
var/msg = "[usr.client.key] ([usr]) has turned [src] off, at [x],[y],[z]."
|
|
message_admins(msg)
|
|
log_game(msg)
|
|
|
|
/obj/machinery/pda_multicaster/proc/update_PDAs(var/turn_off)
|
|
for(var/obj/item/device/pda/pda in contents)
|
|
pda.toff = turn_off
|
|
|
|
/obj/machinery/pda_multicaster/proc/update_power()
|
|
if(toggle)
|
|
if(stat & (BROKEN|NOPOWER|EMPED))
|
|
on = 0
|
|
update_PDAs(1) // 1 being to turn off.
|
|
idle_power_usage = 0
|
|
else
|
|
on = 1
|
|
update_PDAs(0)
|
|
idle_power_usage = 750
|
|
else
|
|
on = 0
|
|
update_PDAs(1)
|
|
idle_power_usage = 0
|
|
update_icon()
|
|
|
|
/obj/machinery/pda_multicaster/process()
|
|
update_power()
|
|
|
|
/obj/machinery/pda_multicaster/emp_act(severity)
|
|
if(!(stat & EMPED))
|
|
stat |= EMPED
|
|
var/duration = (300 * 10)/severity
|
|
spawn(rand(duration - 20, duration + 20))
|
|
stat &= ~EMPED
|
|
update_icon()
|
|
..()
|