diff --git a/GainStation13/code/clothing/fat_mask.dm b/GainStation13/code/clothing/fat_mask.dm new file mode 100644 index 00000000..cc1dc7b1 --- /dev/null +++ b/GainStation13/code/clothing/fat_mask.dm @@ -0,0 +1,26 @@ +/obj/item/clothing/mask/gas/fattening + name = "drone mask" + desc = "A mask that can be connected to an air supply. When seen from certain angles, an orange light is reflected by it." + icon = 'GainStation13/icons/obj/clothing/fat_mask.dmi' + icon_state = "fat_mask" + item_state = "fat_mask" + var/mob/living/carbon/C + +/obj/item/clothing/mask/gas/fattening/equipped(mob/M, slot) + . = ..() + if (slot == SLOT_WEAR_MASK) + if(iscarbon(M)) + C = M + START_PROCESSING(SSobj, src) + else + C = null + return PROCESS_KILL + +/obj/item/clothing/mask/gas/fattening/process() + C.adjust_fatness(5, FATTENING_TYPE_ITEM) + +/datum/crafting_recipe/fat_mask + name = "Drone Mask" + result = /obj/item/clothing/mask/gas/fattening + reqs = list(/obj/item/stack/sheet/mineral/calorite = 1, /obj/item/clothing/mask/gas = 1) + category = CAT_CLOTHING diff --git a/GainStation13/code/game/objects/items/RCD.dm b/GainStation13/code/game/objects/items/RCD.dm new file mode 100644 index 00000000..1b8a011d --- /dev/null +++ b/GainStation13/code/game/objects/items/RCD.dm @@ -0,0 +1,47 @@ +/datum/design/arcd + name = "Advanced Rapid Construction Device (ARCD)" + desc = "A tool that can construct and deconstruct walls, airlocks and floors on the fly. This model works at a distance." + id = "arcd_design" + build_type = PROTOLATHE + materials = list(MAT_METAL = MINERAL_MATERIAL_AMOUNT, MAT_GLASS = MINERAL_MATERIAL_AMOUNT, MAT_DIAMOND = 500, MAT_BLUESPACE = 500) // costs more than what it did in the autolathe, this one comes loaded. + build_path = /obj/item/construction/rcd/arcd + category = list("Equipment") + departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING + +/datum/techweb_node/blue_construct + id = "blue_construct" + display_name = "Bluespace Construction" + description = "Augument rapid construction designs using bluespace tech for ranged operations" + prereq_ids = list("adv_engi", "adv_bluespace") + design_ids = list("arcd_design") + research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 7000) + export_price = 7000 + +/obj/item/borg/upgrade/arcd + name = "cyborg ARCD" + desc = "A cybord RCG upgrade module to an ARCD model." + icon_state = "cyborg_upgrade3" + require_module = 1 + module_type = /obj/item/robot_module/engineering + +/obj/item/borg/upgrade/arcd/action(mob/living/silicon/robot/R, user = usr) + . = ..() + if(.) + var/obj/item/construction/rcd/arcd/S = new(R.module) + R.module.basic_modules += S + R.module.add_module(S, FALSE, TRUE) + +/obj/item/borg/upgrade/arcd/deactivate(mob/living/silicon/robot/R, user = usr) + . = ..() + if (.) + var/obj/item/construction/rcd/arcd/S = locate() in R.module + R.module.remove_module(S, TRUE) + +/datum/design/borg_arcd + name = "Cyborg ARCD" + id = "borg_arcd" + build_type = MECHFAB + build_path = /obj/item/borg/upgrade/arcd + materials = list(MAT_METAL = MINERAL_MATERIAL_AMOUNT, MAT_GLASS = MINERAL_MATERIAL_AMOUNT, MAT_DIAMOND = 500, MAT_BLUESPACE = 500) + construction_time = 100 + category = list("Cyborg Upgrade Modules") diff --git a/GainStation13/code/game/objects/items/storage/bags.dm b/GainStation13/code/game/objects/items/storage/bags.dm new file mode 100644 index 00000000..786e375c --- /dev/null +++ b/GainStation13/code/game/objects/items/storage/bags.dm @@ -0,0 +1,48 @@ +/obj/item/storage/bag/tray/holding + name = "serving tray of holding" + desc = "A tray for food, now featuring bluesapce technology. Don't ask." + +/obj/item/storage/bag/tray/holding/ComponentInitialize() + . = ..() + var/datum/component/storage/STR = GetComponent(/datum/component/storage) + STR.max_combined_w_class = INFINITY + STR.max_items = 50 + +/datum/design/tray_holding + name = "Serving Tray of Holding" + desc = "A serving tray for food, now somehow using bluespace to hold more stuff." + id = "tray_holding" + build_type = PROTOLATHE + materials = list(MAT_GOLD = 250, MAT_URANIUM = 500) + build_path =/obj/item/storage/bag/tray/holding + category = list("Bluespace Designs") + departmental_flags = DEPARTMENTAL_FLAG_SERVICE + +/obj/item/borg/upgrade/tray_hold + name = "cyborg tray of holding" + desc = "A tray of holding replacement for service borg's tray." + icon_state = "cyborg_upgrade3" + require_module = 1 + module_type = /obj/item/robot_module/butler + +/obj/item/borg/upgrade/tray_hold/action(mob/living/silicon/robot/R, user = usr) + . = ..() + if(.) + var/obj/item/storage/bag/tray/holding/S = new(R.module) + R.module.basic_modules += S + R.module.add_module(S, FALSE, TRUE) + +/obj/item/borg/upgrade/tray_hold/deactivate(mob/living/silicon/robot/R, user = usr) + . = ..() + if (.) + var/obj/item/storage/bag/tray/holding/S = locate() in R.module + R.module.remove_module(S, TRUE) + +/datum/design/borg_tray_hold + name = "Cyborg Tray of Holding" + id = "borg_tray_hold" + build_type = MECHFAB + build_path = /obj/item/borg/upgrade/tray_hold + materials = list(MAT_GOLD = 250, MAT_URANIUM = 500) + construction_time = 100 + category = list("Cyborg Upgrade Modules") diff --git a/GainStation13/code/modules/reagents/reagent_containers/barrel_tank.dm b/GainStation13/code/modules/reagents/reagent_containers/barrel_tank.dm index 11a6ed75..d53437ac 100644 --- a/GainStation13/code/modules/reagents/reagent_containers/barrel_tank.dm +++ b/GainStation13/code/modules/reagents/reagent_containers/barrel_tank.dm @@ -74,8 +74,6 @@ /datum/crafting_recipe/barrel_tank name = "Barrel tank" result = /obj/item/reagent_containers/barrel_tank - time = 25 tools = list(TOOL_CROWBAR) reqs = list(/obj/item/stack/sheet/mineral/wood = 20) - always_availible = TRUE category = CAT_CLOTHING diff --git a/GainStation13/icons/obj/clothing/fat_mask.dmi b/GainStation13/icons/obj/clothing/fat_mask.dmi new file mode 100644 index 00000000..3b7a0374 Binary files /dev/null and b/GainStation13/icons/obj/clothing/fat_mask.dmi differ diff --git a/GainStation13/sound/voice/voices/human.ogg b/GainStation13/sound/voice/voices/human.ogg new file mode 100644 index 00000000..ab8ddde4 Binary files /dev/null and b/GainStation13/sound/voice/voices/human.ogg differ diff --git a/GainStation13/sound/voice/voices/human_ask.ogg b/GainStation13/sound/voice/voices/human_ask.ogg new file mode 100644 index 00000000..89d631c6 Binary files /dev/null and b/GainStation13/sound/voice/voices/human_ask.ogg differ diff --git a/GainStation13/sound/voice/voices/human_exclaim.ogg b/GainStation13/sound/voice/voices/human_exclaim.ogg new file mode 100644 index 00000000..3be20fef Binary files /dev/null and b/GainStation13/sound/voice/voices/human_exclaim.ogg differ diff --git a/GainStation13/sound/voice/voices/lizard.ogg b/GainStation13/sound/voice/voices/lizard.ogg new file mode 100644 index 00000000..48638b0f Binary files /dev/null and b/GainStation13/sound/voice/voices/lizard.ogg differ diff --git a/GainStation13/sound/voice/voices/lizard_ask.ogg b/GainStation13/sound/voice/voices/lizard_ask.ogg new file mode 100644 index 00000000..60cf84ff Binary files /dev/null and b/GainStation13/sound/voice/voices/lizard_ask.ogg differ diff --git a/GainStation13/sound/voice/voices/lizard_exclaim.ogg b/GainStation13/sound/voice/voices/lizard_exclaim.ogg new file mode 100644 index 00000000..20d3c0b7 Binary files /dev/null and b/GainStation13/sound/voice/voices/lizard_exclaim.ogg differ diff --git a/GainStation13/sound/voice/voices/roach.ogg b/GainStation13/sound/voice/voices/roach.ogg new file mode 100644 index 00000000..55a2ad8a Binary files /dev/null and b/GainStation13/sound/voice/voices/roach.ogg differ diff --git a/GainStation13/sound/voice/voices/roach_ask.ogg b/GainStation13/sound/voice/voices/roach_ask.ogg new file mode 100644 index 00000000..dc15d884 Binary files /dev/null and b/GainStation13/sound/voice/voices/roach_ask.ogg differ diff --git a/GainStation13/sound/voice/voices/roach_exclaim.ogg b/GainStation13/sound/voice/voices/roach_exclaim.ogg new file mode 100644 index 00000000..3a5a17d4 Binary files /dev/null and b/GainStation13/sound/voice/voices/roach_exclaim.ogg differ diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 7399e5bd..b7c55eec 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -107,6 +107,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/starting_weight = 0 //how thicc you wanna be at start var/wg_rate = 0.5 var/wl_rate = 0.5 + var/voice = "human" //HS13 jobs var/sillyroles = TRUE //for clown and mime @@ -446,6 +447,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "

