diff --git a/code/datums/diseases/zombie_virus.dm b/code/datums/diseases/zombie_virus.dm index 55d709aa3d9..75486d809ec 100644 --- a/code/datums/diseases/zombie_virus.dm +++ b/code/datums/diseases/zombie_virus.dm @@ -134,6 +134,8 @@ affected_mob.med_hud_set_status() affected_mob.update_hands_hud() H.update_body() + var/obj/item/organ/internal/zombietumor/tumor = new + tumor.insert(affected_mob) if(affected_mob.mind && !affected_mob.mind.has_antag_datum(/datum/antagonist/zombie)) if(HAS_TRAIT(affected_mob, TRAIT_PLAGUE_ZOMBIE)) var/datum/antagonist/zombie/plague = new /datum/antagonist/zombie(plague_disease) @@ -179,6 +181,8 @@ REMOVE_TRAIT(limb, TRAIT_I_WANT_BRAINS_ORGAN, ZOMBIE_TRAIT) if(limb.status & ORGAN_DEAD && !limb.is_robotic()) limb.status &= ~ORGAN_DEAD + for(var/obj/item/organ/internal/zombietumor/tumor in H.internal_organs) + tumor.remove() H.update_body() affected_mob.DeleteComponent(/datum/component/zombie_regen) affected_mob.med_hud_set_health() diff --git a/code/modules/surgery/organs/subtypes/zombie_organs.dm b/code/modules/surgery/organs/subtypes/zombie_organs.dm new file mode 100644 index 00000000000..7e24cb88223 --- /dev/null +++ b/code/modules/surgery/organs/subtypes/zombie_organs.dm @@ -0,0 +1,19 @@ +/obj/item/organ/internal/zombietumor + name = "necrotic tumor" + desc = "A tiny cluster of foul-smelling mushrooms which feed on and manipulate brain matter." + icon = 'icons/obj/hydroponics/harvest.dmi' + icon_state = "chanterelle" + w_class = WEIGHT_CLASS_TINY + parent_organ = "head" + slot = "brain_tumor" + destroy_on_removal = TRUE + +/obj/item/organ/internal/zombietumor/remove(mob/living/carbon/M, special = 0) + for(var/datum/disease/zombie/D in M.viruses) + D.cure() + var/mob/living/carbon/human/H = M + for(var/obj/item/organ/limb as anything in H.bodyparts) + if(limb.status & ORGAN_DEAD && !limb.is_robotic()) + limb.status &= ~ORGAN_DEAD + H.update_body() + return ..() diff --git a/code/modules/surgery/organs_internal.dm b/code/modules/surgery/organs_internal.dm index 1704817b532..c4e8369c7d9 100644 --- a/code/modules/surgery/organs_internal.dm +++ b/code/modules/surgery/organs_internal.dm @@ -293,6 +293,11 @@ extracting = organs[I] if(!extracting) return SURGERY_BEGINSTEP_SKIP + if(extracting && extracting.owner) + var/obj/item/organ/external/affected = extracting.owner.get_organ(target_zone) + if(affected && affected.internal_organs) + if(istype(extracting, /obj/item/organ/internal/zombietumor)) + src.time = 40 SECONDS user.visible_message( "[user] starts to separate [target]'s [I] with [tool].", "You start to separate [target]'s [I] with [tool] for removal.", diff --git a/paradise.dme b/paradise.dme index 7c3299b3289..817e4322309 100644 --- a/paradise.dme +++ b/paradise.dme @@ -3508,6 +3508,7 @@ #include "code\modules\surgery\organs\subtypes\vox_organs.dm" #include "code\modules\surgery\organs\subtypes\vulpkanin_organs.dm" #include "code\modules\surgery\organs\subtypes\xenos.dm" +#include "code\modules\surgery\organs\subtypes\zombie_organs.dm" #include "code\modules\tcg\pack_1.dm" #include "code\modules\tcg\tcg_cards.dm" #include "code\modules\telesci\bscrystal.dm"