eh, was going somewhere with this

IPC gibspawner, looking into infinite footprints
This commit is contained in:
Poojawa
2019-05-26 05:36:33 -05:00
parent 4324d08f32
commit 9f80896280
14 changed files with 186 additions and 74 deletions
+7 -10
View File
@@ -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,28 +83,26 @@
S.blood_smear[blood_state] = min(MAX_SHOE_BLOODINESS,S.blood_smear[blood_state]+add_blood)
if(blood_DNA && blood_DNA.len)
S.add_blood(blood_DNA)
S.blood_state = blood_state
S.blood_color = blood_color
S.blood_smear = blood_state
update_icon()
H.update_inv_shoes()
else if(H.bloodiness && blood_state && bloodiness && (!H.has_trait(TRAIT_LIGHT_STEP) || !H.mind.assigned_role == "Detective"))
else if(!H.shoes && blood_state && bloodiness && (!H.has_trait(TRAIT_LIGHT_STEP) || !H.mind.assigned_role == "Detective"))
var/add_blood = 0
if(H.bloodiness >= 1)
add_blood = 5
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)
H.bloodiness = add_blood
if(blood_DNA && blood_DNA.len)
H.add_blood(blood_DNA)
H.blood_state = blood_state
H.blood_color = blood_color
H.blood_smear = 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
else
return 0
return FALSE
@@ -30,10 +30,8 @@
GET_COMPONENT(infective, /datum/component/infective)
if(infective)
diseases = infective.diseases
var/obj/effect/decal/cleanable/blood/gibs/gibbers = src
var/obj/effect/decal/cleanable/blood/splatter/xeno/splat = new /obj/effect/decal/cleanable/blood/splatter/xeno(loc, diseases)
splat.color = gibbers.blood_color
splat.blood_color = gibbers.blood_color
splat.transfer_blood_dna(blood_DNA)
if(!step_to(src, get_step(src, direction), 0))
break
@@ -183,4 +183,65 @@
. = ..()
reagents.add_reagent("liquidsyntheticgibs", 5)
update_icon()
guts()
guts()
//IPCs
/obj/effect/decal/cleanable/blood/gibs/ipc
desc = "They look sharp yet oozing."
/obj/effect/decal/cleanable/blood/gibs/ipc/Initialize(mapload, list/datum/disease/diseases)
. = ..()
reagents.add_reagent("liquidoilgibs", 5)
update_icon()
guts()
/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)
/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."
/obj/effect/decal/cleanable/blood/gibs/synth/Initialize(mapload, list/datum/disease/diseases)
. = ..()
reagents.add_reagent("liquidsyntheticgibs", 5)
update_icon()
guts()
@@ -81,31 +81,32 @@
random_icon_states = null
var/entered_dirs = 0
var/exited_dirs = 0
var/print_state = FOOTPRINT_SHOE //the icon state to load images from
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)
..()
if(ishuman(O))
var/mob/living/carbon/human/H = O
var/obj/item/clothing/shoes/S = H.shoes
if(S && S.blood_smear[blood_state])
if(color != bloodtype_to_color(S.last_bloodtype))
return
S.blood_smear[blood_state] = max(S.blood_smear[blood_state] - BLOOD_LOSS_PER_STEP, 0)
shoe_types |= S.type
if (!(entered_dirs & H.dir))
entered_dirs |= H.dir
update_icon()
else if(H.bloodiness && H.blood_smear[blood_state])
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)
H.bloodiness = H.bloodinessmax
if (!(entered_dirs & H.dir))
entered_dirs |= H.dir
update_icon()
/obj/effect/decal/cleanable/blood/footprints/tracks/Uncrossed(atom/movable/O)
..()
if(ishuman(O))
var/mob/living/carbon/human/H = O
var/obj/item/clothing/shoes/S = H.shoes
@@ -118,9 +119,10 @@
exited_dirs |= H.dir
update_icon()
else if(H.bloodiness && H.blood_smear[blood_state])
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)
H.bloodiness = H.bloodinessmax
if (!(exited_dirs & H.dir))
exited_dirs |= H.dir
update_icon()