get blood id is my foe now.

This commit is contained in:
Poojawa
2019-05-08 04:53:51 -05:00
parent 69eca2ae4b
commit 5a67114d33
11 changed files with 278 additions and 61 deletions
+1 -1
View File
@@ -113,7 +113,7 @@ GLOBAL_LIST_INIT(paw_taurs, list(
))
GLOBAL_LIST_INIT(blood_id_types, list(
"blood" = /datum/reagent/blood/human,
"blood" = /datum/reagent/blood,
"syntheticblood" = /datum/reagent/blood/synthetics,
"xenoblood" = /datum/reagent/blood/xenomorph,
"oilblood" = /datum/reagent/blood/oil,
+14 -8
View File
@@ -319,23 +319,29 @@
//returns the mob's dna info as a list, to be inserted in an object's blood_DNA list
/mob/living/proc/get_blood_dna_list()
to_chat(world, "living's get_blood_dna_list called")
for(var/bluhduh in GLOB.blood_types)
if(get_blood_id() != bluhduh)
var/datum/reagent/blood/B = bluhduh
if(get_blood_id() != B)
return
return list("ANIMAL DNA" = "Y-")
/mob/living/carbon/get_blood_dna_list()
to_chat(world, "carbon's get_blood_dna_list called by [src]")
for(var/bluhduh in GLOB.blood_types)
if(get_blood_id() != bluhduh)
var/datum/reagent/blood/B = bluhduh
if(get_blood_id() != B)
to_chat(world, "[src] apparently doesn't have a valid blood type of [B]")
return
var/list/blood_dna = list()
if(dna)
blood_dna = get_blood_data(bluhduh)
blood_dna = get_blood_data(B)
else
blood_dna["UNKNOWN DNA"] = "X*"
return blood_dna
/mob/living/carbon/alien/get_blood_dna_list()
to_chat(world, "alien's get_blood_dna_list called")
return list("UNKNOWN DNA" = "X*")
//to add a mob's dna info into an object's blood_DNA list.
@@ -380,12 +386,12 @@
/atom/proc/blood_DNA_to_color()
var/list/colors = list()//first we make a list of all bloodtypes present
GET_COMPONENT(D, /datum/component/forensics)
for(var/bloop in D.blood_DNA)
if(colors[D.blood_DNA[bloop]])
colors[D.blood_DNA[bloop]]++
var/list/blood = return_blood_DNA()
for(var/bloop in blood)
if(colors[blood[bloop]])
colors[blood[bloop]]++
else
colors[D.blood_DNA[bloop]] = 1
colors[blood[bloop]] = 1
var/final_rgb = "#940000"
@@ -26,13 +26,22 @@
random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6")
mergeable_decal = FALSE
/obj/effect/decal/cleanable/blood/xenoblood/xgibs/Initialize(mapload, list/datum/disease/diseases)
. = ..()
reagents.add_reagent("liquidxenogibs", 5)
/obj/effect/decal/cleanable/blood/xenoblood/xgibs/proc/streak(list/directions)
set waitfor = 0
var/direction = pick(directions)
for(var/i = 0, i < pick(1, 200; 2, 150; 3, 50), i++)
sleep(2)
if(i > 0)
new /obj/effect/decal/cleanable/blood/xenoblood/xsplatter(loc)
var/list/datum/disease/diseases
GET_COMPONENT(infective, /datum/component/infective)
if(infective)
diseases = infective.diseases
var/obj/effect/decal/cleanable/blood/xenoblood/xsplatter/splat = new /obj/effect/decal/cleanable/blood/xenoblood/xsplatter(loc, diseases)
splat.color = color
if(!step_to(src, get_step(src, direction), 0))
break
@@ -63,10 +72,10 @@
/obj/effect/decal/cleanable/blood/xenoblood/xgibs/larva/body
random_icon_states = list("xgiblarvahead", "xgiblarvatorso")
/obj/effect/decal/cleanable/blood/blood/xtracks
/obj/effect/decal/cleanable/blood/xenoblood/xtracks
icon_state = "xtracks"
random_icon_states = null
/obj/effect/decal/cleanable/blood/blood/xtracks/Initialize()
/obj/effect/decal/cleanable/blood/xenoblood/xtracks/Initialize()
. = ..()
add_blood_DNA(list("donor"= "UNKNOWN DNA","bloodcolor" = BLOOD_COLOR_XENO, "blood_type"= "X*"))
add_blood_DNA(list("UNKNOWN DNA" = "X*"))
@@ -7,29 +7,29 @@
blood_state = BLOOD_STATE_BLOOD
color = BLOOD_COLOR_HUMAN
bloodiness = BLOOD_AMOUNT_PER_DECAL
/obj/effect/decal/cleanable/blood/Initialize(mapload)
. = ..()
AddComponent(/datum/component/forensics)
update_icon()
var/bloodmeme = ""
var/data = ""
/obj/effect/decal/cleanable/blood/replace_decal(obj/effect/decal/cleanable/blood/C)
if(!data)
C.data = add_blood_DNA(return_blood_DNA())
if (bloodiness)
if (C.bloodiness < MAX_SHOE_BLOODINESS)
C.bloodiness += bloodiness
if(!bloodmeme)
C.bloodmeme = add_blood_DNA(return_blood_DNA())
update_icon()
..()
return ..()
/obj/effect/decal/cleanable/blood/add_blood_DNA(list/blood_dna)
return TRUE
//obj/effect/decal/cleanable/blood/add_blood_DNA(list/blood_dna)
// return TRUE
/obj/effect/decal/cleanable/blood/transfer_mob_blood_dna()
. = ..()
update_icon()
/obj/effect/decal/cleanable/blood/update_icon()
for(var/datum/reagent/R in reagents.reagent_list)
// Get blood data from the blood reagent.
if(istype(R, /datum/reagent/blood))
if(R.data["blood_type"])
color = bloodtype_to_color(R.data["blood_type"]) //Color the blood with our dna stuff
color = blood_DNA_to_color()
/obj/effect/decal/cleanable/blood/old
name = "dried blood"
@@ -40,7 +40,7 @@
/obj/effect/decal/cleanable/blood/old/Initialize(mapload, list/datum/disease/diseases)
. = ..()
icon_state += "-old" //This IS necessary because the parent /blood type uses icon randomization.
add_blood_DNA(list("blood_type"= "A+", "bloodcolor" = color))
add_blood_DNA(list("blood_type"= "A+"))
/obj/effect/decal/cleanable/blood/splatter
random_icon_states = list("gibbl1", "gibbl2", "gibbl3", "gibbl4", "gibbl5")
@@ -84,20 +84,22 @@
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6")
mergeable_decal = FALSE
var/gib_overlay = FALSE
var/fleshcolor
/obj/effect/decal/cleanable/blood/gibs/Initialize(mapload, list/datum/disease/diseases)
. = ..()
if(gib_overlay)
var/generic_skin = random_skin_tone()
var/ethnicity = "#[skintone2hex(generic_skin)]"
var/image/gibz = image(icon, icon_state + "-overlay", layer = LOW_OBJ_LAYER-0.1)
if(!fleshcolor)
gibz.color = ethnicity
else
gibz.color = fleshcolor
add_overlay(gibz)
reagents.add_reagent("liquidgibs", 5)
if(!reagents)
reagents.add_reagent("liquidgibs", 5)
for(var/datum/reagent/R in reagents.reagent_list)
// Get blood data from the blood reagent.
if(istype(R, /datum/reagent/blood))
if(R.data["blood_type"])
bloodmeme = R.data["blood_type"]
if(istype(R, /datum/reagent/liquidgibs))
if(R.data["blood_type"])
bloodmeme = R.data["blood_type"]
/obj/effect/decal/cleanable/blood/gibs/ex_act(severity, target)
return
@@ -117,7 +119,9 @@
GET_COMPONENT(infective, /datum/component/infective)
if(infective)
diseases = infective.diseases
new /obj/effect/decal/cleanable/blood/splatter(loc, diseases)
var/obj/effect/decal/cleanable/blood/splatter/splat = new /obj/effect/decal/cleanable/blood/splatter(loc, diseases)
splat.color = color
splat.bloodmeme = bloodmeme
if(!step_to(src, get_step(src, direction), 0))
break
@@ -167,6 +171,54 @@
/obj/effect/decal/cleanable/blood/drip/can_bloodcrawl_in()
return TRUE
/obj/effect/decal/cleanable/blood/gibs/slime
desc = "They look gooey and gruesome."
/obj/effect/decal/cleanable/blood/gibs/slime/Initialize(mapload, list/datum/disease/diseases)
. = ..()
if(gib_overlay)
var/image/gibz = image(icon, icon_state + "-overlay", layer = LOW_OBJ_LAYER-0.1)
add_overlay(gibz)
reagents.add_reagent("liquidslimegibs", 5)
for(var/datum/reagent/R in reagents.reagent_list)
// Get blood data from the blood reagent.
if(istype(R, /datum/reagent/blood))
if(R.data["blood_type"])
bloodmeme = R.data["blood_type"]
if(istype(R, /datum/reagent/liquidgibs))
if(R.data["blood_type"])
bloodmeme = R.data["blood_type"]
/obj/effect/decal/cleanable/blood/gibs/slime/up
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1")
gib_overlay = TRUE
/obj/effect/decal/cleanable/blood/gibs/slime/down
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1")
gib_overlay = TRUE
/obj/effect/decal/cleanable/blood/gibs/slime/body
random_icon_states = list("gibhead", "gibtorso")
gib_overlay = TRUE
/obj/effect/decal/cleanable/blood/gibs/slime/torso
random_icon_states = list("gibtorso")
gib_overlay = TRUE
/obj/effect/decal/cleanable/blood/gibs/slime/limb
random_icon_states = list("gibleg", "gibarm")
gib_overlay = TRUE
/obj/effect/decal/cleanable/blood/gibs/slime/core
random_icon_states = list("gibmid1", "gibmid2", "gibmid3")
gib_overlay = TRUE
/obj/effect/decal/cleanable/blood/gibs/synth
desc = "They look sludgy and disgusting."
/obj/effect/decal/cleanable/blood/gibs/synth/Initialize(mapload, list/datum/disease/diseases)
. = ..()
reagents.add_reagent("liquidsyntheticgibs", 5)
//BLOODY FOOTPRINTS
/obj/effect/decal/cleanable/blood/footprints
@@ -186,9 +238,16 @@
var/mob/living/carbon/human/H = O
var/obj/item/clothing/shoes/S = H.shoes
if(S)
color = bloodtype_to_color(S.last_bloodtype)
if(S.last_bloodtype)
color = bloodtype_to_color(S.last_bloodtype)
else
color = bloodtype_to_color(bloodmeme)
else
color = bloodtype_to_color(H.last_bloodtype)
if(H.last_bloodtype)
color = bloodtype_to_color(H.last_bloodtype)
else
color = bloodtype_to_color(bloodmeme)
if(S && S.bloody_shoes[blood_state])
S.bloody_shoes[blood_state] = max(S.bloody_shoes[blood_state] - BLOOD_LOSS_PER_STEP, 0)
@@ -208,9 +267,15 @@
var/mob/living/carbon/human/H = O
var/obj/item/clothing/shoes/S = H.shoes
if(S)
color = bloodtype_to_color(S.last_bloodtype)
if(S.last_bloodtype)
color = bloodtype_to_color(S.last_bloodtype)
else
color = bloodtype_to_color(bloodmeme)
else
color = bloodtype_to_color(H.last_bloodtype)
if(H.last_bloodtype)
color = bloodtype_to_color(H.last_bloodtype)
else
color = bloodtype_to_color(bloodmeme)
if(S && S.bloody_shoes[blood_state])
S.bloody_shoes[blood_state] = max(S.bloody_shoes[blood_state] - BLOOD_LOSS_PER_STEP, 0)
@@ -233,11 +298,13 @@
var/image/bloodstep_overlay = GLOB.bloody_footprints_cache["entered-[print_state]-[Ddir]"]
if(!bloodstep_overlay)
GLOB.bloody_footprints_cache["entered-[print_state]-[Ddir]"] = bloodstep_overlay = image(icon, "[print_state]1", dir = Ddir)
bloodstep_overlay.color = bloodtype_to_color(bloodmeme)
add_overlay(bloodstep_overlay)
if(exited_dirs & Ddir)
var/image/bloodstep_overlay = GLOB.bloody_footprints_cache["exited-[print_state]-[Ddir]"]
if(!bloodstep_overlay)
GLOB.bloody_footprints_cache["exited-[print_state]-[Ddir]"] = bloodstep_overlay = image(icon, "[print_state]2", dir = Ddir)
bloodstep_overlay.color = bloodtype_to_color(bloodmeme)
add_overlay(bloodstep_overlay)
alpha = BLOODY_FOOTPRINT_BASE_ALPHA+bloodiness
@@ -11,6 +11,10 @@
bloodiness = BLOOD_AMOUNT_PER_DECAL
mergeable_decal = FALSE
/obj/effect/decal/cleanable/robot_debris/Initialize(mapload, list/datum/disease/diseases)
. = ..()
reagents.add_reagent("liquidoilgibs", 5)
/obj/effect/decal/cleanable/robot_debris/proc/streak(list/directions)
set waitfor = 0
var/direction = pick(directions)
@@ -3,6 +3,7 @@
var/sparks = 0 //whether sparks spread
var/virusProb = 20 //the chance for viruses to spread on the gibs
var/gib_mob_type //generate a fake mob to transfer DNA from if we weren't passed a mob.
var/gib_mob_species //We'll want to nip-pick their species for blood type stuff
var/sound_to_play = 'sound/effects/blobattack.ogg'
var/sound_vol = 60
var/list/gibtypes = list() //typepaths of the gib decals to spawn
@@ -36,6 +37,10 @@
dna_to_add = source_mob.get_blood_dna_list() //ez pz
else if(gib_mob_type)
var/mob/living/temp_mob = new gib_mob_type(src) //generate a fake mob so that we pull the right type of DNA for the gibs.
if(gib_mob_species)
if(ishuman(temp_mob))
var/mob/living/carbon/human/H = temp_mob
H.set_species(gib_mob_species)
dna_to_add = temp_mob.get_blood_dna_list()
qdel(temp_mob)
else
@@ -80,6 +85,7 @@
gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/up, /obj/effect/decal/cleanable/blood/gibs/down, /obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs/body, /obj/effect/decal/cleanable/blood/gibs/limb, /obj/effect/decal/cleanable/blood/gibs/core)
gibamounts = list(1, 1, 1, 1, 1, 1, 1)
gib_mob_type = /mob/living/carbon/human
gib_mob_species = /datum/species/human
sound_vol = 50
/obj/effect/gibspawner/human/Initialize()
@@ -97,6 +103,31 @@
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, list())
return ..()
/obj/effect/gibspawner/human/lizard
gib_mob_type = /mob/living/carbon/human
gib_mob_species = /datum/species/lizard
/obj/effect/gibspawner/slimeperson
gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/slime/up, /obj/effect/decal/cleanable/blood/gibs/slime/down, /obj/effect/decal/cleanable/blood/gibs/slime, /obj/effect/decal/cleanable/blood/gibs/slime, /obj/effect/decal/cleanable/blood/gibs/slime/body, /obj/effect/decal/cleanable/blood/gibs/slime/limb, /obj/effect/decal/cleanable/blood/gibs/slime/core)
gibamounts = list(1, 1, 1, 1, 1, 1, 1)
sound_vol = 50
gib_mob_type = /mob/living/carbon/human
gib_mob_species = /datum/species/jelly
/obj/effect/gibspawner/slimeperson/Initialize()
if(!gibdirections.len)
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, GLOB.alldirs, list())
return ..()
/obj/effect/gibspawner/slimeperson/bodypartless //only the gibs that don't look like actual full bodyparts (except torso).
gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/slime, /obj/effect/decal/cleanable/blood/gibs/slime/core, /obj/effect/decal/cleanable/blood/gibs/slime, /obj/effect/decal/cleanable/blood/gibs/slime/core, /obj/effect/decal/cleanable/blood/gibs/slime, /obj/effect/decal/cleanable/blood/gibs/slime/torso)
gibamounts = list(1, 1, 1, 1, 1, 1)
/obj/effect/gibspawner/slimeperson/bodypartless/Initialize()
if(!gibdirections.len)
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, list())
return ..()
/obj/effect/gibspawner/xeno
@@ -104,6 +135,10 @@
gibamounts = list(1, 1, 1, 1, 1, 1, 1)
gib_mob_type = /mob/living/carbon/alien
/obj/effect/gibspawner/xeno/xenoperson
gib_mob_type = /mob/living/carbon/human
gib_mob_species = /datum/species/xeno
/obj/effect/gibspawner/xeno/Initialize()
if(!gibdirections.len)
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, GLOB.alldirs, list())
@@ -153,4 +188,17 @@
if(!gibdirections.len)
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, GLOB.alldirs)
gibamounts[6] = pick(0, 1, 2)
return ..()
return ..()
/obj/effect/gibspawner/ipc
sparks = 1
gibtypes = list(/obj/effect/decal/cleanable/robot_debris/up, /obj/effect/decal/cleanable/robot_debris/down, /obj/effect/decal/cleanable/robot_debris, /obj/effect/decal/cleanable/robot_debris, /obj/effect/decal/cleanable/robot_debris, /obj/effect/decal/cleanable/robot_debris/limb)
gibamounts = list(1, 1, 1, 1, 1, 1)
gib_mob_type = /mob/living/carbon/human
gib_mob_species = /datum/species/ipc
/obj/effect/gibspawner/ipc/Initialize()
if(!gibdirections.len)
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, GLOB.alldirs)
gibamounts[6] = pick(0, 1, 2)
return ..()
+10 -7
View File
@@ -229,13 +229,16 @@
if(!(has_trait(TRAIT_NOCLONE)))
return "blood"
/mob/living/carbon/human/get_blood_id()
if(dna.species.exotic_blood)
return dna.species.exotic_blood
else if((NOBLOOD in dna.species.species_traits) || (has_trait(TRAIT_NOCLONE)))
return null
else
return "blood"
/mob/living/carbon/get_blood_id()
var/mob/living/carbon/human/H = src
for(var/bluhduh in GLOB.blood_types[H.dna.species.exotic_blood])
if(!bluhduh)
to_chat(world, "[H] has [H.dna.species.exotic_blood] for blood")
return H.dna.species.exotic_blood
else if((NOBLOOD in H.dna.species.species_traits) || (has_trait(TRAIT_NOCLONE)))
return null
else
return bluhduh
// This is has more potential uses, and is probably faster than the old proc.
/proc/get_safe_blood(bloodtype)
+19 -3
View File
@@ -5,10 +5,26 @@
new /obj/effect/temp_visual/dust_animation(loc, "dust-h")
/mob/living/carbon/human/spawn_gibs(with_bodyparts)
if(with_bodyparts)
new /obj/effect/gibspawner/human(drop_location(), dna, get_static_viruses())
if(isjellyperson(src))
if(with_bodyparts)
new /obj/effect/gibspawner/slimeperson(drop_location(), dna, get_static_viruses())
else
new /obj/effect/gibspawner/slimeperson/bodypartless(drop_location(), dna, get_static_viruses())
if(isipcperson(src))
new /obj/effect/gibspawner/ipc(drop_location(), dna, get_static_viruses())
if(isxenoperson(src))
if(with_bodyparts)
new /obj/effect/gibspawner/xeno(drop_location(), dna, get_static_viruses())
else
new /obj/effect/gibspawner/xeno/bodypartless(drop_location(), dna, get_static_viruses())
else
new /obj/effect/gibspawner/human/bodypartless(drop_location(), dna, get_static_viruses())
if(with_bodyparts)
new /obj/effect/gibspawner/human(drop_location(), dna, get_static_viruses())
else
new /obj/effect/gibspawner/human/bodypartless(drop_location(), dna, get_static_viruses())
/mob/living/carbon/human/spawn_dust(just_ash = FALSE)
if(just_ash)
@@ -66,7 +66,6 @@
FP.blood_state = S.blood_state
FP.entered_dirs |= dir
FP.bloodiness = S.bloody_shoes[S.blood_state]
FP.color = bloodtype_to_color(S.last_bloodtype)
FP.update_icon()
update_inv_shoes()
//End bloody footprints
@@ -109,7 +108,6 @@
FP.blood_state = blood_state
FP.entered_dirs |= dir
FP.bloodiness = blood_smear - BLOOD_LOSS_IN_SPREAD
FP.color = bloodtype_to_color(last_bloodtype)
FP.update_icon()
else //we're on the floor, smear some stuff around
@@ -129,7 +127,6 @@
FP.blood_state = blood_state
FP.entered_dirs |= dir
FP.bloodiness = blood_smear - BLOOD_LOSS_IN_SPREAD
FP.color = bloodtype_to_color(last_bloodtype)
FP.update_icon()
@@ -4,7 +4,7 @@
id = "jelly"
default_color = "00FF90"
say_mod = "chirps"
species_traits = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR,NOBLOOD)
species_traits = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR)
mutant_bodyparts = list("mam_tail", "mam_ears", "mam_snouts", "taur") //CIT CHANGE
default_features = list("mcolor" = "FFF", "mam_tail" = "None", "mam_ears" = "None", "mam_snouts" = "None", "taur" = "None") //CIT CHANGE
inherent_traits = list(TRAIT_TOXINLOVER)
@@ -100,11 +100,16 @@
var/obj/effect/decal/cleanable/blood/B = locate() in T //find some blood here
if(!B)
B = new(T)
if(data)
B.add_blood_DNA(list(data["blood_DNA"] = data["blood_type"]))
B.color = data["bloodcolor"]
/datum/reagent/blood/human
if(!B.reagents)
B.reagents.add_reagent("blood", reac_volume)
for(var/datum/reagent/R in B.reagents.reagent_list)
// Get blood data from the blood reagent.
if(istype(R, /datum/reagent/blood))
if(R.data["blood_type"])
B.bloodmeme = R.data["blood_type"]
if(istype(R, /datum/reagent/liquidgibs))
if(R.data["blood_type"])
B.bloodmeme = R.data["blood_type"]
/datum/reagent/blood/synthetics
data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_SYNTHETIC, "blood_type"="SY","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null)
@@ -113,6 +118,11 @@
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"
@@ -121,6 +131,11 @@
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)
. = ..()
/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)
name = "Hydraulic Blood"
@@ -128,6 +143,11 @@
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)
. = ..()
/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)
name = "Slime Jelly Blood"
@@ -137,6 +157,21 @@
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)
. = ..()
/datum/reagent/blood/jellyblood/on_mob_life(mob/living/carbon/M)
if(prob(10))
to_chat(M, "<span class='danger'>Your insides are burning!</span>")
@@ -150,10 +185,42 @@
/datum/reagent/liquidgibs
name = "Liquid gibs"
id = "liquidgibs"
color = "#FF9966"
color = BLOOD_COLOR_HUMAN
description = "You don't even want to think about what's in here."
taste_description = "gross iron"
shot_glass_icon_state = "shotglassred"
data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_HUMAN, "blood_type"=null,"resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null)
/datum/reagent/liquidgibs/xeno
name = "Liquid xeno gibs"
id = "liquidxenogibs"
color = BLOOD_COLOR_XENO
taste_description = "blended heresy"
shot_glass_icon_state = "shotglassgreen"
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)
/datum/reagent/liquidgibs/slime
name = "Slime sludge"
id = "liquidslimegibs"
color = BLOOD_COLOR_SLIME
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)
/datum/reagent/liquidgibs/synth
name = "Synthetic sludge"
id = "liquidsyntheticgibs"
color = BLOOD_COLOR_SYNTHETIC
taste_description = "jellied plastic"
data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_SYNTHETIC, "blood_type"="SY","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null)
/datum/reagent/liquidgibs/oil
name = "Hydraulic sludge"
id = "liquidoilgibs"
color = BLOOD_COLOR_OIL
taste_description = "chunky burnt 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)
/datum/reagent/vaccine
//data must contain virus type