mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 10:21:11 +00:00
60 lines
2.0 KiB
Plaintext
60 lines
2.0 KiB
Plaintext
/datum/wires/transmitter
|
|
holder_type = /obj/machinery/media/transmitter/broadcast
|
|
wire_count = 5
|
|
var/counter = null
|
|
|
|
/datum/wires/transmitter/New()
|
|
wire_names=list(
|
|
"[TRANS_POWER]" = "Power",
|
|
"[TRANS_RAD_ONE]" = "Rad 1",
|
|
"[TRANS_RAD_TWO]" = "Rad 2",
|
|
"[TRANS_LINK]" = "Link",
|
|
"[TRANS_SETTINGS]" = "Settings"
|
|
)
|
|
..()
|
|
|
|
var/const/TRANS_POWER = 1 //Power. Cut for shock and off. Pulse toggles.
|
|
var/const/TRANS_RAD_ONE = 2 //Reduces rad output by 50%. Requires at least one to function. Pulse does nothing.
|
|
var/const/TRANS_RAD_TWO = 4 //Reduces rad output by 50%. Requires at least one to function. Pulse does nothing.
|
|
var/const/TRANS_LINK = 8 //Cut shocks. Pulse clears links.
|
|
var/const/TRANS_SETTINGS = 16 //Pulse shows percentage given by environment temperature over safe operating temperature.
|
|
|
|
/datum/wires/transmitter/CanUse(var/mob/living/L)
|
|
if(!..())
|
|
return 0
|
|
var/obj/machinery/media/transmitter/broadcast/T = holder
|
|
if(T.panel_open)
|
|
return 1
|
|
return 0
|
|
|
|
/datum/wires/transmitter/GetInteractWindow()
|
|
var/obj/machinery/media/transmitter/broadcast/T = holder
|
|
. += ..()
|
|
. += {"<BR>The backlight is [IsIndexCut(TRANS_POWER) ? "dim" : "illuminated"].<BR>
|
|
The radiation warning light is [T.count_rad_wires() > 1 ? "brightly" : ""] [T.count_rad_wires() ? "shining" : "off"].<BR>
|
|
It has a cryptic display [counter ? "reading [counter]" : "that is blank"].<BR>"}
|
|
|
|
|
|
/datum/wires/transmitter/UpdateCut(var/index, var/mended, var/mob/user)
|
|
var/obj/machinery/media/transmitter/broadcast/T = holder
|
|
..()
|
|
var/obj/I = user.get_active_hand()
|
|
switch(index)
|
|
if(TRANS_POWER)
|
|
T.power_change()
|
|
T.shock(user, 50, get_conductivity(I))
|
|
if(TRANS_LINK)
|
|
T.shock(user, 50, get_conductivity(I))
|
|
|
|
/datum/wires/transmitter/UpdatePulsed(var/index)
|
|
var/obj/machinery/media/transmitter/broadcast/T = holder
|
|
..()
|
|
switch(index)
|
|
if(TRANS_POWER)
|
|
T.on = !T.on
|
|
T.update_on()
|
|
if(TRANS_LINK)
|
|
T.unhook_media_sources()
|
|
if(TRANS_SETTINGS)
|
|
var/datum/gas_mixture/env = T.loc.return_air()
|
|
counter = 100*(env.temperature / (T20C + 20)) |