From cede93299edeca080bcff09a0a7d0d0b028f1e02 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Mon, 19 Aug 2019 04:48:37 -0500 Subject: [PATCH] REEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE --- code/game/objects/effects/decals/cleanable.dm | 2 +- .../effects/decals/cleanable/humans.dm | 7 +-- code/modules/clothing/clothing.dm | 10 --- code/modules/clothing/shoes/_shoes.dm | 9 +++ .../mob/living/carbon/human/human_movement.dm | 3 +- .../chemistry/reagents/alcohol_reagents.dm | 2 +- .../chemistry/reagents/other_reagents.dm | 63 +++++++------------ .../reagents/reagent_containers/blood_pack.dm | 1 + 8 files changed, 38 insertions(+), 59 deletions(-) diff --git a/code/game/objects/effects/decals/cleanable.dm b/code/game/objects/effects/decals/cleanable.dm index 1d57b3437e..a2b37d22ae 100644 --- a/code/game/objects/effects/decals/cleanable.dm +++ b/code/game/objects/effects/decals/cleanable.dm @@ -82,7 +82,7 @@ add_blood = bloodiness bloodiness -= add_blood S.bloody_shoes[blood_state] = min(MAX_SHOE_BLOODINESS,S.bloody_shoes[blood_state]+add_blood) - if(length(blood_DNA)) + if(blood_DNA && blood_DNA.len) S.add_blood_DNA(blood_DNA) S.blood_state = blood_state update_icon() diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm index c9d2c8c59a..1af15b0383 100644 --- a/code/game/objects/effects/decals/cleanable/humans.dm +++ b/code/game/objects/effects/decals/cleanable/humans.dm @@ -9,13 +9,10 @@ color = BLOOD_COLOR_HUMAN //default so we don't have white splotches everywhere. /obj/effect/decal/cleanable/blood/replace_decal(obj/effect/decal/cleanable/blood/C) - if(length(C.blood_DNA)) + if (C.blood_DNA) blood_DNA |= C.blood_DNA.Copy() - if (bloodiness) - if (C.bloodiness < MAX_SHOE_BLOODINESS) - C.bloodiness += bloodiness update_icon() - return ..() + ..() /obj/effect/decal/cleanable/blood/transfer_blood_dna() ..() diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 84f2b9824d..776709f5b8 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -41,10 +41,6 @@ var/dynamic_hair_suffix = ""//head > mask for head hair var/dynamic_fhair_suffix = ""//mask > head for facial hair - //for blood coloration memes - var/last_bloodtype //used to track the last bloodtype to have graced these shoes; makes for better performing footprint shenanigans - var/last_blood_DNA //same as last one - /obj/item/clothing/Initialize() . = ..() if(CHECK_BITFIELD(clothing_flags, VOICEBOX_TOGGLABLE)) @@ -343,9 +339,3 @@ BLIND // can't see anything deconstruct(FALSE) else ..() - -/obj/item/clothing/transfer_blood_dna(list/blood_dna, list/datum/disease/diseases) - ..() - if(length(blood_dna)) - last_bloodtype = blood_dna[blood_dna[blood_dna.len]]//trust me this works - last_blood_DNA = blood_dna[blood_dna.len] diff --git a/code/modules/clothing/shoes/_shoes.dm b/code/modules/clothing/shoes/_shoes.dm index 8c99401b4d..cb4cec175a 100644 --- a/code/modules/clothing/shoes/_shoes.dm +++ b/code/modules/clothing/shoes/_shoes.dm @@ -18,6 +18,8 @@ //CITADEL EDIT Enables digitigrade shoe styles var/adjusted = NORMAL_STYLE mutantrace_variation = MUTANTRACE_VARIATION + var/last_bloodtype = "" //used to track the last bloodtype to have graced these shoes; makes for better performing footprint shenanigans + var/last_blood_DNA = "" //same as last one /obj/item/clothing/shoes/ComponentInitialize() . = ..() @@ -42,6 +44,13 @@ playsound(user, 'sound/weapons/genhit2.ogg', 50, 1) return(BRUTELOSS) + +/obj/item/clothing/shoes/transfer_blood_dna(list/blood_dna) + ..() + if(blood_dna.len) + last_bloodtype = blood_dna[blood_dna[blood_dna.len]]//trust me this works + last_blood_DNA = blood_dna[blood_dna.len] + /obj/item/clothing/shoes/worn_overlays(isinhands = FALSE) . = list() if(!isinhands) diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index f03b75cf11..4e6f9e0eb9 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -64,9 +64,8 @@ FP.blood_state = S.blood_state FP.entered_dirs |= dir FP.bloodiness = S.bloody_shoes[S.blood_state] - if(S.last_blood_DNA && S.last_bloodtype) + if(S.last_bloodtype) FP.blood_DNA += list(S.last_blood_DNA = S.last_bloodtype) - //hacky as heck; we need to move the LAST entry to there, otherwise we mix all the blood FP.update_icon() update_inv_shoes() //End bloody footprints diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm index 79b6f96781..78282c2f8d 100644 --- a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm @@ -583,7 +583,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/bloody_mary/on_mob_life(mob/living/carbon/C) if(C.blood_volume < (BLOOD_VOLUME_NORMAL*C.blood_ratio)) - C.blood_volume = min((BLOOD_VOLUME_NORMAL*C.blood_ratio), C.blood_volume + 3) //Bloody Mary quickly restores blood loss. + C.blood_volume += 2 //Bloody Mary quickly restores blood loss. ..() /datum/reagent/consumable/ethanol/brave_bull diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 9bef02c3b2..ddb83b2876 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -43,12 +43,10 @@ if(reac_volume >= 10 && istype(L)) L.add_blood_DNA(list(data["blood_DNA"] = data["blood_type"])) - L.color = bloodtype_to_color(data["blood_type"]) /datum/reagent/blood/reaction_obj(obj/O, volume) if(volume >= 3 && istype(O)) O.add_blood_DNA(list(data["blood_DNA"] = data["blood_type"])) - O.color = bloodtype_to_color(data["blood_type"]) /datum/reagent/blood/on_new(list/data) if(iscarbon(src)) @@ -98,11 +96,10 @@ if(reac_volume < 3) return - var/obj/effect/decal/cleanable/blood/B = locate() in T //find some blood here - if(!B) - B = new(T) + T.add_blood_DNA(list(data["blood_DNA"] = data["blood_type"])) + var/obj/effect/decal/cleanable/blood/B = locate() in T if(!B.reagents) - B.reagents.add_reagent("blood", reac_volume) + B.reagents.add_reagent(id, reac_volume) B.update_icon() /datum/reagent/blood/synthetics @@ -112,11 +109,6 @@ taste_description = "oily" color = BLOOD_COLOR_SYNTHETIC // rgb: 11, 7, 48 -/datum/reagent/blood/synthetics/reaction_turf(turf/T, reac_volume) - var/obj/effect/decal/cleanable/blood/B = locate() in T //find some blood here - B.reagents.add_reagent("syntheticblood", reac_volume) - . = ..() - /datum/reagent/blood/xenomorph data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_XENO, "blood_type"="X*","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) name = "Xenomorph Blood" @@ -124,11 +116,7 @@ taste_description = "acidic heresy" color = BLOOD_COLOR_XENO // greenish yellow ooze shot_glass_icon_state = "shotglassgreen" - -/datum/reagent/blood/xenomorph/reaction_turf(turf/T, reac_volume) - var/obj/effect/decal/cleanable/blood/B = locate() in T //find some blood here - B.reagents.add_reagent("xenoblood", reac_volume) - . = ..() + pH = 2.5 /datum/reagent/blood/oil data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_OIL, "blood_type"="HF","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) @@ -136,11 +124,7 @@ id = "oilblood" taste_description = "burnt oil" color = BLOOD_COLOR_OIL // dark, y'know, expected batman colors. - -/datum/reagent/blood/oil/reaction_turf(turf/T, reac_volume) - var/obj/effect/decal/cleanable/blood/B = locate() in T //find some blood here - B.reagents.add_reagent("oilblood", reac_volume) - . = ..() + pH = 9.75 /datum/reagent/blood/jellyblood data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_SLIME, "blood_type"="GEL","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) @@ -150,29 +134,16 @@ color = BLOOD_COLOR_SLIME taste_description = "slime" taste_mult = 1.3 - -/datum/reagent/blood/jellyblood/on_new(list/data) - .=..() - if(ishuman(src)) - var/mob/living/carbon/human/H = src - var/datum/species/slimecolor = H.dna.species - if("mcolor" in slimecolor.default_features) - color = H.dna.features["mcolor"] - else - color = bloodtype_to_color(data["blood_type"]) - -/datum/reagent/blood/jellyblood/reaction_turf(turf/T, reac_volume) - var/obj/effect/decal/cleanable/blood/B = locate() in T //find some blood here - B.reagents.add_reagent("jellyblood", reac_volume) - . = ..() + pH = 4 /datum/reagent/blood/jellyblood/on_mob_life(mob/living/carbon/M) if(prob(10)) - to_chat(M, "Your insides are burning!") + if(M.dna?.species?.exotic_bloodtype != "GEL") + to_chat(M, "Your insides are burning!") M.adjustToxLoss(rand(20,60)*REM, 0) . = 1 - else if(prob(40)) - M.heal_bodypart_damage(5*REM) + else if(prob(40) && isjellyperson(M)) + M.heal_bodypart_damage(2*REM) . = 1 ..() @@ -202,6 +173,7 @@ taste_description = "slime" shot_glass_icon_state = "shotglassgreen" data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_SLIME, "blood_type"="GEL","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) + pH = 4 /datum/reagent/liquidgibs/synth name = "Synthetic sludge" @@ -1106,7 +1078,7 @@ reagent_state = SOLID taste_description = "iron" pH = 6 - + overdose_threshold = 30 color = "#c2391d" /datum/reagent/iron/on_mob_life(mob/living/carbon/C) @@ -1120,6 +1092,17 @@ M.reagents.add_reagent("toxin", reac_volume) ..() +/datum/reagent/iron/overdose_start(mob/living/M) + to_chat(M, "You start feeling your guts twisting painfully!") + SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/overdose, name) + +/datum/reagent/iron/overdose_process(mob/living/carbon/C) + if(prob(20)) + var/obj/item/organ/liver/L = C.getorganslot(ORGAN_SLOT_LIVER) + if (istype(L)) + C.applyLiverDamage(2) //mild until the fabled med rework comes out. the organ damage galore + ..() + /datum/reagent/gold name = "Gold" id = "gold" diff --git a/code/modules/reagents/reagent_containers/blood_pack.dm b/code/modules/reagents/reagent_containers/blood_pack.dm index d250dcff0e..34d26a974e 100644 --- a/code/modules/reagents/reagent_containers/blood_pack.dm +++ b/code/modules/reagents/reagent_containers/blood_pack.dm @@ -4,6 +4,7 @@ icon = 'icons/obj/bloodpack.dmi' icon_state = "bloodpack" volume = 200 + reagent_flags = DRAINABLE var/blood_type = null var/labelled = 0 var/color_to_apply = "#FFFFFF"