diff --git a/code/game/objects/effects/overlays.dm b/code/game/objects/effects/overlays.dm
index 4550693fa35..b899b6e5ba7 100644
--- a/code/game/objects/effects/overlays.dm
+++ b/code/game/objects/effects/overlays.dm
@@ -132,6 +132,25 @@
duration = 8
randomdir = 0
+/obj/effect/overlay/temp/gib_animation
+ icon = 'icons/mob/mob.dmi'
+ duration = 15
+ randomdir = 0
+
+/obj/effect/overlay/temp/gib_animation/New(loc, gib_icon)
+ icon_state = gib_icon
+ ..()
+
+/obj/effect/overlay/temp/gib_animation/animal
+ icon = 'icons/mob/animal.dmi'
+
+/obj/effect/overlay/temp/dust_animation
+ icon = 'icons/mob/mob.dmi'
+ duration = 15
+
+/obj/effect/overlay/temp/dust_animation/New(loc, dust_icon)
+ icon_state = dust_icon
+ ..()
/obj/effect/overlay/palmtree_r
name = "Palm tree"
diff --git a/code/game/objects/items/weapons/explosives.dm b/code/game/objects/items/weapons/explosives.dm
index b766085e2b9..00da8edcade 100644
--- a/code/game/objects/items/weapons/explosives.dm
+++ b/code/game/objects/items/weapons/explosives.dm
@@ -48,7 +48,7 @@
message_admins("[key_name(user)] suicided with [src.name] at ([x],[y],[z])")
sleep(10)
explode(get_turf(user))
- user.gib(no_brain = 1)
+ user.gib(1, 1)
/obj/item/weapon/c4/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/weapon/screwdriver))
diff --git a/code/game/objects/items/weapons/implants/implant_explosive.dm b/code/game/objects/items/weapons/implants/implant_explosive.dm
index b27f147292c..e3562f526c1 100644
--- a/code/game/objects/items/weapons/implants/implant_explosive.dm
+++ b/code/game/objects/items/weapons/implants/implant_explosive.dm
@@ -40,7 +40,7 @@
if(delay <= 7)
explosion(src,heavy,medium,weak,weak, flame_range = weak)
if(imp_in)
- imp_in.gib(no_brain = 1)
+ imp_in.gib(1)
qdel(src)
return
timed_explosion()
@@ -72,7 +72,7 @@
sleep(delay/4)
explosion(src,heavy,medium,weak,weak, flame_range = weak)
if(imp_in)
- imp_in.gib(no_brain = 1)
+ imp_in.gib(1)
qdel(src)
/obj/item/weapon/implant/explosive/macro
diff --git a/code/modules/admin/verbs/bluespacearty.dm b/code/modules/admin/verbs/bluespacearty.dm
index 30b2130f543..165ec9072ec 100644
--- a/code/modules/admin/verbs/bluespacearty.dm
+++ b/code/modules/admin/verbs/bluespacearty.dm
@@ -28,7 +28,7 @@
message_admins("[target.name] has been hit by Bluespace Artillery fired by [usr]")
if(target.health <= 1)
- target.gib(no_brain = 1)
+ target.gib(1, 1)
else
target.adjustBruteLoss(min(99,(target.health - 1)))
target.Stun(20)
diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm
index b8824da0bbd..9ed79ee998b 100644
--- a/code/modules/admin/verbs/randomverbs.dm
+++ b/code/modules/admin/verbs/randomverbs.dm
@@ -599,7 +599,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
if(confirm == "Yes")
M.gib()
else
- M.gib(no_brain = 1)
+ M.gib(1)
feedback_add_details("admin_verb","GIB") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/cmd_admin_gib_self()
@@ -611,7 +611,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
if (istype(mob, /mob/dead/observer)) // so they don't spam gibs everywhere
return
else
- mob.gib(no_brain = 1)
+ mob.gib(1, 1)
log_admin("[key_name(usr)] used gibself.")
message_admins("[key_name_admin(usr)] used gibself.")
diff --git a/code/modules/mob/dead/death.dm b/code/modules/mob/dead/death.dm
index bd968c6b708..7c827e55ffe 100644
--- a/code/modules/mob/dead/death.dm
+++ b/code/modules/mob/dead/death.dm
@@ -1,5 +1,5 @@
/mob/dead/dust() //ghosts can't be vaporised.
return
-/mob/dead/gib(animation = 1) //ghosts can't be gibbed.
+/mob/dead/gib() //ghosts can't be gibbed.
return
diff --git a/code/modules/mob/living/carbon/alien/death.dm b/code/modules/mob/living/carbon/alien/death.dm
index 131ba6e65e0..f5c2e9b4a02 100644
--- a/code/modules/mob/living/carbon/alien/death.dm
+++ b/code/modules/mob/living/carbon/alien/death.dm
@@ -1,17 +1,11 @@
/mob/living/carbon/alien/spawn_gibs()
xgibs(loc, viruses)
-/mob/living/carbon/alien/gib_animation(animate)
- ..(animate, "gibbed-a")
+/mob/living/carbon/alien/gib_animation()
+ new /obj/effect/overlay/temp/gib_animation(loc, "gibbed-a")
/mob/living/carbon/alien/spawn_dust()
new /obj/effect/decal/remains/xeno(loc)
-/mob/living/carbon/alien/spawn_dust()
- new /obj/effect/decal/remains/xeno(loc)
-
-/mob/living/carbon/alien/dust_animation(animate)
- ..(animate, "dust-a")
-
-/mob/living/carbon/alien/dust(var/animation = 1)
- ..()
\ No newline at end of file
+/mob/living/carbon/alien/dust_animation()
+ new /obj/effect/overlay/temp/dust_animation(loc, "dust-a")
diff --git a/code/modules/mob/living/carbon/alien/humanoid/death.dm b/code/modules/mob/living/carbon/alien/humanoid/death.dm
index bd236e1a8af..987c626f8dc 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/death.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/death.dm
@@ -9,9 +9,9 @@
visible_message("[src] lets out a waning guttural screech, green blood bubbling from its maw...")
update_canmove()
update_icons()
- status_flags |=CANPUSH
+ status_flags |= CANPUSH
- return ..(gibbed)
+ return ..()
//When the alien queen dies, all others must pay the price for letting her die.
/mob/living/carbon/alien/humanoid/royal/queen/death(gibbed)
diff --git a/code/modules/mob/living/carbon/brain/death.dm b/code/modules/mob/living/carbon/brain/death.dm
index b9672dbe833..cf5df7b526a 100644
--- a/code/modules/mob/living/carbon/brain/death.dm
+++ b/code/modules/mob/living/carbon/brain/death.dm
@@ -11,7 +11,7 @@
return ..()
-/mob/living/carbon/brain/gib(animation = 0)
+/mob/living/carbon/brain/gib()
if(container)
qdel(container)//Gets rid of the MMI if there is one
if(loc)
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index 260f981cf55..e579143f70a 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -55,23 +55,6 @@
stomach_contents.Remove(A)
src.gib()
-/mob/living/carbon/gib(animation = 1, var/no_brain = 0)
- death(1)
- for(var/obj/item/organ/internal/I in internal_organs)
- if(no_brain && istype(I, /obj/item/organ/internal/brain))
- continue
- if(I)
- I.Remove(src)
- I.loc = get_turf(src)
- I.throw_at_fast(get_edge_target_turf(src,pick(alldirs)),rand(1,3),5)
-
- for(var/mob/M in src)
- if(M in stomach_contents)
- stomach_contents.Remove(M)
- M.loc = loc
- visible_message("[M] bursts out of [src]!")
- . = ..()
-
/mob/living/carbon/electrocute_act(shock_damage, obj/source, siemens_coeff = 1, override = 0, tesla_shock = 0)
shock_damage *= siemens_coeff
diff --git a/code/modules/mob/living/carbon/death.dm b/code/modules/mob/living/carbon/death.dm
index 127aafc8f77..17b01a33957 100644
--- a/code/modules/mob/living/carbon/death.dm
+++ b/code/modules/mob/living/carbon/death.dm
@@ -4,3 +4,20 @@
med_hud_set_health()
med_hud_set_status()
..()
+
+/mob/living/carbon/gib(no_brain, no_organs)
+ for(var/mob/M in src)
+ if(M in stomach_contents)
+ stomach_contents.Remove(M)
+ M.loc = loc
+ visible_message("[M] bursts out of [src]!")
+ ..()
+
+/mob/living/carbon/spill_organs(no_brain)
+ for(var/obj/item/organ/internal/I in internal_organs)
+ if(no_brain && istype(I, /obj/item/organ/internal/brain))
+ continue
+ if(I)
+ I.Remove(src)
+ I.loc = get_turf(src)
+ I.throw_at_fast(get_edge_target_turf(src,pick(alldirs)),rand(1,3),5)
diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm
index 33ac914b274..3b8bb513a9e 100644
--- a/code/modules/mob/living/carbon/human/death.dm
+++ b/code/modules/mob/living/carbon/human/death.dm
@@ -1,11 +1,8 @@
-/mob/living/carbon/human/gib_animation(animate)
- ..(animate, "gibbed-h")
+/mob/living/carbon/human/gib_animation()
+ new /obj/effect/overlay/temp/gib_animation(loc, "gibbed-h")
-/mob/living/carbon/human/dust_animation(animate)
- ..(animate, "dust-h")
-
-/mob/living/carbon/human/dust(animation = 1)
- ..()
+/mob/living/carbon/human/dust_animation()
+ new /obj/effect/overlay/temp/dust_animation(loc, "dust-h")
/mob/living/carbon/human/spawn_gibs()
hgibs(loc, viruses, dna)
diff --git a/code/modules/mob/living/carbon/monkey/death.dm b/code/modules/mob/living/carbon/monkey/death.dm
index 7884e7064b5..5a1f10e92df 100644
--- a/code/modules/mob/living/carbon/monkey/death.dm
+++ b/code/modules/mob/living/carbon/monkey/death.dm
@@ -1,11 +1,8 @@
-/mob/living/carbon/monkey/gib_animation(animate)
- ..(animate, "gibbed-m")
+/mob/living/carbon/monkey/gib_animation()
+ new /obj/effect/overlay/temp/gib_animation(loc, "gibbed-m")
-/mob/living/carbon/monkey/dust_animation(animate)
- ..(animate, "dust-m")
-
-/mob/living/carbon/monkey/dust(var/animation = 1)
- ..()
+/mob/living/carbon/monkey/dust_animation()
+ new /obj/effect/overlay/temp/dust_animation(loc, "dust-m")
/mob/living/carbon/monkey/death(gibbed)
if(stat == DEAD)
diff --git a/code/modules/mob/living/death.dm b/code/modules/mob/living/death.dm
index 18d6cc56f2b..9597532f385 100644
--- a/code/modules/mob/living/death.dm
+++ b/code/modules/mob/living/death.dm
@@ -1,4 +1,4 @@
-/mob/living/gib(animation = 1)
+/mob/living/gib(no_brain, no_organs)
var/prev_lying = lying
if(stat != DEAD)
death(1)
@@ -6,34 +6,39 @@
if(buckled)
buckled.unbuckle_mob(src,force=1) //to update alien nest overlay, forced because we don't exist anymore
- var/atom/movable/overlay/animate = setup_animation(animation, prev_lying)
- if(animate)
- gib_animation(animate)
-
+ if(!prev_lying)
+ gib_animation()
+ if(!no_organs)
+ spill_organs(no_brain)
spawn_gibs()
+ qdel(src)
- end_animation(animate) // Will qdel(src)
+/mob/living/proc/gib_animation()
+ return
/mob/living/proc/spawn_gibs()
gibs(loc, viruses)
-/mob/living/proc/gib_animation(animate, flick_name = "gibbed")
- flick(flick_name, animate)
+/mob/living/proc/spill_organs(no_brain)
+ return
-/mob/living/dust(animation = 0)
+
+/mob/living/dust()
death(1)
- var/atom/movable/overlay/animate = setup_animation(animation, 0)
- if(animate)
- dust_animation(animate)
+ if(buckled)
+ buckled.unbuckle_mob(src,force=1)
+
+ dust_animation()
spawn_dust()
- end_animation(animate)
+ qdel(src)
+
+/mob/living/proc/dust_animation()
+ return
/mob/living/proc/spawn_dust()
new /obj/effect/decal/cleanable/ash(loc)
-/mob/living/proc/dust_animation(animate, flick_name = "")
- flick(flick_name, animate)
/mob/living/death(gibbed)
unset_machine()
@@ -57,29 +62,3 @@
update_damage_hud()
update_health_hud()
update_canmove()
-
-
-/mob/living/proc/setup_animation(animation, prev_lying)
- var/atom/movable/overlay/animate = null
- notransform = 1
- canmove = 0
- icon = null
- invisibility = 101
- alpha = 0
-
- if(!prev_lying && animation)
- animate = new(loc)
- animate.icon_state = "blank"
- animate.icon = 'icons/mob/mob.dmi'
- animate.master = src
- return animate
-
-/mob/living/proc/end_animation(animate)
- if(!animate)
- qdel(src)
- else
- spawn(15)
- if(animate)
- qdel(animate)
- if(src)
- qdel(src)
diff --git a/code/modules/mob/living/silicon/death.dm b/code/modules/mob/living/silicon/death.dm
index 4c01e8724d5..02fb54012b1 100644
--- a/code/modules/mob/living/silicon/death.dm
+++ b/code/modules/mob/living/silicon/death.dm
@@ -1,9 +1,6 @@
/mob/living/silicon/spawn_gibs()
robogibs(loc, viruses)
-/mob/living/silicon/gib(animation = 0) // Please don't remove this thinking this proc does nothing, it is changing the default value for animation.
- ..()
-
/mob/living/silicon/spawn_dust()
new /obj/effect/decal/remains/robot(loc)
diff --git a/code/modules/mob/living/silicon/robot/death.dm b/code/modules/mob/living/silicon/robot/death.dm
index e586bbd8b0e..571176ae586 100644
--- a/code/modules/mob/living/silicon/robot/death.dm
+++ b/code/modules/mob/living/silicon/robot/death.dm
@@ -1,13 +1,12 @@
-/mob/living/silicon/robot/gib(animation = 1)
- ..()
/mob/living/silicon/robot/spawn_gibs()
robogibs(loc, viruses)
-/mob/living/silicon/robot/gib_animation(animate)
- ..(animate, "gibbed-r")
+/mob/living/silicon/robot/gib_animation()
+ new /obj/effect/overlay/temp/gib_animation(loc, "gibbed-r")
-/mob/living/silicon/robot/dust(animation = 1)
+
+/mob/living/silicon/robot/dust()
if(mmi)
qdel(mmi)
..()
@@ -15,8 +14,8 @@
/mob/living/silicon/robot/spawn_dust()
new /obj/effect/decal/remains/robot(loc)
-/mob/living/silicon/robot/dust_animation(animate)
- ..(animate, "dust-r")
+/mob/living/silicon/robot/dust_animation()
+ new /obj/effect/overlay/temp/dust_animation(loc, "dust-r")
/mob/living/silicon/robot/death(gibbed)
if(stat == DEAD)
diff --git a/code/modules/mob/living/simple_animal/hostile/statue.dm b/code/modules/mob/living/simple_animal/hostile/statue.dm
index 52425659a45..42aad52c0e4 100644
--- a/code/modules/mob/living/simple_animal/hostile/statue.dm
+++ b/code/modules/mob/living/simple_animal/hostile/statue.dm
@@ -133,8 +133,8 @@
// Turn to dust when gibbed
-/mob/living/simple_animal/hostile/statue/gib(animation = 0)
- dust(animation)
+/mob/living/simple_animal/hostile/statue/gib()
+ dust()
// Stop attacking clientless mobs
diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm
index 02de34f15cd..662781f3005 100644
--- a/code/modules/mob/living/simple_animal/simple_animal.dm
+++ b/code/modules/mob/living/simple_animal/simple_animal.dm
@@ -251,15 +251,17 @@
else if(bodytemperature > maxbodytemp)
adjustBruteLoss(3)
-/mob/living/simple_animal/gib(animation = 0)
- if(icon_gib)
- flick(icon_gib, src)
+/mob/living/simple_animal/gib()
if(butcher_results)
for(var/path in butcher_results)
for(var/i = 1; i <= butcher_results[path];i++)
new path(src.loc)
..()
+/mob/living/simple_animal/gib_animation()
+ if(icon_gib)
+ new /obj/effect/overlay/temp/gib_animation/animal(loc, icon_gib)
+
/mob/living/simple_animal/blob_act()
adjustBruteLoss(20)
@@ -417,10 +419,11 @@
if(loot.len)
for(var/i in loot)
new i(loc)
- if(deathmessage && !gibbed)
- visible_message("[deathmessage]")
- else if(!del_on_death)
- visible_message("\the [src] stops moving...")
+ if(!gibbed)
+ if(deathmessage)
+ visible_message("[deathmessage]")
+ else if(!del_on_death)
+ visible_message("\the [src] stops moving...")
if(del_on_death)
ghostize()
qdel(src)