Body

" dat += "Gender:[gender == MALE ? "Male" : (gender == FEMALE ? "Female" : (gender == PLURAL ? "Non-binary" : "Object"))]
" dat += "Species:[pref_species.id]
" + dat += "Voice:[voice ? voice : "None"]
" dat += "Custom Species Name:[custom_species ? custom_species : "None"]
" dat += "Random Body
" dat += "Always Random Body:[be_random_body ? "Yes" : "No"]
" @@ -1996,6 +1998,10 @@ GLOBAL_LIST_EMPTY(preferences_datums) else custom_species = null + if("voice_select") + var/chosenvoice = input(user, "Select your character's voice.", "Voice Selection", voice) in list("human", "roach", "lizard") + voice = chosenvoice + if("mutant_color") var/new_mutantcolor = input(user, "Choose your character's alien/mutant color:", "Character Preference","#"+features["mcolor"]) as color|null if(new_mutantcolor) @@ -2957,6 +2963,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) character.name = character.real_name character.nameless = nameless character.custom_species = custom_species + character.voice = voice //h13 character custom body size, make sure to set to 100% if the player hasn't choosen one yet. character.custom_body_size = body_size diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 959b10a9..872eeaef 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -372,6 +372,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car S["skin_tone"] >> skin_tone S["hair_style_name"] >> hair_style S["facial_style_name"] >> facial_hair_style + S["voice"] >> voice // GS13: Hair gradients from Skyrat S["grad_style"] >> grad_style S["grad_color"] >> grad_color @@ -638,6 +639,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car WRITE_FILE(S["skin_tone"] , skin_tone) WRITE_FILE(S["hair_style_name"] , hair_style) WRITE_FILE(S["facial_style_name"] , facial_hair_style) + WRITE_FILE(S["voice"] , voice) // GS13: Hair gradients from Skyrat WRITE_FILE(S["grad_style"] , grad_style) WRITE_FILE(S["grad_color"] , grad_color) diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index 71f919fd..d3090a5e 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -79,3 +79,5 @@ var/account_id can_be_held = "micro" appearance_flags = KEEP_TOGETHER|TILE_BOUND|PIXEL_SCALE|LONG_GLIDE + + var/voice = "human" diff --git a/code/modules/mob/living/emote.dm b/code/modules/mob/living/emote.dm index 75fb8d9c..1f314db2 100644 --- a/code/modules/mob/living/emote.dm +++ b/code/modules/mob/living/emote.dm @@ -497,6 +497,9 @@ . = ..() message = null emote_type = EMOTE_VISIBLE + if(ishuman(usr)) + var/mob/living/carbon/human/H = usr + playsound(usr.loc, "GainStation13/sound/voice/voices/[H.voice].ogg", 90, 10) /datum/emote/living/custom/replace_pronoun(mob/user, message) return message diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 015b3930..02a1e166 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -219,6 +219,25 @@ GLOBAL_LIST_INIT(department_radio_keys, list( if(pressure < ONE_ATMOSPHERE*0.4) //Thin air, let's italicise the message spans |= SPAN_ITALICS + if(ishuman(src)) + var/mob/living/carbon/human/H = src + var/vmod = "" + switch(say_mod(message, message_mode)) + if("asks") + vmod = "_ask" + if("exclaims") + vmod = "_exclaim" + if("yells") + vmod = "_exclaim" + switch(say_mod(message, message_mode)) + if("whispers") + playsound(src.loc, "GainStation13/sound/voice/voices/[H.voice][vmod].ogg", 45, 5, -3) + if("yells") + playsound(src.loc, "GainStation13/sound/voice/voices/[H.voice][vmod].ogg", 130, 10, message_range+2) + else + playsound(src.loc, "GainStation13/sound/voice/voices/[H.voice][vmod].ogg", 90, 10, message_range) + + //playsound(user.loc, pick('GainStation13/sound/voice/voices/speak_1.ogg', 'GainStation13/sound/voice/voices/speak_1_ask.ogg', 'GainStation13/sound/voice/voices/speak_1_exclaim.ogg'), 90, 10) send_speech(message, message_range, src, bubble_type, spans, language, message_mode) if(succumbed) diff --git a/code/modules/mob/say_vr.dm b/code/modules/mob/say_vr.dm index 460eaacd..0c642cc9 100644 --- a/code/modules/mob/say_vr.dm +++ b/code/modules/mob/say_vr.dm @@ -72,6 +72,10 @@ proc/get_top_level_mob(var/mob/S) if(M.stat == DEAD && M.client && (M.client?.prefs?.chat_toggles & CHAT_GHOSTSIGHT) && !(M in viewers(T, null))) M.show_message(message) + if(ishuman(usr)) + var/mob/living/carbon/human/H = usr + playsound(usr.loc, "GainStation13/sound/voice/voices/[H.voice].ogg", 90, 10) + if(emote_type == EMOTE_AUDIBLE) user.audible_message(message=message,hearing_distance=1) else diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm index dd36a35e..7d12c25e 100644 --- a/code/modules/research/techweb/all_nodes.dm +++ b/code/modules/research/techweb/all_nodes.dm @@ -285,7 +285,7 @@ display_name = "Applied Bluespace Research" description = "Using bluespace to make things faster and better." prereq_ids = list("bluespace_basic", "engineering") - design_ids = list("bs_rped","biobag_holding","minerbag_holding", "bluespacebeaker", "bluespacesyringe", "phasic_scanning", "bluespacesmartdart", "xenobio_slimebasic") + design_ids = list("bs_rped","biobag_holding","minerbag_holding", "tray_holding", "bluespacebeaker", "bluespacesyringe", "phasic_scanning", "bluespacesmartdart", "xenobio_slimebasic") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 5000) export_price = 5000 @@ -377,7 +377,7 @@ display_name = "Advanced Robotics Research" description = "It can even do the dishes!" prereq_ids = list("robotics") - design_ids = list("borg_upgrade_diamonddrill", "borg_upgrade_advancedmop") + design_ids = list("borg_upgrade_diamonddrill", "borg_upgrade_advancedmop", "borg_arcd") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 3000) export_price = 5000 @@ -403,7 +403,7 @@ display_name = "Cyborg Upgrades: Utility" description = "Utility upgrades for cyborgs." prereq_ids = list("engineering", "robotics") - design_ids = list("borg_upgrade_holding", "borg_upgrade_lavaproof", "borg_upgrade_thrusters", "borg_upgrade_selfrepair", "borg_upgrade_expand", "borg_upgrade_rped") + design_ids = list("borg_upgrade_holding", "borg_upgrade_lavaproof", "borg_upgrade_thrusters", "borg_upgrade_selfrepair", "borg_upgrade_expand", "borg_upgrade_rped", "borg_tray_hold") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2000) export_price = 5000 diff --git a/icons/mob/mask.dmi b/icons/mob/mask.dmi index 0ea51ae5..b5733fc5 100644 Binary files a/icons/mob/mask.dmi and b/icons/mob/mask.dmi differ diff --git a/tgstation.dme b/tgstation.dme index f1798d7a..0542ee37 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -3074,6 +3074,7 @@ #include "code\modules\zombie\organs.dm" #include "GainStation13\code\clothing\accessory.dm" #include "GainStation13\code\clothing\calorite_collar.dm" +#include "GainStation13\code\clothing\fat_mask.dm" #include "GainStation13\code\clothing\haydee_suit.dm" #include "GainStation13\code\clothing\head.dm" #include "GainStation13\code\clothing\suits.dm" @@ -3085,6 +3086,8 @@ #include "GainStation13\code\game\sound.dm" #include "GainStation13\code\game\area\ruins.dm" #include "GainStation13\code\game\objects\effects\spawners\choco_slime_delivery.dm" +#include "GainStation13\code\game\objects\items\RCD.dm" +#include "GainStation13\code\game\objects\items\storage\bags.dm" #include "GainStation13\code\game\turfs\closed.dm" #include "GainStation13\code\game\turfs\open.dm" #include "GainStation13\code\machinery\adipoelectric_generator.dm"