diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 27c7a7ea92a..c4c05b35977 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -293,10 +293,22 @@ emp_act if(!(I.flags & NOBLOODY)) I.add_blood(src) - if(prob(effective_force * 2)) + var/is_sharp_weapon = is_sharp(I) + var/blood_probability = is_sharp_weapon ? effective_force * 4 : effective_force * 2 + if(prob(blood_probability)) var/turf/location = loc if(istype(location, /turf/simulated)) location.add_blood(src) + if(is_sharp_weapon) + var/turf/splatter_turf + var/list/splatter_turfs = RANGE_TURFS(2, location) - location - get_turf(user) + for(var/turf/st as anything in splatter_turfs) + if(!st.Adjacent(location)) + splatter_turfs -= st + splatter_turf = pick(splatter_turfs) + if(splatter_turf) + var/obj/effect/decal/cleanable/blood/B = blood_splatter(splatter_turf, src, TRUE, get_dir(src, splatter_turf)) + B.icon_state = pick("dir_splatter_1", "dir_splatter_2") if(ishuman(user)) var/mob/living/carbon/human/H = user if(get_dist(H, src) <= 1) //people with TK won't get smeared with blood diff --git a/code/modules/organs/blood.dm b/code/modules/organs/blood.dm index 1db75fffac1..d1d0b96eee2 100644 --- a/code/modules/organs/blood.dm +++ b/code/modules/organs/blood.dm @@ -45,7 +45,7 @@ spawn(0) for(var/i = 1 to BLOOD_SPRAY_DISTANCE) sprayloc = get_step(sprayloc, spraydir) - if(!istype(sprayloc) || sprayloc.density) + if(!istype(sprayloc) || (sprayloc.density && !iswall(sprayloc))) break var/hit_mob for(var/thing in sprayloc) @@ -78,7 +78,7 @@ drip(amt, sprayloc, spraydir) bled += amt - if(hit_mob) + if(hit_mob || iswall(sprayloc)) break return bled #undef BLOOD_SPRAY_DISTANCE diff --git a/html/changelogs/geeves-blood_splatter.yml b/html/changelogs/geeves-blood_splatter.yml new file mode 100644 index 00000000000..b88a21a0425 --- /dev/null +++ b/html/changelogs/geeves-blood_splatter.yml @@ -0,0 +1,8 @@ +author: Geeves + +delete-after: True + +changes: + - rscadd: "Attacking someone with a sharp or edged weapon now has a chance to splatter blood to any tile around them." + - tweak: "Arterial sprays can now go onto walls." + - tweak: "Sharp or edged weapons are now twice as likely to cover you in blood as an attacker." \ No newline at end of file