mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-01-04 14:33:10 +00:00
changes: Added an abstract-machinery helper type for interacting with power systems without duplicating power code. Changed intercoms to use abstract machines to handle power state changes instead of polling with process(). Hardhat lights are now directional (LIGHT_WIDE) Fixes #1922.
149 lines
3.6 KiB
Plaintext
149 lines
3.6 KiB
Plaintext
/obj/item/device/radio/intercom
|
|
name = "station intercom (General)"
|
|
desc = "Talk through this."
|
|
icon_state = "intercom"
|
|
anchored = 1
|
|
w_class = 4.0
|
|
canhear_range = 2
|
|
flags = CONDUCT | NOBLOODY
|
|
var/number = 0
|
|
var/obj/machinery/abstract/intercom_listener/power_interface
|
|
|
|
/obj/item/device/radio/intercom/custom
|
|
name = "station intercom (Custom)"
|
|
broadcasting = 0
|
|
listening = 0
|
|
|
|
/obj/item/device/radio/intercom/interrogation
|
|
name = "station intercom (Interrogation)"
|
|
frequency = 1449
|
|
|
|
/obj/item/device/radio/intercom/private
|
|
name = "station intercom (Private)"
|
|
frequency = AI_FREQ
|
|
|
|
/obj/item/device/radio/intercom/specops
|
|
name = "\improper Spec Ops intercom"
|
|
frequency = ERT_FREQ
|
|
|
|
/obj/item/device/radio/intercom/department
|
|
canhear_range = 5
|
|
broadcasting = 0
|
|
listening = 1
|
|
|
|
/obj/item/device/radio/intercom/department/medbay
|
|
name = "station intercom (Medbay)"
|
|
frequency = MED_I_FREQ
|
|
|
|
/obj/item/device/radio/intercom/department/security
|
|
name = "station intercom (Security)"
|
|
frequency = SEC_I_FREQ
|
|
|
|
/obj/item/device/radio/intercom/entertainment
|
|
name = "entertainment intercom"
|
|
frequency = ENT_FREQ
|
|
canhear_range = 4
|
|
|
|
/obj/item/device/radio/intercom/New()
|
|
..()
|
|
power_interface = new(loc, src)
|
|
|
|
/obj/item/device/radio/intercom/department/medbay/New()
|
|
..()
|
|
internal_channels = default_medbay_channels.Copy()
|
|
|
|
/obj/item/device/radio/intercom/department/security/New()
|
|
..()
|
|
internal_channels = list(
|
|
num2text(PUB_FREQ) = list(),
|
|
num2text(SEC_I_FREQ) = list(access_security)
|
|
)
|
|
|
|
/obj/item/device/radio/intercom/entertainment/New()
|
|
..()
|
|
internal_channels = list(
|
|
num2text(PUB_FREQ) = list(),
|
|
num2text(ENT_FREQ) = list()
|
|
)
|
|
|
|
/obj/item/device/radio/intercom/syndicate
|
|
name = "illicit intercom"
|
|
desc = "Talk through this. Evilly"
|
|
frequency = SYND_FREQ
|
|
subspace_transmission = 1
|
|
syndie = 1
|
|
|
|
/obj/item/device/radio/intercom/syndicate/New()
|
|
..()
|
|
internal_channels[num2text(SYND_FREQ)] = list(access_syndicate)
|
|
|
|
/obj/item/device/radio/intercom/Destroy()
|
|
QDEL_NULL(power_interface)
|
|
return ..()
|
|
|
|
/obj/item/device/radio/intercom/attack_ai(mob/user as mob)
|
|
src.add_fingerprint(user)
|
|
spawn (0)
|
|
attack_self(user)
|
|
|
|
/obj/item/device/radio/intercom/attack_hand(mob/user as mob)
|
|
src.add_fingerprint(user)
|
|
spawn (0)
|
|
attack_self(user)
|
|
|
|
/obj/item/device/radio/intercom/receive_range(freq, level)
|
|
if (!on)
|
|
return -1
|
|
if(!(0 in level))
|
|
var/turf/position = get_turf(src)
|
|
if(isnull(position) || !(position.z in level))
|
|
return -1
|
|
if (!src.listening)
|
|
return -1
|
|
if(freq in ANTAG_FREQS)
|
|
if(!(src.syndie))
|
|
return -1//Prevents broadcast of messages over devices lacking the encryption
|
|
|
|
return canhear_range
|
|
|
|
/obj/item/device/radio/intercom/proc/power_change(has_power)
|
|
if (!src.loc)
|
|
on = 0
|
|
else
|
|
on = has_power
|
|
|
|
update_icon()
|
|
|
|
/obj/item/device/radio/intercom/forceMove(atom/dest)
|
|
power_interface.forceMove(dest)
|
|
..(dest)
|
|
|
|
/obj/item/device/radio/intercom/update_icon()
|
|
if (on)
|
|
icon_state = "intercom"
|
|
else
|
|
icon_state = "intercom-p"
|
|
|
|
/obj/item/device/radio/intercom/broadcasting
|
|
broadcasting = 1
|
|
|
|
/obj/item/device/radio/intercom/locked
|
|
var/locked_frequency
|
|
|
|
/obj/item/device/radio/intercom/locked/set_frequency(var/frequency)
|
|
if(frequency == locked_frequency)
|
|
..(locked_frequency)
|
|
|
|
/obj/item/device/radio/intercom/locked/list_channels()
|
|
return ""
|
|
|
|
/obj/item/device/radio/intercom/locked/ai_private
|
|
name = "\improper AI intercom"
|
|
frequency = AI_FREQ
|
|
broadcasting = 1
|
|
listening = 1
|
|
|
|
/obj/item/device/radio/intercom/locked/confessional
|
|
name = "confessional intercom"
|
|
frequency = 1480
|