mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-28 01:51:46 +00:00
Blood drips icons are now in blood.dmi instead of drip.dmi (which only had the 5 drip sprites). Moved projectiles, guns, casings and ammo boxes to be in the right files. Please don't put your gun with its projectile, ammo casing and ammo box all the same file. I split growing.dmi into 5 smaller files so we don't get close to the 512 icon limit again. Each seed has a var to indicate which icon file to use when planted. Fixes code for heavy pulse laser projectile to be less awful.
194 lines
5.9 KiB
Plaintext
194 lines
5.9 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
|
|
layer = ABOVE_NORMAL_TURF_LAYER
|
|
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/replace_decal(obj/effect/decal/cleanable/blood/C)
|
|
if (C.blood_DNA)
|
|
blood_DNA |= C.blood_DNA.Copy()
|
|
..()
|
|
|
|
/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
|
|
layer = ABOVE_OPEN_TURF_LAYER
|
|
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
|
|
layer = ABOVE_OPEN_TURF_LAYER
|
|
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/replace_decal(obj/effect/decal/cleanable/C)
|
|
return
|
|
|
|
/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)
|
|
set waitfor = 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_state = "1"
|
|
random_icon_states = list("drip1","drip2","drip3","drip4","drip5")
|
|
bloodiness = 0
|
|
var/drips = 1
|
|
|
|
|
|
/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/replace_decal(obj/effect/decal/cleanable/C)
|
|
if(blood_state != C.blood_state) //We only replace footprints of the same type as us
|
|
return
|
|
..()
|
|
|
|
/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
|
|
|