Skip to content

Commit

Permalink
Merge pull request #136 from Mirag1993/Мердж-с-оффами
Browse files Browse the repository at this point in the history
Fixes bloodstains getting stuck (shiptest-ss13#2456)
  • Loading branch information
MysticalFaceLesS authored Nov 10, 2023
2 parents c1ebdd8 + ccf2396 commit 03702e0
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 20 deletions.
4 changes: 3 additions & 1 deletion code/datums/components/forensics.dm
Original file line number Diff line number Diff line change
Expand Up @@ -190,4 +190,6 @@
return
if(!length(blood_DNA))
return
parent.AddElement(/datum/element/decal/blood, _color = get_blood_dna_color(blood_DNA))
if(isitem(parent))
var/obj/item/I = parent
I.AddElement(/datum/element/decal/blood, initial(I.icon) || I.icon, initial(I.icon_state) || I.icon_state, _color = get_blood_dna_color(blood_DNA))
26 changes: 7 additions & 19 deletions code/datums/elements/decals/blood.dm
Original file line number Diff line number Diff line change
Expand Up @@ -12,27 +12,15 @@
return ..()

/datum/element/decal/blood/generate_appearance(_icon, _icon_state, _dir, _layer, _color, _alpha, source)
var/obj/item/I = source
if(!_icon)
_icon = 'icons/effects/blood.dmi'
if(!_icon_state)
_icon_state = "itemblood"
if(!_icon || !_icon_state)
return FALSE
if(!_color)
_color = COLOR_BLOOD
var/item_icon = I.icon
var/item_icon_state = I.icon_state
var/static/list/blood_splatter_appearances = list()
//try to find a pre-processed blood-splatter. otherwise, make a new one
var/index = "[REF(item_icon)]-[item_icon_state]"
pic = blood_splatter_appearances[index]

if(!pic)
var/icon/blood_splatter_icon = icon(I.icon, I.icon_state, null, 1) //we only want to apply blood-splatters to the initial icon_state for each object
blood_splatter_icon.Blend("#fff", ICON_ADD) //fills the icon_state with white (except where it's transparent)
blood_splatter_icon.Blend(icon(_icon, _icon_state), ICON_MULTIPLY) //adds blood and the remaining white areas become transparant
pic = mutable_appearance(blood_splatter_icon, initial(I.icon_state))
pic.color = _color
blood_splatter_appearances[index] = pic
var/icon/blood_splatter_icon = icon(_icon, _icon_state, , 1) //we only want to apply blood-splatters to the initial icon_state for each object
blood_splatter_icon.Blend("#fff", ICON_ADD) //fills the icon_state with white (except where it's transparent)
blood_splatter_icon.Blend(icon('icons/effects/blood.dmi', "itemblood"), ICON_MULTIPLY) //adds blood and the remaining white areas become transparant
pic = mutable_appearance(blood_splatter_icon)
pic.color = _color
return TRUE

/datum/element/decal/blood/proc/get_examine_name(datum/source, mob/user, list/override)
Expand Down

0 comments on commit 03702e0

Please sign in to comment.