mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-16 01:19:13 +01:00
we have a gorillion hard deletions and it turns out half of them are because we set the "ALWAYS HARD DELETE THIS" flag rather than just like. fixing the hard delete. cool
1048 lines
31 KiB
Plaintext
1048 lines
31 KiB
Plaintext
/obj/item/radio/headset
|
|
name = "radio headset"
|
|
desc = "An updated, modular intercom that fits over the head. Takes encryption keys."
|
|
icon = 'icons/obj/item/radio/headset.dmi'
|
|
icon_state = "headset"
|
|
item_state = "headset"
|
|
matter = list(MATERIAL_ALUMINIUM = 75)
|
|
subspace_transmission = TRUE
|
|
canhear_range = 0 // can't hear headsets from very far away
|
|
|
|
slot_flags = SLOT_EARS
|
|
var/translate_binary = FALSE
|
|
var/translate_hivenet = FALSE
|
|
var/obj/item/encryptionkey/keyslot1 = null
|
|
var/obj/item/encryptionkey/keyslot2 = null
|
|
|
|
var/ks1type = /obj/item/encryptionkey
|
|
var/ks2type = null
|
|
var/radio_sound = null
|
|
|
|
var/EarSound = TRUE
|
|
|
|
drop_sound = 'sound/items/drop/component.ogg'
|
|
pickup_sound = 'sound/items/pickup/component.ogg'
|
|
|
|
/obj/item/radio/headset/feedback_hints(mob/user, distance, is_adjacent)
|
|
. = list()
|
|
. = ..()
|
|
if(!(is_adjacent && radio_desc))
|
|
return
|
|
|
|
. += "The following channels are available:"
|
|
. += radio_desc
|
|
|
|
/obj/item/radio/headset/Initialize()
|
|
. = ..()
|
|
internal_channels.Cut()
|
|
if(ks1type)
|
|
keyslot1 = new ks1type(src)
|
|
if(ks2type)
|
|
keyslot2 = new ks2type(src)
|
|
set_listening(TRUE)
|
|
recalculateChannels(TRUE)
|
|
possibly_deactivate_in_loc()
|
|
|
|
/obj/item/radio/headset/proc/possibly_deactivate_in_loc()
|
|
if(ismob(loc))
|
|
set_listening(should_be_listening)
|
|
else
|
|
set_listening(FALSE, actual_setting = FALSE)
|
|
|
|
/obj/item/radio/headset/Destroy()
|
|
QDEL_NULL(keyslot1)
|
|
QDEL_NULL(keyslot2)
|
|
return ..()
|
|
|
|
/obj/item/radio/headset/Moved(atom/old_loc, forced)
|
|
. = ..()
|
|
possibly_deactivate_in_loc()
|
|
|
|
/obj/item/radio/headset/set_listening(new_listening, actual_setting = TRUE)
|
|
. = ..()
|
|
if(listening && on)
|
|
recalculateChannels()
|
|
|
|
/obj/item/radio/headset/list_channels(var/mob/user)
|
|
return list_secure_channels()
|
|
|
|
/obj/item/radio/headset/setupRadioDescription()
|
|
if(translate_binary || translate_hivenet)
|
|
..(", :+ - Special")
|
|
else
|
|
..()
|
|
|
|
/obj/item/radio/headset/handle_message_mode(mob/living/M, message, channel)
|
|
if(channel == "special")
|
|
if(translate_binary)
|
|
var/datum/language/binary = GLOB.all_languages[LANGUAGE_ROBOT]
|
|
binary.broadcast(M, message)
|
|
if(translate_hivenet)
|
|
var/datum/language/bug = GLOB.all_languages[LANGUAGE_VAURCA]
|
|
bug.broadcast(M, message)
|
|
return null
|
|
|
|
return ..()
|
|
|
|
/obj/item/radio/headset/can_receive(input_frequency, level, aiOverride = FALSE)
|
|
if (aiOverride)
|
|
return ..(input_frequency, level)
|
|
if(ishuman(src.loc))
|
|
var/mob/living/carbon/human/H = src.loc
|
|
if(H.l_ear == src || H.r_ear == src)
|
|
return ..(input_frequency, level)
|
|
if(!EarSound)
|
|
return ..(input_frequency, level)
|
|
return FALSE
|
|
|
|
/obj/item/radio/headset/attack_hand(mob/user)
|
|
if(ishuman(user))
|
|
var/mob/living/carbon/human/H = user
|
|
if(H.l_ear != src && H.r_ear != src)
|
|
return ..()
|
|
|
|
if(slot_flags & SLOT_TWOEARS)
|
|
var/obj/item/clothing/ears/OE = (H.l_ear == src ? H.r_ear : H.l_ear)
|
|
qdel(OE)
|
|
|
|
..()
|
|
|
|
/obj/item/radio/headset/attackby(obj/item/attacking_item, mob/user)
|
|
if(attacking_item.tool_behaviour == TOOL_SCREWDRIVER)
|
|
if(keyslot1 || keyslot2)
|
|
for(var/ch_name in channels)
|
|
SSradio.remove_object(src, radiochannels[ch_name])
|
|
secure_radio_connections[ch_name] = null
|
|
|
|
if(keyslot1)
|
|
var/turf/T = get_turf(user)
|
|
if(T)
|
|
keyslot1.forceMove(T)
|
|
keyslot1 = null
|
|
|
|
if(keyslot2)
|
|
var/turf/T = get_turf(user)
|
|
if(T)
|
|
keyslot2.forceMove(T)
|
|
keyslot2 = null
|
|
|
|
recalculateChannels(TRUE)
|
|
to_chat(user, SPAN_NOTICE("You pop out the encryption keys in the headset!"))
|
|
else
|
|
to_chat(user, SPAN_WARNING("This headset doesn't have any encryption keys!"))
|
|
|
|
else if(istype(attacking_item, /obj/item/encryptionkey))
|
|
if(keyslot1 && keyslot2)
|
|
to_chat(user, SPAN_WARNING("The headset can't hold another key!"))
|
|
return
|
|
|
|
if(!keyslot1)
|
|
user.drop_from_inventory(attacking_item, src)
|
|
keyslot1 = attacking_item
|
|
else
|
|
user.drop_from_inventory(attacking_item, src)
|
|
keyslot2 = attacking_item
|
|
|
|
recalculateChannels(TRUE)
|
|
|
|
|
|
/obj/item/radio/headset/proc/recalculateChannels(var/setDescription = FALSE)
|
|
var/list/old_channel_settings = channels.Copy()
|
|
channels = list()
|
|
translate_binary = FALSE
|
|
translate_hivenet = FALSE
|
|
syndie = FALSE
|
|
|
|
SSradio.remove_object_all(src)
|
|
|
|
for(var/keyslot in list(keyslot1, keyslot2))
|
|
if(!keyslot)
|
|
continue
|
|
var/obj/item/encryptionkey/K = keyslot
|
|
|
|
for(var/ch_name in K.channels)
|
|
if(ch_name in channels)
|
|
continue
|
|
LAZYSET(channels, ch_name, K.channels[ch_name])
|
|
|
|
for(var/ch_name in K.additional_channels)
|
|
if(ch_name in channels)
|
|
continue
|
|
LAZYSET(channels, ch_name, K.additional_channels[ch_name])
|
|
|
|
if(K.translate_binary)
|
|
translate_binary = TRUE
|
|
|
|
if(K.translate_hivenet)
|
|
translate_hivenet = TRUE
|
|
|
|
if(K.syndie)
|
|
syndie = TRUE
|
|
|
|
if(K.independent)
|
|
independent = TRUE
|
|
|
|
for (var/ch_name in channels)
|
|
if(ch_name in old_channel_settings)
|
|
channels[ch_name] = old_channel_settings[ch_name]
|
|
secure_radio_connections[ch_name] = SSradio.add_object(src, radiochannels[ch_name], RADIO_CHAT)
|
|
|
|
if(setDescription)
|
|
setupRadioDescription()
|
|
|
|
return
|
|
|
|
/obj/item/radio/headset/alt
|
|
name = "bowman headset"
|
|
icon = 'icons/obj/item/radio/headset_alt.dmi'
|
|
icon_state = "headset_alt"
|
|
item_state = "headset_alt"
|
|
|
|
/obj/item/radio/headset/alt/double
|
|
name = "soundproof headset"
|
|
desc = "A sound isolating version of the common radio headset."
|
|
icon = 'icons/obj/item/radio/headset_alt_double.dmi'
|
|
icon_state = "earset"
|
|
item_state = "earset"
|
|
item_flags = ITEM_FLAG_SOUND_PROTECTION
|
|
slot_flags = SLOT_EARS | SLOT_TWOEARS
|
|
|
|
/obj/item/radio/headset/alt/double/mechanics_hints(mob/user, distance, is_adjacent)
|
|
. += ..()
|
|
. += "This radio doubles as a pair of earmuffs by providing sound protection."
|
|
|
|
/obj/item/radio/headset/wrist
|
|
name = "wristbound radio"
|
|
desc = "A radio designed to fit on the wrist. Often known for broadcasting loudly enough that those closeby might overhear it."
|
|
icon = 'icons/obj/item/radio/headset_wrist.dmi'
|
|
icon_state = "wristset"
|
|
item_state = "wristset"
|
|
slot_flags = SLOT_WRISTS
|
|
canhear_range = 1
|
|
var/mob_wear_layer = ABOVE_SUIT_LAYER_WR
|
|
EarSound = FALSE
|
|
|
|
/obj/item/radio/headset/wrist/mechanics_hints(mob/user, distance, is_adjacent)
|
|
. += ..()
|
|
. += "This radio can be heard by people standing next to the one wearing it."
|
|
|
|
/obj/item/radio/headset/wrist/verb/change_layer()
|
|
set category = "Object.Equipped"
|
|
set name = "Change Wrist Layer"
|
|
set src in usr
|
|
|
|
if(mob_wear_layer == ABOVE_SUIT_LAYER_WR)
|
|
mob_wear_layer = ABOVE_UNIFORM_LAYER_WR
|
|
else
|
|
mob_wear_layer = ABOVE_SUIT_LAYER_WR
|
|
to_chat(usr, SPAN_NOTICE("\The [src] will now layer [mob_wear_layer == ABOVE_SUIT_LAYER_WR ? "over" : "under"] your outerwear."))
|
|
if (ishuman(src.loc))
|
|
var/mob/living/carbon/human/H = src.loc
|
|
if(H.wrists == src)
|
|
H.update_inv_wrists()
|
|
else if(H.l_ear == src)
|
|
H.update_inv_l_ear()
|
|
else if(H.r_ear == src)
|
|
H.update_inv_r_ear()
|
|
|
|
|
|
/obj/item/radio/headset/wrist/clip
|
|
name = "clip-on radio"
|
|
desc = "A radio designed to clip onto your clothes. Often known for broadcasting loudly enough that those closeby might overhear it."
|
|
icon = 'icons/obj/item/radio/headset_clip.dmi'
|
|
icon_state = "clip"
|
|
item_state = "clip"
|
|
slot_flags = SLOT_WRISTS | SLOT_EARS
|
|
|
|
/obj/item/radio/headset/wrist/clip/verb/flip_radio()
|
|
set category = "Object.Equipped"
|
|
set name = "Flip Radio"
|
|
set src in usr
|
|
|
|
if(item_state == initial(item_state))
|
|
item_state = "[initial(item_state)]_r"
|
|
else
|
|
item_state = initial(item_state)
|
|
to_chat(usr, SPAN_NOTICE("\The [src] will now be worn on your [(item_state == initial(item_state)) ? "left" : "right"] side."))
|
|
if (ishuman(src.loc))
|
|
var/mob/living/carbon/human/H = src.loc
|
|
if(H.wrists == src)
|
|
H.update_inv_wrists()
|
|
else if(H.l_ear == src)
|
|
H.update_inv_l_ear()
|
|
else if(H.r_ear == src)
|
|
H.update_inv_r_ear()
|
|
|
|
/obj/item/radio/headset/wrist/clip/get_wrist_examine_text(mob/living/carbon/human/user)
|
|
if(!istype(user))
|
|
return ..()
|
|
return "clipped to [user.get_pronoun("his")] [(mob_wear_layer == ABOVE_SUIT_LAYER_WR) && user.wear_suit ? user.wear_suit.name : user.w_uniform ? user.w_uniform.name : "chest"]"
|
|
|
|
/obj/item/radio/headset/wrist/clip/get_ear_examine_text(mob/living/carbon/human/user)
|
|
if(!istype(user))
|
|
return ..()
|
|
return "clipped to [user.get_pronoun("his")] [user.wear_suit ? user.wear_suit.name : user.w_uniform ? user.w_uniform.name : "chest"]"
|
|
|
|
/*
|
|
* Civillian
|
|
*/
|
|
|
|
/obj/item/radio/headset/headset_service
|
|
name = "service radio headset"
|
|
desc = "Headset used by the service staff, tasked with keeping the station full, happy and clean."
|
|
icon_state = "srv_headset"
|
|
item_state = "srv_headset"
|
|
ks2type = /obj/item/encryptionkey/headset_service
|
|
|
|
/obj/item/radio/headset/headset_service/alt
|
|
name = "service radio bowman headset"
|
|
icon = 'icons/obj/item/radio/headset_alt.dmi'
|
|
icon_state = "srv_headset_alt"
|
|
item_state = "srv_headset_alt"
|
|
|
|
/obj/item/radio/headset/alt/double/service
|
|
name = "soundproof service headset"
|
|
icon_state = "earset_srv"
|
|
item_state = "earset_srv"
|
|
ks2type = /obj/item/encryptionkey/headset_service
|
|
|
|
/obj/item/radio/headset/wrist/service
|
|
name = "wristbound service radio"
|
|
icon_state = "wristset_srv"
|
|
item_state = "wristset_srv"
|
|
ks2type = /obj/item/encryptionkey/headset_service
|
|
|
|
/obj/item/radio/headset/wrist/clip/service
|
|
name = "clip-on service radio"
|
|
icon_state = "clip_srv"
|
|
item_state = "clip_srv"
|
|
ks2type = /obj/item/encryptionkey/headset_service
|
|
|
|
/obj/item/radio/headset/heads/xo
|
|
name = "executive officer's headset"
|
|
desc = "The headset of the guy who will one day be captain."
|
|
icon_state = "hop_headset"
|
|
ks2type = /obj/item/encryptionkey/heads/xo
|
|
|
|
/obj/item/radio/headset/heads/xo/alt
|
|
name = "executive officer's bowman headset"
|
|
icon = 'icons/obj/item/radio/headset_alt.dmi'
|
|
icon_state = "hop_headset_alt"
|
|
item_state = "headset_alt"
|
|
|
|
/obj/item/radio/headset/alt/double/xo
|
|
name = "executive officer's soundproof headset"
|
|
icon_state = "earset_HoP"
|
|
item_state = "earset_HoP"
|
|
ks2type = /obj/item/encryptionkey/heads/xo
|
|
|
|
/obj/item/radio/headset/wrist/xo
|
|
name = "executive officer's wristbound radio"
|
|
icon_state = "wristset_HoP"
|
|
item_state = "wristset_HoP"
|
|
ks2type = /obj/item/encryptionkey/heads/xo
|
|
|
|
/obj/item/radio/headset/wrist/clip/xo
|
|
name = "executive officer's clip-on radio"
|
|
icon_state = "clip_HoP"
|
|
item_state = "clip_HoP"
|
|
ks2type = /obj/item/encryptionkey/heads/xo
|
|
|
|
/*
|
|
* Engineering
|
|
*/
|
|
|
|
/obj/item/radio/headset/headset_eng
|
|
name = "engineering radio headset"
|
|
desc = "When the engineers wish to chat like girls."
|
|
icon_state = "eng_headset"
|
|
ks2type = /obj/item/encryptionkey/headset_eng
|
|
|
|
/obj/item/radio/headset/headset_eng/alt
|
|
name = "engineering bowman headset"
|
|
icon = 'icons/obj/item/radio/headset_alt.dmi'
|
|
icon_state = "eng_headset_alt"
|
|
item_state = "headset_alt"
|
|
|
|
/obj/item/radio/headset/alt/double/eng
|
|
name = "soundproof engineering headset"
|
|
icon_state = "earset_eng"
|
|
item_state = "earset_eng"
|
|
ks2type = /obj/item/encryptionkey/headset_eng
|
|
|
|
/obj/item/radio/headset/wrist/eng
|
|
name = "wristbound engineering radio"
|
|
icon_state = "wristset_eng"
|
|
item_state = "wristset_eng"
|
|
ks2type = /obj/item/encryptionkey/headset_eng
|
|
|
|
/obj/item/radio/headset/wrist/clip/eng
|
|
name = "clip-on engineering radio"
|
|
icon_state = "clip_eng"
|
|
item_state = "clip_eng"
|
|
ks2type = /obj/item/encryptionkey/headset_eng
|
|
|
|
/obj/item/radio/headset/heads/ce
|
|
name = "chief engineer's headset"
|
|
desc = "The headset of the guy who is in charge of morons."
|
|
icon_state = "ce_headset"
|
|
ks2type = /obj/item/encryptionkey/heads/ce
|
|
|
|
/obj/item/radio/headset/heads/ce/alt
|
|
name = "chief engineer's bowman headset"
|
|
icon = 'icons/obj/item/radio/headset_alt.dmi'
|
|
icon_state = "ce_headset_alt"
|
|
item_state = "headset_alt"
|
|
|
|
/obj/item/radio/headset/alt/double/ce
|
|
name = "chief engineer's soundproof headset"
|
|
icon_state = "earset_CE"
|
|
item_state = "earset_CE"
|
|
ks2type = /obj/item/encryptionkey/heads/ce
|
|
|
|
/obj/item/radio/headset/wrist/ce
|
|
name = "chief engineer's wristbound radio"
|
|
icon_state = "wristset_CE"
|
|
item_state = "wristset_CE"
|
|
ks2type = /obj/item/encryptionkey/heads/ce
|
|
|
|
/obj/item/radio/headset/wrist/clip/ce
|
|
name = "chief engineer's clip-on radio"
|
|
icon_state = "clip_CE"
|
|
item_state = "clip_CE"
|
|
ks2type = /obj/item/encryptionkey/heads/ce
|
|
|
|
/*
|
|
* Cargo
|
|
*/
|
|
|
|
/obj/item/radio/headset/headset_cargo
|
|
name = "supply radio headset"
|
|
desc = "A headset used by the operations manager's slaves."
|
|
icon_state = "cargo_headset"
|
|
ks2type = /obj/item/encryptionkey/headset_cargo
|
|
|
|
/obj/item/radio/headset/headset_cargo/alt
|
|
name = "cargo bowman headset"
|
|
icon = 'icons/obj/item/radio/headset_alt.dmi'
|
|
icon_state = "cargo_headset_alt"
|
|
item_state = "headset_alt"
|
|
|
|
/obj/item/radio/headset/alt/double/cargo
|
|
name = "soundproof cargo headset"
|
|
icon_state = "earset_cargo"
|
|
item_state = "earset_cargo"
|
|
ks2type = /obj/item/encryptionkey/headset_cargo
|
|
|
|
/obj/item/radio/headset/wrist/cargo
|
|
name = "wristbound cargo radio"
|
|
icon_state = "wristset_cargo"
|
|
item_state = "wristset_cargo"
|
|
ks2type = /obj/item/encryptionkey/headset_cargo
|
|
|
|
/obj/item/radio/headset/wrist/clip/cargo
|
|
name = "clip-on cargo radio"
|
|
icon_state = "clip_cargo"
|
|
item_state = "clip_cargo"
|
|
ks2type = /obj/item/encryptionkey/headset_cargo
|
|
|
|
/obj/item/radio/headset/headset_mining
|
|
name = "mining radio headset"
|
|
desc = "Headset used by dwarves. It has an inbuilt subspace antenna for better reception."
|
|
icon_state = "mine_headset"
|
|
ks2type = /obj/item/encryptionkey/headset_cargo
|
|
|
|
/obj/item/radio/headset/headset_mining/alt
|
|
name = "mining bowman radio headset"
|
|
icon = 'icons/obj/item/radio/headset_alt.dmi'
|
|
icon_state = "mine_headset_alt"
|
|
item_state = "headset_alt"
|
|
|
|
/obj/item/radio/headset/alt/double/mining
|
|
name = "soundproof mining headset"
|
|
icon_state = "earset_mine"
|
|
item_state = "earset_mine"
|
|
ks2type = /obj/item/encryptionkey/headset_cargo
|
|
|
|
/obj/item/radio/headset/wrist/cargo/mining
|
|
name = "wristbound mining radio"
|
|
icon_state = "wristset_mine"
|
|
item_state = "wristset_mine"
|
|
|
|
/obj/item/radio/headset/wrist/clip/cargo/mining
|
|
name = "clip-on mining radio"
|
|
icon_state = "clip_mine"
|
|
item_state = "clip_mine"
|
|
|
|
/obj/item/radio/headset/operations_manager
|
|
name = "operations manager's headset"
|
|
desc = "A headset used by the head honcho of paper pushing."
|
|
icon_state = "qm_headset"
|
|
ks2type = /obj/item/encryptionkey/headset_operations_manager
|
|
|
|
/obj/item/radio/headset/operations_manager/alt
|
|
name = "operations manager bowman headset"
|
|
icon = 'icons/obj/item/radio/headset_alt.dmi'
|
|
icon_state = "qm_headset_alt"
|
|
item_state = "headset_alt"
|
|
|
|
/obj/item/radio/headset/alt/double/operations_manager
|
|
name = "soundproof operations manager headset"
|
|
icon_state = "earset_QM"
|
|
item_state = "earset_QM"
|
|
ks2type = /obj/item/encryptionkey/headset_operations_manager
|
|
|
|
/obj/item/radio/headset/wrist/cargo/operations_manager
|
|
name = "wristbound operations manager radio"
|
|
icon_state = "wristset_QM"
|
|
item_state = "wristset_QM"
|
|
ks2type = /obj/item/encryptionkey/headset_operations_manager
|
|
|
|
/obj/item/radio/headset/wrist/clip/cargo/operations_manager
|
|
name = "clip-on operations manager radio"
|
|
icon_state = "clip_QM"
|
|
item_state = "clip_QM"
|
|
ks2type = /obj/item/encryptionkey/headset_operations_manager
|
|
|
|
/*
|
|
* Medical
|
|
*/
|
|
|
|
/obj/item/radio/headset/headset_med
|
|
name = "medical radio headset"
|
|
desc = "A headset for the trained staff of the medbay."
|
|
icon_state = "med_headset"
|
|
ks2type = /obj/item/encryptionkey/headset_med
|
|
|
|
/obj/item/radio/headset/headset_med/alt
|
|
name = "medical bowman headset"
|
|
icon = 'icons/obj/item/radio/headset_alt.dmi'
|
|
icon_state = "med_headset_alt"
|
|
item_state = "headset_alt"
|
|
|
|
/obj/item/radio/headset/alt/double/med
|
|
name = "soundproof medical headset"
|
|
icon_state = "earset_med"
|
|
item_state = "earset_med"
|
|
ks2type = /obj/item/encryptionkey/headset_med
|
|
|
|
/obj/item/radio/headset/wrist/med
|
|
name = "wristbound medical radio"
|
|
icon_state = "wristset_med"
|
|
item_state = "wristset_med"
|
|
ks2type = /obj/item/encryptionkey/headset_med
|
|
|
|
/obj/item/radio/headset/wrist/clip/med
|
|
name = "clip-on medical radio"
|
|
icon_state = "clip_med"
|
|
item_state = "clip_med"
|
|
ks2type = /obj/item/encryptionkey/headset_med
|
|
|
|
/obj/item/radio/headset/heads/cmo
|
|
name = "chief medical officer's headset"
|
|
desc = "The headset of the highly trained medical chief."
|
|
icon_state = "cmo_headset"
|
|
ks2type = /obj/item/encryptionkey/heads/cmo
|
|
|
|
/obj/item/radio/headset/heads/cmo/alt
|
|
name = "chief medical officer's bowman headset"
|
|
icon = 'icons/obj/item/radio/headset_alt.dmi'
|
|
icon_state = "cmo_headset_alt"
|
|
item_state = "headset_alt"
|
|
|
|
/obj/item/radio/headset/alt/double/cmo
|
|
name = "chief medical officer's soundproof headset"
|
|
icon_state = "earset_CMO"
|
|
item_state = "earset_CMO"
|
|
ks2type = /obj/item/encryptionkey/heads/cmo
|
|
|
|
/obj/item/radio/headset/wrist/cmo
|
|
name = "chief medical officer's wristbound radio"
|
|
icon_state = "wristset_CMO"
|
|
item_state = "wristset_CMO"
|
|
ks2type = /obj/item/encryptionkey/heads/cmo
|
|
|
|
/obj/item/radio/headset/wrist/clip/cmo
|
|
name = "chief medical officer's clip-on radio"
|
|
icon_state = "clip_CMO"
|
|
item_state = "clip_CMO"
|
|
ks2type = /obj/item/encryptionkey/heads/cmo
|
|
|
|
/*
|
|
* Science
|
|
*/
|
|
|
|
/obj/item/radio/headset/headset_sci
|
|
name = "science radio headset"
|
|
desc = "A science-y headset. Like usual."
|
|
icon_state = "sci_headset"
|
|
ks2type = /obj/item/encryptionkey/headset_sci
|
|
|
|
/obj/item/radio/headset/headset_sci/alt
|
|
name = "science bowman headset"
|
|
icon = 'icons/obj/item/radio/headset_alt.dmi'
|
|
icon_state = "sci_headset_alt"
|
|
|
|
/obj/item/radio/headset/alt/double/sci
|
|
name = "soundproof science headset"
|
|
icon_state = "earset_sci"
|
|
item_state = "earset_sci"
|
|
ks2type = /obj/item/encryptionkey/headset_sci
|
|
|
|
/obj/item/radio/headset/wrist/sci
|
|
name = "wristbound science radio"
|
|
icon_state = "wristset_sci"
|
|
item_state = "wristset_sci"
|
|
ks2type = /obj/item/encryptionkey/headset_sci
|
|
|
|
/obj/item/radio/headset/wrist/clip/sci
|
|
name = "clip-on science radio"
|
|
icon_state = "clip_sci"
|
|
item_state = "clip_sci"
|
|
ks2type = /obj/item/encryptionkey/headset_sci
|
|
|
|
/obj/item/radio/headset/headset_xenology
|
|
name = "xenologist radio headset"
|
|
desc = "A science-y headset for Xenologists."
|
|
icon_state = "sci_headset"
|
|
ks2type = /obj/item/encryptionkey/headset_xenology
|
|
|
|
/obj/item/radio/headset/headset_xenology/alt
|
|
name = "xenologist bowman headset"
|
|
icon = 'icons/obj/item/radio/headset_alt.dmi'
|
|
icon_state = "sci_headset_alt"
|
|
|
|
/obj/item/radio/headset/alt/double/xenology
|
|
name = "soundproof xenologist headset"
|
|
icon_state = "earset_sci"
|
|
item_state = "earset_sci"
|
|
ks2type = /obj/item/encryptionkey/headset_xenology
|
|
|
|
/obj/item/radio/headset/wrist/xenology
|
|
name = "wristbound xenologist radio"
|
|
icon_state = "wristset_sci"
|
|
item_state = "wristset_sci"
|
|
ks2type = /obj/item/encryptionkey/headset_xenology
|
|
|
|
/obj/item/radio/headset/wrist/clip/xenology
|
|
name = "clip-on xenologist radio"
|
|
icon_state = "clip_sci"
|
|
item_state = "clip_sci"
|
|
ks2type = /obj/item/encryptionkey/headset_xenology
|
|
|
|
/obj/item/radio/headset/headset_anom
|
|
name = "anomalist radio headset"
|
|
desc = "A science-y headset for Anomalists."
|
|
icon_state = "sci_headset"
|
|
ks2type = /obj/item/encryptionkey/headset_xenology
|
|
|
|
/obj/item/radio/headset/headset_anom/alt
|
|
name = "anomalist bowman headset"
|
|
icon = 'icons/obj/item/radio/headset_alt.dmi'
|
|
icon_state = "sci_headset_alt"
|
|
|
|
/obj/item/radio/headset/alt/double/anom
|
|
name = "soundproof anomalist headset"
|
|
icon_state = "earset_sci"
|
|
item_state = "earset_sci"
|
|
ks2type = /obj/item/encryptionkey/headset_xenology
|
|
|
|
/obj/item/radio/headset/wrist/anom
|
|
name = "wristbound anomalist radio"
|
|
icon_state = "wristset_sci"
|
|
item_state = "wristset_sci"
|
|
ks2type = /obj/item/encryptionkey/headset_xenology
|
|
|
|
/obj/item/radio/headset/wrist/clip/anom
|
|
name = "clip-on anomalist radio"
|
|
icon_state = "clip_sci"
|
|
item_state = "clip_sci"
|
|
ks2type = /obj/item/encryptionkey/headset_xenology
|
|
|
|
/obj/item/radio/headset/headset_rob
|
|
name = "robotics radio headset"
|
|
desc = "Made specifically for the roboticists who cannot decide between departments."
|
|
icon_state = "rob_headset"
|
|
ks2type = /obj/item/encryptionkey/headset_rob
|
|
|
|
/obj/item/radio/headset/heads/rd
|
|
name = "research director's headset"
|
|
desc = "Headset of the researching God."
|
|
icon_state = "rd_headset"
|
|
ks2type = /obj/item/encryptionkey/heads/rd
|
|
|
|
/obj/item/radio/headset/heads/rd/alt
|
|
name = "research director's bowman headset"
|
|
icon = 'icons/obj/item/radio/headset_alt.dmi'
|
|
icon_state = "rd_headset_alt"
|
|
item_state = "headset_alt"
|
|
|
|
/obj/item/radio/headset/alt/double/rd
|
|
name = "soundproof research director's headset"
|
|
icon_state = "earset_RD"
|
|
item_state = "earset_RD"
|
|
ks2type = /obj/item/encryptionkey/heads/rd
|
|
|
|
/obj/item/radio/headset/wrist/rd
|
|
name = "research director's wristbound radio"
|
|
icon_state = "wristset_RD"
|
|
item_state = "wristset_RD"
|
|
ks2type = /obj/item/encryptionkey/heads/rd
|
|
|
|
/obj/item/radio/headset/wrist/clip/rd
|
|
name = "research director's clip-on radio"
|
|
icon_state = "clip_RD"
|
|
item_state = "clip_RD"
|
|
ks2type = /obj/item/encryptionkey/heads/rd
|
|
|
|
/*
|
|
* Security
|
|
*/
|
|
|
|
/obj/item/radio/headset/headset_sec
|
|
name = "security radio headset"
|
|
desc = "This is used by your elite security force."
|
|
icon_state = "sec_headset"
|
|
ks2type = /obj/item/encryptionkey/headset_sec
|
|
|
|
/obj/item/radio/headset/headset_sec/alt
|
|
name = "security bowman headset"
|
|
icon = 'icons/obj/item/radio/headset_alt.dmi'
|
|
icon_state = "sec_headset_alt"
|
|
item_state = "headset_alt"
|
|
|
|
/obj/item/radio/headset/alt/double/sec
|
|
name = "soundproof security headset"
|
|
icon_state = "earset_sec"
|
|
item_state = "earset_sec"
|
|
ks2type = /obj/item/encryptionkey/headset_sec
|
|
|
|
/obj/item/radio/headset/wrist/sec
|
|
name = "wristbound security radio"
|
|
icon_state = "wristset_sec"
|
|
item_state = "wristset_sec"
|
|
ks2type = /obj/item/encryptionkey/headset_sec
|
|
|
|
/obj/item/radio/headset/wrist/clip/sec
|
|
name = "clip-on security radio"
|
|
icon_state = "clip_sec"
|
|
item_state = "clip_sec"
|
|
ks2type = /obj/item/encryptionkey/headset_sec
|
|
|
|
/obj/item/radio/headset/headset_warden
|
|
name = "warden radio headset"
|
|
desc = "This is used by your all-powerful overseer."
|
|
icon_state = "sec_headset"
|
|
ks2type = /obj/item/encryptionkey/headset_warden
|
|
|
|
/obj/item/radio/headset/headset_warden/alt
|
|
name = "warden bowman headset"
|
|
icon = 'icons/obj/item/radio/headset_alt.dmi'
|
|
icon_state = "sec_headset_alt"
|
|
item_state = "headset_alt"
|
|
|
|
/obj/item/radio/headset/alt/double/sec/warden
|
|
name = "soundproof warden headset"
|
|
ks2type = /obj/item/encryptionkey/headset_warden
|
|
|
|
/obj/item/radio/headset/wrist/sec/warden
|
|
name = "wristbound warden radio"
|
|
ks2type = /obj/item/encryptionkey/headset_warden
|
|
|
|
/obj/item/radio/headset/wrist/clip/sec/warden
|
|
name = "clip-on warden radio"
|
|
ks2type = /obj/item/encryptionkey/headset_warden
|
|
|
|
/obj/item/radio/headset/headset_penal
|
|
name = "penal radio headset"
|
|
desc = "A headset used by people who have chosen or been chosen to work the fields."
|
|
icon_state = "mine_headset"
|
|
ks2type = /obj/item/encryptionkey/headset_penal
|
|
|
|
/obj/item/radio/headset/heads/hos
|
|
name = "head of security's headset"
|
|
desc = "The headset of the man who protects your worthless lifes."
|
|
icon_state = "hos_headset"
|
|
ks2type = /obj/item/encryptionkey/heads/hos
|
|
|
|
/obj/item/radio/headset/heads/hos/alt
|
|
name = "head of security's bowman headset"
|
|
icon = 'icons/obj/item/radio/headset_alt.dmi'
|
|
icon_state = "hos_headset_alt"
|
|
item_state = "headset_alt"
|
|
|
|
/obj/item/radio/headset/alt/double/hos
|
|
name = "head of security's soundproof headset"
|
|
icon_state = "earset_HoS"
|
|
item_state = "earset_HoS"
|
|
ks2type = /obj/item/encryptionkey/heads/hos
|
|
|
|
/obj/item/radio/headset/wrist/hos
|
|
name = "head of security's wristbound radio"
|
|
icon_state = "wristset_HoS"
|
|
item_state = "wristset_HoS"
|
|
ks2type = /obj/item/encryptionkey/heads/hos
|
|
|
|
/obj/item/radio/headset/wrist/clip/hos
|
|
name = "head of security's clip-on radio"
|
|
icon_state = "clip_HoS"
|
|
item_state = "clip_HoS"
|
|
ks2type = /obj/item/encryptionkey/heads/hos
|
|
|
|
/*
|
|
* Captain
|
|
*/
|
|
|
|
/obj/item/radio/headset/headset_com
|
|
name = "command radio headset"
|
|
desc = "A headset with a commanding channel."
|
|
icon_state = "com_headset"
|
|
ks2type = /obj/item/encryptionkey/headset_com
|
|
|
|
/obj/item/radio/headset/headset_com/alt
|
|
name = "command bowman headset"
|
|
icon = 'icons/obj/item/radio/headset_alt.dmi'
|
|
icon_state = "com_headset_alt"
|
|
item_state = "headset_alt"
|
|
|
|
/obj/item/radio/headset/alt/double/command
|
|
name = "soundproof command headset"
|
|
icon_state = "earset_com"
|
|
item_state = "earset_com"
|
|
ks2type = /obj/item/encryptionkey/headset_com
|
|
|
|
/obj/item/radio/headset/wrist/command
|
|
name = "wristbound command radio"
|
|
icon_state = "wristset_com"
|
|
item_state = "wristset_com"
|
|
ks2type = /obj/item/encryptionkey/headset_com
|
|
|
|
/obj/item/radio/headset/wrist/clip/command
|
|
name = "clip-on command radio"
|
|
icon_state = "clip_com"
|
|
item_state = "clip_com"
|
|
ks2type = /obj/item/encryptionkey/headset_com
|
|
|
|
/obj/item/radio/headset/heads/captain
|
|
name = "captain's headset"
|
|
desc = "The headset of the boss."
|
|
icon_state = "cap_headset"
|
|
ks2type = /obj/item/encryptionkey/heads/captain
|
|
|
|
/obj/item/radio/headset/heads/captain/alt
|
|
name = "captain's bowman headset"
|
|
icon = 'icons/obj/item/radio/headset_alt.dmi'
|
|
icon_state = "cap_headset_alt"
|
|
item_state = "headset_alt"
|
|
|
|
/obj/item/radio/headset/alt/double/captain
|
|
name = "captain's soundproof headset"
|
|
icon_state = "earset_cap"
|
|
item_state = "earset_cap"
|
|
ks2type = /obj/item/encryptionkey/heads/captain
|
|
|
|
/obj/item/radio/headset/wrist/captain
|
|
name = "captain's wristbound radio"
|
|
icon_state = "wristset_cap"
|
|
item_state = "wristset_cap"
|
|
ks2type = /obj/item/encryptionkey/heads/captain
|
|
|
|
/obj/item/radio/headset/wrist/clip/captain
|
|
name = "captain's clip-on radio"
|
|
icon_state = "clip_cap"
|
|
item_state = "clip_cap"
|
|
ks2type = /obj/item/encryptionkey/heads/captain
|
|
|
|
/*
|
|
* Misc
|
|
*/
|
|
|
|
/obj/item/radio/headset/headset_medsci
|
|
name = "medical research radio headset"
|
|
desc = "A headset that is a result of the mating between medical and science."
|
|
icon_state = "medsci_headset"
|
|
ks2type = /obj/item/encryptionkey/headset_medsci
|
|
|
|
/obj/item/radio/headset/hivenet
|
|
translate_hivenet = 1
|
|
ks2type = /obj/item/encryptionkey/hivenet
|
|
|
|
/obj/item/radio/headset/earmuff
|
|
name = "earmuffs"
|
|
desc = "Protects your hearing from loud noises, and quiet ones as well."
|
|
icon = 'icons/obj/clothing/ears/earmuffs.dmi'
|
|
icon_state = "earmuffs"
|
|
item_state = "earmuffs"
|
|
item_flags = ITEM_FLAG_SOUND_PROTECTION
|
|
slot_flags = SLOT_EARS | SLOT_TWOEARS
|
|
|
|
/obj/item/radio/headset/earmuff/antagonist_hints(mob/user, distance, is_adjacent)
|
|
. += ..()
|
|
. += "This set of earmuffs has a secret compartment housing radio gear, allowing it to function as a standard headset."
|
|
|
|
/obj/item/radio/headset/syndicate
|
|
name = "military headset"
|
|
icon_state = "syn_headset"
|
|
origin_tech = list(TECH_ILLEGAL = 3)
|
|
syndie = TRUE
|
|
ks1type = /obj/item/encryptionkey/syndicate
|
|
|
|
/obj/item/radio/headset/syndicate/alt
|
|
name = "military bowman headset"
|
|
icon = 'icons/obj/item/radio/headset_alt.dmi'
|
|
icon_state = "syn_headset_alt"
|
|
item_state = "headset_alt"
|
|
|
|
/obj/item/radio/headset/raider
|
|
icon_state = "syn_headset"
|
|
origin_tech = list(TECH_ILLEGAL = 2)
|
|
syndie = TRUE
|
|
ks1type = /obj/item/encryptionkey/raider
|
|
|
|
/obj/item/radio/headset/burglar
|
|
icon_state = "syn_headset"
|
|
origin_tech = list(TECH_ILLEGAL = 2)
|
|
syndie = TRUE
|
|
ks1type = /obj/item/encryptionkey/burglar
|
|
|
|
/obj/item/radio/headset/jockey
|
|
icon_state = "syn_headset"
|
|
origin_tech = list(TECH_ILLEGAL = 2)
|
|
syndie = TRUE
|
|
ks1type = /obj/item/encryptionkey/jockey
|
|
|
|
/obj/item/radio/headset/ninja
|
|
icon_state = "syn_headset"
|
|
origin_tech = list(TECH_ILLEGAL = 3)
|
|
syndie = TRUE
|
|
independent = TRUE
|
|
ks1type = /obj/item/encryptionkey/ninja
|
|
|
|
/obj/item/radio/headset/bluespace
|
|
name = "bluespace headset"
|
|
desc = "A bluespace mockery of a standard NanoTrasen headset. It seems to function. Takes encryption keys."
|
|
icon_state = "bs_headset"
|
|
item_state = "com_headset" // laziness or genius, you decide
|
|
syndie = TRUE
|
|
independent = TRUE
|
|
ks1type = /obj/item/encryptionkey/bluespace
|
|
|
|
//Ghostrole headset
|
|
/obj/item/radio/headset/ship
|
|
icon_state = "syn_headset"
|
|
ks1type = /obj/item/encryptionkey/ship
|
|
var/use_common = FALSE
|
|
|
|
/obj/item/radio/headset/ship/Initialize()
|
|
if(!SSatlas.current_map.use_overmap)
|
|
return ..()
|
|
|
|
var/sector_z = get_sector_z()
|
|
var/obj/effect/overmap/visitable/V = GLOB.map_sectors["[sector_z]"]
|
|
if(istype(V))
|
|
if(V.comms_support)
|
|
default_frequency = assign_away_freq(V.name)
|
|
if(V.comms_name)
|
|
name = "[V.comms_name] radio headset"
|
|
else
|
|
if(SSodyssey.scenario && (sector_z in SSodyssey.scenario_zlevels))
|
|
default_frequency = assign_away_freq(SSodyssey.scenario.radio_frequency_name)
|
|
|
|
. = ..()
|
|
|
|
if (use_common)
|
|
set_frequency(PUB_FREQ)
|
|
|
|
/obj/item/radio/headset/ship/proc/get_sector_z()
|
|
. = GET_Z(get_turf(src))
|
|
|
|
/obj/item/radio/headset/ship/odyssey
|
|
ks1type = /obj/item/encryptionkey/ship/odyssey
|
|
|
|
/obj/item/radio/headset/ship/odyssey/get_sector_z()
|
|
if(SSodyssey.scenario_zlevels && SSodyssey.scenario_zlevels.len)
|
|
. = SSodyssey.scenario_zlevels[1]
|
|
else // safe fallback
|
|
. = GET_Z(get_turf(src))
|
|
|
|
/obj/item/radio/headset/ship/coalition_navy
|
|
icon_state = "coal_headset"
|
|
ks1type = /obj/item/encryptionkey/ship/coal_navy
|
|
|
|
/obj/item/radio/headset/ship/common
|
|
use_common = TRUE
|
|
ks1type = /obj/item/encryptionkey/ship/common
|
|
|
|
/obj/item/radio/headset/binary
|
|
origin_tech = list(TECH_ILLEGAL = 3)
|
|
ks2type = /obj/item/encryptionkey/binary
|
|
|
|
/obj/item/radio/headset/ert
|
|
name = "emergency response team radio headset"
|
|
desc = "The headset of the boss's boss."
|
|
icon_state = "com_headset"
|
|
ks2type = /obj/item/encryptionkey/ert
|
|
|
|
/obj/item/radio/headset/ert/alt
|
|
name = "emergency response team bowman headset"
|
|
icon = 'icons/obj/item/radio/headset_alt.dmi'
|
|
icon_state = "com_headset_alt"
|
|
item_state = "headset_alt"
|
|
|
|
/obj/item/radio/headset/ert/siib
|
|
name = "radio headset"
|
|
desc = "An updated, modular intercom that fits over the head. Takes encryption keys. This one looks slightly modified..."
|
|
icon_state = "headset"
|
|
item_state = "headset"
|
|
|
|
/obj/item/radio/headset/legion
|
|
name = "Tau Ceti Foreign Legion radio headset"
|
|
desc = "The headset used by NanoTrasen sanctioned response forces."
|
|
icon_state = "com_headset"
|
|
ks2type = /obj/item/encryptionkey/onlyert
|
|
|
|
/obj/item/radio/headset/distress
|
|
name = "specialist radio headset"
|
|
desc = "A headset used by specialists."
|
|
ks2type = /obj/item/encryptionkey/onlyert
|
|
|
|
/obj/item/radio/headset/representative
|
|
name = "representative headset"
|
|
desc = "The headset of your worst enemy."
|
|
icon_state = "com_headset"
|
|
ks2type = /obj/item/encryptionkey/headset_com
|
|
|
|
/obj/item/radio/headset/representative/alt
|
|
name = "representative bowman headset"
|
|
icon = 'icons/obj/item/radio/headset_alt.dmi'
|
|
icon_state = "com_headset_alt"
|
|
item_state = "headset_alt"
|
|
|
|
/obj/item/radio/headset/alt/double/command/representative
|
|
name = "soundproof representative headset"
|
|
|
|
/obj/item/radio/headset/wrist/command/representative
|
|
name = "wristbound representative radio"
|
|
|
|
/obj/item/radio/headset/wrist/clip/command/representative
|
|
name = "clip-on representative radio"
|
|
icon_state = "clip_com"
|
|
item_state = "clip_com"
|
|
ks2type = /obj/item/encryptionkey/headset_com
|
|
|
|
/obj/item/radio/headset/heads/ai_integrated //No need to care about icons, it should be hidden inside the AI anyway.
|
|
name = "\improper AI subspace transceiver"
|
|
desc = "Integrated AI radio transceiver."
|
|
icon = 'icons/obj/robot_component.dmi'
|
|
icon_state = "radio"
|
|
ks2type = /obj/item/encryptionkey/heads/ai_integrated
|
|
var/myAi = null // Atlantis: Reference back to the AI which has this radio.
|
|
var/disabledAi = 0 // Atlantis: Used to manually disable AI's integrated radio via intellicard menu.
|
|
|
|
/obj/item/radio/headset/heads/ai_integrated/Destroy()
|
|
myAi = null
|
|
. = ..()
|
|
|
|
/obj/item/radio/headset/heads/ai_integrated/can_receive(input_frequency, level)
|
|
return ..(input_frequency, level, !disabledAi)
|