From 6b7fb9b3e44e75cd506b2e44779c3ad4b19d79be Mon Sep 17 00:00:00 2001 From: Crazylemon64 Date: Sat, 18 Feb 2017 00:00:25 -0800 Subject: [PATCH 1/4] Strange reagent has a chance to gib you now anyways --- code/modules/reagents/chemistry/reagents/medicine.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/reagents/chemistry/reagents/medicine.dm b/code/modules/reagents/chemistry/reagents/medicine.dm index 451452936fe..69fd80019b7 100644 --- a/code/modules/reagents/chemistry/reagents/medicine.dm +++ b/code/modules/reagents/chemistry/reagents/medicine.dm @@ -628,7 +628,7 @@ if(iscarbon(M)) if(method == INGEST) if(M.stat == DEAD) - if(M.getBruteLoss()+M.getFireLoss() >= 150) + if(M.getBruteLoss()+M.getFireLoss() >= 150 || prob(10)) M.visible_message("[M]'s body starts convulsing!") M.gib() return @@ -1003,4 +1003,4 @@ /datum/reagent/medicine/earthsblood/overdose_process(mob/living/M) M.SetHallucinate(min(max(0, M.hallucination + 10), 50)) - M.adjustToxLoss(5 * REAGENTS_EFFECT_MULTIPLIER) \ No newline at end of file + M.adjustToxLoss(5 * REAGENTS_EFFECT_MULTIPLIER) From f8a4c7feade9da983e79e31be06321cad45f243b Mon Sep 17 00:00:00 2001 From: Crazylemon64 Date: Fri, 24 Feb 2017 19:09:23 -0800 Subject: [PATCH 2/4] Changes %gib to a volume floor and a clone damage per application --- code/modules/reagents/chemistry/reagents/medicine.dm | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/code/modules/reagents/chemistry/reagents/medicine.dm b/code/modules/reagents/chemistry/reagents/medicine.dm index 69fd80019b7..75e8f7e8fc3 100644 --- a/code/modules/reagents/chemistry/reagents/medicine.dm +++ b/code/modules/reagents/chemistry/reagents/medicine.dm @@ -617,6 +617,9 @@ ..() /datum/reagent/medicine/strange_reagent/reaction_mob(mob/living/M, method=TOUCH, volume) + if(volume < 1) + // gotta pay to play + return ..() if(isanimal(M)) if(method == TOUCH) var/mob/living/simple_animal/SM = M @@ -628,10 +631,11 @@ if(iscarbon(M)) if(method == INGEST) if(M.stat == DEAD) - if(M.getBruteLoss()+M.getFireLoss() >= 150 || prob(10)) + if(M.getBruteLoss()+M.getFireLoss()+M.getCloneLoss() >= 150) M.visible_message("[M]'s body starts convulsing!") M.gib() return + M.adjustCloneLoss(50) var/mob/dead/observer/ghost = M.get_ghost() if(ghost) to_chat(ghost, "You are attempting to be revived with Strange Reagent. Return to your body if you want to be revived! (Verbs -> Ghost -> Re-enter corpse)") From d9ceb1df76eb3f503f52a3f1a01235fb2fe14e3e Mon Sep 17 00:00:00 2001 From: Crazylemon64 Date: Fri, 24 Feb 2017 19:29:25 -0800 Subject: [PATCH 3/4] Adds a %chance to give a disease to the revived patient (given they have a mind, so that there's no abuse of this to infect the station) --- .../reagents/chemistry/reagents/medicine.dm | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/code/modules/reagents/chemistry/reagents/medicine.dm b/code/modules/reagents/chemistry/reagents/medicine.dm index 75e8f7e8fc3..cf4bce5cec1 100644 --- a/code/modules/reagents/chemistry/reagents/medicine.dm +++ b/code/modules/reagents/chemistry/reagents/medicine.dm @@ -648,6 +648,21 @@ M.adjustBruteLoss(rand(0,15)) M.adjustToxLoss(rand(0,15)) M.adjustFireLoss(rand(0,15)) + if(ishuman(M) && M.mind && prob(10)) // To prevent people from using this on monkies to cause pandemics + var/mob/living/carbon/human/H = M + // Their body is being suffused with magical life-inducing stuff - so other things get lively, too + // Things are going to get interesting for the reviving party, too + var/virus_type = pick(list( + /datum/disease/advance/flu, + /datum/disease/advance/cold, + /datum/disease/brainrot, + /datum/disease/magnitis, + /datum/disease/fake_gbs, // honk + /datum/disease/cold9 + )) + var/datum/disease/D = new virus_type() + H.AddDisease(D) + M.update_revive() M.stat = UNCONSCIOUS add_logs(M, M, "revived", object="strange reagent") //Yes, the logs say you revived yourself. From 98e23c3202afe2a679912d99c4440178b29aa0b2 Mon Sep 17 00:00:00 2001 From: Crazylemon64 Date: Sun, 26 Feb 2017 11:04:24 -0800 Subject: [PATCH 4/4] Replaces random disease with necrosis --- .../reagents/chemistry/reagents/medicine.dm | 27 ++++++++++--------- code/modules/surgery/organs/organ.dm | 8 +++--- code/modules/surgery/organs/organ_external.dm | 18 ++++++++++--- 3 files changed, 32 insertions(+), 21 deletions(-) diff --git a/code/modules/reagents/chemistry/reagents/medicine.dm b/code/modules/reagents/chemistry/reagents/medicine.dm index cf4bce5cec1..2b3eee3237e 100644 --- a/code/modules/reagents/chemistry/reagents/medicine.dm +++ b/code/modules/reagents/chemistry/reagents/medicine.dm @@ -643,25 +643,26 @@ ghost << sound('sound/effects/genetics.ogg') M.visible_message("[M] doesn't appear to respond, perhaps try again later?") if(!M.suiciding && !ghost && !(NOCLONE in M.mutations)) + var/time_dead = world.time - M.timeofdeath M.visible_message("[M] seems to rise from the dead!") M.setOxyLoss(0) M.adjustBruteLoss(rand(0,15)) M.adjustToxLoss(rand(0,15)) M.adjustFireLoss(rand(0,15)) - if(ishuman(M) && M.mind && prob(10)) // To prevent people from using this on monkies to cause pandemics + if(ishuman(M)) var/mob/living/carbon/human/H = M - // Their body is being suffused with magical life-inducing stuff - so other things get lively, too - // Things are going to get interesting for the reviving party, too - var/virus_type = pick(list( - /datum/disease/advance/flu, - /datum/disease/advance/cold, - /datum/disease/brainrot, - /datum/disease/magnitis, - /datum/disease/fake_gbs, // honk - /datum/disease/cold9 - )) - var/datum/disease/D = new virus_type() - H.AddDisease(D) + var/necrosis_prob = 40 * min((20 MINUTES), max((time_dead - (1 MINUTES)), 0)) / ((20 MINUTES) - (1 MINUTES)) + to_chat(world, "Necrosis prob: [necrosis_prob]") + for(var/obj/item/organ/O in (H.organs | H.internal_organs)) + // Per non-vital body part: + // 0% chance of necrosis within 1 minute of death + // 40% chance of necrosis after 20 minutes of death + if(!O.vital && prob(necrosis_prob)) + // side effects may include: Organ failure + O.necrotize(FALSE) + if(O.status & ORGAN_DEAD) + O.germ_level = INFECTION_LEVEL_THREE + H.update_body() M.update_revive() M.stat = UNCONSCIOUS diff --git a/code/modules/surgery/organs/organ.dm b/code/modules/surgery/organs/organ.dm index 16a22ea81f6..aa32375792e 100644 --- a/code/modules/surgery/organs/organ.dm +++ b/code/modules/surgery/organs/organ.dm @@ -66,7 +66,7 @@ var/list/organ_cache = list() blood_DNA = list() blood_DNA[dna.unique_enzymes] = dna.b_type -/obj/item/organ/proc/die() +/obj/item/organ/proc/necrotize(update_sprite=TRUE) if(status & ORGAN_ROBOT) return damage = max_damage @@ -105,10 +105,10 @@ var/list/organ_cache = list() if(germ_level >= INFECTION_LEVEL_TWO) germ_level += rand(2,6) if(germ_level >= INFECTION_LEVEL_THREE) - die() + necrotize() if(damage >= max_damage) - die() + necrotize() else if(owner.bodytemperature >= 170) //cryo stops germs from moving and doing their bad stuffs //** Handle antibiotics and curing infections @@ -117,7 +117,7 @@ var/list/organ_cache = list() //check if we've hit max_damage if(damage >= max_damage) - die() + necrotize() /obj/item/organ/proc/is_preserved() if(istype(loc,/obj/item/device/mmi)) diff --git a/code/modules/surgery/organs/organ_external.dm b/code/modules/surgery/organs/organ_external.dm index 110584d5d2a..242b6e48217 100644 --- a/code/modules/surgery/organs/organ_external.dm +++ b/code/modules/surgery/organs/organ_external.dm @@ -68,6 +68,19 @@ var/can_stand var/wound_cleanup_timer +/obj/item/organ/external/necrotize(update_sprite=TRUE) + if(status & (ORGAN_ROBOT|ORGAN_DEAD)) + return + to_chat(owner, "You can't feel your [name] anymore...") + status |= ORGAN_DEAD + if(dead_icon) + icon_state = dead_icon + if(owner) + owner.update_body(update_sprite) + owner.bad_external_organs |= src + if(vital) + owner.death() + /obj/item/organ/external/Destroy() if(parent && parent.children) parent.children -= src @@ -541,10 +554,7 @@ Note that amputating the affected organ does in fact remove the infection from t parent.germ_level++ if(germ_level >= INFECTION_LEVEL_THREE && antibiotics < 30) //overdosing is necessary to stop severe infections - if(!(status & ORGAN_DEAD)) - status |= ORGAN_DEAD - to_chat(owner, "You can't feel your [name] anymore...") - owner.update_body(1) + necrotize() germ_level++ owner.adjustToxLoss(1)