diff --git a/code/modules/mob/living/carbon/human/human_helpers.dm b/code/modules/mob/living/carbon/human/human_helpers.dm index c0360d3297..20ac966e40 100644 --- a/code/modules/mob/living/carbon/human/human_helpers.dm +++ b/code/modules/mob/living/carbon/human/human_helpers.dm @@ -98,18 +98,7 @@ // This is the 'mechanical' check for synthetic-ness, not appearance // Returns the company that made the synthetic /mob/living/carbon/human/isSynthetic() - if(synthetic) - return synthetic //Your synthetic-ness is not going away - var/obj/item/organ/external/T = organs_by_name[BP_TORSO] - if(T && T.robotic >= ORGAN_ROBOT) - src.verbs += /mob/living/carbon/human/proc/self_diagnostics - src.verbs += /mob/living/carbon/human/proc/reagent_purge //VOREStation Add - src.verbs += /mob/living/carbon/human/proc/setmonitor_state - var/datum/robolimb/R = all_robolimbs[T.model] - synthetic = R - update_emotes() - return synthetic - return FALSE + return synthetic // Would an onlooker know this person is synthetic? // Based on sort of logical reasoning, 'Look at head, look at torso' diff --git a/code/modules/mob/living/carbon/human/human_powers.dm b/code/modules/mob/living/carbon/human/human_powers.dm index d7c66d5289..33fb57356b 100644 --- a/code/modules/mob/living/carbon/human/human_powers.dm +++ b/code/modules/mob/living/carbon/human/human_powers.dm @@ -217,8 +217,7 @@ if(isSynthetic()) output += "Current Battery Charge: [nutrition]\n" - - if(isSynthetic()) + var/toxDam = getToxLoss() if(toxDam) output += "System Instability: [toxDam > 25 ? "Severe" : "Moderate"]. Seek charging station for cleanup.\n" diff --git a/code/modules/organs/internal/stomach.dm b/code/modules/organs/internal/stomach.dm index 2ebfefea61..390a86db44 100644 --- a/code/modules/organs/internal/stomach.dm +++ b/code/modules/organs/internal/stomach.dm @@ -58,6 +58,8 @@ acidtype = "sacid" + organ_verbs = list(/mob/living/carbon/human/proc/reagent_purge) //VOREStation Add + /obj/item/organ/internal/stomach/machine/handle_organ_proc_special() ..() if(owner && owner.stat != DEAD) diff --git a/code/modules/organs/subtypes/nano.dm b/code/modules/organs/subtypes/nano.dm index 870d1d6493..07dd2182f6 100644 --- a/code/modules/organs/subtypes/nano.dm +++ b/code/modules/organs/subtypes/nano.dm @@ -89,6 +89,10 @@ organ_tag = O_ORCH parent_organ = BP_TORSO vital = TRUE + organ_verbs = list( + /mob/living/carbon/human/proc/self_diagnostics, + /mob/living/carbon/human/proc/reagent_purge + ) /obj/item/organ/internal/nano/refactory name = "refactory module" diff --git a/code/modules/organs/subtypes/standard.dm b/code/modules/organs/subtypes/standard.dm index bad69a2380..0b08d8a572 100644 --- a/code/modules/organs/subtypes/standard.dm +++ b/code/modules/organs/subtypes/standard.dm @@ -24,14 +24,23 @@ base_miss_chance = 10 /obj/item/organ/external/chest/robotize() - if(..() && robotic != ORGAN_NANOFORM) //VOREStation Edit - // Give them fancy new organs. - owner.internal_organs_by_name[O_CELL] = new /obj/item/organ/internal/cell(owner,1) - owner.internal_organs_by_name[O_VOICE] = new /obj/item/organ/internal/voicebox/robot(owner, 1) - owner.internal_organs_by_name[O_PUMP] = new /obj/item/organ/internal/heart/machine(owner,1) - owner.internal_organs_by_name[O_CYCLER] = new /obj/item/organ/internal/stomach/machine(owner,1) - owner.internal_organs_by_name[O_HEATSINK] = new /obj/item/organ/internal/robotic/heatsink(owner,1) - owner.internal_organs_by_name[O_DIAGNOSTIC] = new /obj/item/organ/internal/robotic/diagnostic(owner,1) + if(..() && owner) + if(robotic != ORGAN_NANOFORM) //VOREStation Edit + // Give them fancy new organs. + owner.internal_organs_by_name[O_CELL] = new /obj/item/organ/internal/cell(owner,1) + owner.internal_organs_by_name[O_VOICE] = new /obj/item/organ/internal/voicebox/robot(owner, 1) + owner.internal_organs_by_name[O_PUMP] = new /obj/item/organ/internal/heart/machine(owner,1) + owner.internal_organs_by_name[O_CYCLER] = new /obj/item/organ/internal/stomach/machine(owner,1) + owner.internal_organs_by_name[O_HEATSINK] = new /obj/item/organ/internal/robotic/heatsink(owner,1) + owner.internal_organs_by_name[O_DIAGNOSTIC] = new /obj/item/organ/internal/robotic/diagnostic(owner,1) + + var/datum/robolimb/R = all_robolimbs[model] // company should be set in parent by now + if(!R) + log_error("A torso was robotize() but has no model that can be found: [model]. May affect FBPs.") + owner.synthetic = R + owner.update_emotes() + return FALSE + /obj/item/organ/external/chest/handle_germ_effects() . = ..() //Should return an infection level @@ -279,7 +288,14 @@ return ..() /obj/item/organ/external/head/robotize(var/company, var/skip_prosthetics, var/keep_organs) - return ..(company, skip_prosthetics, 1) + . = ..(company, skip_prosthetics, 1) + if(model) + var/datum/robolimb/robohead = all_robolimbs[model] + if(robohead?.monitor_styles && robohead?.monitor_icon) + LAZYDISTINCTADD(organ_verbs, /mob/living/carbon/human/proc/setmonitor_state) + else + LAZYREMOVE(organ_verbs, /mob/living/carbon/human/proc/setmonitor_state) + handle_organ_mod_special() /obj/item/organ/external/head/removed() if(owner)