diff --git a/code/__HELPERS/traits.dm b/code/__HELPERS/traits.dm index e7a9ed0e552..a1ef0b53949 100644 --- a/code/__HELPERS/traits.dm +++ b/code/__HELPERS/traits.dm @@ -199,10 +199,11 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_SOAPY_MOUTH "soapy_mouth" #define TRAIT_UNREVIVABLE "unrevivable" // Prevents changeling revival - -//***** ITEM TRAITS *****// +//***** ITEM AND MOB TRAITS *****// /// Show what machine/door wires do when held. #define TRAIT_SHOW_WIRE_INFO "show_wire_info" + +//***** ITEM TRAITS *****// #define TRAIT_BUTCHERS_HUMANS "butchers_humans" #define TRAIT_CMAGGED "cmagged" diff --git a/code/_globalvars/traits.dm b/code/_globalvars/traits.dm index 78de11646d1..f985eb67f4b 100644 --- a/code/_globalvars/traits.dm +++ b/code/_globalvars/traits.dm @@ -69,7 +69,8 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_AI_UNTRACKABLE" = TRAIT_AI_UNTRACKABLE, "TRAIT_ELITE_CHALLENGER" = TRAIT_ELITE_CHALLENGER, "TRAIT_SOAPY_MOUTH" = TRAIT_SOAPY_MOUTH, - "TRAIT_UNREVIVABLE" = TRAIT_UNREVIVABLE + "TRAIT_UNREVIVABLE" = TRAIT_UNREVIVABLE, + "TRAIT_SHOW_WIRE_INFO" = TRAIT_SHOW_WIRE_INFO ), /obj/item = list( "TRAIT_SHOW_WIRE_INFO" = TRAIT_SHOW_WIRE_INFO, diff --git a/code/datums/wires/wires.dm b/code/datums/wires/wires.dm index ed4166ab0da..d55a828477c 100644 --- a/code/datums/wires/wires.dm +++ b/code/datums/wires/wires.dm @@ -220,6 +220,8 @@ var/obj/item/held_item = user.get_active_hand() if(istype(held_item) && HAS_TRAIT(held_item, TRAIT_SHOW_WIRE_INFO)) return TRUE + if(HAS_TRAIT(user, TRAIT_SHOW_WIRE_INFO)) + return TRUE return FALSE /** diff --git a/code/game/objects/structures/crates_lockers/closets/secure/engineering_lockers.dm b/code/game/objects/structures/crates_lockers/closets/secure/engineering_lockers.dm index ed2af9f80d9..3e852b4bdba 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/engineering_lockers.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/engineering_lockers.dm @@ -29,6 +29,7 @@ new /obj/item/clothing/accessory/medal/engineering(src) new /obj/item/holosign_creator/atmos(src) new /obj/item/rcd/preloaded(src) + new /obj/item/organ/internal/cyberimp/brain/wire_interface(src) /obj/structure/closet/secure_closet/engineering_electrical diff --git a/code/modules/research/designs/medical_designs.dm b/code/modules/research/designs/medical_designs.dm index 9c0b82ae396..dd9e7c13873 100644 --- a/code/modules/research/designs/medical_designs.dm +++ b/code/modules/research/designs/medical_designs.dm @@ -519,6 +519,17 @@ build_path = /obj/item/organ/internal/cyberimp/chest/reviver category = list("Medical") +/datum/design/cyberimp_wire_interface + name = "Wire Interface Implant" + desc = "This cybernetic brain implant will allow you to interface with electrical currents to sense the purpose of wires." + id = "ci-wire_interface" + req_tech = list("materials" = 5, "programming" = 4, "biotech" = 4) + build_type = PROTOLATHE | MECHFAB + construction_time = 60 + materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_SILVER = 400, MAT_GOLD = 400) + build_path = /obj/item/organ/internal/cyberimp/brain/wire_interface + category = list("Medical") + ///////////////////////////////////////// ////////////Regular Implants///////////// ///////////////////////////////////////// diff --git a/code/modules/response_team/ert_outfits.dm b/code/modules/response_team/ert_outfits.dm index f57ec0374aa..2a50bd14598 100644 --- a/code/modules/response_team/ert_outfits.dm +++ b/code/modules/response_team/ert_outfits.dm @@ -228,6 +228,7 @@ suit_store = /obj/item/tank/internals/emergency_oxygen/engi glasses = /obj/item/clothing/glasses/meson/engine mask = /obj/item/clothing/mask/gas + cybernetic_implants = list(/obj/item/organ/internal/cyberimp/brain/wire_interface) l_pocket = /obj/item/gun/energy/gun/mini r_pocket = /obj/item/melee/classic_baton/telescopic @@ -249,7 +250,8 @@ mask = /obj/item/clothing/mask/gas cybernetic_implants = list( /obj/item/organ/internal/eyes/cybernetic/shield, - /obj/item/organ/internal/cyberimp/chest/nutriment/hardened + /obj/item/organ/internal/cyberimp/chest/nutriment/hardened, + /obj/item/organ/internal/cyberimp/brain/wire_interface ) l_pocket = /obj/item/t_scanner r_pocket = /obj/item/melee/classic_baton/telescopic @@ -286,7 +288,8 @@ /obj/item/organ/internal/cyberimp/eyes/hud/security, /obj/item/organ/internal/cyberimp/brain/anti_stam/hardened, /obj/item/organ/internal/eyes/cybernetic/shield, - /obj/item/organ/internal/cyberimp/arm/toolset + /obj/item/organ/internal/cyberimp/arm/toolset, + /obj/item/organ/internal/cyberimp/brain/wire_interface ) implants = list(/obj/item/implant/mindshield, diff --git a/code/modules/surgery/organs/augments_internal.dm b/code/modules/surgery/organs/augments_internal.dm index 21f09a03610..bd5fad44581 100644 --- a/code/modules/surgery/organs/augments_internal.dm +++ b/code/modules/surgery/organs/augments_internal.dm @@ -265,6 +265,21 @@ to_chat(owner, "You turn off your translator implant.") active = FALSE +/obj/item/organ/internal/cyberimp/brain/wire_interface + name = "Wire interface implant" + desc = "This cybernetic brain implant will allow you to interface with electrical currents to sense the purpose of wires." + implant_color = "#fff782" + slot = "brain_wire_interface" + origin_tech = "materials=5;programming=4;biotech=4" + +/obj/item/organ/internal/cyberimp/brain/wire_interface/insert(mob/living/carbon/M, special = FALSE) + ADD_TRAIT(M, TRAIT_SHOW_WIRE_INFO, "show_wire_info[UID()]") + return ..() + +/obj/item/organ/internal/cyberimp/brain/wire_interface/remove(mob/living/carbon/M, special = FALSE) + REMOVE_TRAIT(M, TRAIT_SHOW_WIRE_INFO, "show_wire_info[UID()]") + return ..() + //[[[[MOUTH]]]] /obj/item/organ/internal/cyberimp/mouth parent_organ = "mouth"