Merge pull request #9897 from VOREStation/upstream-merge-7963

[MIRROR] Tweaked implant loadout, refactored implant detection.
This commit is contained in:
Novacat
2021-03-10 14:40:05 -05:00
committed by Chompstation Bot
parent 9e2af79bc3
commit 4631c4faca
7 changed files with 33 additions and 23 deletions

View File

@@ -14,7 +14,6 @@
active_power_usage = 10000 //10 kW. It's a big all-body scanner. active_power_usage = 10000 //10 kW. It's a big all-body scanner.
light_color = "#00FF00" light_color = "#00FF00"
var/obj/machinery/body_scanconsole/console 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 var/printing_text = null
/obj/machinery/bodyscanner/Initialize() /obj/machinery/bodyscanner/Initialize()
@@ -255,12 +254,11 @@
organData["broken"] = E.min_broken_damage organData["broken"] = E.min_broken_damage
var/implantData[0] var/implantData[0]
for(var/obj/I in E.implants) for(var/obj/thing in E.implants)
var/implantSubData[0] var/implantSubData[0]
implantSubData["name"] = I.name var/obj/item/weapon/implant/I = thing
if(is_type_in_list(I, known_implants)) implantSubData["name"] = I.name
implantSubData["known"] = 1 implantSubData["known"] = istype(I) && I.known_implant
implantData.Add(list(implantSubData)) implantData.Add(list(implantSubData))
organData["implants"] = implantData organData["implants"] = implantData
@@ -464,8 +462,9 @@
infected = "Gangrene Detected:" infected = "Gangrene Detected:"
var/unknown_body = 0 var/unknown_body = 0
for(var/I in e.implants) for(var/thing in e.implants)
if(is_type_in_list(I,known_implants)) var/obj/item/weapon/implant/I = thing
if(istype(I) && I.known_implant)
imp += "[I] implanted:" imp += "[I] implanted:"
else else
unknown_body++ unknown_body++

View File

@@ -465,6 +465,7 @@
/obj/item/weapon/implant/health /obj/item/weapon/implant/health
name = "health implant" name = "health implant"
known_implant = TRUE
var/healthstring = "" var/healthstring = ""
/obj/item/weapon/implant/health/proc/sensehealth() /obj/item/weapon/implant/health/proc/sensehealth()

View File

