diff --git a/aurorastation.dme b/aurorastation.dme index f2d45634685..aed35498254 100644 --- a/aurorastation.dme +++ b/aurorastation.dme @@ -1247,6 +1247,7 @@ #include "code\modules\background\accent\accent.dm" #include "code\modules\background\accent\diona.dm" #include "code\modules\background\accent\human.dm" +#include "code\modules\background\accent\misc.dm" #include "code\modules\background\accent\silicon.dm" #include "code\modules\background\accent\skrell.dm" #include "code\modules\background\accent\tajara.dm" diff --git a/code/__defines/radio.dm b/code/__defines/radio.dm index 903d4df8115..a11d478698d 100644 --- a/code/__defines/radio.dm +++ b/code/__defines/radio.dm @@ -9,6 +9,7 @@ #define AI_FREQ 1343 #define DTH_FREQ 1341 #define SYND_FREQ 1213 +#define BLSP_FREQ 1253 #define NINJ_FREQ 1255 #define BURG_FREQ 1257 #define RAID_FREQ 1277 @@ -40,6 +41,7 @@ var/list/radiochannels = list( "Special Ops" = DTH_FREQ, "Mercenary" = SYND_FREQ, "Ninja" = NINJ_FREQ, + "Bluespace" = BLSP_FREQ, "Burglar" = BURG_FREQ, "Raider" = RAID_FREQ, "Supply" = SUP_FREQ, @@ -68,6 +70,7 @@ var/list/ANTAG_FREQS = list( SYND_FREQ, RAID_FREQ, NINJ_FREQ, + BLSP_FREQ, BURG_FREQ ) diff --git a/code/controllers/subsystems/radio.dm b/code/controllers/subsystems/radio.dm index ad94bedff30..3418e6a6f07 100644 --- a/code/controllers/subsystems/radio.dm +++ b/code/controllers/subsystems/radio.dm @@ -187,6 +187,8 @@ var/datum/controller/subsystem/radio/SSradio . = "srvradio" if (ENT_FREQ) //entertainment . = "entradio" + if (BLSP_FREQ) + . = "bluespaceradio" else if(DEPT_FREQS_ASSOC[fstr]) . = "deptradio" diff --git a/code/controllers/subsystems/statistics.dm b/code/controllers/subsystems/statistics.dm index 7a372a17955..a7e16d228ec 100644 --- a/code/controllers/subsystems/statistics.dm +++ b/code/controllers/subsystems/statistics.dm @@ -22,6 +22,7 @@ var/list/msg_raider = list() var/list/msg_burglar = list() var/list/msg_ninja = list() + var/list/msg_bluespace = list() var/list/msg_cargo = list() var/list/msg_service = list() diff --git a/code/datums/outfits/outfit_antag.dm b/code/datums/outfits/outfit_antag.dm index d98549c2fb1..2035fbe8476 100644 --- a/code/datums/outfits/outfit_antag.dm +++ b/code/datums/outfits/outfit_antag.dm @@ -508,14 +508,24 @@ suit = /obj/item/clothing/suit/chameleon/wizard head = /obj/item/clothing/head/softcap/chameleon/wizard shoes = /obj/item/clothing/shoes/chameleon/wizard - l_ear = /obj/item/device/radio/headset + l_ear = /obj/item/device/radio/headset/bluespace r_pocket = /obj/item/teleportation_scroll l_hand = /obj/item/spellbook + id = /obj/item/card/id/bluespace backpack_contents = list( /obj/item/storage/box = 1 ) +/datum/outfit/admin/wizard/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) + . = ..() + if(visualsOnly) + return + + var/obj/item/card/id/W = H.wear_id + if(W) + W.registered_name = H.real_name + /datum/outfit/admin/wizard/apprentice name = "Space Wizard Apprentice" l_hand = null @@ -576,7 +586,7 @@ back = /obj/item/gun/energy/staff/focus belt = /obj/item/storage/belt/fannypack/component gloves = null - l_ear = /obj/item/device/radio/headset/raider + l_ear = /obj/item/device/radio/headset/bluespace l_pocket = null r_pocket = null id = /obj/item/storage/wallet/random @@ -640,3 +650,9 @@ passport.name = "[H.real_name]'s Passport" if(W) W.handle_item_insertion(passport) + +/datum/outfit/admin/golem + name = "Bluespace Golem" + allow_backbag_choice = FALSE + + l_ear = /obj/item/device/radio/headset/bluespace diff --git a/code/defines/procs/radio.dm b/code/defines/procs/radio.dm index 90638792079..2aeaf2eed45 100644 --- a/code/defines/procs/radio.dm +++ b/code/defines/procs/radio.dm @@ -16,14 +16,18 @@ /proc/get_frequency_name(var/display_freq) var/freq_text - // the name of the channel - if(display_freq in ANTAG_FREQS) - freq_text = "#unkn" - else - for(var/channel in radiochannels) - if(radiochannels[channel] == display_freq) - freq_text = channel - break + if(display_freq == BLSP_FREQ) + freq_text = "Bluespace" + + if(!freq_text) + // the name of the channel + if(display_freq in ANTAG_FREQS) + freq_text = "#unkn" + else + for(var/channel in radiochannels) + if(radiochannels[channel] == display_freq) + freq_text = channel + break // --- If the frequency has not been assigned a name, just use the frequency as the name --- if(!freq_text) diff --git a/code/game/antagonist/antagonist.dm b/code/game/antagonist/antagonist.dm index 2251e980f90..f18e30d4997 100644 --- a/code/game/antagonist/antagonist.dm +++ b/code/game/antagonist/antagonist.dm @@ -72,6 +72,7 @@ // ID card stuff. var/default_access = list() var/id_type = /obj/item/card/id + var/id_card // a reference to the id_card we spawned with /datum/antagonist/New() diff --git a/code/game/antagonist/antagonist_create.dm b/code/game/antagonist/antagonist_create.dm index 34930a03265..f2ec00e5d2f 100644 --- a/code/game/antagonist/antagonist_create.dm +++ b/code/game/antagonist/antagonist_create.dm @@ -47,15 +47,17 @@ switch(freq) if(NINJ_FREQ) - R = new/obj/item/device/radio/headset/ninja(player) + R = new /obj/item/device/radio/headset/ninja(player) + if(BLSP_FREQ) + R = new /obj/item/device/radio/headset/bluespace(player) if(BURG_FREQ) R = new /obj/item/device/radio/headset/burglar(player) if(SYND_FREQ) - R = new/obj/item/device/radio/headset/syndicate(player) + R = new /obj/item/device/radio/headset/syndicate(player) if(RAID_FREQ) - R = new/obj/item/device/radio/headset/raider(player) + R = new /obj/item/device/radio/headset/raider(player) else - R = new/obj/item/device/radio/headset(player) + R = new /obj/item/device/radio/headset(player) R.set_frequency(freq) R.set_frequency(freq) @@ -136,4 +138,4 @@ player.dna.real_name = newname if(player.mind) player.mind.name = player.name // Update any ID cards. - update_access(player) + update_access(player) \ No newline at end of file diff --git a/code/game/antagonist/outsider/wizard.dm b/code/game/antagonist/outsider/wizard.dm index a666184f0e3..37a6be3ce80 100644 --- a/code/game/antagonist/outsider/wizard.dm +++ b/code/game/antagonist/outsider/wizard.dm @@ -96,10 +96,17 @@ var/datum/antagonist/wizard/wizards player.preEquipOutfit(/datum/outfit/admin/wizard, FALSE) player.equipOutfit(/datum/outfit/admin/wizard, FALSE) + if(player.wear_id) + id_card = player.wear_id player.force_update_limbs() player.update_eyes() player.regenerate_icons() +/datum/antagonist/wizard/set_antag_name(var/mob/living/player) + ..() + if(id_card) + addtimer(CALLBACK(player, /mob/.proc/set_id_info, id_card), 1 SECOND) + /datum/antagonist/wizard/check_victory() var/survivor for(var/datum/mind/player in current_antagonists) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 7f351489c2b..081e4ec18ee 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -959,7 +959,7 @@ About the new airlock wires panel: if(!src.density) return - H.visible_message("\The [H] begins to pry open \the [src]!", "You begin to pry open \the [src]!", "You hear the sound of an airlock being forced open.") + H.visible_message("[H] begins to pry open \the [src]!", SPAN_NOTICE("You begin to pry open \the [src]!"), SPAN_WARNING("You hear the sound of an airlock being forced open.")) if(!do_after(H, 120, 1, act_target = src)) return @@ -967,7 +967,7 @@ About the new airlock wires panel: src.do_animate("spark") src.stat |= BROKEN var/check = src.open(1) - H.visible_message("\The [H] slices \the [src]'s controls[check ? ", ripping it open!" : ", breaking it!"]", "You slice \the [src]'s controls[check ? ", ripping it open!" : ", breaking it!"]", "You hear something sparking.") + H.visible_message("[H] slices \the [src]'s controls, [check ? "ripping it open" : "breaking it"]!", SPAN_NOTICE("You slice \the [src]'s controls, [check ? "ripping it open" : "breaking it"]!"), SPAN_WARNING("You hear something sparking.")) return if(src.p_open) user.set_machine(src) @@ -1416,7 +1416,7 @@ About the new airlock wires panel: use_power(360) //360 W seems much more appropriate for an actuator moving an industrial door capable of crushing people //if the door is unpowered then it doesn't make sense to hear the woosh of a pneumatic actuator - if(arePowerSystemsOn()) + if(!forced && arePowerSystemsOn()) playsound(src.loc, open_sound_powered, 60, 1) else playsound(src.loc, open_sound_unpowered, 60, 1) diff --git a/code/game/machinery/telecomms/broadcaster.dm b/code/game/machinery/telecomms/broadcaster.dm index 09ef9b57b18..0115aa13d72 100644 --- a/code/game/machinery/telecomms/broadcaster.dm +++ b/code/game/machinery/telecomms/broadcaster.dm @@ -393,6 +393,8 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept SSfeedback.msg_raider += blackbox_msg if(NINJ_FREQ) SSfeedback.msg_ninja += blackbox_msg + if(BLSP_FREQ) + SSfeedback.msg_bluespace += blackbox_msg if(BURG_FREQ) SSfeedback.msg_burglar += blackbox_msg if(SUP_FREQ) @@ -583,6 +585,8 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept SSfeedback.msg_raider += blackbox_msg if(NINJ_FREQ) SSfeedback.msg_ninja += blackbox_msg + if(BLSP_FREQ) + SSfeedback.msg_bluespace += blackbox_msg if(BURG_FREQ) SSfeedback.msg_burglar += blackbox_msg if(SUP_FREQ) diff --git a/code/game/objects/items/devices/radio/_radio_defines.dm b/code/game/objects/items/devices/radio/_radio_defines.dm index bd656e8a4fc..c277e4b8746 100644 --- a/code/game/objects/items/devices/radio/_radio_defines.dm +++ b/code/game/objects/items/devices/radio/_radio_defines.dm @@ -15,4 +15,5 @@ #define CHANNEL_RAIDER "Raider" #define CHANNEL_MERCENARY "Mercenary" #define CHANNEL_NINJA "Ninja" +#define CHANNEL_BLUESPACE "Bluespace" #define CHANNEL_BURGLAR "Burglar" \ No newline at end of file diff --git a/code/game/objects/items/devices/radio/encryptionkey.dm b/code/game/objects/items/devices/radio/encryptionkey.dm index b6799a50684..822bcf5af5a 100644 --- a/code/game/objects/items/devices/radio/encryptionkey.dm +++ b/code/game/objects/items/devices/radio/encryptionkey.dm @@ -40,6 +40,14 @@ origin_tech = list(TECH_ILLEGAL = 3) syndie = TRUE +/obj/item/device/encryptionkey/bluespace + name = "bluespace encryption key" + desc = "A non-sensical mimickry of a standard encryption key, in the form of an elongated bluespace crystal. It seems to function." + icon_state = "bs_cyperkey" + additional_channels = list(CHANNEL_BLUESPACE = TRUE) + origin_tech = list(TECH_BLUESPACE = 3) + syndie = TRUE + /obj/item/device/encryptionkey/binary icon_state = "cypherkey" translate_binary = TRUE diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm index c338d9d7a97..a7e683c33b2 100644 --- a/code/game/objects/items/devices/radio/headset.dm +++ b/code/game/objects/items/devices/radio/headset.dm @@ -425,7 +425,7 @@ /obj/item/device/radio/headset/raider icon_state = "syn_headset" origin_tech = list(TECH_ILLEGAL = 2) - syndie = 1 + syndie = TRUE ks1type = /obj/item/device/encryptionkey/raider /obj/item/device/radio/headset/burglar @@ -437,9 +437,17 @@ /obj/item/device/radio/headset/ninja icon_state = "syn_headset" origin_tech = list(TECH_ILLEGAL = 3) - syndie = 1 + syndie = TRUE ks1type = /obj/item/device/encryptionkey/ninja +/obj/item/device/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 + ks1type = /obj/item/device/encryptionkey/bluespace + /obj/item/device/radio/headset/binary origin_tech = list(TECH_ILLEGAL = 3) ks2type = /obj/item/device/encryptionkey/binary diff --git a/code/game/objects/items/weapons/cards_ids.dm b/code/game/objects/items/weapons/cards_ids.dm index 139814a8907..09b3cebdc51 100644 --- a/code/game/objects/items/weapons/cards_ids.dm +++ b/code/game/objects/items/weapons/cards_ids.dm @@ -109,6 +109,9 @@ var/const/NO_EMAG_ACT = -50 var/icon/side var/mining_points //miners gotta eat + var/can_copy_access = FALSE + var/access_copy_msg + var/flipped = 0 var/wear_over_suit = 0 @@ -267,10 +270,21 @@ var/const/NO_EMAG_ACT = -50 religion = H.religion age = H.age src.add_fingerprint(H) - to_chat(user, "Biometric Imprinting Successful!.") + to_chat(user, SPAN_NOTICE("Biometric Imprinting Successful!")) return 1 return ..() +/obj/item/card/id/attackby(obj/item/W, mob/user) + if(istype(W, /obj/item/card/id)) + var/obj/item/card/id/ID = W + if(ID.can_copy_access) + ID.access |= src.access + user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN) + if(player_is_antag(user.mind) || isgolem(user)) + to_chat(user, SPAN_NOTICE(ID.access_copy_msg)) + return + . = ..() + /obj/item/card/id/GetAccess() return access @@ -572,3 +586,24 @@ var/const/NO_EMAG_ACT = -50 desc = "A stylized plastic card, belonging to one of the many specialists at Einstein Engines." icon_state = "einstein_card" overlay_state = "einstein_card" + +/obj/item/card/id/bluespace + name = "bluespace identification card" + desc = "A bizarre imitation of Nanotrasen identification cards. It seems to function normally as well." + desc_antag = "Access can be copied from other ID cards by clicking on them." + icon_state = "crystalid" + +/obj/item/card/id/bluespace/update_name() + return + +/obj/item/card/id/bluespace/attack_self(mob/user) + if(registered_name == user.real_name) + switch(alert("Would you like edit the ID label, or show it?", "Show or Edit?", "Edit", "Show")) + if("Edit") + var/new_label = sanitize(input(user, "Enter the new label.", "Set Label") as text|null, 12) + if(new_label) + name = "[initial(name)] ([new_label])" + if("Show") + ..() + else + ..() diff --git a/code/game/objects/items/weapons/cards_ids_syndicate.dm b/code/game/objects/items/weapons/cards_ids_syndicate.dm index 820b812557e..ed753eb6974 100644 --- a/code/game/objects/items/weapons/cards_ids_syndicate.dm +++ b/code/game/objects/items/weapons/cards_ids_syndicate.dm @@ -2,6 +2,8 @@ name = "agent card" assignment = "Agent" origin_tech = list(TECH_ILLEGAL = 3) + can_copy_access = TRUE + access_copy_msg = "The microscanner activates as you pass it over the ID, copying its access." var/charge = 10000 var/electronic_warfare = FALSE var/image/obfuscation_image @@ -37,14 +39,6 @@ /obj/item/card/id/syndicate/prevent_tracking() return electronic_warfare -/obj/item/card/id/syndicate/afterattack(var/obj/item/O as obj, mob/user as mob, proximity) - if(!proximity) return - if(istype(O, /obj/item/card/id)) - var/obj/item/card/id/I = O - src.access |= I.access - if(player_is_antag(user.mind)) - to_chat(user, "The microscanner activates as you pass it over the ID, copying its access.") - /obj/item/card/id/syndicate/attack_self(mob/user as mob) // We use the fact that registered_name is not unset should the owner be vaporized, to ensure the id doesn't magically become unlocked. if(!registered_user && register_user(user)) diff --git a/code/modules/background/accent/misc.dm b/code/modules/background/accent/misc.dm new file mode 100644 index 00000000000..d566a906be5 --- /dev/null +++ b/code/modules/background/accent/misc.dm @@ -0,0 +1,4 @@ +/datum/accent/bluespace + name = ACCENT_BLUESPACE + description = "A peculiar accent. It seems familiar and unknown at the same time. It provokes the same feeling as having a word at the tip of your tongue." + tag_icon = "bluespace" \ No newline at end of file diff --git a/code/modules/background/defines.dm b/code/modules/background/defines.dm index 584143a8903..5a255a53c69 100644 --- a/code/modules/background/defines.dm +++ b/code/modules/background/defines.dm @@ -103,6 +103,8 @@ #define ACCENT_TTS "Text-to-Speech" +#define ACCENT_BLUESPACE "Bluespace" + #define ACCENT_ZORA "Zo'rane" #define ACCENT_KLAX "K'laxane" #define ACCENT_CTHUR "C'thuric" diff --git a/code/modules/mob/living/carbon/human/species/station/golem.dm b/code/modules/mob/living/carbon/human/species/station/golem.dm index d14517f14ba..43c2c974a39 100644 --- a/code/modules/mob/living/carbon/human/species/station/golem.dm +++ b/code/modules/mob/living/carbon/human/species/station/golem.dm @@ -25,6 +25,7 @@ var/global/list/golem_types = list(SPECIES_GOLEM_COAL, eyes = "blank_eyes" bodytype = BODYTYPE_GOLEM + default_accent = ACCENT_BLUESPACE language = "Ceti Basic" unarmed_types = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/punch) @@ -168,6 +169,8 @@ var/global/list/golem_types = list(SPECIES_GOLEM_COAL, icobase = 'icons/mob/human_races/golem/r_bronze.dmi' deform = 'icons/mob/human_races/golem/r_bronze.dmi' + bodytype = "Human" + meat_type = /obj/item/stack/material/bronze siemens_coefficient = 1.5 @@ -313,6 +316,8 @@ var/global/list/golem_types = list(SPECIES_GOLEM_COAL, icobase = 'icons/mob/human_races/golem/r_cloth.dmi' deform = 'icons/mob/human_races/golem/r_cloth.dmi' + bodytype = "Human" + slowdown = -2 brute_mod = 1.5 diff --git a/code/modules/mob/living/carbon/slime/items.dm b/code/modules/mob/living/carbon/slime/items.dm index f9b7f2ecc02..3c554a22cef 100644 --- a/code/modules/mob/living/carbon/slime/items.dm +++ b/code/modules/mob/living/carbon/slime/items.dm @@ -269,6 +269,9 @@ G.set_species(golem_type) G.name = G.species.get_random_name() G.real_name = G.name + G.accent = G.species.default_accent + G.preEquipOutfit(/datum/outfit/admin/golem, FALSE) + G.equipOutfit(/datum/outfit/admin/golem, FALSE) if(wizardy) wizard_golems.add_antagonist(G.mind, TRUE, TRUE, FALSE, TRUE, TRUE) else diff --git a/code/modules/mob/living/carbon/slime/slime.dm b/code/modules/mob/living/carbon/slime/slime.dm index 940ed7ee136..40e7b609329 100644 --- a/code/modules/mob/living/carbon/slime/slime.dm +++ b/code/modules/mob/living/carbon/slime/slime.dm @@ -11,6 +11,7 @@ maxHealth = 150 health = 150 gender = NEUTER + accent = ACCENT_BLUESPACE update_icon = 0 nutrition = 700 @@ -76,6 +77,9 @@ verbs += /mob/living/proc/ventcrawl + add_language(LANGUAGE_TCB) + set_default_language(LANGUAGE_TCB) + src.colour = colour number = rand(1, 1000) name = "[colour] [is_adult ? "adult" : "baby"] slime ([number])" diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index c34a0a6c3e0..0db22628f19 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -15,6 +15,7 @@ var/list/department_radio_keys = list( ":t" = "Mercenary", ".t" = "Mercenary", ":x" = "Raider", ".x" = "Raider", ":b" = "Burglar", ".b" = "Burglar", + ":j" = "Bluespace", ".j" = "Bluespace", ":q" = "Ninja", ".q" = "Ninja", ":u" = "Supply", ".u" = "Supply", ":v" = "Service", ".v" = "Service", @@ -36,6 +37,7 @@ var/list/department_radio_keys = list( ":T" = "Mercenary", ".T" = "Mercenary", ":X" = "Raider", ".X" = "Raider", ":B" = "Burglar", ".B" = "Burglar", + ":J" = "Bluespace", ".J" = "Bluespace", ":Q" = "Ninja", ".Q" = "Ninja", ":U" = "Supply", ".U" = "Supply", ":V" = "Service", ".V" = "Service", diff --git a/code/modules/mob/living/simple_animal/friendly/slime.dm b/code/modules/mob/living/simple_animal/friendly/slime.dm index 25539dbf626..8982ca53017 100644 --- a/code/modules/mob/living/simple_animal/friendly/slime.dm +++ b/code/modules/mob/living/simple_animal/friendly/slime.dm @@ -8,6 +8,7 @@ speak_emote = list("chirps") health = 100 maxHealth = 100 + accent = ACCENT_BLUESPACE response_help = "pets" response_disarm = "shoos" response_harm = "stomps on" @@ -16,6 +17,11 @@ mob_size = 3 composition_reagent = /decl/reagent/slimejelly +/mob/living/simple_animal/slime/Initialize() + . = ..() + add_language(LANGUAGE_TCB) + set_default_language(LANGUAGE_TCB) + /mob/living/simple_animal/slime/can_force_feed(var/feeder, var/food, var/feedback) if(feedback) to_chat(feeder, "Where do you intend to put \the [food]? \The [src] doesn't have a mouth!") diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 0e0ea9854f4..90347741f23 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -45,6 +45,13 @@ return 1 return 0 +/proc/isgolem(A) + if(ishuman(A)) + var/mob/living/carbon/human/H = A + if(istype(H.species, /datum/species/golem)) + return TRUE + return FALSE + /proc/isunathi(A) if(ishuman(A)) var/mob/living/carbon/human/H = A diff --git a/code/stylesheet.dm b/code/stylesheet.dm index d126917ea4d..27ece95b6a0 100644 --- a/code/stylesheet.dm +++ b/code/stylesheet.dm @@ -47,6 +47,7 @@ em {font-style: normal;font-weight: bold;} /* Radio Channels */ .comradio {color: #193A7A;} .syndradio {color: #6D3F40;} +.bluespaceradio {color: #1883A3;} .centradio {color: #5C5C8A;} .airadio {color: #FF00FF;} .entradio {color: #bd893c;} diff --git a/html/changelogs/geeves-golem_stuff.yml b/html/changelogs/geeves-golem_stuff.yml new file mode 100644 index 00000000000..65e93bb3a8b --- /dev/null +++ b/html/changelogs/geeves-golem_stuff.yml @@ -0,0 +1,9 @@ +author: Geeves, Stryker + +delete-after: True + +changes: + - rscadd: "Added bluespace headsets, IDs, and accents." + - rscadd: "Wizards now spawn with bluespace headsets and IDs. The headset can intercept communications." + - rscadd: "Slimes and bluespace golems have the bluespace accent." + - tweak: "Forced open airlocks now play the unpowered opening sound." \ No newline at end of file diff --git a/icons/accent_tags.dmi b/icons/accent_tags.dmi index 6f1a38ea6bf..ab5dfe42c32 100644 Binary files a/icons/accent_tags.dmi and b/icons/accent_tags.dmi differ diff --git a/icons/obj/card.dmi b/icons/obj/card.dmi index 32bd7322e52..16a61ca69b1 100644 Binary files a/icons/obj/card.dmi and b/icons/obj/card.dmi differ diff --git a/icons/obj/radio.dmi b/icons/obj/radio.dmi index 102a9159fe1..73e2583bb7b 100644 Binary files a/icons/obj/radio.dmi and b/icons/obj/radio.dmi differ diff --git a/nano/templates/radio_basic.tmpl b/nano/templates/radio_basic.tmpl index 27be9b27bf9..8502be49cb3 100644 --- a/nano/templates/radio_basic.tmpl +++ b/nano/templates/radio_basic.tmpl @@ -8,6 +8,7 @@ Used In File(s): /code/game/objects/item/devices/radio/radio.dm .deptradio {color: #993399;} .comradio {color: #395A9A;} .syndradio {color: #6D3F40;} + .bluespaceradio {color: #1883A3;} .centradio {color: #5C5C8A;} .airadio {color: #FF00FF;} .secradio {color: #A30000;}