From 74ceebfcc53bb728e5bafaa9e659cc57ff8aeed1 Mon Sep 17 00:00:00 2001 From: boodaliboo <40642354+boodaliboo@users.noreply.github.com> Date: Wed, 24 Aug 2022 20:04:38 -0700 Subject: [PATCH 01/25] Update heal.dm --- code/datums/diseases/advance/symptoms/heal.dm | 237 ++++++++++++++++++ 1 file changed, 237 insertions(+) diff --git a/code/datums/diseases/advance/symptoms/heal.dm b/code/datums/diseases/advance/symptoms/heal.dm index 265ede7aa281..03b528b4c17b 100644 --- a/code/datums/diseases/advance/symptoms/heal.dm +++ b/code/datums/diseases/advance/symptoms/heal.dm @@ -492,3 +492,240 @@ if(L.heal_damage(heal_amt/parts.len, heal_amt/parts.len, null, BODYPART_ORGANIC)) M.update_damage_overlays() return 1 + + +/datum/symptom/vampirism + name = "Hemetophagy" + desc = "The host absorbs blood from external sources, and seemlessly reintegrates it into their own bloodstream, regardless of its bloodtype or how it was ingested. However, the virus also slowly consumes the host's blood" + stealth = 1 + resistance = -2 + stage_speed = 1 + transmission = 2 + level = 9 + severity = 0 + symptom_delay_min = 1 + symptom_delay_max = 1 + prefixes = list("Porphyric ", "Hemo") + bodies = list("Blood") + var/bloodpoints = 0 + var/maxbloodpoints = 50 + var/bloodtypearchive + var/bruteheal = FALSE + var/aggression = FALSE + var/vampire = FALSE + var/mob/living/carbon/human/bloodbag + threshold_desc = "Transmission 4: The virus recycles excess absorbed blood into restorative biomass, healing brute damage.
\ + Stage Speed 7: The virus grows more aggressive, assimilating blood and healing at a faster rate, but also draining the host's blood quicker
\ + Transmission 6: The virus aggressively assimilates blood, resulting in contiguous blood pools being absorbed by the virus, as well as sucking blood out of open wounds of subjects in physical contact with the host." + +/datum/symptom/vampirism/severityset(datum/disease/advance/A) + . = ..() + if(A.transmission >= 4) + severity -= 1 + if((A.stealth >= 2) && (A.transmission >= 6) && A.process_dead) + severity -= 1 + bodies = list("Vampir", "Blood") + +/datum/symptom/vampirism/Start(datum/disease/advance/A) + if(!..()) + return + if(A.transmission >= 4) + bruteheal = TRUE + if(A.transmission >= 6) + aggression = TRUE + maxbloodpoints += 50 + if(A.stage_rate >= 7) + power += 1 + if((A.stealth >= 2) && (A.transmission >= 6) && A.process_dead) //this is low transmission for 2 reasons: transmission is hard to raise, especially with stealth, and i dont want this to be obligated to be transmittable + vampire = TRUE + maxbloodpoints += 50 + power += 1 + if(ishuman(A.affected_mob) && A.affected_mob.get_blood_id() == /datum/reagent/blood) + var/mob/living/carbon/human/H = A.affected_mob + bloodtypearchive = H.dna.blood_type + H.dna.blood_type = "U" + +/datum/symptom/vampirism/Activate(datum/disease/advance/A) + if(!..()) + return + var/mob/living/carbon/M = A.affected_mob + switch(A.stage) + if(1 to 4) + if(prob(5)) + to_chat(M, "[pick("You feel cold...", "You feel a bit thirsty", "It dawns upon you that every single human on this station has warm blood pulsing through their veins.")]") + if(5) + ADD_TRAIT(A.affected_mob, TRAIT_DRINKSBLOOD, DISEASE_TRAIT) + var/grabbedblood = succ(M) //before adding sucked blood to bloodpoints, immediately try to heal bloodloss + if(M.blood_volume < BLOOD_VOLUME_NORMAL && M.get_blood_id() == /datum/reagent/blood) + var/missing = BLOOD_VOLUME_NORMAL - M.blood_volume + var/inflated = grabbedblood * 4 + M.blood_volume = min(M.blood_volume + inflated, BLOOD_VOLUME_NORMAL) + bloodpoints += round(max(0, (inflated - missing)/4)) + else if((M.blood_volume >= BLOOD_VOLUME_NORMAL + 4) && (bloodpoints < maxbloodpoints))//so drinking blood accumulates bloodpoints + M.blood_volume = (M.blood_volume - 4) + bloodpoints += 1 + else + bloodpoints += max(0, grabbedblood) + for(var/I in 1 to power)//power doesnt increase efficiency, just usage. + if(bloodpoints > 0) + if(ishuman(M)) + var/mob/living/carbon/human/H = M + if(H.bleed_rate >= 2 && bruteheal && bloodpoints) + bloodpoints -= 1 + H.bleed_rate = max(0, (H.bleed_rate - 2)) + if(M.blood_volume < BLOOD_VOLUME_NORMAL && M.get_blood_id() == /datum/reagent/blood) //bloodloss is prioritized over healing brute + bloodpoints -= 1 + M.blood_volume = max((M.blood_volume + 3 * power), BLOOD_VOLUME_NORMAL) //bloodpoints are valued at 4 units of blood volume per point, so this is diminished + else if(bruteheal && M.getBruteLoss()) + bloodpoints -= 1 + M.heal_overall_damage(2, required_status = BODYTYPE_ORGANIC) + if(prob(60) && !M.stat) + bloodpoints -- //you cant just accumulate blood and keep it as a battery of healing. the quicker the symptom is, the faster your bloodpoints decay + else if(prob(20) && M.blood_volume >= BLOOD_VOLUME_BAD)//the virus continues to extract blood if you dont have any stored up. higher probability due to BP value + M.blood_volume = (M.blood_volume - 1) + + if(!bloodpoints && prob(3)) + to_chat(M, "[pick("You feel a pang of thirst.", "No food can sate your hunger", "Blood...")]") + +/datum/symptom/vampirism/End(datum/disease/advance/A) + . = ..() + REMOVE_TRAIT(A.affected_mob, TRAIT_DRINKSBLOOD, DISEASE_TRAIT) + if(bloodtypearchive && ishuman(A.affected_mob)) + var/mob/living/carbon/human/H = A.affected_mob + H.dna.blood_type = bloodtypearchive + +/datum/symptom/vampirism/proc/succ(mob/living/carbon/M) //you dont need the blood reagent to suck blood. however, you need to have blood, or at least a shared blood reagent, for most of the other uses + var/gainedpoints = 0 + if(bloodbag && !bloodbag.blood_volume) //we've exsanguinated them! + bloodbag = null + if(ishuman(M) && M.stat == DEAD && vampire) + var/mob/living/carbon/human/H = M + var/possibledist = power + 1 + if(M.get_blood_id() != /datum/reagent/blood) + possibledist = 1 + if(!(NOBLOOD in H.dna.species.species_traits)) //if you dont have blood, well... sucks to be you + H.setOxyLoss(0,0) //this is so a crit person still revives if suffocated + if(bloodpoints >= 200 && H.health > 0 && H.blood_volume >= BLOOD_VOLUME_NORMAL) //note that you need to actually need to heal, so a maxed out virus won't be bringing you back instantly in most cases. *even so*, if this needs to be nerfed ill do it in a heartbeat + H.revive(0) + H.visible_message("[H.name]'s skin takes on a rosy hue as they begin moving. They live again!", "As your body fills with fresh blood, you feel your limbs once more, accompanied by an insatiable thirst for blood.") + bloodpoints = 0 + return 0 + else if(bloodbag && bloodbag.blood_volume && (bloodbag.stat || bloodbag.bleed_rate)) + if(get_dist(bloodbag, H) <= 1 && bloodbag.z == H.z) + var/amt = ((bloodbag.stat * 2) + 2) * power + var/excess = max(((min(amt, bloodbag.blood_volume) - (BLOOD_VOLUME_NORMAL - H.blood_volume)) / 2), 0) + H.blood_volume = min(H.blood_volume + min(amt, bloodbag.blood_volume), BLOOD_VOLUME_NORMAL) + bloodbag.blood_volume = max(bloodbag.blood_volume - amt, 0) + bloodpoints += max(excess, 0) + playsound(bloodbag.loc, 'sound/magic/exit_blood.ogg', 10, 1) + bloodbag.visible_message("Blood flows from [bloodbag.name]'s wounds into [H.name]'s corpse!", "Blood flows from your wounds into [H.name]'s corpse!") + else if(get_dist(bloodbag, H) >= possibledist) //they've been taken out of range. + bloodbag = null + return + else if(bloodpoints >= 2) + var/turf/T = H.loc + var/obj/effect/decal/cleanable/blood/influenceone = (locate(/obj/effect/decal/cleanable/blood) in H.loc) + if(!influenceone && bloodpoints >= 2) + H.add_splatter_floor(T) + playsound(T, 'sound/effects/splat.ogg', 50, 1) + bloodpoints -= 2 + return 0 + else + var/todir = get_dir(H, bloodbag) + var/targetloc = bloodbag.loc + var/dist = get_dist(H, bloodbag) + for(var/i=0 to dist) + T = get_step(T, todir) + todir = get_dir(T, bloodbag) + var/obj/effect/decal/cleanable/blood/influence = (locate(/obj/effect/decal/cleanable/blood) in T) + if(!influence && bloodpoints >= 2) + H.add_splatter_floor(T) + playsound(T, 'sound/effects/splat.ogg', 50, 1) + bloodpoints -= 2 + return 0 + else if(T == targetloc && bloodpoints >= 2) + bloodbag.throw_at(H, 1, 1) + bloodpoints -= 2 + bloodbag.visible_message("A current of blood pushes [bloodbag.name] towards [H.name]'s corpse!") + playsound(bloodbag.loc, 'sound/magic/exit_blood.ogg', 25, 1) + return 0 + else + var/list/candidates = list() + for(var/mob/living/carbon/human/C in ohearers(min(bloodpoints/4, possibledist), H)) + if(NOBLOOD in C.dna.species.species_traits) + continue + if(C.stat && C.blood_volume && C.get_blood_id() == H.get_blood_id()) + candidates += C + for(var/prospect in candidates) + candidates[prospect] = 1 + if(ishuman(prospect)) + var/mob/living/carbon/human/candidate = prospect + candidates[prospect] += (candidate.stat - 1) + candidates[prospect] += (3 - get_dist(candidate, H)) * 2 + candidates[prospect] += round(candidate.blood_volume / 150) + bloodbag = pickweight(candidates) //dont return here + + if(bloodpoints >= maxbloodpoints) + return 0 + if(ishuman(M) && aggression) //first, try to suck those the host is actively grabbing + var/mob/living/carbon/human/H = M + if(H.pulling && ishuman(H.pulling)) //grabbing is handled with the disease instead of the component, so the component doesn't have to be processed + var/mob/living/carbon/human/C = H.pulling + if(!C.bleed_rate && vampire && C.can_inject() && H.grab_state && C.get_blood_id() == H.get_blood_id() && !(NOBLOOD in C.dna.species.species_traits))//aggressive grab as a "vampire" starts the target bleeding + C.bleed_rate += 1 + C.visible_message("Wounds open on [C.name]'s skin as [H.name] grips them tightly!", "You begin bleeding at [H.name]'s touch!") + if(C.blood_volume && C.can_inject() &&(C.bleed_rate && (!C.bleedsuppress || vampire )) && C.get_blood_id() == H.get_blood_id() && !(NOBLOOD in C.dna.species.species_traits)) + var/amt = (H.grab_state + C.stat + 2) * power + if(C.blood_volume) + var/excess = max(((min(amt, C.blood_volume) - (BLOOD_VOLUME_NORMAL - H.blood_volume)) / 4), 0) + H.blood_volume = min(H.blood_volume + min(amt, C.blood_volume), BLOOD_VOLUME_NORMAL) + C.blood_volume = max(C.blood_volume - amt, 0) + gainedpoints = CLAMP(excess, 0, maxbloodpoints - bloodpoints) + C.visible_message("Blood flows from [C.name]'s wounds into [H.name]!", "Blood flows from your wounds into [H.name]!") + playsound(C.loc, 'sound/magic/exit_blood.ogg', 25, 1) + return gainedpoints + if(locate(/obj/effect/decal/cleanable/blood) in M.loc) + var/obj/effect/decal/cleanable/blood/initialstain = (locate(/obj/effect/decal/cleanable/blood) in M.loc) + var/list/stains = list() + var/suckamt = power + 1 + if(aggression) + for(var/obj/effect/decal/cleanable/blood/contiguousstain in orange(1, M)) + if(suckamt) + suckamt -- + stains += contiguousstain + if(suckamt) + suckamt -- + stains += initialstain + for(var/obj/effect/decal/cleanable/blood/stain in stains) //this doesnt use switch(type) because that doesnt check subtypes + if(istype(stain, /obj/effect/decal/cleanable/blood/gibs/old)) + gainedpoints += 3 + qdel(stain) + else if(istype(stain, /obj/effect/decal/cleanable/blood/old)) + gainedpoints += 1 + qdel(stain) + else if(istype(stain, /obj/effect/decal/cleanable/blood/gibs)) + gainedpoints += 5 + qdel(stain) + else if(istype(stain, /obj/effect/decal/cleanable/blood/footprints) || istype(stain, /obj/effect/decal/cleanable/blood/tracks) || istype(stain, /obj/effect/decal/cleanable/blood/drip)) + qdel(stain)//these types of stain are generally very easy to make, we don't use these + else if(istype(stain, /obj/effect/decal/cleanable/blood)) + gainedpoints += 2 + qdel(stain) + if(gainedpoints) + playsound(M.loc, 'sound/magic/exit_blood.ogg', 50, 1) + M.visible_message("Blood flows from the floor into [M.name]!", "You consume the errant blood") + return CLAMP(gainedpoints, 0, maxbloodpoints - bloodpoints) + if(ishuman(M) && aggression)//finally, attack mobs touching the host. + var/mob/living/carbon/human/H = M + for(var/mob/living/carbon/human/C in ohearers(1, H)) + if(NOBLOOD in C.dna.species.species_traits) + continue + if((C.pulling && C.pulling == H) || (C.loc == H.loc) && C.bleed_rate && C.get_blood_id() == H.get_blood_id()) + var/amt = (2 * power) + if(C.blood_volume) + var/excess = max(((min(amt, C.blood_volume) - (BLOOD_VOLUME_NORMAL - H.blood_volume)) / 4 * power), 0) + H.blood_volume = min(H.blood_volume + min(amt, C.blood_volume), BLOOD_VOLUME_NORMAL) + C.blood_volume = max(C.blood_volume - amt, 0) + gainedpoints += CLAMP(excess, 0, maxbloodpoints - bloodpoints) + C.visible_message("Blood flows from [C.name]'s wounds into [H.name]!", "Blood flows from your wounds into [H.name]!") + return CLAMP(gainedpoints, 0, maxbloodpoints - bloodpoints) From 89420330fdcdeecc6f67283bf2034401c26ce66c Mon Sep 17 00:00:00 2001 From: boodaliboo <40642354+boodaliboo@users.noreply.github.com> Date: Wed, 24 Aug 2022 20:06:13 -0700 Subject: [PATCH 02/25] Update heal.dm --- code/datums/diseases/advance/symptoms/heal.dm | 3 --- 1 file changed, 3 deletions(-) diff --git a/code/datums/diseases/advance/symptoms/heal.dm b/code/datums/diseases/advance/symptoms/heal.dm index 03b528b4c17b..d6e5dbf518f8 100644 --- a/code/datums/diseases/advance/symptoms/heal.dm +++ b/code/datums/diseases/advance/symptoms/heal.dm @@ -502,7 +502,6 @@ stage_speed = 1 transmission = 2 level = 9 - severity = 0 symptom_delay_min = 1 symptom_delay_max = 1 prefixes = list("Porphyric ", "Hemo") @@ -521,9 +520,7 @@ /datum/symptom/vampirism/severityset(datum/disease/advance/A) . = ..() if(A.transmission >= 4) - severity -= 1 if((A.stealth >= 2) && (A.transmission >= 6) && A.process_dead) - severity -= 1 bodies = list("Vampir", "Blood") /datum/symptom/vampirism/Start(datum/disease/advance/A) From cb6874b4fb4513eeb0861777d23f60e4c6a1534c Mon Sep 17 00:00:00 2001 From: boodaliboo <40642354+boodaliboo@users.noreply.github.com> Date: Wed, 24 Aug 2022 20:31:41 -0700 Subject: [PATCH 03/25] Update heal.dm --- code/datums/diseases/advance/symptoms/heal.dm | 5 ----- 1 file changed, 5 deletions(-) diff --git a/code/datums/diseases/advance/symptoms/heal.dm b/code/datums/diseases/advance/symptoms/heal.dm index d6e5dbf518f8..39e250237090 100644 --- a/code/datums/diseases/advance/symptoms/heal.dm +++ b/code/datums/diseases/advance/symptoms/heal.dm @@ -517,11 +517,6 @@ Stage Speed 7: The virus grows more aggressive, assimilating blood and healing at a faster rate, but also draining the host's blood quicker
\ Transmission 6: The virus aggressively assimilates blood, resulting in contiguous blood pools being absorbed by the virus, as well as sucking blood out of open wounds of subjects in physical contact with the host." -/datum/symptom/vampirism/severityset(datum/disease/advance/A) - . = ..() - if(A.transmission >= 4) - if((A.stealth >= 2) && (A.transmission >= 6) && A.process_dead) - bodies = list("Vampir", "Blood") /datum/symptom/vampirism/Start(datum/disease/advance/A) if(!..()) From 3a13d808c54edd1cfde971b741a4fb410749323e Mon Sep 17 00:00:00 2001 From: boodaliboo <40642354+boodaliboo@users.noreply.github.com> Date: Wed, 24 Aug 2022 20:32:17 -0700 Subject: [PATCH 04/25] Update heal.dm --- code/datums/diseases/advance/symptoms/heal.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/datums/diseases/advance/symptoms/heal.dm b/code/datums/diseases/advance/symptoms/heal.dm index 39e250237090..9cccfaae951e 100644 --- a/code/datums/diseases/advance/symptoms/heal.dm +++ b/code/datums/diseases/advance/symptoms/heal.dm @@ -500,7 +500,7 @@ stealth = 1 resistance = -2 stage_speed = 1 - transmission = 2 + transmittable = 2 level = 9 symptom_delay_min = 1 symptom_delay_max = 1 From 7c818beb2721526e34de4335593ed30024522660 Mon Sep 17 00:00:00 2001 From: boodaliboo <40642354+boodaliboo@users.noreply.github.com> Date: Wed, 24 Aug 2022 20:36:34 -0700 Subject: [PATCH 05/25] Update heal.dm --- code/datums/diseases/advance/symptoms/heal.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/datums/diseases/advance/symptoms/heal.dm b/code/datums/diseases/advance/symptoms/heal.dm index 9cccfaae951e..31cf9d6f0944 100644 --- a/code/datums/diseases/advance/symptoms/heal.dm +++ b/code/datums/diseases/advance/symptoms/heal.dm @@ -513,9 +513,9 @@ var/aggression = FALSE var/vampire = FALSE var/mob/living/carbon/human/bloodbag - threshold_desc = "Transmission 4: The virus recycles excess absorbed blood into restorative biomass, healing brute damage.
\ - Stage Speed 7: The virus grows more aggressive, assimilating blood and healing at a faster rate, but also draining the host's blood quicker
\ - Transmission 6: The virus aggressively assimilates blood, resulting in contiguous blood pools being absorbed by the virus, as well as sucking blood out of open wounds of subjects in physical contact with the host." + threshold_descs = "Transmission 4" "The virus recycles excess absorbed blood into restorative biomass, healing brute damage.", + "Stage Speed 7" "The virus grows more aggressive, assimilating blood and healing at a faster rate, but also draining the host's blood quicker" + "Transmission 6" "The virus aggressively assimilates blood, resulting in contiguous blood pools being absorbed by the virus, as well as sucking blood out of open wounds of subjects in physical contact with the host." /datum/symptom/vampirism/Start(datum/disease/advance/A) From 8cc81a31cfa7714ba9ff543602ac5b4a83249e10 Mon Sep 17 00:00:00 2001 From: boodaliboo <40642354+boodaliboo@users.noreply.github.com> Date: Wed, 24 Aug 2022 20:38:25 -0700 Subject: [PATCH 06/25] Update traits.dm --- code/__DEFINES/traits.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index b1b820eaf30e..3c4855c0fcb7 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -264,6 +264,8 @@ #define TRAIT_SHIFTY_EYES "shifty_eyes" #define TRAIT_ANXIOUS "anxious" #define TRAIT_SEE_REAGENTS "see_reagents" +#define TRAIT_DRINKSBLOOD "drinks_blood" + // common trait sources #define TRAIT_GENERIC "generic" From 532c11cc3bd3856557293de61b7ef06d96e8a261 Mon Sep 17 00:00:00 2001 From: boodaliboo <40642354+boodaliboo@users.noreply.github.com> Date: Wed, 24 Aug 2022 20:41:36 -0700 Subject: [PATCH 07/25] Update heal.dm --- code/datums/diseases/advance/symptoms/heal.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/datums/diseases/advance/symptoms/heal.dm b/code/datums/diseases/advance/symptoms/heal.dm index 31cf9d6f0944..581ec65f1871 100644 --- a/code/datums/diseases/advance/symptoms/heal.dm +++ b/code/datums/diseases/advance/symptoms/heal.dm @@ -513,9 +513,10 @@ var/aggression = FALSE var/vampire = FALSE var/mob/living/carbon/human/bloodbag - threshold_descs = "Transmission 4" "The virus recycles excess absorbed blood into restorative biomass, healing brute damage.", + threshold_descs = list("Transmission 4" "The virus recycles excess absorbed blood into restorative biomass, healing brute damage." "Stage Speed 7" "The virus grows more aggressive, assimilating blood and healing at a faster rate, but also draining the host's blood quicker" "Transmission 6" "The virus aggressively assimilates blood, resulting in contiguous blood pools being absorbed by the virus, as well as sucking blood out of open wounds of subjects in physical contact with the host." + ) /datum/symptom/vampirism/Start(datum/disease/advance/A) From 4458bd17f10fb386fb705d773797cf8999946ab0 Mon Sep 17 00:00:00 2001 From: boodaliboo <40642354+boodaliboo@users.noreply.github.com> Date: Wed, 24 Aug 2022 20:45:31 -0700 Subject: [PATCH 08/25] Update heal.dm --- code/datums/diseases/advance/symptoms/heal.dm | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/code/datums/diseases/advance/symptoms/heal.dm b/code/datums/diseases/advance/symptoms/heal.dm index 581ec65f1871..bc9f89d189ac 100644 --- a/code/datums/diseases/advance/symptoms/heal.dm +++ b/code/datums/diseases/advance/symptoms/heal.dm @@ -513,6 +513,13 @@ var/aggression = FALSE var/vampire = FALSE var/mob/living/carbon/human/bloodbag + threshold_descs = list( + "Transmission 4" = "Host appears to die when falling into a coma.", + "Transmission 6" = "The virus aggressively assimilates blood, resulting in contiguous blood pools being absorbed by the virus, as well as sucking blood out of open wounds of subjects in physical contact with the host."", + "Stage Speed 7" = "The virus grows more aggressive, assimilating blood and healing at a faster rate, but also draining the host's blood quicker", + ) + + threshold_descs = list("Transmission 4" "The virus recycles excess absorbed blood into restorative biomass, healing brute damage." "Stage Speed 7" "The virus grows more aggressive, assimilating blood and healing at a faster rate, but also draining the host's blood quicker" "Transmission 6" "The virus aggressively assimilates blood, resulting in contiguous blood pools being absorbed by the virus, as well as sucking blood out of open wounds of subjects in physical contact with the host." From 1063719b37a7c9fe2f3e3bd66e03634ffce5311d Mon Sep 17 00:00:00 2001 From: boodaliboo <40642354+boodaliboo@users.noreply.github.com> Date: Wed, 24 Aug 2022 22:22:03 -0700 Subject: [PATCH 09/25] Update heal.dm --- code/datums/diseases/advance/symptoms/heal.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/datums/diseases/advance/symptoms/heal.dm b/code/datums/diseases/advance/symptoms/heal.dm index bc9f89d189ac..10c984b6c592 100644 --- a/code/datums/diseases/advance/symptoms/heal.dm +++ b/code/datums/diseases/advance/symptoms/heal.dm @@ -515,7 +515,7 @@ var/mob/living/carbon/human/bloodbag threshold_descs = list( "Transmission 4" = "Host appears to die when falling into a coma.", - "Transmission 6" = "The virus aggressively assimilates blood, resulting in contiguous blood pools being absorbed by the virus, as well as sucking blood out of open wounds of subjects in physical contact with the host."", + "Transmission 6" = "The virus aggressively assimilates blood, resulting in contiguous blood pools being absorbed by the virus, as well as sucking blood out of open wounds of subjects in physical contact with the host.", "Stage Speed 7" = "The virus grows more aggressive, assimilating blood and healing at a faster rate, but also draining the host's blood quicker", ) From 6303724a4a2b32bbb50212367c152d3c7d46ee8d Mon Sep 17 00:00:00 2001 From: boodaliboo <40642354+boodaliboo@users.noreply.github.com> Date: Wed, 24 Aug 2022 22:33:37 -0700 Subject: [PATCH 10/25] Update heal.dm --- code/datums/diseases/advance/symptoms/heal.dm | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/code/datums/diseases/advance/symptoms/heal.dm b/code/datums/diseases/advance/symptoms/heal.dm index 10c984b6c592..4bf996962387 100644 --- a/code/datums/diseases/advance/symptoms/heal.dm +++ b/code/datums/diseases/advance/symptoms/heal.dm @@ -519,11 +519,7 @@ "Stage Speed 7" = "The virus grows more aggressive, assimilating blood and healing at a faster rate, but also draining the host's blood quicker", ) - - threshold_descs = list("Transmission 4" "The virus recycles excess absorbed blood into restorative biomass, healing brute damage." - "Stage Speed 7" "The virus grows more aggressive, assimilating blood and healing at a faster rate, but also draining the host's blood quicker" - "Transmission 6" "The virus aggressively assimilates blood, resulting in contiguous blood pools being absorbed by the virus, as well as sucking blood out of open wounds of subjects in physical contact with the host." - ) + /datum/symptom/vampirism/Start(datum/disease/advance/A) From 80479d1d1910b20ec00b846c5be3ad13a8c6e518 Mon Sep 17 00:00:00 2001 From: boodaliboo <40642354+boodaliboo@users.noreply.github.com> Date: Thu, 25 Aug 2022 01:14:58 -0700 Subject: [PATCH 11/25] please dear god work --- code/datums/diseases/advance/advance.dm | 103 ++++++++++++++++++++++++ 1 file changed, 103 insertions(+) diff --git a/code/datums/diseases/advance/advance.dm b/code/datums/diseases/advance/advance.dm index 1625386b7267..f32f68b35d1b 100644 --- a/code/datums/diseases/advance/advance.dm +++ b/code/datums/diseases/advance/advance.dm @@ -479,3 +479,106 @@ /datum/disease/advance/proc/totalTransmittable() return properties["transmittable"] + +/datum/disease/advance/proc/random_disease_name(var/atom/diseasesource)//generates a name for a disease depending on its symptoms and where it comes from + var/list/prefixes = list("Spacer's ", "Space ", "Infectious ","Viral ", "The ", "[pick(GLOB.first_names)]'s ", "[pick(GLOB.last_names)]'s ", "Acute ")//prefixes that arent tacked to the body need spaces after the word + var/list/bodies = list(pick("[pick(GLOB.first_names)]", "[pick(GLOB.last_names)]"), "Space", "Disease", "Noun", "Cold", "Germ", "Virus") + var/list/suffixes = list("ism", "itis", "osis", "itosis", " #[rand(1,10000)]", "-[rand(1,100)]", "s", "y", "ovirus", " Bug", " Infection", " Disease", " Complex", " Syndrome", " Sickness") //suffixes that arent tacked directly on need spaces before the word + if(stealth >=2) + prefixes += "Crypto " + switch(max(resistance - (symptoms.len / 2), 1)) + if(1) + suffixes += "-alpha" + if(2) + suffixes += "-beta" + if(3) + suffixes += "-gamma" + if(4) + suffixes += "-delta" + if(5) + suffixes += "-epsilon" + if(6) + suffixes += pick("-zeta", "-eta", "-theta", "-iota") + if(7) + suffixes += pick("-kappa", "-lambda") + if(8) + suffixes += pick("-mu", "-nu", "-xi", "-omicron") + if(9) + suffixes += pick("-pi", "-rho", "-sigma", "-tau") + if(10) + suffixes += pick("-upsilon", "-phi", "-chi", "-psi") + if(11 to INFINITY) + suffixes += "-omega" + prefixes += "Robust " + switch(transmission - symptoms.len) + if(-INFINITY to 2) + prefixes += "Bloodborne " + if(3) + prefixes += list("Mucous ", "Kissing ") + if(4) + prefixes += "Contact " + suffixes += " Flu" + if(5 to INFINITY) + prefixes += "Airborne " + suffixes += " Plague" + switch(severity) + if(-INFINITY to 0) + prefixes += "Altruistic " + if(1 to 2) + prefixes += "Benign " + if(3 to 4) + prefixes += "Malignant " + if(5) + prefixes += "Terminal " + bodies += "Death" + if(6 to INFINITY) + prefixes += "Deadly " + bodies += "Death" + if(diseasesource) + if(ishuman(diseasesource)) + var/mob/living/carbon/human/H = diseasesource + prefixes += pick("[H.first_name()]'s", "[H.name]'s", "[H.job]'s", "[H.dna.species]'s") + bodies += pick("[H.first_name()]", "[H.job]", "[H.dna.species]") + if(islizard(H) || iscatperson(H))//add rat-origin prefixes to races that eat rats + prefixes += list("Vermin ", "Zoo", "Maintenance ") + bodies += list("Rat", "Maint") + else switch(diseasesource.type) + if(/mob/living/simple_animal/pet/hamster/vector) + prefixes += list("Vector's ", "Hamster ") + bodies += list("Freebie") + if(/obj/effect/decal/cleanable) + prefixes += list("Bloody ", "Maintenance ") + bodies += list("Maint") + if(/mob/living/simple_animal/mouse) + prefixes += list("Vermin ", "Zoo", "Maintenance ") + bodies += list("Rat", "Maint") + if(/obj/item/reagent_containers/syringe) + prefixes += list("Junkie ", "Maintenance ") + bodies += list("Needle", "Maint") + if(/obj/item/fugu_gland) + prefixes += "Wumbo" + if(/obj/item/organ/lungs) + prefixes += "Miasmic " + bodies += list("Stench", "Lung") + for(var/datum/symptom/Symptom as() in symptoms) + if(!Symptom.neutered) + prefixes += Symptom.prefixes + bodies += Symptom.bodies + suffixes += Symptom.suffixes + switch(rand(1, 3)) + if(1) + return "[pick(prefixes)][pick(bodies)]" + if(2) + return "[pick(prefixes)][pick(bodies)][pick(suffixes)]" + if(3) + return "[pick(bodies)][pick(suffixes)]" + +/datum/disease/advance/proc/logchanges(datum/reagents/holder, var/modification_type) + if(holder?.my_atom?.fingerprintslast) + last_modified_by = holder.my_atom.fingerprintslast + else + message_admins("[name], a disease, has been modified ([modification_type]) without logging a CKEY. Please report this to coders") + log_virus("[name], a disease, has been modified ([modification_type]) without logging a CKEY. Please report this to coders") + // if someone finds a way to avoid being logged while modifiying a virus, admins should be notified so coders can be notified. + return FALSE + log_virus("[modification_type]: [admin_details()]") From 2d1324b1eb9c5e9d0de02ec58fc1e968002dab84 Mon Sep 17 00:00:00 2001 From: boodaliboo <40642354+boodaliboo@users.noreply.github.com> Date: Thu, 25 Aug 2022 01:22:31 -0700 Subject: [PATCH 12/25] Update heal.dm --- code/datums/diseases/advance/symptoms/heal.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/datums/diseases/advance/symptoms/heal.dm b/code/datums/diseases/advance/symptoms/heal.dm index 4bf996962387..6cafd489396c 100644 --- a/code/datums/diseases/advance/symptoms/heal.dm +++ b/code/datums/diseases/advance/symptoms/heal.dm @@ -525,9 +525,9 @@ /datum/symptom/vampirism/Start(datum/disease/advance/A) if(!..()) return - if(A.transmission >= 4) + if(A.totalTransmittable() >= 4) bruteheal = TRUE - if(A.transmission >= 6) + if(A.totalTransmittable() >= 6) aggression = TRUE maxbloodpoints += 50 if(A.stage_rate >= 7) From f377b1be38b9360dee1b1497729f3c7b2f1651a1 Mon Sep 17 00:00:00 2001 From: boodaliboo <40642354+boodaliboo@users.noreply.github.com> Date: Thu, 25 Aug 2022 01:27:00 -0700 Subject: [PATCH 13/25] Update heal.dm --- code/datums/diseases/advance/symptoms/heal.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/datums/diseases/advance/symptoms/heal.dm b/code/datums/diseases/advance/symptoms/heal.dm index 6cafd489396c..165cad1167d1 100644 --- a/code/datums/diseases/advance/symptoms/heal.dm +++ b/code/datums/diseases/advance/symptoms/heal.dm @@ -530,9 +530,9 @@ if(A.totalTransmittable() >= 6) aggression = TRUE maxbloodpoints += 50 - if(A.stage_rate >= 7) + if(A.totalStageSpeed() >= 7) power += 1 - if((A.stealth >= 2) && (A.transmission >= 6) && A.process_dead) //this is low transmission for 2 reasons: transmission is hard to raise, especially with stealth, and i dont want this to be obligated to be transmittable + if((A.totalStealth() >= 2) && (A.transmission >= 6) && A.process_dead) //this is low transmission for 2 reasons: transmission is hard to raise, especially with stealth, and i dont want this to be obligated to be transmittable vampire = TRUE maxbloodpoints += 50 power += 1 From c097a5801ace33982866f8925455b48209af2316 Mon Sep 17 00:00:00 2001 From: boodaliboo <40642354+boodaliboo@users.noreply.github.com> Date: Thu, 25 Aug 2022 01:33:54 -0700 Subject: [PATCH 14/25] Update advance.dm --- code/datums/diseases/advance/advance.dm | 102 ------------------------ 1 file changed, 102 deletions(-) diff --git a/code/datums/diseases/advance/advance.dm b/code/datums/diseases/advance/advance.dm index f32f68b35d1b..1dec343cfd85 100644 --- a/code/datums/diseases/advance/advance.dm +++ b/code/datums/diseases/advance/advance.dm @@ -480,105 +480,3 @@ /datum/disease/advance/proc/totalTransmittable() return properties["transmittable"] -/datum/disease/advance/proc/random_disease_name(var/atom/diseasesource)//generates a name for a disease depending on its symptoms and where it comes from - var/list/prefixes = list("Spacer's ", "Space ", "Infectious ","Viral ", "The ", "[pick(GLOB.first_names)]'s ", "[pick(GLOB.last_names)]'s ", "Acute ")//prefixes that arent tacked to the body need spaces after the word - var/list/bodies = list(pick("[pick(GLOB.first_names)]", "[pick(GLOB.last_names)]"), "Space", "Disease", "Noun", "Cold", "Germ", "Virus") - var/list/suffixes = list("ism", "itis", "osis", "itosis", " #[rand(1,10000)]", "-[rand(1,100)]", "s", "y", "ovirus", " Bug", " Infection", " Disease", " Complex", " Syndrome", " Sickness") //suffixes that arent tacked directly on need spaces before the word - if(stealth >=2) - prefixes += "Crypto " - switch(max(resistance - (symptoms.len / 2), 1)) - if(1) - suffixes += "-alpha" - if(2) - suffixes += "-beta" - if(3) - suffixes += "-gamma" - if(4) - suffixes += "-delta" - if(5) - suffixes += "-epsilon" - if(6) - suffixes += pick("-zeta", "-eta", "-theta", "-iota") - if(7) - suffixes += pick("-kappa", "-lambda") - if(8) - suffixes += pick("-mu", "-nu", "-xi", "-omicron") - if(9) - suffixes += pick("-pi", "-rho", "-sigma", "-tau") - if(10) - suffixes += pick("-upsilon", "-phi", "-chi", "-psi") - if(11 to INFINITY) - suffixes += "-omega" - prefixes += "Robust " - switch(transmission - symptoms.len) - if(-INFINITY to 2) - prefixes += "Bloodborne " - if(3) - prefixes += list("Mucous ", "Kissing ") - if(4) - prefixes += "Contact " - suffixes += " Flu" - if(5 to INFINITY) - prefixes += "Airborne " - suffixes += " Plague" - switch(severity) - if(-INFINITY to 0) - prefixes += "Altruistic " - if(1 to 2) - prefixes += "Benign " - if(3 to 4) - prefixes += "Malignant " - if(5) - prefixes += "Terminal " - bodies += "Death" - if(6 to INFINITY) - prefixes += "Deadly " - bodies += "Death" - if(diseasesource) - if(ishuman(diseasesource)) - var/mob/living/carbon/human/H = diseasesource - prefixes += pick("[H.first_name()]'s", "[H.name]'s", "[H.job]'s", "[H.dna.species]'s") - bodies += pick("[H.first_name()]", "[H.job]", "[H.dna.species]") - if(islizard(H) || iscatperson(H))//add rat-origin prefixes to races that eat rats - prefixes += list("Vermin ", "Zoo", "Maintenance ") - bodies += list("Rat", "Maint") - else switch(diseasesource.type) - if(/mob/living/simple_animal/pet/hamster/vector) - prefixes += list("Vector's ", "Hamster ") - bodies += list("Freebie") - if(/obj/effect/decal/cleanable) - prefixes += list("Bloody ", "Maintenance ") - bodies += list("Maint") - if(/mob/living/simple_animal/mouse) - prefixes += list("Vermin ", "Zoo", "Maintenance ") - bodies += list("Rat", "Maint") - if(/obj/item/reagent_containers/syringe) - prefixes += list("Junkie ", "Maintenance ") - bodies += list("Needle", "Maint") - if(/obj/item/fugu_gland) - prefixes += "Wumbo" - if(/obj/item/organ/lungs) - prefixes += "Miasmic " - bodies += list("Stench", "Lung") - for(var/datum/symptom/Symptom as() in symptoms) - if(!Symptom.neutered) - prefixes += Symptom.prefixes - bodies += Symptom.bodies - suffixes += Symptom.suffixes - switch(rand(1, 3)) - if(1) - return "[pick(prefixes)][pick(bodies)]" - if(2) - return "[pick(prefixes)][pick(bodies)][pick(suffixes)]" - if(3) - return "[pick(bodies)][pick(suffixes)]" - -/datum/disease/advance/proc/logchanges(datum/reagents/holder, var/modification_type) - if(holder?.my_atom?.fingerprintslast) - last_modified_by = holder.my_atom.fingerprintslast - else - message_admins("[name], a disease, has been modified ([modification_type]) without logging a CKEY. Please report this to coders") - log_virus("[name], a disease, has been modified ([modification_type]) without logging a CKEY. Please report this to coders") - // if someone finds a way to avoid being logged while modifiying a virus, admins should be notified so coders can be notified. - return FALSE - log_virus("[modification_type]: [admin_details()]") From 2c028c3f7f7b4c22abdfb954ff095a9941103c54 Mon Sep 17 00:00:00 2001 From: boodaliboo <40642354+boodaliboo@users.noreply.github.com> Date: Thu, 25 Aug 2022 01:37:02 -0700 Subject: [PATCH 15/25] Update heal.dm --- code/datums/diseases/advance/symptoms/heal.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/code/datums/diseases/advance/symptoms/heal.dm b/code/datums/diseases/advance/symptoms/heal.dm index 165cad1167d1..ab86eab22c4e 100644 --- a/code/datums/diseases/advance/symptoms/heal.dm +++ b/code/datums/diseases/advance/symptoms/heal.dm @@ -504,7 +504,6 @@ level = 9 symptom_delay_min = 1 symptom_delay_max = 1 - prefixes = list("Porphyric ", "Hemo") bodies = list("Blood") var/bloodpoints = 0 var/maxbloodpoints = 50 From 2fac8ef86bfc914c554f1bd91d7e6a3e62acf565 Mon Sep 17 00:00:00 2001 From: boodaliboo <40642354+boodaliboo@users.noreply.github.com> Date: Fri, 26 Aug 2022 00:47:34 -0700 Subject: [PATCH 16/25] wip --- code/datums/diseases/advance/symptoms/heal.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/datums/diseases/advance/symptoms/heal.dm b/code/datums/diseases/advance/symptoms/heal.dm index ab86eab22c4e..dc358706aaa9 100644 --- a/code/datums/diseases/advance/symptoms/heal.dm +++ b/code/datums/diseases/advance/symptoms/heal.dm @@ -531,7 +531,7 @@ maxbloodpoints += 50 if(A.totalStageSpeed() >= 7) power += 1 - if((A.totalStealth() >= 2) && (A.transmission >= 6) && A.process_dead) //this is low transmission for 2 reasons: transmission is hard to raise, especially with stealth, and i dont want this to be obligated to be transmittable + if((A.totalStealth() >= 2) && (A.totalTransmittable >= 6) && A.process_dead) //this is low transmission for 2 reasons: transmission is hard to raise, especially with stealth, and i dont want this to be obligated to be transmittable vampire = TRUE maxbloodpoints += 50 power += 1 From 57f3cc4b39351fe1c43e71687a1755a191ba0a7a Mon Sep 17 00:00:00 2001 From: boodaliboo <40642354+boodaliboo@users.noreply.github.com> Date: Fri, 26 Aug 2022 00:48:01 -0700 Subject: [PATCH 17/25] Update heal.dm --- code/datums/diseases/advance/symptoms/heal.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/datums/diseases/advance/symptoms/heal.dm b/code/datums/diseases/advance/symptoms/heal.dm index dc358706aaa9..e0a3bd659ce0 100644 --- a/code/datums/diseases/advance/symptoms/heal.dm +++ b/code/datums/diseases/advance/symptoms/heal.dm @@ -495,7 +495,7 @@ /datum/symptom/vampirism - name = "Hemetophagy" + name = "Hematophagy" desc = "The host absorbs blood from external sources, and seemlessly reintegrates it into their own bloodstream, regardless of its bloodtype or how it was ingested. However, the virus also slowly consumes the host's blood" stealth = 1 resistance = -2 From 9097a0233da271fbf29ff4e36f8276c50c5225e2 Mon Sep 17 00:00:00 2001 From: boodaliboo <40642354+boodaliboo@users.noreply.github.com> Date: Fri, 26 Aug 2022 00:52:57 -0700 Subject: [PATCH 18/25] Update presets.dm --- code/datums/diseases/advance/presets.dm | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/code/datums/diseases/advance/presets.dm b/code/datums/diseases/advance/presets.dm index cf261da1df10..1061c02224d8 100644 --- a/code/datums/diseases/advance/presets.dm +++ b/code/datums/diseases/advance/presets.dm @@ -32,6 +32,14 @@ symptoms = list(new/datum/symptom/tumor,new/datum/symptom/sneeze,new/datum/symptom/fever,new/datum/symptom/shivering,new/datum/symptom/itching,new/datum/symptom/cough) ..() +/datum/disease/advance/vampirism + copy_type = /datum/disease/advance + +/datum/disease/advance/necropolis/New() + name = "Hematophagy" + symptoms = list(/datum/symptom/vampirism) + ..() + //Randomly generated Disease, for virus crates and events /datum/disease/advance/random From f7f7e344d497ffb2398e03d56bbf3ebceba16e92 Mon Sep 17 00:00:00 2001 From: boodaliboo <40642354+boodaliboo@users.noreply.github.com> Date: Fri, 26 Aug 2022 00:56:28 -0700 Subject: [PATCH 19/25] Update bottle.dm --- code/modules/reagents/reagent_containers/bottle.dm | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/code/modules/reagents/reagent_containers/bottle.dm b/code/modules/reagents/reagent_containers/bottle.dm index 54c2afeee2b0..fd2e19786f25 100644 --- a/code/modules/reagents/reagent_containers/bottle.dm +++ b/code/modules/reagents/reagent_containers/bottle.dm @@ -337,6 +337,11 @@ icon_state = "mortar" spawned_disease = /datum/disease/advance/necropolis +/obj/item/reagent_containers/glass/bottle/tuberculosis + name = "Hematophagy culture bottle" + desc = "A small bottle. Contains a sample of Hematophagy." + spawned_disease = /datum/disease/advance/vampirism + //Oldstation.dmm chemical storage bottles /obj/item/reagent_containers/glass/bottle/hydrogen From 4332695020a12616cab7aa2e10180055d98d1960 Mon Sep 17 00:00:00 2001 From: boodaliboo <40642354+boodaliboo@users.noreply.github.com> Date: Fri, 26 Aug 2022 00:59:41 -0700 Subject: [PATCH 20/25] Update bottle.dm --- code/modules/reagents/reagent_containers/bottle.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/reagents/reagent_containers/bottle.dm b/code/modules/reagents/reagent_containers/bottle.dm index fd2e19786f25..236a288b6abb 100644 --- a/code/modules/reagents/reagent_containers/bottle.dm +++ b/code/modules/reagents/reagent_containers/bottle.dm @@ -337,7 +337,7 @@ icon_state = "mortar" spawned_disease = /datum/disease/advance/necropolis -/obj/item/reagent_containers/glass/bottle/tuberculosis +/obj/item/reagent_containers/glass/bottle/vampirism name = "Hematophagy culture bottle" desc = "A small bottle. Contains a sample of Hematophagy." spawned_disease = /datum/disease/advance/vampirism From c0a303f0cb74a9c0d006ed6e51f7cbb918588f4a Mon Sep 17 00:00:00 2001 From: boodaliboo <40642354+boodaliboo@users.noreply.github.com> Date: Fri, 26 Aug 2022 01:00:11 -0700 Subject: [PATCH 21/25] Update uplink_items.dm --- code/modules/uplink/uplink_items.dm | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/code/modules/uplink/uplink_items.dm b/code/modules/uplink/uplink_items.dm index 0b1ca2d1ae14..1d40597397c2 100644 --- a/code/modules/uplink/uplink_items.dm +++ b/code/modules/uplink/uplink_items.dm @@ -1940,6 +1940,14 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) restricted_roles = list("Assistant") surplus = 0 +/datum/uplink_item/role_restricted/necroseed + name = "The Vampire Virus (should this be the name in the uplink)" + desc = "PLACEHOLDEr." + item = /obj/item/reagent_containers/glass/bottle/vampirism + cost = 6 + restricted_roles = list("Virologist") + surplus = 0 + /datum/uplink_item/role_restricted/oldtoolboxclean name = "Ancient Toolbox" desc = "An iconic toolbox design notorious with Assistants everywhere, this design was especially made to become more robust the more telecrystals it has inside it! Tools and insulated gloves included." From 4076297b150516ac56d9db2fc79f0af9e619ee7a Mon Sep 17 00:00:00 2001 From: boodaliboo <40642354+boodaliboo@users.noreply.github.com> Date: Fri, 26 Aug 2022 01:01:05 -0700 Subject: [PATCH 22/25] Update heal.dm --- code/datums/diseases/advance/symptoms/heal.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/datums/diseases/advance/symptoms/heal.dm b/code/datums/diseases/advance/symptoms/heal.dm index e0a3bd659ce0..b29692ba821f 100644 --- a/code/datums/diseases/advance/symptoms/heal.dm +++ b/code/datums/diseases/advance/symptoms/heal.dm @@ -512,7 +512,7 @@ var/aggression = FALSE var/vampire = FALSE var/mob/living/carbon/human/bloodbag - threshold_descs = list( + threshold_descs = list( "Transmission 4" = "Host appears to die when falling into a coma.", "Transmission 6" = "The virus aggressively assimilates blood, resulting in contiguous blood pools being absorbed by the virus, as well as sucking blood out of open wounds of subjects in physical contact with the host.", "Stage Speed 7" = "The virus grows more aggressive, assimilating blood and healing at a faster rate, but also draining the host's blood quicker", From 7ecb0603431226ffe40591d68d21e67296736ef9 Mon Sep 17 00:00:00 2001 From: boodaliboo <40642354+boodaliboo@users.noreply.github.com> Date: Fri, 26 Aug 2022 05:03:01 -0700 Subject: [PATCH 23/25] Update heal.dm --- code/datums/diseases/advance/symptoms/heal.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/datums/diseases/advance/symptoms/heal.dm b/code/datums/diseases/advance/symptoms/heal.dm index b29692ba821f..2fb45c4191c4 100644 --- a/code/datums/diseases/advance/symptoms/heal.dm +++ b/code/datums/diseases/advance/symptoms/heal.dm @@ -531,7 +531,7 @@ maxbloodpoints += 50 if(A.totalStageSpeed() >= 7) power += 1 - if((A.totalStealth() >= 2) && (A.totalTransmittable >= 6) && A.process_dead) //this is low transmission for 2 reasons: transmission is hard to raise, especially with stealth, and i dont want this to be obligated to be transmittable + if((A.totalStealth() >= 2) && (A.totalTransmittable() >= 6) && A.process_dead) //this is low transmission for 2 reasons: transmission is hard to raise, especially with stealth, and i dont want this to be obligated to be transmittable vampire = TRUE maxbloodpoints += 50 power += 1 From 15d7f48397f6cc3a93aa6b622a6fd96869094c6b Mon Sep 17 00:00:00 2001 From: boodaliboo <40642354+boodaliboo@users.noreply.github.com> Date: Fri, 26 Aug 2022 05:10:27 -0700 Subject: [PATCH 24/25] Update heal.dm --- code/datums/diseases/advance/symptoms/heal.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/datums/diseases/advance/symptoms/heal.dm b/code/datums/diseases/advance/symptoms/heal.dm index 2fb45c4191c4..d34307e19c68 100644 --- a/code/datums/diseases/advance/symptoms/heal.dm +++ b/code/datums/diseases/advance/symptoms/heal.dm @@ -547,7 +547,7 @@ switch(A.stage) if(1 to 4) if(prob(5)) - to_chat(M, "[pick("You feel cold...", "You feel a bit thirsty", "It dawns upon you that every single human on this station has warm blood pulsing through their veins.")]") + to_chat(M, "[pick("You feel a craving for iron?", "You feel very thirsty and theres a metallic taste in your mouth", "The thought of biting a neck crosses your mind...")]") if(5) ADD_TRAIT(A.affected_mob, TRAIT_DRINKSBLOOD, DISEASE_TRAIT) var/grabbedblood = succ(M) //before adding sucked blood to bloodpoints, immediately try to heal bloodloss @@ -580,7 +580,7 @@ M.blood_volume = (M.blood_volume - 1) if(!bloodpoints && prob(3)) - to_chat(M, "[pick("You feel a pang of thirst.", "No food can sate your hunger", "Blood...")]") + to_chat(M, "[pick("You need blood!".", "Your throat is dry...", "Your heart flutters alarmingly...")]") /datum/symptom/vampirism/End(datum/disease/advance/A) . = ..() From ac0df217f36f1ee92e02af00e76c7e79a77e83e7 Mon Sep 17 00:00:00 2001 From: boodaliboo <40642354+boodaliboo@users.noreply.github.com> Date: Fri, 26 Aug 2022 05:21:13 -0700 Subject: [PATCH 25/25] i guarentee this going to miss something --- code/datums/diseases/advance/advance.dm | 92 +++++++++++++++++++++++++ 1 file changed, 92 insertions(+) diff --git a/code/datums/diseases/advance/advance.dm b/code/datums/diseases/advance/advance.dm index 1dec343cfd85..f4ba6a4984df 100644 --- a/code/datums/diseases/advance/advance.dm +++ b/code/datums/diseases/advance/advance.dm @@ -480,3 +480,95 @@ /datum/disease/advance/proc/totalTransmittable() return properties["transmittable"] +/datum/disease/advance/proc/random_disease_name(var/atom/diseasesource)//generates a name for a disease depending on its symptoms and where it comes from + var/list/prefixes = list("Spacer's ", "Space ", "Infectious ","Viral ", "The ", "[pick(GLOB.first_names)]'s ", "[pick(GLOB.last_names)]'s ", "Acute ")//prefixes that arent tacked to the body need spaces after the word + var/list/bodies = list(pick("[pick(GLOB.first_names)]", "[pick(GLOB.last_names)]"), "Space", "Disease", "Noun", "Cold", "Germ", "Virus") + var/list/suffixes = list("ism", "itis", "osis", "itosis", " #[rand(1,10000)]", "-[rand(1,100)]", "s", "y", "ovirus", " Bug", " Infection", " Disease", " Complex", " Syndrome", " Sickness") //suffixes that arent tacked directly on need spaces before the word + if(stealth >=2) + prefixes += "Crypto " + switch(max(resistance - (symptoms.len / 2), 1)) + if(1) + suffixes += "-alpha" + if(2) + suffixes += "-beta" + if(3) + suffixes += "-gamma" + if(4) + suffixes += "-delta" + if(5) + suffixes += "-epsilon" + if(6) + suffixes += pick("-zeta", "-eta", "-theta", "-iota") + if(7) + suffixes += pick("-kappa", "-lambda") + if(8) + suffixes += pick("-mu", "-nu", "-xi", "-omicron") + if(9) + suffixes += pick("-pi", "-rho", "-sigma", "-tau") + if(10) + suffixes += pick("-upsilon", "-phi", "-chi", "-psi") + if(11 to INFINITY) + suffixes += "-omega" + prefixes += "Robust " + switch(transmission - symptoms.len) + if(-INFINITY to 2) + prefixes += "Bloodborne " + if(3) + prefixes += list("Mucous ", "Kissing ") + if(4) + prefixes += "Contact " + suffixes += " Flu" + if(5 to INFINITY) + prefixes += "Airborne " + suffixes += " Plague" + switch(severity) + if(-INFINITY to 0) + prefixes += "Altruistic " + if(1 to 2) + prefixes += "Benign " + if(3 to 4) + prefixes += "Malignant " + if(5) + prefixes += "Terminal " + bodies += "Death" + if(6 to INFINITY) + prefixes += "Deadly " + bodies += "Death" + if(diseasesource) + if(ishuman(diseasesource)) + var/mob/living/carbon/human/H = diseasesource + prefixes += pick("[H.first_name()]'s", "[H.name]'s", "[H.job]'s", "[H.dna.species]'s") + bodies += pick("[H.first_name()]", "[H.job]", "[H.dna.species]") + if(islizard(H) || iscatperson(H))//add rat-origin prefixes to races that eat rats + prefixes += list("Vermin ", "Zoo", "Maintenance ") + bodies += list("Rat", "Maint") + else switch(diseasesource.type) + if(/mob/living/simple_animal/pet/hamster/vector) + prefixes += list("Vector's ", "Hamster ") + bodies += list("Freebie") + if(/obj/effect/decal/cleanable) + prefixes += list("Bloody ", "Maintenance ") + bodies += list("Maint") + if(/mob/living/simple_animal/mouse) + prefixes += list("Vermin ", "Zoo", "Maintenance ") + bodies += list("Rat", "Maint") + if(/obj/item/reagent_containers/syringe) + prefixes += list("Junkie ", "Maintenance ") + bodies += list("Needle", "Maint") + if(/obj/item/fugu_gland) + prefixes += "Wumbo" + if(/obj/item/organ/lungs) + prefixes += "Miasmic " + bodies += list("Stench", "Lung") + for(var/datum/symptom/Symptom as() in symptoms) + if(!Symptom.neutered) + prefixes += Symptom.prefixes + bodies += Symptom.bodies + suffixes += Symptom.suffixes + switch(rand(1, 3)) + if(1) + return "[pick(prefixes)][pick(bodies)]" + if(2) + return "[pick(prefixes)][pick(bodies)][pick(suffixes)]" + if(3) + return "[pick(bodies)][pick(suffixes)]"