diff --git a/code/modules/mob/living/death.dm b/code/modules/mob/living/death.dm index bbd5e6e4536..4501bfb5af3 100644 --- a/code/modules/mob/living/death.dm +++ b/code/modules/mob/living/death.dm @@ -94,14 +94,20 @@ // u no we dead return TRUE -/mob/living/proc/delayed_gib() +/mob/living/proc/delayed_gib(inflate_at_end = FALSE) visible_message("[src] starts convulsing violently!", "You feel as if your body is tearing itself apart!") Weaken(30 SECONDS) do_jitter_animation(1000, -1) // jitter until they are gibbed - addtimer(CALLBACK(src, PROC_REF(gib)), rand(2 SECONDS, 10 SECONDS)) + addtimer(CALLBACK(src, inflate_at_end ? PROC_REF(quick_explode_gib) : PROC_REF(gib)), rand(2 SECONDS, 10 SECONDS)) -/mob/living/carbon/proc/inflate_gib() // Plays an animation that makes mobs appear to inflate before finally gibbing - addtimer(CALLBACK(src, PROC_REF(gib), null, null, TRUE, TRUE), 25) - var/matrix/M = matrix() +/mob/living/proc/inflate_gib() // Plays an animation that makes mobs appear to inflate before finally gibbing + addtimer(CALLBACK(src, PROC_REF(gib), null, null, TRUE, TRUE), 2.5 SECONDS) + var/matrix/M = transform M.Scale(1.8, 1.2) animate(src, time = 40, transform = M, easing = SINE_EASING) + +/mob/living/proc/quick_explode_gib() + addtimer(CALLBACK(src, PROC_REF(gib), null, null, TRUE, TRUE), 0.1 SECONDS) + var/matrix/M = transform + M.Scale(1.8, 1.2) + animate(src, time = 1, transform = M, easing = SINE_EASING) diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm index 751264e9418..5328cd1d8a3 100644 --- a/code/modules/projectiles/projectile/beams.dm +++ b/code/modules/projectiles/projectile/beams.dm @@ -172,7 +172,7 @@ if(isliving(target)) var/mob/living/L = target L.visible_message("[L] explodes!") - L.gib() + L.quick_explode_gib() /obj/item/projectile/beam/laser/detective name = "energy revolver shot" diff --git a/code/modules/reagents/chemistry/reagents/medicine.dm b/code/modules/reagents/chemistry/reagents/medicine.dm index 9e12b907659..b32311317c8 100644 --- a/code/modules/reagents/chemistry/reagents/medicine.dm +++ b/code/modules/reagents/chemistry/reagents/medicine.dm @@ -784,7 +784,7 @@ if(M.getBruteLoss() + M.getFireLoss() + M.getCloneLoss() >= 150) if(ischangeling(M)) return - M.delayed_gib() + M.delayed_gib(TRUE) return if(!M.ghost_can_reenter()) M.visible_message("[M] twitches slightly, but is otherwise unresponsive!") diff --git a/code/modules/reagents/chemistry/reagents/toxins.dm b/code/modules/reagents/chemistry/reagents/toxins.dm index 29b69f03bb1..96f0fa683b2 100644 --- a/code/modules/reagents/chemistry/reagents/toxins.dm +++ b/code/modules/reagents/chemistry/reagents/toxins.dm @@ -35,7 +35,7 @@ /datum/reagent/minttoxin/on_mob_life(mob/living/M) if(HAS_TRAIT(M, TRAIT_FAT)) - M.gib() + M.inflate_gib() return ..() /datum/reagent/slimejelly