mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-28 22:47:59 +01:00
Blood spread fixes and tweaks (#26048)
* blood spread fixes and tweaks * just to make sure * soap cant be bloodied, better check on gloves
This commit is contained in:
@@ -19,6 +19,8 @@
|
||||
var/blood_color
|
||||
/// Wont gloves/hands spend blood spill points to make this bloody
|
||||
var/easy_to_spill_blood = FALSE
|
||||
/// Will the atom spread blood when touched?
|
||||
var/should_spread_blood = FALSE
|
||||
var/pass_flags = 0
|
||||
/// The higher the germ level, the more germ on the atom.
|
||||
var/germ_level = GERM_LEVEL_AMBIENT
|
||||
@@ -898,10 +900,14 @@ GLOBAL_LIST_EMPTY(blood_splatter_icons)
|
||||
return FALSE
|
||||
|
||||
/obj/add_blood(list/blood_dna, b_color)
|
||||
if(isnull(b_color))
|
||||
b_color = "#A10808"
|
||||
blood_color = b_color
|
||||
return transfer_blood_dna(blood_dna)
|
||||
|
||||
/obj/item/add_blood(list/blood_dna, b_color)
|
||||
if(isnull(b_color))
|
||||
b_color = "#A10808"
|
||||
var/blood_count = !blood_DNA ? 0 : length(blood_DNA)
|
||||
if(!..())
|
||||
return FALSE
|
||||
@@ -915,6 +921,8 @@ GLOBAL_LIST_EMPTY(blood_splatter_icons)
|
||||
transfer_blood = rand(2, 4)
|
||||
|
||||
/turf/add_blood(list/blood_dna, b_color)
|
||||
if(isnull(b_color))
|
||||
b_color = "#A10808"
|
||||
var/obj/effect/decal/cleanable/blood/splatter/B = locate() in src
|
||||
if(!B)
|
||||
B = new /obj/effect/decal/cleanable/blood/splatter(src)
|
||||
|
||||
@@ -54,6 +54,7 @@ GLOBAL_DATUM_INIT(welding_sparks, /mutable_appearance, mutable_appearance('icons
|
||||
/// Determines what it can pass over/through. IE. 'PASSTABLE' will allow it to pass over tables
|
||||
pass_flags = PASSTABLE
|
||||
pressure_resistance = 4
|
||||
should_spread_blood = TRUE
|
||||
var/obj/item/master
|
||||
|
||||
/// Flags which determine which body parts are protected from heat. Use the HEAD, UPPER_TORSO, LOWER_TORSO, etc. flags. See setup.dm
|
||||
|
||||
@@ -31,6 +31,9 @@
|
||||
return
|
||||
target.cleaning_act(user, src, cleanspeed)
|
||||
|
||||
/obj/item/soap/add_blood(list/blood_dna, b_color)
|
||||
return
|
||||
|
||||
/obj/item/soap/proc/eat_soap(mob/living/carbon/human/drask/user)
|
||||
times_eaten++
|
||||
playsound(user.loc, 'sound/items/eatfood.ogg', 50, 0)
|
||||
@@ -96,7 +99,7 @@
|
||||
if(!istype(carried_item, /obj/item/bio_chip))//If it's not an implant.
|
||||
carried_item.add_mob_blood(target)//Oh yes, there will be blood...
|
||||
var/mob/living/carbon/human/H = target
|
||||
H.bloody_hands(target,0)
|
||||
H.make_bloody_hands(H.get_blood_dna_list(), H.get_blood_color())
|
||||
H.bloody_body(target)
|
||||
|
||||
return
|
||||
|
||||
@@ -8,10 +8,10 @@
|
||||
else if(G.transfer_blood > 1 && add_blood(G.blood_DNA, G.blood_color))
|
||||
G.transfer_blood--
|
||||
|
||||
if(blood_DNA)
|
||||
if(blood_DNA && should_spread_blood)
|
||||
var/old_transfer_blood = G.transfer_blood
|
||||
G.add_blood(blood_DNA, blood_color)
|
||||
G.transfer_blood = old_transfer_blood
|
||||
G.transfer_blood = max(1, old_transfer_blood)
|
||||
M.update_inv_gloves()
|
||||
|
||||
else
|
||||
@@ -20,11 +20,10 @@
|
||||
else if(M.bloody_hands > 1 && add_blood(M.blood_DNA, M.hand_blood_color))
|
||||
M.bloody_hands--
|
||||
|
||||
if(blood_DNA)
|
||||
if(blood_DNA && should_spread_blood)
|
||||
var/old_bloody_hands = M.bloody_hands
|
||||
M.add_blood(blood_DNA, blood_color)
|
||||
M.bloody_hands = old_bloody_hands
|
||||
M.update_inv_gloves()
|
||||
M.make_bloody_hands(blood_DNA, blood_color)
|
||||
M.bloody_hands = max(1, old_bloody_hands)
|
||||
|
||||
if(!suit_fibers) suit_fibers = list()
|
||||
var/fibertext
|
||||
|
||||
@@ -498,3 +498,10 @@
|
||||
valid_alt_heads += alternate_head
|
||||
|
||||
return sortTim(valid_alt_heads, GLOBAL_PROC_REF(cmp_text_asc))
|
||||
|
||||
/mob/living/carbon/human/proc/get_blood_color()
|
||||
var/bloodcolor = "#A10808"
|
||||
var/list/b_data = get_blood_data(get_blood_id())
|
||||
if(b_data)
|
||||
bloodcolor = b_data["blood_color"]
|
||||
return bloodcolor
|
||||
|
||||
@@ -616,11 +616,16 @@ emp_act
|
||||
visible_message("<span class='danger'>[I] embeds itself in [src]'s [L.name]!</span>","<span class='userdanger'>[I] embeds itself in your [L.name]!</span>")
|
||||
return TRUE
|
||||
|
||||
/mob/living/carbon/human/proc/bloody_hands(mob/living/source, amount = 2)
|
||||
/mob/living/carbon/human/proc/make_bloody_hands(list/blood_dna, b_color)
|
||||
if(isnull(b_color))
|
||||
b_color = "#A10808"
|
||||
if(gloves)
|
||||
gloves.add_mob_blood(source)
|
||||
gloves.add_blood(blood_dna, blood_color)
|
||||
else
|
||||
add_mob_blood(source)
|
||||
hand_blood_color = b_color
|
||||
bloody_hands = rand(2, 4)
|
||||
transfer_blood_dna(blood_dna)
|
||||
add_verb(src, /mob/living/carbon/human/proc/bloody_doodle)
|
||||
update_inv_gloves() //updates on-mob overlays for bloody hands and/or bloody gloves
|
||||
|
||||
/mob/living/carbon/human/proc/bloody_body(mob/living/source)
|
||||
@@ -657,7 +662,7 @@ emp_act
|
||||
|
||||
if(bleed_rate && ishuman(user))
|
||||
var/mob/living/carbon/human/attacker = user
|
||||
attacker.bloody_hands(src)
|
||||
attacker.make_bloody_hands(get_blood_dna_list(), get_blood_color())
|
||||
|
||||
/mob/living/carbon/human/attack_larva(mob/living/carbon/alien/larva/L)
|
||||
if(..()) //successful larva bite.
|
||||
|
||||
@@ -201,7 +201,7 @@
|
||||
L.add_splatter_floor(target_loca, shift_x = shift["x"], shift_y = shift["y"])
|
||||
if(istype(H))
|
||||
for(var/mob/living/carbon/human/M in step_over) //Bloody the mobs who're infront of the spray.
|
||||
M.bloody_hands(H)
|
||||
M.make_bloody_hands(H.get_blood_dna_list(), H.get_blood_color())
|
||||
/* Uncomment when bloody_body stops randomly not transferring blood colour.
|
||||
M.bloody_body(H) */
|
||||
else if(impact_effect_type && !hitscan)
|
||||
|
||||
@@ -109,7 +109,7 @@
|
||||
affected.fix_internal_bleeding()
|
||||
if(ishuman(user) && prob(40))
|
||||
var/mob/living/carbon/human/U = user
|
||||
U.bloody_hands(target, 0)
|
||||
U.make_bloody_hands(target.get_blood_dna_list(), target.get_blood_color())
|
||||
|
||||
return SURGERY_STEP_CONTINUE
|
||||
|
||||
|
||||
@@ -446,7 +446,7 @@
|
||||
var/mob/living/carbon/human/H = user
|
||||
switch(blood_level)
|
||||
if(SURGERY_BLOODSPREAD_HANDS)
|
||||
H.bloody_hands(target, 0)
|
||||
H.make_bloody_hands(target.get_blood_dna_list(), target.get_blood_color())
|
||||
if(SURGERY_BLOODSPREAD_FULLBODY)
|
||||
H.bloody_body(target)
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user