@@ -7,6 +7,8 @@
icon = 'icons/obj/device.dmi' icon = 'icons/obj/device.dmi'
icon_state = "implant" icon_state = "implant"
w_class = ITEMSIZE_TINY w_class = ITEMSIZE_TINY
show_messages = TRUE
var/implanted = null var/implanted = null
var/mob/imp_in = null var/mob/imp_in = null
var/obj/item/organ/external/part = null var/obj/item/organ/external/part = null
@@ -14,7 +16,7 @@
var/allow_reagents = 0 var/allow_reagents = 0
var/malfunction = 0 var/malfunction = 0
var/initialize_loc = BP_TORSO var/initialize_loc = BP_TORSO
show_messages = 1 var/known_implant = FALSE
/obj/item/weapon/implant/proc/trigger(emote, source as mob) /obj/item/weapon/implant/proc/trigger(emote, source as mob)
return return
@@ -65,16 +67,17 @@
malfunction = MALFUNCTION_PERMANENT malfunction = MALFUNCTION_PERMANENT
/obj/item/weapon/implant/proc/implant_loadout(var/mob/living/carbon/human/H) /obj/item/weapon/implant/proc/implant_loadout(var/mob/living/carbon/human/H)
if(H) . = istype(H) && handle_implant(H, initialize_loc)
if(handle_implant(H, initialize_loc)) if(.)
invisibility = initial(invisibility) invisibility = initial(invisibility)
post_implant(H) known_implant = TRUE
post_implant(H)
/obj/item/weapon/implant/Destroy() /obj/item/weapon/implant/Destroy()
if(part) if(part)
part.implants.Remove(src) part.implants.Remove(src)
part = null
listening_objects.Remove(src) listening_objects.Remove(src)
part = null
imp_in = null imp_in = null
return ..() return ..()
@@ -100,6 +103,7 @@ GLOBAL_LIST_BOILERPLATE(all_tracking_implants, /obj/item/weapon/implant/tracking
/obj/item/weapon/implant/tracking /obj/item/weapon/implant/tracking
name = "tracking implant" name = "tracking implant"
desc = "An implant normally given to dangerous criminals. Allows security to track your location." desc = "An implant normally given to dangerous criminals. Allows security to track your location."
known_implant = TRUE
var/id = 1 var/id = 1
var/degrade_time = 10 MINUTES //How long before the implant stops working outside of a living body. 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" name = "chemical implant"
desc = "Injects things." desc = "Injects things."
allow_reagents = 1 allow_reagents = 1
known_implant = TRUE
/obj/item/weapon/implant/chem/get_data() /obj/item/weapon/implant/chem/get_data()
var/dat = {" 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 /obj/item/weapon/implant/loyalty
name = "loyalty implant" name = "loyalty implant"
desc = "Makes you loyal or such." desc = "Makes you loyal or such."
known_implant = TRUE
/obj/item/weapon/implant/loyalty/get_data() /obj/item/weapon/implant/loyalty/get_data()
var/dat = {" var/dat = {"
@@ -491,6 +497,7 @@ the implant may become unstable and either pre-maturely inject the subject or si
name = "death alarm implant" name = "death alarm implant"
desc = "An alarm which monitors host vital signs and transmits a radio message upon death." 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) origin_tech = list(TECH_MATERIAL = 1, TECH_BIO = 2, TECH_DATA = 1)
known_implant = TRUE
var/mobname = "Will Robinson" var/mobname = "Will Robinson"
/obj/item/weapon/implant/death_alarm/get_data() /obj/item/weapon/implant/death_alarm/get_data()

View File

@@ -5,6 +5,7 @@
/obj/item/weapon/implant/language /obj/item/weapon/implant/language
name = "GalCom language implant" 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." 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 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 /obj/item/weapon/implant/language/post_implant(mob/M) // Amends the mob's voice organ, then deletes itself

View File

@@ -512,6 +512,9 @@ var/datum/gear_tweak/custom_desc/gear_tweak_free_desc = new()
/datum/gear_tweak/implant_location /datum/gear_tweak/implant_location
var/static/list/bodypart_names_to_tokens = list( 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 hand" = BP_L_HAND,
"left arm" = BP_L_ARM, "left arm" = BP_L_ARM,
"right hand" = BP_R_HAND, "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 foot" = BP_L_FOOT,
"left leg" = BP_L_LEG, "left leg" = BP_L_LEG,
"right foot" = BP_R_FOOT, "right foot" = BP_R_FOOT,
"right leg" = BP_R_LEG, "right leg" = BP_R_LEG
"lower body" = BP_GROIN,
"upper body" = BP_TORSO,
"head" = BP_HEAD
) )
var/static/list/bodypart_tokens_to_names = list( 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_HAND = "left hand",
BP_LEFT_ARM = "left arm", BP_LEFT_ARM = "left arm",
BP_RIGHT_HAND = "right hand", 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_FOOT = "left foot",
BP_LEFT_LEG = "left leg", BP_LEFT_LEG = "left leg",
BP_RIGHT_FOOT = "right foot", BP_RIGHT_FOOT = "right foot",
BP_RIGHT_LEG = "right leg", BP_RIGHT_LEG = "right leg"
BP_GROIN = "lower body",
BP_TORSO = "upper body",
BP_HEAD = "head"
) )
/datum/gear_tweak/implant_location/get_default() /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) /datum/gear_tweak/implant_location/tweak_item(var/obj/item/weapon/implant/I, var/metadata)
if(istype(I)) if(istype(I))

View File

@@ -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" icon_state = "nif_0"
w_class = ITEMSIZE_TINY w_class = ITEMSIZE_TINY
var/known_implant = TRUE
var/durability = 100 // Durability remaining var/durability = 100 // Durability remaining
var/bioadap = FALSE // If it'll work in fancy species var/bioadap = FALSE // If it'll work in fancy species

View File

@@ -11,6 +11,7 @@
/datum/category_item/catalogue/technology/resleeving) /datum/category_item/catalogue/technology/resleeving)
icon = 'icons/vore/custom_items_vr.dmi' icon = 'icons/vore/custom_items_vr.dmi'
icon_state = "backup_implant" icon_state = "backup_implant"
known_implant = TRUE
/obj/item/weapon/implant/backup/get_data() /obj/item/weapon/implant/backup/get_data()
var/dat = {" var/dat = {"