diff --git a/code/game/machinery/adv_med.dm b/code/game/machinery/adv_med.dm index 267524b979..08e22f96e0 100644 --- a/code/game/machinery/adv_med.dm +++ b/code/game/machinery/adv_med.dm @@ -14,7 +14,6 @@ active_power_usage = 10000 //10 kW. It's a big all-body scanner. light_color = "#00FF00" var/obj/machinery/body_scanconsole/console - 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 var/printing_text = null /obj/machinery/bodyscanner/Initialize() @@ -255,12 +254,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 +462,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 8ddb76c68a..2c34326fa7 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 81d5bb8f04..b06e92cc4a 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 6a0f2baea8..692cdd381f 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 b24bcc7121..0c26ba6ae5 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)) diff --git a/code/modules/nifsoft/nif.dm b/code/modules/nifsoft/nif.dm index 9ac7925090..916923a796 100644 --- a/code/modules/nifsoft/nif.dm +++ b/code/modules/nifsoft/nif.dm @@ -23,6 +23,7 @@ You can also set the stat of a NIF to NIF_TEMPFAIL without any issues to disable icon_state = "nif_0" w_class = ITEMSIZE_TINY + var/known_implant = TRUE var/durability = 100 // Durability remaining var/bioadap = FALSE // If it'll work in fancy species diff --git a/code/modules/resleeving/implant.dm b/code/modules/resleeving/implant.dm index 535b53b028..7c2893a21c 100644 --- a/code/modules/resleeving/implant.dm +++ b/code/modules/resleeving/implant.dm @@ -11,6 +11,7 @@ /datum/category_item/catalogue/technology/resleeving) icon = 'icons/vore/custom_items_vr.dmi' icon_state = "backup_implant" + known_implant = TRUE /obj/item/weapon/implant/backup/get_data() var/dat = {"