well we have footprints now, xenoblood back to blood subtype.

This commit is contained in:
Poojawa
2019-05-07 05:29:45 -05:00
parent 996662ebea
commit d14943d4b0
12 changed files with 60 additions and 48 deletions
+3 -3
View File
@@ -321,7 +321,7 @@
/mob/living/proc/get_blood_dna_list()
if(get_blood_id() != "blood")
return
return list("blood_DNA"= "ANIMAL", "blood_type"="Y-")
return list("donor"= "ANIMAL","bloodcolor" = BLOOD_COLOR_HUMAN, "blood_type"="Y-")
/mob/living/carbon/get_blood_dna_list()
if(get_blood_id() != "blood")
@@ -334,7 +334,7 @@
return blood_dna
/mob/living/carbon/alien/get_blood_dna_list()
return list("UNKNOWN DNA" = "X*")
return list("donor"= "UNKNOWN DNA","bloodcolor" = BLOOD_COLOR_XENO, "blood_type"= "X*")
//to add a mob's dna info into an object's blood_DNA list.
/atom/proc/transfer_mob_blood_dna(mob/living/L)
@@ -372,7 +372,7 @@
else
colors[blood_DNA[bloop]] = 1
var/final_rgb = "#940000"
var/final_rgb = color
if(colors.len)
var/sum = 0 //this is all shitcode, but it works; trust me
+1 -1
View File
@@ -317,7 +317,7 @@ GLOBAL_LIST_INIT(meteorsC, list(/obj/effect/meteor/dust)) //for space dust event
/obj/effect/meteor/meaty/xeno/ram_turf(turf/T)
if(!isspaceturf(T))
new /obj/effect/decal/cleanable/xenoblood(T)
new /obj/effect/decal/cleanable/blood/xenoblood(T)
//Station buster Tunguska
/obj/effect/meteor/tunguska
@@ -1,6 +1,6 @@
// Note: BYOND is object oriented. There is no reason for this to be copy/pasted blood code.
/obj/effect/decal/cleanable/xenoblood
/obj/effect/decal/cleanable/blood/xenoblood
name = "xeno blood"
desc = "It's green and acidic. It looks like... <i>blood?</i>"
icon = 'icons/effects/blood.dmi'
@@ -9,15 +9,16 @@
bloodiness = BLOOD_AMOUNT_PER_DECAL
blood_state = BLOOD_STATE_BLOOD
color = BLOOD_COLOR_XENO
blood_DNA = list()
/obj/effect/decal/cleanable/xenoblood/Initialize()
/obj/effect/decal/cleanable/blood/xenoblood/Initialize()
. = ..()
add_blood_DNA(list("UNKNOWN DNA" = "X*"))
add_blood_DNA(list("donor"= "UNKNOWN DNA","bloodcolor" = BLOOD_COLOR_XENO, "blood_type"= "X*"))
/obj/effect/decal/cleanable/xenoblood/xsplatter
/obj/effect/decal/cleanable/blood/xenoblood/xsplatter
random_icon_states = list("xgibbl1", "xgibbl2", "xgibbl3", "xgibbl4", "xgibbl5")
/obj/effect/decal/cleanable/xenoblood/xgibs
/obj/effect/decal/cleanable/blood/xenoblood/xgibs
name = "xeno gibs"
desc = "Gnarly..."
icon = 'icons/effects/blood.dmi'
@@ -26,47 +27,47 @@
random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6")
mergeable_decal = FALSE
/obj/effect/decal/cleanable/xenoblood/xgibs/proc/streak(list/directions)
/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/xenoblood/xsplatter(loc)
new /obj/effect/decal/cleanable/blood/xenoblood/xsplatter(loc)
if(!step_to(src, get_step(src, direction), 0))
break
/obj/effect/decal/cleanable/xenoblood/xgibs/ex_act()
/obj/effect/decal/cleanable/blood/xenoblood/xgibs/ex_act()
return
/obj/effect/decal/cleanable/xenoblood/xgibs/up
/obj/effect/decal/cleanable/blood/xenoblood/xgibs/up
random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6","xgibup1","xgibup1","xgibup1")
/obj/effect/decal/cleanable/xenoblood/xgibs/down
/obj/effect/decal/cleanable/blood/xenoblood/xgibs/down
random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6","xgibdown1","xgibdown1","xgibdown1")
/obj/effect/decal/cleanable/xenoblood/xgibs/body
/obj/effect/decal/cleanable/blood/xenoblood/xgibs/body
random_icon_states = list("xgibhead", "xgibtorso")
/obj/effect/decal/cleanable/xenoblood/xgibs/torso
/obj/effect/decal/cleanable/blood/xenoblood/xgibs/torso
random_icon_states = list("xgibtorso")
/obj/effect/decal/cleanable/xenoblood/xgibs/limb
/obj/effect/decal/cleanable/blood/xenoblood/xgibs/limb
random_icon_states = list("xgibleg", "xgibarm")
/obj/effect/decal/cleanable/xenoblood/xgibs/core
/obj/effect/decal/cleanable/blood/xenoblood/xgibs/core
random_icon_states = list("xgibmid1", "xgibmid2", "xgibmid3")
/obj/effect/decal/cleanable/xenoblood/xgibs/larva
/obj/effect/decal/cleanable/blood/xenoblood/xgibs/larva
random_icon_states = list("xgiblarva1", "xgiblarva2")
/obj/effect/decal/cleanable/xenoblood/xgibs/larva/body
/obj/effect/decal/cleanable/blood/xenoblood/xgibs/larva/body
random_icon_states = list("xgiblarvahead", "xgiblarvatorso")
/obj/effect/decal/cleanable/blood/xtracks
/obj/effect/decal/cleanable/blood/blood/xtracks
icon_state = "xtracks"
random_icon_states = null
/obj/effect/decal/cleanable/blood/xtracks/Initialize()
/obj/effect/decal/cleanable/blood/blood/xtracks/Initialize()
. = ..()
add_blood_DNA(list("Unknown DNA" = "X*"))
add_blood_DNA(list("donor"= "UNKNOWN DNA","bloodcolor" = BLOOD_COLOR_XENO, "blood_type"= "X*"))
@@ -34,7 +34,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("Non-human DNA" = "A+"))
add_blood_DNA(list("donor"= "Non-human DNA", "blood_type"= "A+", "bloodcolor" = color))
/obj/effect/decal/cleanable/blood/splatter
random_icon_states = list("gibbl1", "gibbl2", "gibbl3", "gibbl4", "gibbl5")
@@ -74,11 +74,18 @@
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/icon/gibz = new(icon, icon_state + "-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)
@@ -99,7 +99,7 @@
/obj/effect/gibspawner/xeno
gibtypes = list(/obj/effect/decal/cleanable/xenoblood/xgibs/up, /obj/effect/decal/cleanable/xenoblood/xgibs/down, /obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs/body, /obj/effect/decal/cleanable/xenoblood/xgibs/limb, /obj/effect/decal/cleanable/xenoblood/xgibs/core)
gibtypes = list(/obj/effect/decal/cleanable/blood/xenoblood/xgibs/up, /obj/effect/decal/cleanable/blood/xenoblood/xgibs/down, /obj/effect/decal/cleanable/blood/xenoblood/xgibs, /obj/effect/decal/cleanable/blood/xenoblood/xgibs, /obj/effect/decal/cleanable/blood/xenoblood/xgibs/body, /obj/effect/decal/cleanable/blood/xenoblood/xgibs/limb, /obj/effect/decal/cleanable/blood/xenoblood/xgibs/core)
gibamounts = list(1, 1, 1, 1, 1, 1, 1)
gib_mob_type = /mob/living/carbon/alien
@@ -110,7 +110,7 @@
/obj/effect/gibspawner/xeno/bodypartless //only the gibs that don't look like actual full bodyparts (except torso).
gibtypes = list(/obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs/core, /obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs/core, /obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs/torso)
gibtypes = list(/obj/effect/decal/cleanable/blood/xenoblood/xgibs, /obj/effect/decal/cleanable/blood/xenoblood/xgibs/core, /obj/effect/decal/cleanable/blood/xenoblood/xgibs, /obj/effect/decal/cleanable/blood/xenoblood/xgibs/core, /obj/effect/decal/cleanable/blood/xenoblood/xgibs, /obj/effect/decal/cleanable/blood/xenoblood/xgibs/torso)
gibamounts = list(1, 1, 1, 1, 1, 1)
@@ -122,7 +122,7 @@
/obj/effect/gibspawner/larva
gibtypes = list(/obj/effect/decal/cleanable/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/xenoblood/xgibs/larva/body, /obj/effect/decal/cleanable/xenoblood/xgibs/larva/body)
gibtypes = list(/obj/effect/decal/cleanable/blood/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/blood/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/blood/xenoblood/xgibs/larva/body, /obj/effect/decal/cleanable/blood/xenoblood/xgibs/larva/body)
gibamounts = list(1, 1, 1, 1)
gib_mob_type = /mob/living/carbon/alien/larva
@@ -132,7 +132,7 @@
return ..()
/obj/effect/gibspawner/larva/bodypartless
gibtypes = list(/obj/effect/decal/cleanable/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/xenoblood/xgibs/larva)
gibtypes = list(/obj/effect/decal/cleanable/blood/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/blood/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/blood/xenoblood/xgibs/larva)
gibamounts = list(1, 1, 1)
/obj/effect/gibspawner/larva/bodypartless/Initialize()
+2 -1
View File
@@ -201,6 +201,7 @@
if(!suiciding)
blood_data["cloneable"] = 1
blood_data["blood_type"] = copytext(dna.blood_type,1,0)
blood_data["bloodcolor"] = bloodtype_to_color(dna.blood_type)
blood_data["gender"] = gender
blood_data["real_name"] = real_name
blood_data["features"] = dna.features
@@ -304,7 +305,7 @@
/mob/living/carbon/alien/add_splatter_floor(turf/T, small_drip)
if(!T)
T = get_turf(src)
var/obj/effect/decal/cleanable/xenoblood/B = locate() in T.contents
var/obj/effect/decal/cleanable/blood/xenoblood/B = locate() in T.contents
if(!B)
B = new(T)
B.add_blood_DNA(list("UNKNOWN DNA" = "X*"))
+1 -1
View File
@@ -144,7 +144,7 @@
playsound(get_turf(src), 'sound/magic/exit_blood.ogg', 100, 1, -1)
//Makes the mob have the color of the blood pool it came out of
var/newcolor = rgb(149, 10, 10)
if(istype(B, /obj/effect/decal/cleanable/xenoblood))
if(istype(B, /obj/effect/decal/cleanable/blood/xenoblood))
newcolor = rgb(43, 186, 0)
add_atom_colour(newcolor, TEMPORARY_COLOUR_PRIORITY)
// but only for a few seconds
@@ -20,7 +20,7 @@
var/heat_protection = 0.5
var/leaping = 0
gib_type = /obj/effect/decal/cleanable/xenoblood/xgibs
gib_type = /obj/effect/decal/cleanable/blood/xenoblood/xgibs
unique_name = 1
var/static/regex/alien_name_regex = new("alien (larva|sentinel|drone|hunter|praetorian|queen)( \\(\\d+\\))?")
@@ -56,14 +56,17 @@
//Bloody footprints
var/turf/T = get_turf(src)
if(S.bloody_shoes && S.bloody_shoes[S.blood_state])
var/obj/effect/decal/cleanable/blood/footprints/oldFP = locate(/obj/effect/decal/cleanable/blood/footprints) in T
var/obj/effect/decal/cleanable/blood/footprints/tracks/oldFP = locate(/obj/effect/decal/cleanable/blood/footprints/tracks) in T
if(oldFP && (oldFP.blood_state == S.blood_state && oldFP.color == bloodtype_to_color(S.last_bloodtype)))
return
S.bloody_shoes[S.blood_state] = max(0, S.bloody_shoes[S.blood_state]-BLOOD_LOSS_PER_STEP)
var/obj/effect/decal/cleanable/blood/footprints/FP = new /obj/effect/decal/cleanable/blood/footprints(T)
var/obj/effect/decal/cleanable/blood/footprints/tracks/footprints/FP = new /obj/effect/decal/cleanable/blood/footprints/tracks/footprints(T)
FP.icon_state = FOOTPRINT_SHOE
FP.print_state = FOOTPRINT_SHOE
FP.blood_state = S.blood_state
FP.entered_dirs |= dir
FP.bloodiness = S.bloody_shoes[S.blood_state]
FP.color = blood_DNA_to_color() //Color the blood with our dna stuff
if(S.last_blood_DNA && 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
@@ -80,12 +83,12 @@
return
var/turf/T = get_turf(src)
if(blood_smear && blood_smear[blood_state])
for(var/obj/effect/decal/cleanable/blood/footprints/tracks/oldFP in T)
if (oldFP.blood_state == blood_state)
return
var/obj/effect/decal/cleanable/blood/footprints/tracks/oldFP = locate(/obj/effect/decal/cleanable/blood/footprints/tracks) in T
if (oldFP.blood_state == blood_state)
return
blood_smear[blood_state] = max(0, blood_smear[blood_state] - BLOOD_LOSS_PER_STEP)
if(blood_smear[blood_state] > BLOOD_LOSS_IN_SPREAD)
var/obj/effect/decal/cleanable/blood/footprints/tracks/FP = new /obj/effect/decal/cleanable/blood/footprints/tracks/footprints(T)
var/obj/effect/decal/cleanable/blood/footprints/tracks/FP = new /obj/effect/decal/cleanable/blood/footprints/tracks(T)
if(DIGITIGRADE in dna.species.species_traits)
if(dna.species.id == ("lizard" || "ashwalker" || "xeno"))
FP.icon_state = FOOTPRINT_CLAW
@@ -119,9 +122,9 @@
return
var/turf/T = get_turf(src)
if(blood_smear && blood_smear[blood_state])
for(var/obj/effect/decal/cleanable/blood/footprints/tracks/oldFP in T)
if (oldFP.blood_state == blood_state)
return
var/obj/effect/decal/cleanable/blood/footprints/tracks/oldFP = locate(/obj/effect/decal/cleanable/blood/footprints/tracks) in T
if (oldFP.blood_state == blood_state)
return
blood_smear[blood_state] = max(0, blood_smear[blood_state] - BLOOD_LOSS_PER_STEP)
if(blood_smear[blood_state] > BLOOD_LOSS_IN_SPREAD)
var/obj/effect/decal/cleanable/blood/footprints/tracks/FP = new /obj/effect/decal/cleanable/blood/footprints/tracks/body(T)
@@ -191,7 +191,7 @@
)
if(blood)
target_types += /obj/effect/decal/cleanable/xenoblood
target_types += /obj/effect/decal/cleanable/blood/xenoblood
target_types += /obj/effect/decal/cleanable/blood
target_types += /obj/effect/decal/cleanable/trail_holder
@@ -39,7 +39,7 @@
animal_species = /mob/living/simple_animal/hostile/asteroid/gutlunch
childtype = list(/mob/living/simple_animal/hostile/asteroid/gutlunch/gubbuck = 45, /mob/living/simple_animal/hostile/asteroid/gutlunch/guthen = 55)
wanted_objects = list(/obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/blood/gibs/)
wanted_objects = list(/obj/effect/decal/cleanable/blood/xenoblood/xgibs, /obj/effect/decal/cleanable/blood/gibs/)
var/obj/item/udder/gutlunch/udder = null
/mob/living/simple_animal/hostile/asteroid/gutlunch/Initialize()
@@ -1,5 +1,5 @@
/datum/reagent/blood
data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "blood_type"=null,"resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null)
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)
name = "Blood"
id = "blood"
color = BLOOD_COLOR_HUMAN // rgb: 200, 0, 0
@@ -97,14 +97,14 @@
B.color = data["bloodcolor"]
/datum/reagent/blood/synthetics
data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "blood_type"="SY","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null)
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)
name = "Synthetic Blood"
id = "syntheticblood"
taste_description = "oily"
color = BLOOD_COLOR_SYNTHETIC // rgb: 11, 7, 48
/datum/reagent/blood/xenomorph
data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "blood_type"="X*","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null)
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"
id = "xenoblood"
taste_description = "acidic heresy"
@@ -112,14 +112,14 @@
shot_glass_icon_state = "shotglassgreen"
/datum/reagent/blood/oil
data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "blood_type"="HF","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null)
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"
id = "oilblood"
taste_description = "burnt oil"
color = BLOOD_COLOR_OIL // dark, y'know, expected batman colors.
/datum/reagent/blood/jellyblood
data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "blood_type"="GEL","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null)
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"
id = "jellyblood"
description = "A gooey semi-liquid produced from one of the deadliest lifeforms in existence. SO REAL."