diff --git a/code/game/machinery/adv_med.dm b/code/game/machinery/adv_med.dm index 267524b9797..08e22f96e0e 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 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)) diff --git a/code/modules/nifsoft/nif.dm b/code/modules/nifsoft/nif.dm index a0ad5092b8a..a1027d60179 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 bcb87677213..b7fb3292382 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 = {"