mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 10:12:45 +00:00
Adds a new machine to telecomms, which contains special PDAs corresponding to each department on the station. Sending a PDA message to one of these PDAs will duplicate it to everyone in the department the PDA is assigned to. It determines what department someone is in by cartridge type. Adds cartridges for several jobs that were missing them, for the purposes of being recognized as being in a department. The cartridges otherwise do nothing. New circuitboard to build the new pda multicaster. It can also be deconstructed with the standard machinery deconstruction steps of screwdriver > crowbar.
102 lines
3.2 KiB
Plaintext
102 lines
3.2 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/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(istype(I, /obj/item/weapon/screwdriver))
|
|
default_deconstruction_screwdriver(user, I)
|
|
else if(istype(I, /obj/item/weapon/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()
|
|
..()
|