mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-23 12:07:27 +01:00
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:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user