just need to fine tweak gibs and we're gucci

This commit is contained in:
Poojawa
2019-06-09 11:10:23 -05:00
parent c2cf8b28df
commit 69cefb604b
23 changed files with 192 additions and 205 deletions
+4 -22
View File
@@ -1,11 +1,11 @@
/obj/effect/decal/cleanable
gender = PLURAL
layer = ABOVE_NORMAL_TURF_LAYER
var/list/random_icon_states = null
var/list/random_icon_states = list()
var/blood_state = "" //I'm sorry but cleanable/blood code is ass, and so is blood_DNA
var/bloodiness = 0 //0-100, amount of blood in this decal, used for making footprints and affecting the alpha of bloody footprints
var/mergeable_decal = TRUE //when two of these are on a same tile or do we need to merge them into just one?
var/blood_color
/obj/effect/decal/cleanable/Initialize(mapload, list/datum/disease/diseases)
. = ..()
@@ -26,9 +26,9 @@
if(LAZYLEN(diseases_to_add))
AddComponent(/datum/component/infective, diseases_to_add)
/obj/effect/decal/cleanable/proc/replace_decal(obj/effect/decal/cleanable/C) // Returns true if we should give up in favor of the pre-existing decal
/obj/effect/decal/cleanable/proc/replace_decal(obj/effect/decal/cleanable/C)
if(mergeable_decal)
return TRUE
qdel(C)
/obj/effect/decal/cleanable/attackby(obj/item/W, mob/user, params)
if(istype(W, /obj/item/reagent_containers/glass) || istype(W, /obj/item/reagent_containers/food/drinks))
@@ -70,7 +70,6 @@
//Add "bloodiness" of this blood's type, to the human's shoes
//This is on /cleanable because fuck this ancient mess
/obj/effect/decal/cleanable/Crossed(atom/movable/O)
..()
if(ishuman(O))
var/mob/living/carbon/human/H = O
if(H.shoes && blood_state && bloodiness && (!H.has_trait(TRAIT_LIGHT_STEP) || !H.mind.assigned_role == "Detective"))
@@ -84,27 +83,10 @@
S.bloody_shoes[blood_state] = min(MAX_SHOE_BLOODINESS,S.bloody_shoes[blood_state]+add_blood)
if(blood_DNA && blood_DNA.len)
S.add_blood(blood_DNA)
if(S.last_blood_DNA != blood_DNA)
S.last_blood_DNA += blood_DNA
S.blood_state = blood_state
update_icon()
H.update_inv_shoes()
else if(!H.shoes && blood_state && bloodiness && (!H.has_trait(TRAIT_LIGHT_STEP) || !H.mind.assigned_role == "Detective"))
var/add_blood = 0
if(bloodiness >= BLOOD_GAIN_PER_STEP)
add_blood = BLOOD_GAIN_PER_STEP
else
add_blood = bloodiness
bloodiness -= add_blood
H.blood_smear[blood_state] = min(MAX_SHOE_BLOODINESS,H.blood_smear[blood_state]+add_blood)
if(blood_DNA && blood_DNA.len)
if(H.last_blood_DNA != blood_DNA)
H.last_blood_DNA += blood_DNA
H.blood_state = blood_state
update_icon()
//H.update_inv_shoes()
/obj/effect/decal/cleanable/proc/can_bloodcrawl_in()
if((blood_state != BLOOD_STATE_OIL) && (blood_state != BLOOD_STATE_NOT_BLOODY))
return bloodiness
@@ -1,4 +1,3 @@
// Note: BYOND is object oriented. There is no reason for this to be copy/pasted blood code.
/obj/effect/decal/cleanable/blood/xeno
name = "xeno blood"
@@ -10,15 +9,22 @@
color = BLOOD_COLOR_XENO
/obj/effect/decal/cleanable/blood/gibs/xeno
name = "xeno gibs"
desc = "Gnarly..."
icon_state = "xgib1"
random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6")
color = BLOOD_COLOR_XENO
unique_body = "x"
/obj/effect/decal/cleanable/blood/gibs/xeno/Initialize(mapload, list/datum/disease/diseases)
. = ..()
reagents.add_reagent("liquidxenogibs", 5)
guts()
/obj/effect/decal/cleanable/blood/gibs/xeno/guts()
if(gib_overlay)
var/icon/blood = new(icon,"[icon_state]",dir)
var/image/gibz = new(icon, icon_state + "[unique_body]-overlay")
blood.Blend(blood_DNA_to_color(),ICON_MULTIPLY)
icon = blood
cut_overlays()
add_overlay(gibz)
/obj/effect/decal/cleanable/blood/gibs/xeno/streak(list/directions)
set waitfor = 0
@@ -35,29 +41,37 @@
if(!step_to(src, get_step(src, direction), 0))
break
/obj/effect/decal/cleanable/blood/gibs/xeno/up/xeno
random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6","xgibup1","xgibup1","xgibup1")
/obj/effect/decal/cleanable/blood/gibs/xeno/up
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1")
gib_overlay = TRUE
/obj/effect/decal/cleanable/blood/gibs/xeno/down/xeno
random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6","xgibdown1","xgibdown1","xgibdown1")
/obj/effect/decal/cleanable/blood/gibs/xeno/down
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1")
gib_overlay = TRUE
/obj/effect/decal/cleanable/blood/gibs/xeno/body/xeno
random_icon_states = list("xgibhead", "xgibtorso")
/obj/effect/decal/cleanable/blood/gibs/xeno/body
random_icon_states = list("gibhead", "gibtorso")
gib_overlay = TRUE
/obj/effect/decal/cleanable/blood/gibs/xeno/torso/xeno
random_icon_states = list("xgibtorso")
/obj/effect/decal/cleanable/blood/gibs/xeno/torso
random_icon_states = list("gibtorso")
gib_overlay = TRUE
/obj/effect/decal/cleanable/blood/gibs/xeno/limb/xeno
random_icon_states = list("xgibleg", "xgibarm")
/obj/effect/decal/cleanable/blood/gibs/xeno/limb
random_icon_states = list("gibleg", "gibarm")
gib_overlay = TRUE
/obj/effect/decal/cleanable/blood/gibs/xeno/core/xeno
random_icon_states = list("xgibmid1", "xgibmid2", "xgibmid3")
/obj/effect/decal/cleanable/blood/gibs/xeno/core
random_icon_states = list("gibmid1", "gibmid2", "gibmid3")
gib_overlay = TRUE
/obj/effect/decal/cleanable/blood/gibs/xeno/larva
random_icon_states = list("xgiblarva1", "xgiblarva2")
gib_overlay = TRUE
/obj/effect/decal/cleanable/blood/gibs/xeno/larva/body
random_icon_states = list("xgiblarvahead", "xgiblarvatorso")
gib_overlay = TRUE
/obj/effect/decal/cleanable/blood/xtracks
icon_state = "tracks"
@@ -6,20 +6,24 @@
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6")
mergeable_decal = FALSE
var/gib_overlay = FALSE
var/slimy_gibs = FALSE
var/body_colors
var/body_colors = "e3ba84" //a default color just in case.
var/unique_body = "c"
/obj/effect/decal/cleanable/blood/gibs/update_icon()
. = ..()
guts()
/obj/effect/decal/cleanable/blood/gibs/proc/guts()
if(gib_overlay)
var/mutable_appearance/gibz = mutable_appearance(icon, icon_state + "-overlay", color = blood_color, layer = (LOW_OBJ_LAYER + 0.1))
var/mutable_appearance/gibz2 = mutable_appearance(icon, icon_state + "c-overlay", color = body_colors, layer = (LOW_OBJ_LAYER + 0.1))
if(!slimy_gibs)
gibz.appearance_flags = RESET_COLOR
add_overlay(gibz)
else
gibz.appearance_flags = RESET_COLOR
add_overlay(gibz)
add_overlay(gibz2)
var/icon/blood = new(icon,"[icon_state]",dir)
var/icon/gibz = new(icon, icon_state + "-overlay")
var/image/gibz2 = new(icon, icon_state + "[unique_body]-overlay")
blood.Blend(blood_DNA_to_color(),ICON_MULTIPLY)
gibz2.color = body_colors
icon = blood
cut_overlays()
add_overlay(gibz)
add_overlay(gibz2)
/obj/effect/decal/cleanable/blood/gibs/ex_act(severity, target)
return
@@ -103,42 +107,96 @@
/obj/effect/decal/cleanable/blood/gibs/human/Initialize(mapload, list/datum/disease/diseases)
. = ..()
reagents.add_reagent("liquidgibs", 5)
guts()
update_icon()
/obj/effect/decal/cleanable/blood/gibs/human/guts()
if(gib_overlay)
var/icon/blood = new(icon,"[icon_state]",dir)
var/icon/gibz = new(icon, icon_state + "-overlay")
var/image/gibz2 = new(icon, icon_state + "[unique_body]-overlay")
blood.Blend(blood_DNA_to_color(),ICON_MULTIPLY)
gibz2.color = body_colors
icon = blood
cut_overlays()
add_overlay(gibz)
add_overlay(gibz2)
/obj/effect/decal/cleanable/blood/gibs/human/up
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1")
gib_overlay = TRUE
slimy_gibs = TRUE
/obj/effect/decal/cleanable/blood/gibs/human/down
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1")
gib_overlay = TRUE
slimy_gibs = TRUE
/obj/effect/decal/cleanable/blood/gibs/human/body
random_icon_states = list("gibhead", "gibtorso")
gib_overlay = TRUE
slimy_gibs = TRUE
/obj/effect/decal/cleanable/blood/gibs/human/torso
random_icon_states = list("gibtorso")
gib_overlay = TRUE
slimy_gibs = TRUE
/obj/effect/decal/cleanable/blood/gibs/human/limb
random_icon_states = list("gibleg", "gibarm")
gib_overlay = TRUE
slimy_gibs = TRUE
/obj/effect/decal/cleanable/blood/gibs/human/core
random_icon_states = list("gibmid1", "gibmid2", "gibmid3")
gib_overlay = TRUE
slimy_gibs = TRUE
//Lizards
/obj/effect/decal/cleanable/blood/gibs/human/lizard
body_colors = "117720"
/obj/effect/decal/cleanable/blood/gibs/human/lizard/Initialize(mapload, list/datum/disease/diseases)
. = ..()
reagents.add_reagent("liquidgibs", 5)
update_icon()
/obj/effect/decal/cleanable/blood/gibs/human/lizard/guts()
if(gib_overlay)
var/icon/blood = new(icon,"[icon_state]",dir)
var/icon/gibz = new(icon, icon_state + "-overlay")
var/image/gibz2 = new(icon, icon_state + "[unique_body]-overlay")
blood.Blend(blood_DNA_to_color(),ICON_MULTIPLY)
gibz2.color = body_colors
icon = blood
cut_overlays()
add_overlay(gibz)
add_overlay(gibz2)
/obj/effect/decal/cleanable/blood/gibs/human/lizard/up
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1")
gib_overlay = TRUE
/obj/effect/decal/cleanable/blood/gibs/human/lizard/down
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1")
gib_overlay = TRUE
/obj/effect/decal/cleanable/blood/gibs/human/lizard/body
random_icon_states = list("gibhead", "gibtorso")
gib_overlay = TRUE
/obj/effect/decal/cleanable/blood/gibs/human/lizard/torso
random_icon_states = list("gibtorso")
gib_overlay = TRUE
/obj/effect/decal/cleanable/blood/gibs/human/lizard/limb
random_icon_states = list("gibleg", "gibarm")
gib_overlay = TRUE
/obj/effect/decal/cleanable/blood/gibs/human/lizard/core
random_icon_states = list("gibmid1", "gibmid2", "gibmid3")
gib_overlay = TRUE
// Slime Gibs
/obj/effect/decal/cleanable/blood/gibs/slime
desc = "They look gooey and gruesome."
unique_body = "c"
body_colors = "00fff"
/obj/effect/decal/cleanable/blood/gibs/slime/Initialize(mapload, list/datum/disease/diseases)
. = ..()
@@ -146,38 +204,43 @@
update_icon()
guts()
/obj/effect/decal/cleanable/blood/gibs/slime/guts()
if(gib_overlay)
var/icon/blood = new(icon,"[icon_state]",dir)
var/image/gibz = new(icon, icon_state + "[unique_body]-overlay")
blood.Blend(blood_DNA_to_color(),ICON_MULTIPLY)
gibz.color = body_colors
icon = blood
cut_overlays()
add_overlay(gibz)
/obj/effect/decal/cleanable/blood/gibs/slime/up
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1")
gib_overlay = TRUE
slimy_gibs = 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
slimy_gibs = TRUE
/obj/effect/decal/cleanable/blood/gibs/slime/body
random_icon_states = list("gibhead", "gibtorso")
gib_overlay = TRUE
slimy_gibs = TRUE
/obj/effect/decal/cleanable/blood/gibs/slime/torso
random_icon_states = list("gibtorso")
gib_overlay = TRUE
slimy_gibs = TRUE
/obj/effect/decal/cleanable/blood/gibs/slime/limb
random_icon_states = list("gibleg", "gibarm")
gib_overlay = TRUE
slimy_gibs = TRUE
/obj/effect/decal/cleanable/blood/gibs/slime/core
random_icon_states = list("gibmid1", "gibmid2", "gibmid3")
gib_overlay = TRUE
slimy_gibs = TRUE
/obj/effect/decal/cleanable/blood/gibs/synth
desc = "They look sludgy and disgusting."
unique_body = "r"
/obj/effect/decal/cleanable/blood/gibs/synth/Initialize(mapload, list/datum/disease/diseases)
. = ..()
@@ -188,6 +251,8 @@
//IPCs
/obj/effect/decal/cleanable/blood/gibs/ipc
desc = "They look sharp yet oozing."
unique_body = "r"
body_colors = "00ff00"
/obj/effect/decal/cleanable/blood/gibs/ipc/Initialize(mapload, list/datum/disease/diseases)
. = ..()
@@ -197,45 +262,37 @@
/obj/effect/decal/cleanable/blood/gibs/ipc/guts()
if(gib_overlay)
var/mutable_appearance/gibz = mutable_appearance(icon, icon_state + "-ipcoverlay", color = blood_color, layer = -LOW_OBJ_LAYER)
var/mutable_appearance/gibz2 = mutable_appearance(icon, icon_state + "c-ipcoverlay", color = body_colors, layer = -LOW_OBJ_LAYER)
if(!slimy_gibs)
gibz.appearance_flags = RESET_COLOR
add_overlay(gibz)
else
gibz.appearance_flags = RESET_COLOR
add_overlay(gibz)
add_overlay(gibz2)
var/icon/blood = new(icon,"[icon_state]",dir)
var/image/gibz = new(icon, icon_state + "[unique_body]-overlay")
blood.Blend(blood_DNA_to_color(),ICON_MULTIPLY)
gibz.color = body_colors
icon = blood
cut_overlays()
add_overlay(gibz)
/obj/effect/decal/cleanable/blood/gibs/ipc/up
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1")
gib_overlay = TRUE
slimy_gibs = TRUE
/obj/effect/decal/cleanable/blood/gibs/ipc/down
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1")
gib_overlay = TRUE
slimy_gibs = TRUE
/obj/effect/decal/cleanable/blood/gibs/ipc/body
random_icon_states = list("gibhead", "gibtorso")
gib_overlay = TRUE
slimy_gibs = TRUE
/obj/effect/decal/cleanable/blood/gibs/ipc/torso
random_icon_states = list("gibtorso")
gib_overlay = TRUE
slimy_gibs = TRUE
/obj/effect/decal/cleanable/blood/gibs/ipc/limb
random_icon_states = list("gibleg", "gibarm")
gib_overlay = TRUE
slimy_gibs = TRUE
/obj/effect/decal/cleanable/blood/gibs/ipc/core
random_icon_states = list("gibmid1", "gibmid2", "gibmid3")
gib_overlay = TRUE
slimy_gibs = TRUE
/obj/effect/decal/cleanable/blood/gibs/synth
desc = "They look sludgy and disgusting."
@@ -26,10 +26,6 @@
/obj/effect/decal/cleanable/blood/update_icon()
color = blood_DNA_to_color()
//obj/effect/decal/cleanable/blood/update_color()
// if(SEND_SIGNAL(COMSIG_BLOOD_COLOR) & COMPONENT_BLOCK_UPDATE_COLOR)
// return
/obj/effect/decal/cleanable/blood/old
name = "dried blood"
desc = "Looks like it's been here a while. Eew."
@@ -43,6 +39,11 @@
/obj/effect/decal/cleanable/blood/splatter
random_icon_states = list("gibbl1", "gibbl2", "gibbl3", "gibbl4", "gibbl5")
/obj/effect/decal/cleanable/blood/tracks
icon_state = "tracks"
desc = "They look like tracks left by wheels."
random_icon_states = null
/obj/effect/decal/cleanable/trail_holder //not a child of blood on purpose
name = "blood"
icon_state = "ltrails_1"
@@ -50,7 +51,6 @@
random_icon_states = null
var/list/existing_dirs = list()
blood_DNA = list()
color = BLOOD_COLOR_HUMAN
/obj/effect/decal/cleanable/trail_holder/update_icon()
color = blood_DNA_to_color()
@@ -71,19 +71,18 @@
update_icon()
//BLOODY FOOTPRINTS
/obj/effect/decal/cleanable/blood/footprints/tracks
name = "tracks"
icon = 'icons/effects/fluidtracks.dmi'
/obj/effect/decal/cleanable/blood/footprints
name = "footprints"
icon = 'icons/effects/footprints.dmi'
icon_state = "nothingwhatsoever"
desc = "WHOSE FOOTPRINTS ARE THESE?"
random_icon_states = null
var/entered_dirs = 0
var/exited_dirs = 0
blood_state = BLOOD_STATE_BLOOD //the icon state to load images from
var/print_state = FOOTPRINT_SHOE //the print state for different feet
var/list/shoe_types = list()
/obj/effect/decal/cleanable/blood/footprints/tracks/Crossed(atom/movable/O)
/obj/effect/decal/cleanable/blood/footprints/Crossed(atom/movable/O)
if(ishuman(O))
var/mob/living/carbon/human/H = O
var/obj/item/clothing/shoes/S = H.shoes
@@ -96,15 +95,7 @@
entered_dirs |= H.dir
update_icon()
else if(H && H.blood_smear[blood_state])
if(color != bloodtype_to_color(H.last_bloodtype))
return
H.blood_smear[blood_state] = max(H.blood_smear[blood_state] - BLOOD_LOSS_PER_STEP, 0)
if (!(entered_dirs & H.dir))
entered_dirs |= H.dir
update_icon()
/obj/effect/decal/cleanable/blood/footprints/tracks/Uncrossed(atom/movable/O)
/obj/effect/decal/cleanable/blood/footprints/Uncrossed(atom/movable/O)
if(ishuman(O))
var/mob/living/carbon/human/H = O
var/obj/item/clothing/shoes/S = H.shoes
@@ -117,36 +108,28 @@
exited_dirs |= H.dir
update_icon()
else if(H && H.blood_smear[blood_state])
if(color != bloodtype_to_color(H.last_bloodtype))//last entry - we check its color
return
H.blood_smear[blood_state] = max(H.blood_smear[blood_state] - BLOOD_LOSS_PER_STEP, 0)
if (!(exited_dirs & H.dir))
exited_dirs |= H.dir
update_icon()
/obj/effect/decal/cleanable/blood/footprints/tracks/update_icon()
/obj/effect/decal/cleanable/blood/footprints/update_icon()
..()
cut_overlays()
for(var/Ddir in GLOB.cardinals)
if(entered_dirs & Ddir)
var/image/bloodstep_overlay = GLOB.bloody_footprints_cache["entered-[print_state]-[Ddir]"]
var/image/bloodstep_overlay = GLOB.bloody_footprints_cache["entered-[blood_state]-[Ddir]"]
if(!bloodstep_overlay)
GLOB.bloody_footprints_cache["entered-[print_state]-[Ddir]"] = bloodstep_overlay = image(icon, "[print_state]1", dir = Ddir)
GLOB.bloody_footprints_cache["entered-[blood_state]-[Ddir]"] = bloodstep_overlay = image(icon, "[blood_state]1", dir = Ddir)
add_overlay(bloodstep_overlay)
if(exited_dirs & Ddir)
var/image/bloodstep_overlay = GLOB.bloody_footprints_cache["exited-[print_state]-[Ddir]"]
var/image/bloodstep_overlay = GLOB.bloody_footprints_cache["exited-[blood_state]-[Ddir]"]
if(!bloodstep_overlay)
GLOB.bloody_footprints_cache["exited-[print_state]-[Ddir]"] = bloodstep_overlay = image(icon, "[print_state]2", dir = Ddir)
GLOB.bloody_footprints_cache["exited-[blood_state]-[Ddir]"] = bloodstep_overlay = image(icon, "[blood_state]2", dir = Ddir)
add_overlay(bloodstep_overlay)
alpha = BLOODY_FOOTPRINT_BASE_ALPHA + bloodiness
/obj/effect/decal/cleanable/blood/footprints/tracks/examine(mob/user)
/obj/effect/decal/cleanable/blood/footprints/examine(mob/user)
. = ..()
if(shoe_types.len && ishuman(user) && user.mind.assigned_role == "Detective") //gumshoe does the detective thing, not every fucking assistant
if(shoe_types.len)
. += "You recognise the footprints as belonging to:\n"
for(var/shoe in shoe_types)
var/obj/item/clothing/shoes/S = shoe
@@ -154,20 +137,19 @@
to_chat(user, .)
/obj/effect/decal/cleanable/blood/footprints/tracks/replace_decal(obj/effect/decal/cleanable/blood/footprints/tracks/C)
if(print_state != C.print_state) //We only replace footprints of the same type as us
return
if(blood_state != C.blood_state)
/obj/effect/decal/cleanable/blood/footprints/replace_decal(obj/effect/decal/cleanable/C)
if(blood_state != C.blood_state) //We only replace footprints of the same type as us
return
if(color != C.color)
return
..()
/obj/effect/decal/cleanable/blood/footprints/tracks/can_bloodcrawl_in()
/obj/effect/decal/cleanable/blood/footprints/can_bloodcrawl_in()
if((blood_state != BLOOD_STATE_OIL) && (blood_state != BLOOD_STATE_NOT_BLOODY))
return TRUE
return FALSE
/* Eventually TODO: make snowflake trails like baycode's
/obj/effect/decal/cleanable/blood/footprints/tracks/shoe
name = "footprints"
desc = "They look like tracks left by footwear."
@@ -209,4 +191,4 @@
name = "trails"
desc = "A trail left by something being dragged."
icon_state = FOOTPRINT_DRAG
print_state = FOOTPRINT_DRAG
print_state = FOOTPRINT_DRAG */
@@ -50,6 +50,7 @@
random_icon_states = list("floor1", "floor2", "floor3", "floor4", "floor5", "floor6", "floor7")
blood_state = BLOOD_STATE_OIL
bloodiness = BLOOD_AMOUNT_PER_DECAL
c
/obj/effect/decal/cleanable/oil/Initialize()
. = ..()
@@ -29,9 +29,8 @@
s.set_up(2, 1, loc)
s.start()
var/list/dna_to_add //find the dna to pass to the spawned gibs. do note this can be null if the mob doesn't have blood. add_blood_DNA() has built in null handling.
var/body_coloring
var/body_coloring = ""
if(source_mob)
dna_to_add = source_mob.get_blood_dna_list() //ez pz
if(ishuman(source_mob))
@@ -74,11 +73,9 @@
var/mob/living/carbon/digester = loc
digester.stomach_contents += gib
if(dna_to_add)
gib.blood_DNA += dna_to_add
// color them properly, please.
if(gib.gib_overlay)
gib.body_colors = body_coloring
if(dna_to_add.len)
gib.add_blood(dna_to_add)
gib.body_colors = body_coloring
gib.update_icon()
var/list/directions = gibdirections[i]
@@ -125,9 +122,13 @@
return ..()
/obj/effect/gibspawner/human/lizard
gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/human/lizard, /obj/effect/decal/cleanable/blood/gibs/human/lizard/core, /obj/effect/decal/cleanable/blood/gibs/human/lizard, /obj/effect/decal/cleanable/blood/gibs/human/lizard/core, /obj/effect/decal/cleanable/blood/gibs/human, /obj/effect/decal/cleanable/blood/gibs/human/lizard/torso)
gibamounts = list(1, 1, 1, 1, 1, 1)
gib_mob_species = /datum/species/lizard
/obj/effect/gibspawner/human/lizard/bodypartless
gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/human/lizard, /obj/effect/decal/cleanable/blood/gibs/human/lizard/core, /obj/effect/decal/cleanable/blood/gibs/human/lizard, /obj/effect/decal/cleanable/blood/gibs/human/lizard/core, /obj/effect/decal/cleanable/blood/gibs/human/lizard, /obj/effect/decal/cleanable/blood/gibs/human/lizard/torso)
gibamounts = list(2, 0, 1, 1, 2, 0)
/obj/effect/gibspawner/human/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)
@@ -140,14 +141,16 @@
/obj/effect/gibspawner/human/ipc
sparks = TRUE
gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/ipc/up, /obj/effect/decal/cleanable/blood/gibs/ipc/down, /obj/effect/decal/cleanable/blood/gibs/ipc, /obj/effect/decal/cleanable/blood/gibs/ipc, /obj/effect/decal/cleanable/blood/gibs/ipc/body, /obj/effect/decal/cleanable/blood/gibs/ipc/limb, /obj/effect/decal/cleanable/blood/gibs/ipc/core)
gibamounts = list(1, 1, 1, 1, 1, 1)
gibamounts = list(1, 1, 1, 1, 1, 1, 1)
gib_mob_type = /mob/living/carbon/human
gib_mob_species = /datum/species/ipc
/obj/effect/gibspawner/human/ipc/bodypartless
gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/ipc/up, /obj/effect/decal/cleanable/blood/gibs/ipc/down, /obj/effect/decal/cleanable/blood/gibs/ipc, /obj/effect/decal/cleanable/blood/gibs/ipc, /obj/effect/decal/cleanable/blood/gibs/ipc/body, /obj/effect/decal/cleanable/blood/gibs/ipc/limb, /obj/effect/decal/cleanable/blood/gibs/ipc/core)
gibamounts = list(1, 1, 2, 2, 0, 0, 1)
/obj/effect/gibspawner/xeno
gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/xeno/up/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno/down/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno/body/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno/limb/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno/core/xeno)
gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/xeno/up, /obj/effect/decal/cleanable/blood/gibs/xeno/down, /obj/effect/decal/cleanable/blood/gibs/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno/body, /obj/effect/decal/cleanable/blood/gibs/xeno/limb, /obj/effect/decal/cleanable/blood/gibs/xeno/core)
gibamounts = list(1, 1, 1, 1, 1, 1, 1)
gib_mob_type = /mob/living/carbon/alien
@@ -157,7 +160,7 @@
return ..()
/obj/effect/gibspawner/xeno/bodypartless //only the gibs that don't look like actual full bodyparts (except torso).
gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno/core/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno/core/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno/torso/xeno)
gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno/core, /obj/effect/decal/cleanable/blood/gibs/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno/core, /obj/effect/decal/cleanable/blood/gibs/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno/torso)
gibamounts = list(1, 1, 1, 1, 1, 1)
/obj/effect/gibspawner/xeno/bodypartless/Initialize()