Blood now floats in zero G (#20993)

* Da Vlood

* removes_unused_icons

* Yep sprites

* fixes xeno blood and vomit

* Commit number x

* Steel Review Changes 1

* Henri Review Changes 1

* fixing vomit

🌋

* Haha haha ha ... ha

* fixing layering issueeee

* Sirryan2002 Review

THANKS

* implicit var/

* Sirryan Review 2

Electric Boogaloo

* Testmerge Update 1

gibs were still getting animated, blood drying while animated in space looked very jank.

all fixed

* unused variable

AHSDHASOIADGSOISA

* Testmerge Update 2

tracks floating annoyingly

* Improvements

-blood globules will now continue with the inertia of their emittor, instead of towards wherever they were facing
-drops will now have visible sprites after splatting
[running animate() still sometimes doesnt stop the animation annoyingly]

* errors

* Sirryan Review 3
This commit is contained in:
Kugamo
2023-06-14 21:17:08 -05:00
committed by GitHub
parent 3508ae1724
commit 094ca3c733
12 changed files with 263 additions and 24 deletions
@@ -495,7 +495,7 @@ emp_act
bloody = 1
var/turf/location = loc
if(issimulatedturf(location))
add_splatter_floor(location)
add_splatter_floor(location, emittor_intertia = inertia_next_move > world.time ? last_movement_dir : null)
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
+2 -2
View File
@@ -1235,11 +1235,11 @@ GLOBAL_LIST_INIT(slot_equipment_priority, list( \
if(green)
if(!no_text)
visible_message("<span class='warning'>[src] vomits up some green goo!</span>","<span class='warning'>You vomit up some green goo!</span>")
location.add_vomit_floor(FALSE, TRUE)
add_vomit_floor(FALSE, TRUE)
else
if(!no_text)
visible_message("<span class='warning'>[src] pukes all over [p_themselves()]!</span>","<span class='warning'>You puke all over yourself!</span>")
location.add_vomit_floor(TRUE)
add_vomit_floor(TRUE)
/mob/proc/AddSpell(obj/effect/proc_holder/spell/S)
mob_spell_list += S
+2
View File
@@ -156,6 +156,8 @@
direct = newdir
n = get_step(mob, direct)
mob.last_movement_dir = direct
var/prev_pulling_loc = null
if(mob.pulling)
prev_pulling_loc = mob.pulling.loc
+3
View File
@@ -187,6 +187,9 @@
var/last_movement = -100 // Last world.time the mob actually moved of its own accord.
/// The direction they last moved
var/last_movement_dir
var/last_logout = 0
var/resize = 1 //Badminnery resize
+16 -7
View File
@@ -87,9 +87,9 @@
blood_volume = max(blood_volume - amt, 0)
if(isturf(loc)) //Blood loss still happens in locker, floor stays clean
if(amt >= 10)
add_splatter_floor(loc)
add_splatter_floor(loc, emittor_intertia = inertia_next_move > world.time ? last_movement_dir : null)
else
add_splatter_floor(loc, 1)
add_splatter_floor(loc, 1, emittor_intertia = inertia_next_move > world.time ? last_movement_dir : null)
/mob/living/carbon/human/bleed(amt)
amt *= physiology.bleed_mod
@@ -108,7 +108,7 @@
blood_volume = max(blood_volume - amt, 0)
if(prob(10 * amt)) // +5% chance per internal bleeding site that we'll cough up blood on a given tick.
custom_emote(EMOTE_VISIBLE, "coughs up blood!")
add_splatter_floor(loc, 1)
add_splatter_floor(loc, 1, emittor_intertia = inertia_next_move > world.time ? last_movement_dir : null)
return 1
else if(amt >= 1 && prob(5 * amt)) // +2.5% chance per internal bleeding site that we'll cough up blood on a given tick. Must be bleeding internally in more than one place to have a chance at this.
vomit(0, 1)
@@ -256,7 +256,7 @@
return list("O-", "O+")
//to add a splatter of blood or other mob liquid.
/mob/living/proc/add_splatter_floor(turf/T, small_drip, shift_x, shift_y)
/mob/living/proc/add_splatter_floor(turf/T, small_drip, shift_x, shift_y, emittor_intertia)
if((get_blood_id() != "blood") && (get_blood_id() != "slimejelly"))//is it blood or welding fuel?
return
if(!T)
@@ -269,9 +269,14 @@
// Only a certain number of drips (or one large splatter) can be on a given turf.
var/obj/effect/decal/cleanable/blood/drip/drop = locate() in T
if(drop)
if(emittor_intertia)
drop.newtonian_move(emittor_intertia)
if(drop.drips < 5)
drop.drips++
drop.overlays |= pick(drop.random_icon_states)
var/image/I = image(drop.icon, drop.random_icon_states)
I.icon += drop.basecolor
drop.overlays |= I
drop.transfer_mob_blood_dna(src)
drop.basecolor = b_data["blood_color"]
drop.update_icon()
@@ -284,6 +289,8 @@
drop.transfer_mob_blood_dna(src)
drop.basecolor = b_data["blood_color"]
drop.update_icon()
if(emittor_intertia)
drop.newtonian_move(emittor_intertia)
return
// Find a blood decal or create a new one.
@@ -305,12 +312,14 @@
if(shift_x || shift_y)
B.off_floor = TRUE
B.layer = BELOW_MOB_LAYER //So the blood lands ontop of things like posters, windows, etc.
if(emittor_intertia)
B.newtonian_move(emittor_intertia)
/mob/living/carbon/human/add_splatter_floor(turf/T, small_drip, shift_x, shift_y)
/mob/living/carbon/human/add_splatter_floor(turf/T, small_drip, shift_x, shift_y, emittor_intertia)
if(!(NO_BLOOD in dna.species.species_traits))
..()
/mob/living/carbon/alien/add_splatter_floor(turf/T, small_drip, shift_x, shift_y)
/mob/living/carbon/alien/add_splatter_floor(turf/T, small_drip, shift_x, shift_y, emittor_intertia)
if(!T)
T = get_turf(src)