diff --git a/code/game/objects/items/weapons/tanks/tanks.dm b/code/game/objects/items/weapons/tanks/tanks.dm index a5a11491c32..24ab51761d4 100644 --- a/code/game/objects/items/weapons/tanks/tanks.dm +++ b/code/game/objects/items/weapons/tanks/tanks.dm @@ -115,6 +115,20 @@ qdel(src) +/obj/item/tank/suicide_act(mob/user) + var/mob/living/carbon/human/H = user + user.visible_message("[user] is putting [src]'s valve to [user.p_their()] lips! It looks like [user.p_theyre()] trying to commit suicide!") + playsound(loc, 'sound/effects/spray.ogg', 10, TRUE, -3) + + if(!QDELETED(H) && air_contents && air_contents.return_pressure() >= 1000) + var/obj/item/organ/external/head/head = H.get_organ("head") + head.disfigure() + H.inflate_gib() + return OBLITERATION + + to_chat(user, "There isn't enough pressure in [src] to commit suicide with...") + return SHAME + /obj/item/tank/deconstruct(disassembled = TRUE) if(!disassembled) var/turf/T = get_turf(src) diff --git a/code/modules/mob/living/death.dm b/code/modules/mob/living/death.dm index 41379559b23..22af245af50 100644 --- a/code/modules/mob/living/death.dm +++ b/code/modules/mob/living/death.dm @@ -101,3 +101,9 @@ Weaken(30 SECONDS) do_jitter_animation(1000, -1) // jitter until they are gibbed addtimer(CALLBACK(src, .proc/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/gib, null, null, TRUE, TRUE), 25) + var/matrix/M = matrix() + M.Scale(1.8, 1.2) + animate(src, time = 40, transform = M, easing = SINE_EASING)