From 13889abe610ad8fae5d25d97a6705774eba7af1c Mon Sep 17 00:00:00 2001 From: Atermonera Date: Wed, 10 Mar 2021 10:18:22 -0900 Subject: [PATCH] Tweaked implant loadout, refactored implant detection. --- code/game/machinery/adv_med.dm | 17 ++++++++++------- code/game/machinery/cloning.dm | 1 + .../objects/items/weapons/implants/implant.dm | 19 +++++++++++++------ .../items/weapons/implants/implantlanguage.dm | 1 + .../preference_setup/loadout/gear_tweaks.dm | 18 +++++++++--------- 5 files changed, 34 insertions(+), 22 deletions(-) diff --git a/code/game/machinery/adv_med.dm b/code/game/machinery/adv_med.dm index 267524b9797..9c922fff855 100644 --- a/code/game/machinery/adv_med.dm +++ b/code/game/machinery/adv_med.dm @@ -14,7 +14,10 @@ active_power_usage = 10000 //10 kW. It's a big all-body scanner. light_color = "#00FF00" var/obj/machinery/body_scanconsole/console +<<<<<<< HEAD var/known_implants = list(/obj/item/weapon/implant/health, /obj/item/weapon/implant/chem, /obj/item/weapon/implant/death_alarm, /obj/item/weapon/implant/loyalty, /obj/item/weapon/implant/tracking, /obj/item/weapon/implant/language, /obj/item/weapon/implant/language/eal, /obj/item/weapon/implant/backup, /obj/item/device/nif) //VOREStation Add - Backup Implant, NIF +======= +>>>>>>> 823d556... Merge pull request #7963 from MistakeNot4892/implants var/printing_text = null /obj/machinery/bodyscanner/Initialize() @@ -255,12 +258,11 @@ organData["broken"] = E.min_broken_damage var/implantData[0] - for(var/obj/I in E.implants) + for(var/obj/thing in E.implants) var/implantSubData[0] - implantSubData["name"] = I.name - if(is_type_in_list(I, known_implants)) - implantSubData["known"] = 1 - + var/obj/item/weapon/implant/I = thing + implantSubData["name"] = I.name + implantSubData["known"] = istype(I) && I.known_implant implantData.Add(list(implantSubData)) organData["implants"] = implantData @@ -464,8 +466,9 @@ infected = "Gangrene Detected:" var/unknown_body = 0 - for(var/I in e.implants) - if(is_type_in_list(I,known_implants)) + for(var/thing in e.implants) + var/obj/item/weapon/implant/I = thing + if(istype(I) && I.known_implant) imp += "[I] implanted:" else unknown_body++ diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index 8ddb76c68a1..2c34326fa7d 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -465,6 +465,7 @@ /obj/item/weapon/implant/health name = "health implant" + known_implant = TRUE var/healthstring = "" /obj/item/weapon/implant/health/proc/sensehealth() diff --git a/code/game/objects/items/weapons/implants/implant.dm b/code/game/objects/items/weapons/implants/implant.dm index 81d5bb8f04e..b06e92cc4ab 100644 --- a/code/game/objects/items/weapons/implants/implant.dm +++ b/code/game/objects/items/weapons/implants/implant.dm @@ -7,6 +7,8 @@ icon = 'icons/obj/device.dmi' icon_state = "implant" w_class = ITEMSIZE_TINY + show_messages = TRUE + var/implanted = null var/mob/imp_in = null var/obj/item/organ/external/part = null @@ -14,7 +16,7 @@ var/allow_reagents = 0 var/malfunction = 0 var/initialize_loc = BP_TORSO - show_messages = 1 + var/known_implant = FALSE /obj/item/weapon/implant/proc/trigger(emote, source as mob) return @@ -65,16 +67,17 @@ malfunction = MALFUNCTION_PERMANENT /obj/item/weapon/implant/proc/implant_loadout(var/mob/living/carbon/human/H) - if(H) - if(handle_implant(H, initialize_loc)) - invisibility = initial(invisibility) - post_implant(H) + . = istype(H) && handle_implant(H, initialize_loc) + if(.) + invisibility = initial(invisibility) + known_implant = TRUE + post_implant(H) /obj/item/weapon/implant/Destroy() if(part) part.implants.Remove(src) + part = null listening_objects.Remove(src) - part = null imp_in = null return ..() @@ -100,6 +103,7 @@ GLOBAL_LIST_BOILERPLATE(all_tracking_implants, /obj/item/weapon/implant/tracking /obj/item/weapon/implant/tracking name = "tracking implant" desc = "An implant normally given to dangerous criminals. Allows security to track your location." + known_implant = TRUE var/id = 1 var/degrade_time = 10 MINUTES //How long before the implant stops working outside of a living body. @@ -348,6 +352,7 @@ GLOBAL_LIST_BOILERPLATE(all_chem_implants, /obj/item/weapon/implant/chem) name = "chemical implant" desc = "Injects things." allow_reagents = 1 + known_implant = TRUE /obj/item/weapon/implant/chem/get_data() var/dat = {" @@ -418,6 +423,7 @@ the implant may become unstable and either pre-maturely inject the subject or si /obj/item/weapon/implant/loyalty name = "loyalty implant" desc = "Makes you loyal or such." + known_implant = TRUE /obj/item/weapon/implant/loyalty/get_data() var/dat = {" @@ -491,6 +497,7 @@ the implant may become unstable and either pre-maturely inject the subject or si name = "death alarm implant" desc = "An alarm which monitors host vital signs and transmits a radio message upon death." origin_tech = list(TECH_MATERIAL = 1, TECH_BIO = 2, TECH_DATA = 1) + known_implant = TRUE var/mobname = "Will Robinson" /obj/item/weapon/implant/death_alarm/get_data() diff --git a/code/game/objects/items/weapons/implants/implantlanguage.dm b/code/game/objects/items/weapons/implants/implantlanguage.dm index 6a0f2baea80..692cdd381f7 100644 --- a/code/game/objects/items/weapons/implants/implantlanguage.dm +++ b/code/game/objects/items/weapons/implants/implantlanguage.dm @@ -5,6 +5,7 @@ /obj/item/weapon/implant/language name = "GalCom language implant" desc = "An implant allowing someone to speak the range of frequencies used in Galactic Common, as well as produce any phonemes that they usually cannot. Only helps with producing sounds, not understanding them." + known_implant = TRUE var/list/languages = list(LANGUAGE_GALCOM) // List of languages that this assists with /obj/item/weapon/implant/language/post_implant(mob/M) // Amends the mob's voice organ, then deletes itself diff --git a/code/modules/client/preference_setup/loadout/gear_tweaks.dm b/code/modules/client/preference_setup/loadout/gear_tweaks.dm index b24bcc71216..0c26ba6ae5e 100644 --- a/code/modules/client/preference_setup/loadout/gear_tweaks.dm +++ b/code/modules/client/preference_setup/loadout/gear_tweaks.dm @@ -512,6 +512,9 @@ var/datum/gear_tweak/custom_desc/gear_tweak_free_desc = new() /datum/gear_tweak/implant_location var/static/list/bodypart_names_to_tokens = list( + "head" = BP_HEAD, + "upper body" = BP_TORSO, + "lower body" = BP_GROIN, "left hand" = BP_L_HAND, "left arm" = BP_L_ARM, "right hand" = BP_R_HAND, @@ -519,12 +522,12 @@ var/datum/gear_tweak/custom_desc/gear_tweak_free_desc = new() "left foot" = BP_L_FOOT, "left leg" = BP_L_LEG, "right foot" = BP_R_FOOT, - "right leg" = BP_R_LEG, - "lower body" = BP_GROIN, - "upper body" = BP_TORSO, - "head" = BP_HEAD + "right leg" = BP_R_LEG ) var/static/list/bodypart_tokens_to_names = list( + BP_HEAD = "head", + BP_TORSO = "upper body", + BP_GROIN = "lower body", BP_LEFT_HAND = "left hand", BP_LEFT_ARM = "left arm", BP_RIGHT_HAND = "right hand", @@ -532,14 +535,11 @@ var/datum/gear_tweak/custom_desc/gear_tweak_free_desc = new() BP_LEFT_FOOT = "left foot", BP_LEFT_LEG = "left leg", BP_RIGHT_FOOT = "right foot", - BP_RIGHT_LEG = "right leg", - BP_GROIN = "lower body", - BP_TORSO = "upper body", - BP_HEAD = "head" + BP_RIGHT_LEG = "right leg" ) /datum/gear_tweak/implant_location/get_default() - return BP_TORSO + return bodypart_names_to_tokens[1] /datum/gear_tweak/implant_location/tweak_item(var/obj/item/weapon/implant/I, var/metadata) if(istype(I))