mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-28 01:51:46 +00:00
200 lines
5.8 KiB
Plaintext
200 lines
5.8 KiB
Plaintext
/obj/effect/decal/cleanable/blood
|
|
name = "blood"
|
|
desc = "It's red and gooey. Perhaps it's the chef's cooking?"
|
|
gender = PLURAL
|
|
density = 0
|
|
anchored = 1
|
|
layer = 2
|
|
icon = 'icons/effects/blood.dmi'
|
|
icon_state = "floor1"
|
|
random_icon_states = list("floor1", "floor2", "floor3", "floor4", "floor5", "floor6", "floor7")
|
|
var/list/viruses = list()
|
|
blood_DNA = list()
|
|
blood_state = BLOOD_STATE_HUMAN
|
|
bloodiness = MAX_SHOE_BLOODINESS
|
|
|
|
/obj/effect/decal/cleanable/blood/Destroy()
|
|
for(var/datum/disease/D in viruses)
|
|
D.cure(0)
|
|
viruses = null
|
|
return ..()
|
|
|
|
/obj/effect/decal/cleanable/blood/New()
|
|
..()
|
|
if(src.type == /obj/effect/decal/cleanable/blood)
|
|
if(src.loc && isturf(src.loc))
|
|
for(var/obj/effect/decal/cleanable/blood/B in src.loc)
|
|
if(B != src)
|
|
if (B.blood_DNA)
|
|
blood_DNA |= B.blood_DNA.Copy()
|
|
qdel(B)
|
|
|
|
/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."
|
|
gender = PLURAL
|
|
random_icon_states = null
|
|
|
|
/obj/effect/decal/cleanable/trail_holder //not a child of blood on purpose
|
|
name = "blood"
|
|
icon_state = "ltrails_1"
|
|
desc = "Your instincts say you shouldn't be following these."
|
|
gender = PLURAL
|
|
density = 0
|
|
anchored = 1
|
|
layer = 2
|
|
random_icon_states = null
|
|
var/list/existing_dirs = list()
|
|
blood_DNA = list()
|
|
|
|
|
|
/obj/effect/decal/cleanable/trail_holder/can_bloodcrawl_in()
|
|
return 1
|
|
|
|
|
|
/obj/effect/decal/cleanable/blood/gibs
|
|
name = "gibs"
|
|
desc = "They look bloody and gruesome."
|
|
gender = PLURAL
|
|
density = 0
|
|
anchored = 1
|
|
layer = 2
|
|
icon = 'icons/effects/blood.dmi'
|
|
icon_state = "gibbl5"
|
|
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6")
|
|
|
|
/obj/effect/decal/cleanable/blood/gibs/New()
|
|
..()
|
|
reagents.add_reagent("liquidgibs", 5)
|
|
|
|
/obj/effect/decal/cleanable/blood/gibs/ex_act(severity, target)
|
|
return
|
|
|
|
/obj/effect/decal/cleanable/blood/gibs/up
|
|
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1")
|
|
|
|
/obj/effect/decal/cleanable/blood/gibs/down
|
|
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1")
|
|
|
|
/obj/effect/decal/cleanable/blood/gibs/body
|
|
random_icon_states = list("gibhead", "gibtorso")
|
|
|
|
/obj/effect/decal/cleanable/blood/gibs/limb
|
|
random_icon_states = list("gibleg", "gibarm")
|
|
|
|
/obj/effect/decal/cleanable/blood/gibs/core
|
|
random_icon_states = list("gibmid1", "gibmid2", "gibmid3")
|
|
|
|
|
|
/obj/effect/decal/cleanable/blood/gibs/proc/streak(list/directions)
|
|
spawn (0)
|
|
var/direction = pick(directions)
|
|
for (var/i = 0, i < pick(1, 200; 2, 150; 3, 50; 4), i++)
|
|
sleep(3)
|
|
if (i > 0)
|
|
var/obj/effect/decal/cleanable/blood/b = new /obj/effect/decal/cleanable/blood/splatter(src.loc)
|
|
for(var/datum/disease/D in src.viruses)
|
|
var/datum/disease/ND = D.Copy(1)
|
|
b.viruses += ND
|
|
ND.holder = b
|
|
if (step_to(src, get_step(src, direction), 0))
|
|
break
|
|
|
|
/obj/effect/decal/cleanable/blood/drip
|
|
name = "drips of blood"
|
|
desc = "It's red."
|
|
gender = PLURAL
|
|
icon = 'icons/effects/drip.dmi'
|
|
icon_state = "1"
|
|
random_icon_states = list("1","2","3","4","5")
|
|
bloodiness = 0
|
|
var/list/drips = list()
|
|
|
|
/obj/effect/decal/cleanable/blood/drip/New()
|
|
..()
|
|
spawn(1)
|
|
drips |= icon_state
|
|
|
|
/obj/effect/decal/cleanable/blood/drip/can_bloodcrawl_in()
|
|
return 1
|
|
|
|
|
|
//BLOODY FOOTPRINTS
|
|
/obj/effect/decal/cleanable/blood/footprints
|
|
name = "footprints"
|
|
icon = 'icons/effects/footprints.dmi'
|
|
icon_state = "nothingwhatsoever"
|
|
desc = "where might they lead?"
|
|
gender = PLURAL
|
|
random_icon_states = null
|
|
var/entered_dirs = 0
|
|
var/exited_dirs = 0
|
|
blood_state = BLOOD_STATE_HUMAN //the icon state to load images from
|
|
var/list/shoe_types = list()
|
|
|
|
/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
|
|
if(S && S.bloody_shoes[blood_state])
|
|
S.bloody_shoes[blood_state] = max(S.bloody_shoes[blood_state] - BLOOD_LOSS_PER_STEP, 0)
|
|
entered_dirs|= H.dir
|
|
shoe_types |= H.shoes.type
|
|
update_icon()
|
|
|
|
/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
|
|
if(S && S.bloody_shoes[blood_state])
|
|
S.bloody_shoes[blood_state] = max(S.bloody_shoes[blood_state] - BLOOD_LOSS_PER_STEP, 0)
|
|
exited_dirs|= H.dir
|
|
shoe_types |= H.shoes.type
|
|
update_icon()
|
|
|
|
/obj/effect/decal/cleanable/blood/footprints/update_icon()
|
|
overlays.Cut()
|
|
|
|
for(var/Ddir in cardinal)
|
|
if(entered_dirs & Ddir)
|
|
var/image/I
|
|
if(bloody_footprints_cache["entered-[blood_state]-[Ddir]"])
|
|
I = bloody_footprints_cache["entered-[blood_state]-[Ddir]"]
|
|
else
|
|
I = image(icon,"[blood_state]1",dir = Ddir)
|
|
bloody_footprints_cache["entered-[blood_state]-[Ddir]"] = I
|
|
if(I)
|
|
overlays += I
|
|
if(exited_dirs & Ddir)
|
|
var/image/I
|
|
if(bloody_footprints_cache["exited-[blood_state]-[Ddir]"])
|
|
I = bloody_footprints_cache["exited-[blood_state]-[Ddir]"]
|
|
else
|
|
I = image(icon,"[blood_state]2",dir = Ddir)
|
|
bloody_footprints_cache["exited-[blood_state]-[Ddir]"] = I
|
|
if(I)
|
|
overlays += I
|
|
|
|
alpha = BLOODY_FOOTPRINT_BASE_ALPHA+bloodiness
|
|
|
|
|
|
/obj/effect/decal/cleanable/blood/footprints/examine(mob/user)
|
|
. = ..()
|
|
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
|
|
. += "some <B>[initial(S.name)]</B> \icon[S]\n"
|
|
|
|
user << .
|
|
|
|
|
|
/obj/effect/decal/cleanable/blood/footprints/can_bloodcrawl_in()
|
|
if((blood_state != BLOOD_STATE_OIL) && (blood_state != BLOOD_STATE_NOT_BLOODY))
|
|
return 1
|
|
return 0
|
|
|