diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index b984f55c63b..def74ccc8f6 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -305,6 +305,8 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_PERMANENTLY_ONFIRE "permanently_onfire" /// Galactic Common Sign Language #define TRAIT_SIGN_LANG "sign_language" +/// This mob is able to use sign language over the radio. +#define TRAIT_CAN_SIGN_ON_COMMS "can_sign_on_comms" /// nobody can use martial arts on this mob #define TRAIT_MARTIAL_ARTS_IMMUNE "martial_arts_immune" /// You've been cursed with a living duffelbag, and can't have more added diff --git a/code/datums/quirks/neutral.dm b/code/datums/quirks/neutral.dm index 22eea895bc5..db97e3c68b9 100644 --- a/code/datums/quirks/neutral.dm +++ b/code/datums/quirks/neutral.dm @@ -316,7 +316,10 @@ // Only tongues of people with this quirk can't be removed. Manually spawned or found tongues can be. new_tongue.organ_flags |= ORGAN_UNREMOVABLE - give_item_to_holder(/obj/item/clothing/gloves/radio, list(LOCATION_GLOVES = ITEM_SLOT_GLOVES, LOCATION_BACKPACK = ITEM_SLOT_BACKPACK, LOCATION_HANDS = ITEM_SLOT_HANDS)) + var/obj/item/clothing/gloves/gloves_type = /obj/item/clothing/gloves/radio + if(isplasmaman(human_holder)) + gloves_type = /obj/item/clothing/gloves/color/plasmaman/radio + give_item_to_holder(gloves_type, list(LOCATION_GLOVES = ITEM_SLOT_GLOVES, LOCATION_BACKPACK = ITEM_SLOT_BACKPACK, LOCATION_HANDS = ITEM_SLOT_HANDS)) /datum/quirk/item_quirk/tongue_tied/post_add() to_chat(quirk_holder, span_boldannounce("Because you speak with your hands, having them full hinders your ability to communicate!")) diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index 2efa726fce4..d22d471f97b 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -218,8 +218,7 @@ if(HAS_TRAIT(talking_movable, TRAIT_SIGN_LANG)) //Forces Sign Language users to wear the translation gloves to speak over radios var/mob/living/carbon/mute = talking_movable if(istype(mute)) - var/obj/item/clothing/gloves/radio/G = mute.get_item_by_slot(ITEM_SLOT_GLOVES) - if(!istype(G)) + if(!HAS_TRAIT(talking_movable, TRAIT_CAN_SIGN_ON_COMMS)) return FALSE switch(mute.check_signables_state()) if(SIGN_ONE_HAND) // One hand full diff --git a/code/modules/clothing/gloves/plasmaman.dm b/code/modules/clothing/gloves/plasmaman.dm index 681e1dd7b1a..a1dea2ffdb2 100644 --- a/code/modules/clothing/gloves/plasmaman.dm +++ b/code/modules/clothing/gloves/plasmaman.dm @@ -84,11 +84,6 @@ icon_state = "wizard" inhand_icon_state = "purplegloves" -/obj/item/clothing/gloves/radio - name = "translation gloves" - desc = "A pair of electronic gloves which connect to nearby radios wirelessly. Allows for sign language users to 'speak' over comms." - icon_state = "radio_g" - inhand_icon_state = "radio_g" /obj/item/clothing/gloves/color/plasmaman/head_of_personnel name = "head of personnel's envirogloves" @@ -121,3 +116,11 @@ name = "CentCom intern envirogloves" icon_state = "internplasma" inhand_icon_state = "internplasma" + +/obj/item/clothing/gloves/color/plasmaman/radio + name = "translation envirogloves" + desc = "Allows the less vocally-capable plasmamen to use sign language over comms." + icon_state = "radio_gplasma" + inhand_icon_state = "radio_gplasma" + worn_icon_state = "radio_g" + clothing_traits = list(TRAIT_CAN_SIGN_ON_COMMS) diff --git a/code/modules/clothing/gloves/special.dm b/code/modules/clothing/gloves/special.dm index 7b72b3cbfe0..6b509caee7a 100644 --- a/code/modules/clothing/gloves/special.dm +++ b/code/modules/clothing/gloves/special.dm @@ -60,3 +60,10 @@ /obj/item/clothing/gloves/rapid/ComponentInitialize() . = ..() AddComponent(/datum/component/wearertargeting/punchcooldown) + +/obj/item/clothing/gloves/radio + name = "translation gloves" + desc = "A pair of electronic gloves which connect to nearby radios wirelessly. Allows for sign language users to 'speak' over comms." + icon_state = "radio_g" + inhand_icon_state = "radio_g" + clothing_traits = list(TRAIT_CAN_SIGN_ON_COMMS) diff --git a/code/modules/mod/modules/modules_general.dm b/code/modules/mod/modules/modules_general.dm index 9f13e61b659..63e6cc3109e 100644 --- a/code/modules/mod/modules/modules_general.dm +++ b/code/modules/mod/modules/modules_general.dm @@ -644,6 +644,7 @@ /obj/item/mod/module/plasma_stabilizer/on_unequip() REMOVE_TRAIT(mod.wearer, TRAIT_NOSELFIGNITION, MOD_TRAIT) + //Finally, https://pipe.miroware.io/5b52ba1d94357d5d623f74aa/mspfa/Nuke%20Ops/Panels/0648.gif can be real: ///Hat Stabilizer - Allows displaying a hat over the MOD-helmet, à la plasmamen helmets. /obj/item/mod/module/hat_stabilizer @@ -742,3 +743,20 @@ balloon_alert_to_viewers("the hat falls to the floor!") attached_hat = null mod.wearer.update_inv_back() + +///Sign Language Translator - allows people to sign over comms using the modsuit's gloves. +/obj/item/mod/module/signlang_radio + name = "MOD glove translator module" + desc = "A module that adds motion sensors into the suit's gloves, \ + which works in tandem with a short-range subspace transmitter, \ + letting the audibly impaired use sign language over comms." + icon_state = "signlang_radio" + complexity = 1 + idle_power_cost = DEFAULT_CHARGE_DRAIN * 0.3 + incompatible_modules = list(/obj/item/mod/module/signlang_radio) + +/obj/item/mod/module/signlang_radio/on_suit_activation() + ADD_TRAIT(mod.wearer, TRAIT_CAN_SIGN_ON_COMMS, MOD_TRAIT) + +/obj/item/mod/module/signlang_radio/on_suit_deactivation() + REMOVE_TRAIT(mod.wearer, TRAIT_CAN_SIGN_ON_COMMS, MOD_TRAIT) diff --git a/code/modules/research/designs/mechfabricator_designs.dm b/code/modules/research/designs/mechfabricator_designs.dm index 48f2a525ca3..ee2d08f2d46 100644 --- a/code/modules/research/designs/mechfabricator_designs.dm +++ b/code/modules/research/designs/mechfabricator_designs.dm @@ -1354,3 +1354,9 @@ materials = list(/datum/material/iron = 2500, /datum/material/glass = 2000, /datum/material/bluespace = 1000) build_path = /obj/item/mod/module/anomaly_locked/teleporter department_type = MODULE_SCIENCE + +/datum/design/module/mod_glove_translator + name = "MOD Module: Glove Translator" + id = "mod_sign_radio" + materials = list(/datum/material/iron = 750, /datum/material/glass = 500) + build_path = /obj/item/mod/module/signlang_radio diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm index e13f518c443..6466be99149 100644 --- a/code/modules/research/techweb/all_nodes.dm +++ b/code/modules/research/techweb/all_nodes.dm @@ -133,6 +133,7 @@ "mod_longfall", "mod_thermal_regulator", "mod_plasma", + "mod_sign_radio", ) /datum/techweb_node/mech_tools diff --git a/icons/obj/clothing/gloves.dmi b/icons/obj/clothing/gloves.dmi index e12c1b13ad2..388caf9d161 100644 Binary files a/icons/obj/clothing/gloves.dmi and b/icons/obj/clothing/gloves.dmi differ diff --git a/icons/obj/clothing/modsuit/mod_modules.dmi b/icons/obj/clothing/modsuit/mod_modules.dmi index f95d869bff1..67ab1802fe1 100644 Binary files a/icons/obj/clothing/modsuit/mod_modules.dmi and b/icons/obj/clothing/modsuit/mod_modules.dmi differ