diff --git a/code/__DEFINES/blood.dm b/code/__DEFINES/blood.dm
index 3bf4af65969..2c8576a2eda 100644
--- a/code/__DEFINES/blood.dm
+++ b/code/__DEFINES/blood.dm
@@ -19,3 +19,16 @@
#define BLOOD_STATE_OIL "oil"
/// No blood is present
#define BLOOD_STATE_NOT_BLOODY "no blood whatsoever"
+
+// Bitflags for mob dismemberment and gibbing
+/// Mobs will drop a brain
+#define DROP_BRAIN (1<<0)
+/// Mobs will drop organs
+#define DROP_ORGANS (1<<1)
+/// Mobs will drop bodyparts (arms, legs, etc.)
+#define DROP_BODYPARTS (1<<2)
+/// Mobs will drop items
+#define DROP_ITEMS (1<<3)
+
+/// Mobs will drop everything
+#define DROP_ALL_REMAINS (DROP_BRAIN | DROP_ORGANS | DROP_BODYPARTS | DROP_ITEMS)
diff --git a/code/__DEFINES/dcs/signals/signals_mob/signals_mob_living.dm b/code/__DEFINES/dcs/signals/signals_mob/signals_mob_living.dm
index f697566671e..d16adbe07a7 100644
--- a/code/__DEFINES/dcs/signals/signals_mob/signals_mob_living.dm
+++ b/code/__DEFINES/dcs/signals/signals_mob/signals_mob_living.dm
@@ -64,7 +64,7 @@
///from base of mob/living/death(): (gibbed)
#define COMSIG_LIVING_DEATH "living_death"
-///from base of mob/living/gib(): (no_brain, no_organs, no_bodyparts)
+///from base of mob/living/gib(): (drop_bitflags)
///Note that it is fired regardless of whether the mob was dead beforehand or not.
#define COMSIG_LIVING_GIBBED "living_gibbed"
diff --git a/code/datums/components/butchering.dm b/code/datums/components/butchering.dm
index 97bb2a30ad5..689de30db37 100644
--- a/code/datums/components/butchering.dm
+++ b/code/datums/components/butchering.dm
@@ -167,7 +167,7 @@
butcher_callback?.Invoke(butcher, target)
target.harvest(butcher)
target.log_message("has been butchered by [key_name(butcher)]", LOG_ATTACK)
- target.gib(FALSE, FALSE, TRUE)
+ target.gib(DROP_BRAIN|DROP_ORGANS)
///Enables the butchering mechanic for the mob who has equipped us.
/datum/component/butchering/proc/enable_butchering(datum/source)
diff --git a/code/datums/components/death_linked.dm b/code/datums/components/death_linked.dm
index 59d2ce5e855..c20c8100195 100644
--- a/code/datums/components/death_linked.dm
+++ b/code/datums/components/death_linked.dm
@@ -27,4 +27,4 @@
/datum/component/death_linked/proc/on_death(mob/living/target, gibbed)
SIGNAL_HANDLER
var/mob/living/linked_mob_resolved = linked_mob?.resolve()
- linked_mob_resolved?.gib()
+ linked_mob_resolved?.gib(DROP_ALL_REMAINS)
diff --git a/code/datums/components/omen.dm b/code/datums/components/omen.dm
index 4f3b17a7473..f499d22968d 100644
--- a/code/datums/components/omen.dm
+++ b/code/datums/components/omen.dm
@@ -238,7 +238,7 @@
return ..()
death_explode(our_guy)
- our_guy.gib()
+ our_guy.gib(DROP_ALL_REMAINS)
/**
* The quirk omen. Permanent.
@@ -259,7 +259,7 @@
/datum/component/omen/quirk/check_death(mob/living/our_guy)
if(!iscarbon(our_guy))
- our_guy.gib()
+ our_guy.gib(DROP_ALL_REMAINS)
return
// Don't explode if buckled to a stasis bed
@@ -270,7 +270,7 @@
death_explode(our_guy)
var/mob/living/carbon/player = our_guy
- player.spread_bodyparts(skip_head = TRUE)
+ player.spread_bodyparts()
player.spawn_gibs()
return
diff --git a/code/datums/components/squashable.dm b/code/datums/components/squashable.dm
index 5fc489873bf..8174127aeb3 100644
--- a/code/datums/components/squashable.dm
+++ b/code/datums/components/squashable.dm
@@ -72,7 +72,7 @@
/datum/component/squashable/proc/Squish(mob/living/target)
if(squash_flags & SQUASHED_SHOULD_BE_GIBBED)
- target.gib()
+ target.gib(DROP_ALL_REMAINS)
else
target.adjustBruteLoss(squash_damage)
diff --git a/code/datums/components/stationstuck.dm b/code/datums/components/stationstuck.dm
index 63a1dcabbbd..5634186f04e 100644
--- a/code/datums/components/stationstuck.dm
+++ b/code/datums/components/stationstuck.dm
@@ -49,7 +49,7 @@ It has a punishment variable that is what happens to the parent when they leave
escapee.death()
if(PUNISHMENT_GIB)
escapee.investigate_log("has been gibbed by stationstuck component.", INVESTIGATE_DEATHS)
- escapee.gib()
+ escapee.gib(DROP_ALL_REMAINS)
if(PUNISHMENT_TELEPORT)
var/targetturf = find_safe_turf(stuck_zlevel)
if(!targetturf)
diff --git a/code/datums/diseases/gbs.dm b/code/datums/diseases/gbs.dm
index 22f84cf73a1..abf2116a92f 100644
--- a/code/datums/diseases/gbs.dm
+++ b/code/datums/diseases/gbs.dm
@@ -30,5 +30,5 @@
to_chat(affected_mob, span_userdanger("Your body feels as if it's trying to rip itself apart!"))
if(SPT_PROB(30, seconds_per_tick))
affected_mob.investigate_log("has been gibbed by GBS.", INVESTIGATE_DEATHS)
- affected_mob.gib()
+ affected_mob.gib(DROP_ALL_REMAINS)
return FALSE
diff --git a/code/datums/dna.dm b/code/datums/dna.dm
index 1447224543d..599bc9ce1b2 100644
--- a/code/datums/dna.dm
+++ b/code/datums/dna.dm
@@ -893,7 +893,7 @@ GLOBAL_LIST_INIT(total_uf_len_by_block, populate_total_uf_len_by_block())
switch(rand(0,6))
if(0)
investigate_log("has been gibbed by DNA instability.", INVESTIGATE_DEATHS)
- gib()
+ gib(DROP_ALL_REMAINS)
if(1)
investigate_log("has been dusted by DNA instability.", INVESTIGATE_DEATHS)
dust()
@@ -909,7 +909,7 @@ GLOBAL_LIST_INIT(total_uf_len_by_block, populate_total_uf_len_by_block())
BP.dismember()
else
investigate_log("has been gibbed by DNA instability.", INVESTIGATE_DEATHS)
- gib()
+ gib(DROP_ALL_REMAINS)
else
set_species(/datum/species/dullahan)
if(4)
diff --git a/code/datums/martial/plasma_fist.dm b/code/datums/martial/plasma_fist.dm
index ed8ac5fe812..5ebc5ce45fc 100644
--- a/code/datums/martial/plasma_fist.dm
+++ b/code/datums/martial/plasma_fist.dm
@@ -68,7 +68,7 @@
log_combat(attacker, defender, "gibbed (Plasma Fist)")
var/turf/Dturf = get_turf(defender)
defender.investigate_log("has been gibbed by plasma fist.", INVESTIGATE_DEATHS)
- defender.gib()
+ defender.gib(DROP_ALL_REMAINS)
if(nobomb)
return
if(!hasclient)
diff --git a/code/datums/mutations/body.dm b/code/datums/mutations/body.dm
index 8800969c685..30be64e13f4 100644
--- a/code/datums/mutations/body.dm
+++ b/code/datums/mutations/body.dm
@@ -484,7 +484,7 @@
to_chat(borgo, span_userdanger("Your sensors are disabled by a shower of blood!"))
borgo.Paralyze(6 SECONDS)
owner.investigate_log("has been gibbed by the martyrdom mutation.", INVESTIGATE_DEATHS)
- owner.gib()
+ owner.gib(DROP_ALL_REMAINS)
/datum/mutation/human/headless
name = "H.A.R.S."
diff --git a/code/datums/status_effects/debuffs/cursed.dm b/code/datums/status_effects/debuffs/cursed.dm
index 285fb86348e..8d331bbe90a 100644
--- a/code/datums/status_effects/debuffs/cursed.dm
+++ b/code/datums/status_effects/debuffs/cursed.dm
@@ -102,7 +102,7 @@
to_chat(owner, span_userdanger("Why couldn't I get one more try?!"))
owner.investigate_log("has been gibbed by the cursed status effect after accumulating [curse_count] curses.", INVESTIGATE_DEATHS)
- owner.gib()
+ owner.gib(DROP_ALL_REMAINS)
qdel(src)
return
diff --git a/code/datums/status_effects/debuffs/debuffs.dm b/code/datums/status_effects/debuffs/debuffs.dm
index bb63b177bb5..44ad9313c8f 100644
--- a/code/datums/status_effects/debuffs/debuffs.dm
+++ b/code/datums/status_effects/debuffs/debuffs.dm
@@ -691,7 +691,7 @@
/datum/status_effect/dna_melt/on_remove()
if(!ishuman(owner))
- owner.gib() //fuck you in particular
+ owner.gib(DROP_ALL_REMAINS) //fuck you in particular
return
var/mob/living/carbon/human/H = owner
INVOKE_ASYNC(H, TYPE_PROC_REF(/mob/living/carbon/human, something_horrible), kill_either_way)
diff --git a/code/datums/storage/subtypes/bag_of_holding.dm b/code/datums/storage/subtypes/bag_of_holding.dm
index 9176588b5fc..9e3a486cdcd 100644
--- a/code/datums/storage/subtypes/bag_of_holding.dm
+++ b/code/datums/storage/subtypes/bag_of_holding.dm
@@ -32,6 +32,6 @@
user.log_message("detonated a bag of holding at [loc_name(loccheck)].", LOG_ATTACK, color="red")
user.investigate_log("has been gibbed by a bag of holding recursive insertion.", INVESTIGATE_DEATHS)
- user.gib(TRUE, TRUE, TRUE)
+ user.gib()
new/obj/boh_tear(loccheck)
qdel(resolve_parent)
diff --git a/code/game/machinery/computer/arcade/arcade.dm b/code/game/machinery/computer/arcade/arcade.dm
index 28034872289..58a7280e864 100644
--- a/code/game/machinery/computer/arcade/arcade.dm
+++ b/code/game/machinery/computer/arcade/arcade.dm
@@ -582,7 +582,7 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list(
var/mob/living/living_user = user
if (istype(living_user))
living_user.investigate_log("has been gibbed by an emagged Orion Trail game.", INVESTIGATE_DEATHS)
- living_user.gib()
+ living_user.gib(DROP_ALL_REMAINS)
SSblackbox.record_feedback("nested tally", "arcade_results", 1, list("loss", "hp", (obj_flags & EMAGGED ? "emagged":"normal")))
user.lost_game()
diff --git a/code/game/machinery/shieldgen.dm b/code/game/machinery/shieldgen.dm
index e5a387d4e59..adb1c27ce81 100644
--- a/code/game/machinery/shieldgen.dm
+++ b/code/game/machinery/shieldgen.dm
@@ -504,7 +504,7 @@
for(var/mob/living/L in get_turf(src))
visible_message(span_danger("\The [src] is suddenly occupying the same space as \the [L]!"))
L.investigate_log("has been gibbed by [src].", INVESTIGATE_DEATHS)
- L.gib()
+ L.gib(DROP_ALL_REMAINS)
RegisterSignal(src, COMSIG_ATOM_SINGULARITY_TRY_MOVE, PROC_REF(block_singularity))
/obj/machinery/shieldwall/Destroy()
diff --git a/code/game/objects/items/debug_items.dm b/code/game/objects/items/debug_items.dm
index 68ae291e736..e2febe30fcf 100644
--- a/code/game/objects/items/debug_items.dm
+++ b/code/game/objects/items/debug_items.dm
@@ -163,7 +163,7 @@
playsound(src, 'sound/voice/borg_deathsound.ogg')
sleep(3 SECONDS)
living_user.investigate_log("has been gibbed by [src].", INVESTIGATE_DEATHS)
- living_user.gib()
+ living_user.gib(DROP_ALL_REMAINS)
return
var/turf/loc_turf = get_turf(src)
for(var/spawn_atom in (choice == "No" ? typesof(path) : subtypesof(path)))
diff --git a/code/game/objects/items/food/monkeycube.dm b/code/game/objects/items/food/monkeycube.dm
index 5cf9db79fd0..0013fbcdadd 100644
--- a/code/game/objects/items/food/monkeycube.dm
+++ b/code/game/objects/items/food/monkeycube.dm
@@ -48,7 +48,7 @@
return
Expand()
user.visible_message(span_danger("[user]'s torso bursts open as a primate emerges!"))
- user.gib(null, TRUE, null, TRUE)
+ user.gib(DROP_BRAIN|DROP_BODYPARTS|DROP_ITEMS) // just remove the organs
/obj/item/food/monkeycube/syndicate
faction = list(FACTION_NEUTRAL, ROLE_SYNDICATE)
diff --git a/code/game/objects/items/food/pizza.dm b/code/game/objects/items/food/pizza.dm
index fdbb1e33c87..b93cd7ed721 100644
--- a/code/game/objects/items/food/pizza.dm
+++ b/code/game/objects/items/food/pizza.dm
@@ -389,7 +389,7 @@
if(istype(item, /obj/item/food/pineappleslice))
to_chat(user, "If you want something crazy like pineapple, I'll kill you.") //this is in bigger text because it's hard to spam something that gibs you, and so that you're perfectly aware of the reason why you died
user.investigate_log("has been gibbed by putting pineapple on an arnold pizza.", INVESTIGATE_DEATHS)
- user.gib() //if you want something crazy like pineapple, i'll kill you
+ user.gib(DROP_ALL_REMAINS) //if you want something crazy like pineapple, i'll kill you
else if(istype(item, /obj/item/food/grown/mushroom) && iscarbon(user))
to_chat(user, span_userdanger("So, if you want mushroom, shut up.")) //not as large as the pineapple text, because you could in theory spam it
var/mob/living/carbon/shutup = user
diff --git a/code/game/objects/items/food/sandwichtoast.dm b/code/game/objects/items/food/sandwichtoast.dm
index fec714ad850..8b91b04621e 100644
--- a/code/game/objects/items/food/sandwichtoast.dm
+++ b/code/game/objects/items/food/sandwichtoast.dm
@@ -302,5 +302,5 @@
/obj/item/food/sandwich/death/suicide_act(mob/living/user)
user.visible_message(span_suicide("[user] starts to shove [src] down [user.p_their()] throat the wrong way. It looks like [user.p_theyre()] trying to commit suicide!"))
qdel(src)
- user.gib(TRUE, TRUE, TRUE)
+ user.gib()
return MANUAL_SUICIDE
diff --git a/code/game/objects/items/grenades/plastic.dm b/code/game/objects/items/grenades/plastic.dm
index 5902298032c..d5f3b0dec9d 100644
--- a/code/game/objects/items/grenades/plastic.dm
+++ b/code/game/objects/items/grenades/plastic.dm
@@ -161,7 +161,7 @@
user.visible_message(span_suicide("[user] activates [src] and holds it above [user.p_their()] head! It looks like [user.p_theyre()] going out with a bang!"))
shout_syndicate_crap(user)
explosion(user, heavy_impact_range = 2, explosion_cause = src) //Cheap explosion imitation because putting detonate() here causes runtimes
- user.gib(1, 1)
+ user.gib(DROP_BODYPARTS)
qdel(src)
// X4 is an upgraded directional variant of c4 which is relatively safe to be standing next to. And much less safe to be standing on the other side of.
diff --git a/code/game/objects/items/implants/implant_explosive.dm b/code/game/objects/items/implants/implant_explosive.dm
index 70471a8e99a..c9f961b594e 100644
--- a/code/game/objects/items/implants/implant_explosive.dm
+++ b/code/game/objects/items/implants/implant_explosive.dm
@@ -166,7 +166,7 @@
explosion(src, devastation_range = explosion_devastate, heavy_impact_range = explosion_heavy, light_impact_range = explosion_light, flame_range = explosion_light, flash_range = explosion_light, explosion_cause = src)
if(imp_in)
imp_in.investigate_log("has been gibbed by an explosive implant.", INVESTIGATE_DEATHS)
- imp_in.gib(TRUE)
+ imp_in.gib(DROP_ORGANS|DROP_BODYPARTS)
qdel(src)
///Macrobomb has the strength and delay of 10 microbombs
diff --git a/code/game/objects/items/manuals.dm b/code/game/objects/items/manuals.dm
index c7096f82fbe..ffbeea5975c 100644
--- a/code/game/objects/items/manuals.dm
+++ b/code/game/objects/items/manuals.dm
@@ -431,9 +431,10 @@
H.gib_animation()
sleep(0.3 SECONDS)
H.adjustBruteLoss(1000) //to make the body super-bloody
+ // if we use gib() then the body gets deleted
H.spawn_gibs()
- H.spill_organs()
- H.spread_bodyparts()
+ H.spill_organs(DROP_ALL_REMAINS)
+ H.spread_bodyparts(DROP_BRAIN)
return BRUTELOSS
/obj/item/book/manual/wiki/plumbing
diff --git a/code/game/objects/items/rcd/RCD.dm b/code/game/objects/items/rcd/RCD.dm
index bf6f5c2ab1f..27c04aa7479 100644
--- a/code/game/objects/items/rcd/RCD.dm
+++ b/code/game/objects/items/rcd/RCD.dm
@@ -259,7 +259,7 @@ GLOBAL_VAR_INIT(icon_holographic_window, init_holographic_window())
useResource(16, user)
activate()
playsound(loc, 'sound/machines/click.ogg', 50, 1)
- user.gib()
+ user.gib(DROP_ALL_REMAINS)
return MANUAL_SUICIDE
user.visible_message(span_suicide("[user] pulls the trigger... But there is not enough ammo!"))
diff --git a/code/game/objects/items/skub.dm b/code/game/objects/items/skub.dm
index 7e9cd381e33..12e6da344d0 100644
--- a/code/game/objects/items/skub.dm
+++ b/code/game/objects/items/skub.dm
@@ -13,6 +13,6 @@
/obj/item/skub/suicide_act(mob/living/user)
user.visible_message(span_suicide("[user] has declared themself as anti-skub! The skub tears them apart!"))
- user.gib()
+ user.gib(DROP_ALL_REMAINS)
playsound(src, 'sound/items/eatfood.ogg', 50, TRUE, -1)
return MANUAL_SUICIDE
diff --git a/code/game/objects/items/spear.dm b/code/game/objects/items/spear.dm
index b1702aaf50c..5590bfd3c2f 100644
--- a/code/game/objects/items/spear.dm
+++ b/code/game/objects/items/spear.dm
@@ -152,7 +152,7 @@
user.say("[war_cry]", forced="spear warcry")
explosive.forceMove(user)
explosive.detonate()
- user.gib()
+ user.gib(DROP_ALL_REMAINS)
qdel(src)
return BRUTELOSS
diff --git a/code/game/objects/items/teleportation.dm b/code/game/objects/items/teleportation.dm
index 97bbb8f3887..e859938333e 100644
--- a/code/game/objects/items/teleportation.dm
+++ b/code/game/objects/items/teleportation.dm
@@ -484,7 +484,7 @@
destination.ex_act(EXPLODE_HEAVY)
victim.unequip_everything()
victim.investigate_log("has been gibbed by [src].", INVESTIGATE_DEATHS)
- victim.gib()
+ victim.gib(DROP_ALL_REMAINS)
///Damage and stun all mobs in fragging_location turf, called after a teleport
/obj/item/syndicate_teleporter/proc/telefrag(turf/fragging_location, mob/user) // Don't let this gib. Never let this gib.
diff --git a/code/game/objects/items/weaponry.dm b/code/game/objects/items/weaponry.dm
index 21fc15572bf..8c949b36a79 100644
--- a/code/game/objects/items/weaponry.dm
+++ b/code/game/objects/items/weaponry.dm
@@ -922,7 +922,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
if(isliving(target))
var/mob/living/bug = target
bug.investigate_log("has been splatted by a flyswatter.", INVESTIGATE_DEATHS)
- bug.gib()
+ bug.gib(DROP_ALL_REMAINS)
else
qdel(target)
return
@@ -1099,7 +1099,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
if(living_target.stat == DEAD && prob(force*damage_mod*0.5))
living_target.visible_message(span_danger("[living_target] explodes in a shower of gore!"), blind_message = span_hear("You hear organic matter ripping and tearing!"))
living_target.investigate_log("has been gibbed by [src].", INVESTIGATE_DEATHS)
- living_target.gib()
+ living_target.gib(DROP_ALL_REMAINS)
log_combat(user, living_target, "gibbed", src)
else if(target.uses_integrity)
target.take_damage(force*damage_mod*3, BRUTE, MELEE, FALSE, null, 50)
diff --git a/code/game/objects/structures/divine.dm b/code/game/objects/structures/divine.dm
index cda00d98d0b..ef9f650e42a 100644
--- a/code/game/objects/structures/divine.dm
+++ b/code/game/objects/structures/divine.dm
@@ -18,7 +18,7 @@
return
to_chat(user, span_notice("Invoking the sacred ritual, you sacrifice [L]."))
L.investigate_log("has been sacrificially gibbed on an altar.", INVESTIGATE_DEATHS)
- L.gib()
+ L.gib(DROP_ALL_REMAINS)
message_admins("[ADMIN_LOOKUPFLW(user)] has sacrificed [key_name_admin(L)] on the sacrificial altar at [AREACOORD(src)].")
/obj/structure/healingfountain
diff --git a/code/modules/admin/smites/bsa.dm b/code/modules/admin/smites/bsa.dm
index cf0399acf26..bdf5f9e37b1 100644
--- a/code/modules/admin/smites/bsa.dm
+++ b/code/modules/admin/smites/bsa.dm
@@ -20,10 +20,7 @@
target_turf.break_tile()
if (target.health <= 1)
- target.gib(
- /* no_brain = */ TRUE,
- /* no_organs = */ TRUE,
- )
+ target.gib(DROP_BODYPARTS)
else
target.adjustBruteLoss(min(BSA_MAX_DAMAGE, target.health - 1))
target.Paralyze(BSA_PARALYZE_TIME)
diff --git a/code/modules/admin/smites/gib.dm b/code/modules/admin/smites/gib.dm
index 471479e7645..4c7c4324823 100644
--- a/code/modules/admin/smites/gib.dm
+++ b/code/modules/admin/smites/gib.dm
@@ -4,4 +4,4 @@
/datum/smite/gib/effect(client/user, mob/living/target)
. = ..()
- target.gib(/* no_brain = */ FALSE)
+ target.gib(DROP_ORGANS|DROP_BODYPARTS)
diff --git a/code/modules/admin/smites/puzzgrid.dm b/code/modules/admin/smites/puzzgrid.dm
index 481f85a191f..fe5f88d6a5f 100644
--- a/code/modules/admin/smites/puzzgrid.dm
+++ b/code/modules/admin/smites/puzzgrid.dm
@@ -91,7 +91,7 @@
span_bolddanger("You were unable to free [victim] from their fiendish prison, leaving them as nothing more than a smattering of mush!"),
span_bolddanger("Your compatriates were unable to free you from your fiendish prison, leaving you as nothing more than a smattering of mush!"),
)
- victim.gib()
+ victim.gib(DROP_ALL_REMAINS)
victim = null
qdel(src)
diff --git a/code/modules/admin/verbs/adminfun.dm b/code/modules/admin/verbs/adminfun.dm
index b1e0327510a..f51a922e419 100644
--- a/code/modules/admin/verbs/adminfun.dm
+++ b/code/modules/admin/verbs/adminfun.dm
@@ -78,9 +78,9 @@
if (istype(living_victim))
living_victim.investigate_log("has been gibbed by an admin.", INVESTIGATE_DEATHS)
if(confirm == "Yes")
- living_victim.gib()
+ living_victim.gib(DROP_ALL_REMAINS)
else
- living_victim.gib(TRUE)
+ living_victim.gib(DROP_ORGANS|DROP_BODYPARTS)
SSblackbox.record_feedback("tally", "admin_verb", 1, "Gib") // If you are copy-pasting this, ensure the 4th parameter is unique to the new proc!
@@ -97,7 +97,7 @@
var/mob/living/ourself = mob
if (istype(ourself))
- ourself.gib(TRUE, TRUE, TRUE)
+ ourself.gib()
/client/proc/everyone_random()
set category = "Admin.Fun"
diff --git a/code/modules/antagonists/changeling/headslug_eggs.dm b/code/modules/antagonists/changeling/headslug_eggs.dm
index 08733a7e6af..e4327aa3ed1 100644
--- a/code/modules/antagonists/changeling/headslug_eggs.dm
+++ b/code/modules/antagonists/changeling/headslug_eggs.dm
@@ -37,7 +37,7 @@
changeling_datum.regain_powers()
owner.investigate_log("has been gibbed by a changeling egg burst.", INVESTIGATE_DEATHS)
- owner.gib()
+ owner.gib(DROP_ALL_REMAINS)
qdel(src)
#undef EGG_INCUBATION_TIME
diff --git a/code/modules/antagonists/changeling/powers/headcrab.dm b/code/modules/antagonists/changeling/powers/headcrab.dm
index 7daebc4cfb2..f608d1620b8 100644
--- a/code/modules/antagonists/changeling/powers/headcrab.dm
+++ b/code/modules/antagonists/changeling/powers/headcrab.dm
@@ -35,7 +35,7 @@
user.transfer_observers_to(user_turf) // user is about to be deleted, store orbiters on the turf
if(user.stat != DEAD)
user.investigate_log("has been gibbed by headslug burst.", INVESTIGATE_DEATHS)
- user.gib()
+ user.gib(DROP_ALL_REMAINS)
. = TRUE
addtimer(CALLBACK(src, PROC_REF(spawn_headcrab), stored_mind, user_turf, organs), 1 SECONDS)
diff --git a/code/modules/antagonists/cult/runes.dm b/code/modules/antagonists/cult/runes.dm
index de8a26187ae..30cb3d4467c 100644
--- a/code/modules/antagonists/cult/runes.dm
+++ b/code/modules/antagonists/cult/runes.dm
@@ -370,7 +370,7 @@ structure_check() searches for nearby cultist structures required for the invoca
if(sacrificial)
playsound(sacrificial, 'sound/magic/disintegrate.ogg', 100, TRUE)
sacrificial.investigate_log("has been sacrificially gibbed by the cult.", INVESTIGATE_DEATHS)
- sacrificial.gib()
+ sacrificial.gib(DROP_ALL_REMAINS)
return TRUE
/obj/effect/rune/empower
@@ -946,8 +946,8 @@ structure_check() searches for nearby cultist structures required for the invoca
affecting = null
rune_in_use = FALSE
-/mob/living/carbon/human/cult_ghost/spill_organs(no_brain, no_organs, no_bodyparts) //cult ghosts never drop a brain
- no_brain = TRUE
+/mob/living/carbon/human/cult_ghost/spill_organs(drop_bitflags=NONE)
+ drop_bitflags &= ~DROP_BRAIN //cult ghosts never drop a brain
. = ..()
/mob/living/carbon/human/cult_ghost/get_organs_for_zone(zone, include_children)
diff --git a/code/modules/antagonists/heretic/heretic_knowledge.dm b/code/modules/antagonists/heretic/heretic_knowledge.dm
index ea22955d83e..260f56540d0 100644
--- a/code/modules/antagonists/heretic/heretic_knowledge.dm
+++ b/code/modules/antagonists/heretic/heretic_knowledge.dm
@@ -733,6 +733,6 @@
/datum/heretic_knowledge/ultimate/cleanup_atoms(list/selected_atoms)
for(var/mob/living/carbon/human/sacrifice in selected_atoms)
selected_atoms -= sacrifice
- sacrifice.gib()
+ sacrifice.gib(DROP_ALL_REMAINS)
return ..()
diff --git a/code/modules/antagonists/heretic/influences.dm b/code/modules/antagonists/heretic/influences.dm
index baf33b9f9bb..9ae5cb0d2f0 100644
--- a/code/modules/antagonists/heretic/influences.dm
+++ b/code/modules/antagonists/heretic/influences.dm
@@ -174,7 +174,7 @@
head.dismember()
qdel(head)
else
- human_user.gib()
+ human_user.gib(DROP_ALL_REMAINS)
human_user.investigate_log("has died from using telekinesis on a heretic influence.", INVESTIGATE_DEATHS)
var/datum/effect_system/reagents_explosion/explosion = new()
explosion.set_up(1, get_turf(human_user), TRUE, 0)
diff --git a/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_knowledge.dm b/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_knowledge.dm
index 3e37c173923..e2887d73757 100644
--- a/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_knowledge.dm
+++ b/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_knowledge.dm
@@ -492,7 +492,7 @@
/datum/heretic_knowledge/hunt_and_sacrifice/proc/disembowel_target(mob/living/carbon/human/sac_target)
if(heretic_mind)
log_combat(heretic_mind.current, sac_target, "disemboweled via sacrifice")
- sac_target.spill_organs()
+ sac_target.spill_organs(DROP_ALL_REMAINS)
sac_target.apply_damage(250, BRUTE)
if(sac_target.stat != DEAD)
sac_target.investigate_log("has been killed by heretic sacrifice.", INVESTIGATE_DEATHS)
diff --git a/code/modules/antagonists/nukeop/equipment/nuclear_bomb/_nuclear_bomb.dm b/code/modules/antagonists/nukeop/equipment/nuclear_bomb/_nuclear_bomb.dm
index 2436898eefa..77f3bd56690 100644
--- a/code/modules/antagonists/nukeop/equipment/nuclear_bomb/_nuclear_bomb.dm
+++ b/code/modules/antagonists/nukeop/equipment/nuclear_bomb/_nuclear_bomb.dm
@@ -643,7 +643,7 @@ GLOBAL_VAR(station_nuke_source)
to_chat(gibbed, span_userdanger("You are shredded to atoms by [source]!"))
gibbed.investigate_log("has been gibbed by a nuclear blast.", INVESTIGATE_DEATHS)
- gibbed.gib()
+ gibbed.gib(DROP_ALL_REMAINS)
return TRUE
/**
diff --git a/code/modules/antagonists/wizard/grand_ritual/finales/armageddon.dm b/code/modules/antagonists/wizard/grand_ritual/finales/armageddon.dm
index 876f2475d55..c4bba539c35 100644
--- a/code/modules/antagonists/wizard/grand_ritual/finales/armageddon.dm
+++ b/code/modules/antagonists/wizard/grand_ritual/finales/armageddon.dm
@@ -33,7 +33,7 @@
/datum/grand_finale/armageddon/trigger(mob/living/carbon/human/invoker)
priority_announce(pick(possible_last_words), null, 'sound/magic/voidblink.ogg', sender_override = "[invoker.real_name]")
var/turf/current_location = get_turf(invoker)
- invoker.gib()
+ invoker.gib(DROP_ALL_REMAINS)
var/static/list/doom_options = list()
if (!length(doom_options))
diff --git a/code/modules/bitrunning/event.dm b/code/modules/bitrunning/event.dm
index 0ac35a2df8f..6a4d54adcd8 100644
--- a/code/modules/bitrunning/event.dm
+++ b/code/modules/bitrunning/event.dm
@@ -139,7 +139,7 @@
/// Spawns a cybercop on the mutation target
/datum/round_event/ghost_role/bitrunning_glitch/proc/spawn_cybercop(mob/living/mutation_target, datum/mind/player_mind)
var/mob/living/carbon/human/new_agent = new(mutation_target.loc)
- mutation_target.gib()
+ mutation_target.gib(DROP_ALL_REMAINS)
mutation_target = null
player_mind.transfer_to(new_agent)
diff --git a/code/modules/cargo/coupon.dm b/code/modules/cargo/coupon.dm
index fc1c3a6cc65..5c4e1e930b5 100644
--- a/code/modules/cargo/coupon.dm
+++ b/code/modules/cargo/coupon.dm
@@ -44,7 +44,7 @@
/// Play stupid games, win stupid prizes
/obj/item/coupon/proc/curse_heart(mob/living/cursed)
if(!iscarbon(cursed))
- cursed.gib()
+ cursed.gib(DROP_ALL_REMAINS)
return TRUE
var/mob/living/carbon/player = cursed
diff --git a/code/modules/cargo/supplypod.dm b/code/modules/cargo/supplypod.dm
index 7e85402781e..43736994959 100644
--- a/code/modules/cargo/supplypod.dm
+++ b/code/modules/cargo/supplypod.dm
@@ -271,7 +271,7 @@
if (effectGib) //effectGib is on, that means whatever's underneath us better be fucking oof'd on
target_living.adjustBruteLoss(5000) //THATS A LOT OF DAMAGE (called just in case gib() doesnt work on em)
if (!QDELETED(target_living))
- target_living.gib() //After adjusting the fuck outta that brute loss we finish the job with some satisfying gibs
+ target_living.gib(DROP_ALL_REMAINS) //After adjusting the fuck outta that brute loss we finish the job with some satisfying gibs
else
target_living.adjustBruteLoss(damage)
var/explosion_sum = B[1] + B[2] + B[3] + B[4]
diff --git a/code/modules/clothing/head/mind_monkey_helmet.dm b/code/modules/clothing/head/mind_monkey_helmet.dm
index 31bbc3b17ba..c1ac5a1805a 100644
--- a/code/modules/clothing/head/mind_monkey_helmet.dm
+++ b/code/modules/clothing/head/mind_monkey_helmet.dm
@@ -89,7 +89,7 @@
if(3) //primal gene (gorilla)
magnification.gorillize()
if(4) //genetic mass susceptibility (gib)
- magnification.gib()
+ magnification.gib(DROP_ALL_REMAINS)
//either used up correctly or taken off before polling finished (punish this by destroying the helmet)
UnregisterSignal(magnification, COMSIG_SPECIES_LOSS)
playsound(src, 'sound/machines/buzz-sigh.ogg', 30, TRUE)
diff --git a/code/modules/experisci/destructive_scanner.dm b/code/modules/experisci/destructive_scanner.dm
index ef89dc9b94a..de0b03b0f09 100644
--- a/code/modules/experisci/destructive_scanner.dm
+++ b/code/modules/experisci/destructive_scanner.dm
@@ -89,7 +89,7 @@
if(isliving(movable_atom))
var/mob/living/fucked_up_thing = movable_atom
fucked_up_thing.investigate_log("has been gibbed by [src].", INVESTIGATE_DEATHS)
- fucked_up_thing.gib()
+ fucked_up_thing.gib(DROP_ALL_REMAINS)
SEND_SIGNAL(src, COMSIG_MACHINERY_DESTRUCTIVE_SCAN, scanned_atoms)
diff --git a/code/modules/experisci/handheld_scanner.dm b/code/modules/experisci/handheld_scanner.dm
index 97aa034afa1..92031107ba5 100644
--- a/code/modules/experisci/handheld_scanner.dm
+++ b/code/modules/experisci/handheld_scanner.dm
@@ -59,6 +59,6 @@
icon_state = "experiscanner"
remove_atom_colour(ADMIN_COLOUR_PRIORITY, "#FF0000")
- user.gib(FALSE, TRUE, TRUE) //we delete everything but the brain, as it's going to be moved to the cistern
+ user.gib(DROP_BRAIN) //we delete everything but the brain, as it's going to be moved to the cistern
toilet_brain.forceMove(result_toilet)
result_toilet.w_items += toilet_brain.w_class
diff --git a/code/modules/food_and_drinks/machinery/deep_fryer.dm b/code/modules/food_and_drinks/machinery/deep_fryer.dm
index b9aade6392a..73114812c2d 100644
--- a/code/modules/food_and_drinks/machinery/deep_fryer.dm
+++ b/code/modules/food_and_drinks/machinery/deep_fryer.dm
@@ -216,7 +216,7 @@ GLOBAL_LIST_INIT(oilfry_blacklisted_items, typecacheof(list(
if(target_temp < TCMB + 10) // a tiny bit of leeway
dunking_target.visible_message(span_userdanger("[dunking_target] explodes from the entropic difference! Holy fuck!"))
dunking_target.investigate_log("has been gibbed by entropic difference (being dunked into [src]).", INVESTIGATE_DEATHS)
- dunking_target.gib()
+ dunking_target.gib(DROP_ALL_REMAINS)
log_combat(user, dunking_target, "blew up", null, "by dunking them into [src]")
return
diff --git a/code/modules/food_and_drinks/machinery/gibber.dm b/code/modules/food_and_drinks/machinery/gibber.dm
index 29249f4e691..15ae66158d2 100644
--- a/code/modules/food_and_drinks/machinery/gibber.dm
+++ b/code/modules/food_and_drinks/machinery/gibber.dm
@@ -256,4 +256,4 @@
if(victim.loc == input)
victim.forceMove(src)
- victim.gib()
+ victim.gib(DROP_ALL_REMAINS)
diff --git a/code/modules/food_and_drinks/machinery/processor.dm b/code/modules/food_and_drinks/machinery/processor.dm
index 691a5be5784..6a9d6090c1f 100644
--- a/code/modules/food_and_drinks/machinery/processor.dm
+++ b/code/modules/food_and_drinks/machinery/processor.dm
@@ -76,7 +76,7 @@
if(isliving(what))
var/mob/living/themob = what
- themob.gib(TRUE,TRUE,TRUE)
+ themob.gib()
else
qdel(what)
LAZYREMOVE(processor_contents, what)
diff --git a/code/modules/hydroponics/grown/melon.dm b/code/modules/hydroponics/grown/melon.dm
index 80962a2d182..f69f8a68317 100644
--- a/code/modules/hydroponics/grown/melon.dm
+++ b/code/modules/hydroponics/grown/melon.dm
@@ -17,7 +17,7 @@
/obj/item/seeds/watermelon/suicide_act(mob/living/user)
user.visible_message(span_suicide("[user] is swallowing [src]! It looks like [user.p_theyre()] trying to commit suicide!"))
- user.gib()
+ user.gib(DROP_ALL_REMAINS)
new product(drop_location())
qdel(src)
return MANUAL_SUICIDE
diff --git a/code/modules/industrial_lift/industrial_lift.dm b/code/modules/industrial_lift/industrial_lift.dm
index dd1b3f9604a..0bcc2a49bc8 100644
--- a/code/modules/industrial_lift/industrial_lift.dm
+++ b/code/modules/industrial_lift/industrial_lift.dm
@@ -326,7 +326,7 @@ GLOBAL_LIST_INIT(all_radial_directions, list(
if(violent_landing)
// Violent landing = gibbed. But the nicest kind of gibbing, keeping everything intact.
crushed.investigate_log("has been gibbed by [src].", INVESTIGATE_DEATHS)
- crushed.gib(FALSE, FALSE, FALSE)
+ crushed.gib(DROP_ALL_REMAINS)
else
// Less violent landing simply crushes every bone in your body.
crushed.Paralyze(30 SECONDS, ignore_canstun = TRUE)
diff --git a/code/modules/library/bibles.dm b/code/modules/library/bibles.dm
index 3cfc9c8b76b..5d3c6e276b4 100644
--- a/code/modules/library/bibles.dm
+++ b/code/modules/library/bibles.dm
@@ -132,7 +132,7 @@ GLOBAL_LIST_INIT(bibleitemstates, list(
to_chat(user, span_userdanger("[deity_name] SMITE thee!"))
add_memory_in_range(user, 7, /datum/memory/witnessed_gods_wrath, protagonist = user, deuteragonist = src, antagonist = deity_name)
user.client?.give_award(/datum/award/achievement/misc/gods_wrath, user)
- user.gib()
+ user.gib(DROP_ALL_REMAINS)
else
to_chat(user, span_userdanger("[deity_name] cast a curse upon thee!"))
user.AddComponent(/datum/component/omen/bible)
diff --git a/code/modules/mapfluff/ruins/objects_and_mobs/ash_walker_den.dm b/code/modules/mapfluff/ruins/objects_and_mobs/ash_walker_den.dm
index 99df8b43849..c9aee1ea542 100644
--- a/code/modules/mapfluff/ruins/objects_and_mobs/ash_walker_den.dm
+++ b/code/modules/mapfluff/ruins/objects_and_mobs/ash_walker_den.dm
@@ -83,7 +83,7 @@
to_chat(deliverymob, span_warning("The Necropolis is pleased with your sacrifice. You feel confident your existence after death is secure."))
ashies.players_spawned -= deliverykey
H.investigate_log("has been gibbed by the necropolis tendril.", INVESTIGATE_DEATHS)
- H.gib()
+ H.gib(DROP_ALL_REMAINS)
atom_integrity = min(atom_integrity + max_integrity*0.05,max_integrity)//restores 5% hp of tendril
for(var/mob/living/L in view(src, 5))
if(L.mind?.has_antag_datum(/datum/antagonist/ashwalker))
diff --git a/code/modules/mapfluff/ruins/spaceruin_code/hilbertshotel.dm b/code/modules/mapfluff/ruins/spaceruin_code/hilbertshotel.dm
index 5325f44aac3..d1926119a15 100644
--- a/code/modules/mapfluff/ruins/spaceruin_code/hilbertshotel.dm
+++ b/code/modules/mapfluff/ruins/spaceruin_code/hilbertshotel.dm
@@ -407,7 +407,7 @@ GLOBAL_VAR_INIT(hhMysteryRoomNumber, rand(1, 999999))
if(unforeseen_consequences)
to_chat(unforeseen_consequences, span_warning("\The [H] starts to resonate. Forcing it to enter itself induces a bluespace paradox, violently tearing your body apart."))
unforeseen_consequences.investigate_log("has been gibbed by using [H] while inside of it.", INVESTIGATE_DEATHS)
- unforeseen_consequences.gib()
+ unforeseen_consequences.gib(DROP_ALL_REMAINS)
var/turf/targetturf = find_safe_turf()
if(!targetturf)
diff --git a/code/modules/mob/living/basic/basic_defense.dm b/code/modules/mob/living/basic/basic_defense.dm
index 8afb40f2912..87fe6f8fed1 100644
--- a/code/modules/mob/living/basic/basic_defense.dm
+++ b/code/modules/mob/living/basic/basic_defense.dm
@@ -148,7 +148,7 @@
apply_damage(500, damagetype = BRUTE)
else
investigate_log("has been gibbed by an explosion.", INVESTIGATE_DEATHS)
- gib()
+ gib(DROP_ALL_REMAINS)
if (EXPLODE_HEAVY)
var/bloss = 60
diff --git a/code/modules/mob/living/basic/icemoon/ice_whelp/ice_whelp.dm b/code/modules/mob/living/basic/icemoon/ice_whelp/ice_whelp.dm
index 292766be07b..f89009cc2d9 100644
--- a/code/modules/mob/living/basic/icemoon/ice_whelp/ice_whelp.dm
+++ b/code/modules/mob/living/basic/icemoon/ice_whelp/ice_whelp.dm
@@ -87,5 +87,5 @@
balloon_alert(src, "devouring...")
if(!do_after(src, 5 SECONDS, target))
return
- target.gib()
+ target.gib(DROP_ALL_REMAINS)
adjustBruteLoss(-1 * heal_on_cannibalize)
diff --git a/code/modules/mob/living/basic/pets/dog/corgi.dm b/code/modules/mob/living/basic/pets/dog/corgi.dm
index cb0df08d198..9e120c4e8c0 100644
--- a/code/modules/mob/living/basic/pets/dog/corgi.dm
+++ b/code/modules/mob/living/basic/pets/dog/corgi.dm
@@ -482,7 +482,7 @@
prey.investigate_log("has been sacrificed by [src].", INVESTIGATE_DEATHS)
if (isliving(prey))
var/mob/living/living_sacrifice = prey
- living_sacrifice.gib()
+ living_sacrifice.gib(DROP_ALL_REMAINS)
else
qdel(prey)
diff --git a/code/modules/mob/living/carbon/alien/alien_defense.dm b/code/modules/mob/living/carbon/alien/alien_defense.dm
index bc7a663206a..63ef8830435 100644
--- a/code/modules/mob/living/carbon/alien/alien_defense.dm
+++ b/code/modules/mob/living/carbon/alien/alien_defense.dm
@@ -103,7 +103,7 @@ In all, this is a lot like the monkey code. /N
var/obj/item/organ/internal/ears/ears = get_organ_slot(ORGAN_SLOT_EARS)
switch (severity)
if (EXPLODE_DEVASTATE)
- gib()
+ gib(DROP_ALL_REMAINS)
if (EXPLODE_HEAVY)
take_overall_damage(60, 60)
diff --git a/code/modules/mob/living/carbon/alien/death.dm b/code/modules/mob/living/carbon/alien/death.dm
index 718186c9078..f5a0b7ace1b 100644
--- a/code/modules/mob/living/carbon/alien/death.dm
+++ b/code/modules/mob/living/carbon/alien/death.dm
@@ -1,5 +1,5 @@
-/mob/living/carbon/alien/spawn_gibs(with_bodyparts)
- if(with_bodyparts)
+/mob/living/carbon/alien/spawn_gibs(drop_bitflags=NONE)
+ if(drop_bitflags & DROP_BODYPARTS)
new /obj/effect/gibspawner/xeno(drop_location(), src)
else
new /obj/effect/gibspawner/xeno/bodypartless(drop_location(), src)
diff --git a/code/modules/mob/living/carbon/alien/larva/death.dm b/code/modules/mob/living/carbon/alien/larva/death.dm
index 8fd6329a0c1..4b7f9f93218 100644
--- a/code/modules/mob/living/carbon/alien/larva/death.dm
+++ b/code/modules/mob/living/carbon/alien/larva/death.dm
@@ -6,8 +6,8 @@
update_icons()
-/mob/living/carbon/alien/larva/spawn_gibs(with_bodyparts)
- if(with_bodyparts)
+/mob/living/carbon/alien/larva/spawn_gibs(drop_bitflags=NONE)
+ if(drop_bitflags & DROP_BODYPARTS)
new /obj/effect/gibspawner/larva(drop_location(), src)
else
new /obj/effect/gibspawner/larva/bodypartless(drop_location(), src)
diff --git a/code/modules/mob/living/carbon/alien/organs.dm b/code/modules/mob/living/carbon/alien/organs.dm
index 5ef9b23c418..af796c9ff68 100644
--- a/code/modules/mob/living/carbon/alien/organs.dm
+++ b/code/modules/mob/living/carbon/alien/organs.dm
@@ -336,7 +336,7 @@
if(owner)
shake_camera(owner, 2, 5)
owner.investigate_log("has been gibbed by something inside [owner.p_their()] stomach.", INVESTIGATE_DEATHS)
- owner.gib()
+ owner.gib(DROP_ALL_REMAINS)
qdel(src)
/obj/item/organ/internal/stomach/alien/proc/eject_stomach(list/turf/targets, spit_range, content_speed, particle_delay, particle_count=4)
diff --git a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm
index ebced66d766..22c528b0095 100644
--- a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm
+++ b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm
@@ -127,7 +127,7 @@
if(gib_on_success)
new_xeno.visible_message(span_danger("[new_xeno] bursts out of [owner] in a shower of gore!"), span_userdanger("You exit [owner], your previous host."), span_hear("You hear organic matter ripping and tearing!"))
owner.investigate_log("has been gibbed by an alien larva.", INVESTIGATE_DEATHS)
- owner.gib(TRUE)
+ owner.gib(DROP_ORGANS|DROP_BODYPARTS)
else
new_xeno.visible_message(span_danger("[new_xeno] wriggles out of [owner]!"), span_userdanger("You exit [owner], your previous host."))
owner.log_message("had an alien larva within them escape (without being gibbed).", LOG_ATTACK, log_globally = FALSE)
diff --git a/code/modules/mob/living/carbon/death.dm b/code/modules/mob/living/carbon/death.dm
index 4d14fb7df66..bbf82ccefc5 100644
--- a/code/modules/mob/living/carbon/death.dm
+++ b/code/modules/mob/living/carbon/death.dm
@@ -24,9 +24,9 @@
M.Scale(1.8, 1.2)
animate(src, time = 40, transform = M, easing = SINE_EASING)
-/mob/living/carbon/gib(no_brain, no_organs, no_bodyparts, safe_gib = FALSE)
+/mob/living/carbon/gib(drop_bitflags=NONE)
add_memory_in_range(src, 7, /datum/memory/witness_gib, protagonist = src)
- if(safe_gib) // If you want to keep all the mob's items and not have them deleted
+ if(drop_bitflags & DROP_ITEMS)
for(var/obj/item/W in src)
dropItemToGround(W)
if(prob(50))
@@ -37,39 +37,33 @@
visible_message(span_danger("[M] bursts out of [src]!"))
return ..()
-/mob/living/carbon/spill_organs(no_brain, no_organs, no_bodyparts)
+/mob/living/carbon/spill_organs(drop_bitflags=NONE)
var/atom/Tsec = drop_location()
- if(!no_bodyparts)
- if(no_organs)//so the organs don't get transferred inside the bodyparts we'll drop.
- for(var/organ in organs)
- if(no_brain || !istype(organ, /obj/item/organ/internal/brain))
- qdel(organ)
- else //we're going to drop all bodyparts except chest, so the only organs that needs spilling are those inside it.
- for(var/obj/item/organ/organ as anything in organs)
- if(no_brain && istype(organ, /obj/item/organ/internal/brain))
- qdel(organ) //so the brain isn't transferred to the head when the head drops.
- continue
- var/org_zone = check_zone(organ.zone) //both groin and chest organs.
- if(org_zone == BODY_ZONE_CHEST)
- organ.Remove(src)
- organ.forceMove(Tsec)
- organ.throw_at(get_edge_target_turf(src,pick(GLOB.alldirs)),rand(1,3),5)
- else
- for(var/obj/item/organ/organ as anything in organs)
- if(no_brain && istype(organ, /obj/item/organ/internal/brain))
- qdel(organ)
- continue
- if(no_organs && !istype(organ, /obj/item/organ/internal/brain))
- qdel(organ)
- continue
+
+ for(var/obj/item/organ/organ as anything in organs)
+ if((drop_bitflags & DROP_BRAIN) && istype(organ, /obj/item/organ/internal/brain))
+ if(drop_bitflags & DROP_BODYPARTS)
+ continue // the head will drop, so the brain should stay inside
+
organ.Remove(src)
organ.forceMove(Tsec)
- organ.throw_at(get_edge_target_turf(src,pick(GLOB.alldirs)),rand(1,3),5)
+ organ.throw_at(get_edge_target_turf(src, pick(GLOB.alldirs)), rand(1,3), 5)
+ continue
-/// Launches all bodyparts away from the mob. skip_head will keep the head attached.
-/mob/living/carbon/spread_bodyparts(skip_head = FALSE)
+ if((drop_bitflags & DROP_ORGANS) && !istype(organ, /obj/item/organ/internal/brain))
+ if((drop_bitflags & DROP_BODYPARTS) && (check_zone(organ.zone) != BODY_ZONE_CHEST))
+ continue // only chest & groin organs will be ejected
+
+ organ.Remove(src)
+ organ.forceMove(Tsec)
+ organ.throw_at(get_edge_target_turf(src, pick(GLOB.alldirs)), rand(1,3), 5)
+ continue
+
+ qdel(organ)
+
+/mob/living/carbon/spread_bodyparts(drop_bitflags=NONE)
for(var/obj/item/bodypart/part as anything in bodyparts)
- if(skip_head && part.body_zone == BODY_ZONE_HEAD)
+ if(!(drop_bitflags & DROP_BRAIN) && part.body_zone == BODY_ZONE_HEAD)
continue
else if(part.body_zone == BODY_ZONE_CHEST)
continue
diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm
index 74f9db5957d..b451d86935b 100644
--- a/code/modules/mob/living/carbon/human/death.dm
+++ b/code/modules/mob/living/carbon/human/death.dm
@@ -5,8 +5,8 @@ GLOBAL_LIST_EMPTY(dead_players_during_shift)
/mob/living/carbon/human/dust_animation()
new /obj/effect/temp_visual/dust_animation(loc, dna.species.dust_anim)
-/mob/living/carbon/human/spawn_gibs(with_bodyparts)
- if(with_bodyparts)
+/mob/living/carbon/human/spawn_gibs(drop_bitflags=NONE)
+ if(drop_bitflags & DROP_BODYPARTS)
new /obj/effect/gibspawner/human(drop_location(), src, get_static_viruses())
else
new /obj/effect/gibspawner/human/bodypartless(drop_location(), src, get_static_viruses())
diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm
index 5d4f3d2887d..fafc9b49a69 100644
--- a/code/modules/mob/living/carbon/human/human_defense.dm
+++ b/code/modules/mob/living/carbon/human/human_defense.dm
@@ -412,7 +412,7 @@
if(EXPLODE_LIGHT)
SSexplosions.low_mov_atom += thing
investigate_log("has been gibbed by an explosion.", INVESTIGATE_DEATHS)
- gib()
+ gib(DROP_ALL_REMAINS)
return TRUE
else
brute_loss = 500
diff --git a/code/modules/mob/living/carbon/human/species_types/dullahan.dm b/code/modules/mob/living/carbon/human/species_types/dullahan.dm
index 8fcb9b2fcd9..e59aa11375f 100644
--- a/code/modules/mob/living/carbon/human/species_types/dullahan.dm
+++ b/code/modules/mob/living/carbon/human/species_types/dullahan.dm
@@ -74,7 +74,7 @@
if(QDELETED(my_head))
my_head = null
human.investigate_log("has been gibbed by the loss of [human.p_their()] head.", INVESTIGATE_DEATHS)
- human.gib()
+ human.gib(DROP_ALL_REMAINS)
return
if(my_head.loc.name != human.real_name && istype(my_head.loc, /obj/item/bodypart/head))
@@ -87,7 +87,7 @@
if(illegal_head)
my_head = null
human.investigate_log("has been gibbed by having an illegal head put on [human.p_their()] shoulders.", INVESTIGATE_DEATHS)
- human.gib() // Yeah so giving them a head on their body is really not a good idea, so their original head will remain but uh, good luck fixing it after that.
+ human.gib(DROP_ALL_REMAINS) // Yeah so giving them a head on their body is really not a good idea, so their original head will remain but uh, good luck fixing it after that.
/datum/species/dullahan/proc/update_vision_perspective(mob/living/carbon/human/human)
var/obj/item/organ/internal/eyes/eyes = human.get_organ_slot(ORGAN_SLOT_EYES)
@@ -265,6 +265,6 @@
if(isdullahan(human))
var/datum/species/dullahan/dullahan_species = human.dna.species
dullahan_species.my_head = null
- owner.gib()
+ owner.gib(DROP_ALL_REMAINS)
owner = null
return ..()
diff --git a/code/modules/mob/living/death.dm b/code/modules/mob/living/death.dm
index 79d4d228b72..7cb3abfff02 100644
--- a/code/modules/mob/living/death.dm
+++ b/code/modules/mob/living/death.dm
@@ -1,12 +1,14 @@
/**
* Blow up the mob into giblets
*
- * Arguments:
- * * no_brain - Should the mob NOT drop a brain?
- * * no_organs - Should the mob NOT drop organs?
- * * no_bodyparts - Should the mob NOT drop bodyparts?
-*/
-/mob/living/proc/gib(no_brain, no_organs, no_bodyparts)
+ * drop_bitflags: (see code/__DEFINES/blood.dm)
+ * * DROP_BRAIN - Gibbed mob will drop a brain
+ * * DROP_ORGANS - Gibbed mob will drop organs
+ * * DROP_BODYPARTS - Gibbed mob will drop bodyparts (arms, legs, etc.)
+ * * DROP_ITEMS - Gibbed mob will drop carried items (otherwise they get deleted)
+ * * DROP_ALL_REMAINS - Gibbed mob will drop everything
+**/
+/mob/living/proc/gib(drop_bitflags=NONE)
var/prev_lying = lying_angle
if(stat != DEAD)
death(TRUE)
@@ -15,25 +17,46 @@
gib_animation()
ghostize()
- spill_organs(no_brain, no_organs, no_bodyparts)
+ spill_organs(drop_bitflags)
- if(!no_bodyparts)
- spread_bodyparts(no_brain, no_organs)
+ if(drop_bitflags & DROP_BODYPARTS)
+ spread_bodyparts(drop_bitflags)
- spawn_gibs(no_bodyparts)
- SEND_SIGNAL(src, COMSIG_LIVING_GIBBED, no_brain, no_organs, no_bodyparts)
+ spawn_gibs(drop_bitflags)
+ SEND_SIGNAL(src, COMSIG_LIVING_GIBBED, drop_bitflags)
qdel(src)
/mob/living/proc/gib_animation()
return
-/mob/living/proc/spawn_gibs()
+/**
+ * Spawn bloody gib mess on the floor
+ *
+ * drop_bitflags: (see code/__DEFINES/blood.dm)
+ * * DROP_BODYPARTS - Gibs will spawn with bodypart limbs present
+**/
+/mob/living/proc/spawn_gibs(drop_bitflags=NONE)
new /obj/effect/gibspawner/generic(drop_location(), src, get_static_viruses())
-/mob/living/proc/spill_organs()
+/**
+ * Drops a mob's organs on the floor
+ *
+ * drop_bitflags: (see code/__DEFINES/blood.dm)
+ * * DROP_BRAIN - Mob will drop a brain
+ * * DROP_ORGANS - Mob will drop organs
+ * * DROP_BODYPARTS - Mob will drop bodyparts (arms, legs, etc.)
+ * * DROP_ALL_REMAINS - Mob will drop everything
+**/
+/mob/living/proc/spill_organs(drop_bitflags=NONE)
return
-/mob/living/proc/spread_bodyparts()
+/**
+ * Launches all bodyparts away from the mob
+ *
+ * drop_bitflags: (see code/__DEFINES/blood.dm)
+ * * DROP_BRAIN - Detaches the head from the mob and launches it away from the body
+**/
+/mob/living/proc/spread_bodyparts(drop_bitflags=NONE)
return
/**
diff --git a/code/modules/mob/living/silicon/ai/ai_defense.dm b/code/modules/mob/living/silicon/ai/ai_defense.dm
index ae17e13f269..7445815c9d7 100644
--- a/code/modules/mob/living/silicon/ai/ai_defense.dm
+++ b/code/modules/mob/living/silicon/ai/ai_defense.dm
@@ -43,7 +43,7 @@
switch(severity)
if(EXPLODE_DEVASTATE)
investigate_log("has been gibbed by an explosion.", INVESTIGATE_DEATHS)
- gib()
+ gib(DROP_ALL_REMAINS)
if(EXPLODE_HEAVY)
if (stat != DEAD)
adjustBruteLoss(60)
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index d7f5d3e901f..24e40c38ae5 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -377,7 +377,7 @@
else
explosion(src, devastation_range = -1, light_impact_range = 2)
investigate_log("has self-destructed.", INVESTIGATE_DEATHS)
- gib()
+ gib(DROP_ALL_REMAINS)
/mob/living/silicon/robot/proc/UnlinkSelf()
set_connected_ai(null)
diff --git a/code/modules/mob/living/silicon/robot/robot_defense.dm b/code/modules/mob/living/silicon/robot/robot_defense.dm
index f820d3ca1cf..09440ec22a3 100644
--- a/code/modules/mob/living/silicon/robot/robot_defense.dm
+++ b/code/modules/mob/living/silicon/robot/robot_defense.dm
@@ -414,14 +414,14 @@ GLOBAL_LIST_INIT(blacklisted_borg_hats, typecacheof(list( //Hats that don't real
adjustBruteLoss(30)
else
investigate_log("has been gibbed a blob.", INVESTIGATE_DEATHS)
- gib()
+ gib(DROP_ALL_REMAINS)
return TRUE
/mob/living/silicon/robot/ex_act(severity, target)
switch(severity)
if(EXPLODE_DEVASTATE)
investigate_log("has been gibbed by an explosion.", INVESTIGATE_DEATHS)
- gib()
+ gib(DROP_ALL_REMAINS)
return
if(EXPLODE_HEAVY)
if (stat != DEAD)
diff --git a/code/modules/mob/living/simple_animal/hostile/gorilla/gorilla.dm b/code/modules/mob/living/simple_animal/hostile/gorilla/gorilla.dm
index cceb0cdf58c..6f5952382c6 100644
--- a/code/modules/mob/living/simple_animal/hostile/gorilla/gorilla.dm
+++ b/code/modules/mob/living/simple_animal/hostile/gorilla/gorilla.dm
@@ -92,8 +92,8 @@
/mob/living/simple_animal/hostile/gorilla/CanSmashTurfs(turf/T)
return iswallturf(T)
-/mob/living/simple_animal/hostile/gorilla/gib(no_brain)
- if(!no_brain)
+/mob/living/simple_animal/hostile/gorilla/gib(drop_bitflags=DROP_BRAIN)
+ if(drop_bitflags & DROP_BRAIN)
var/mob/living/brain/gorilla_brain = new(drop_location())
gorilla_brain.name = real_name
gorilla_brain.real_name = real_name
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
index 8a92ca680f7..5c63ca4e884 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
@@ -607,7 +607,7 @@
holder_animal.mind.transfer_to(possessor)
possessor.mind.grab_ghost(force = TRUE)
holder_animal.investigate_log("has been gibbed by [src].", INVESTIGATE_DEATHS)
- holder_animal.gib()
+ holder_animal.gib(DROP_ALL_REMAINS)
return ..()
return ..()
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/goliath_broodmother.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/goliath_broodmother.dm
index 58d9988256f..d91f312b454 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/goliath_broodmother.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/goliath_broodmother.dm
@@ -211,7 +211,7 @@
mother.children_list -= src
visible_message(span_warning("[src] explodes!"))
explosion(src, flame_range = 3, adminlog = FALSE)
- gib()
+ gib(DROP_ALL_REMAINS)
/obj/effect/goliath_tentacle/broodmother
grapple_time = 1 SECONDS
diff --git a/code/modules/mob_spawn/ghost_roles/mining_roles.dm b/code/modules/mob_spawn/ghost_roles/mining_roles.dm
index 35f8ece5c8f..66837628cdc 100644
--- a/code/modules/mob_spawn/ghost_roles/mining_roles.dm
+++ b/code/modules/mob_spawn/ghost_roles/mining_roles.dm
@@ -200,7 +200,7 @@
yolk.underwear = "Nude"
yolk.equipOutfit(/datum/outfit/ashwalker)//this is an authentic mess we're making
yolk.update_body()
- yolk.gib()
+ yolk.gib(DROP_ALL_REMAINS)
QDEL_NULL(egg)
return ..()
diff --git a/code/modules/mod/modules/modules_ninja.dm b/code/modules/mod/modules/modules_ninja.dm
index 90c731a7c36..7a38238594d 100644
--- a/code/modules/mod/modules/modules_ninja.dm
+++ b/code/modules/mod/modules/modules_ninja.dm
@@ -275,7 +275,7 @@
var/mob/living/living_user = user
to_chat(living_user, span_danger("fATaL EERRoR: 382200-*#00CODE RED\nUNAUTHORIZED USE DETECteD\nCoMMENCING SUB-R0UTIN3 13...\nTERMInATING U-U-USER..."))
living_user.investigate_log("has been gibbed by using a MODsuit equipped with [src].", INVESTIGATE_DEATHS)
- living_user.gib()
+ living_user.gib(DROP_ALL_REMAINS)
/obj/item/mod/module/dna_lock/reinforced/on_emp(datum/source, severity)
return
diff --git a/code/modules/power/apc/apc_malf.dm b/code/modules/power/apc/apc_malf.dm
index f13b588842a..3b070368804 100644
--- a/code/modules/power/apc/apc_malf.dm
+++ b/code/modules/power/apc/apc_malf.dm
@@ -69,7 +69,7 @@
if(forced)
occupier.forceMove(drop_location())
INVOKE_ASYNC(occupier, TYPE_PROC_REF(/mob/living, death))
- occupier.gib()
+ occupier.gib(DROP_ALL_REMAINS)
if(!occupier.nuking) //Pinpointers go back to tracking the nuke disk, as long as the AI (somehow) isn't mid-nuking.
for(var/obj/item/pinpointer/nuke/disk_pinpointers in GLOB.pinpointer_list)
diff --git a/code/modules/projectiles/guns/ballistic/launchers.dm b/code/modules/projectiles/guns/ballistic/launchers.dm
index 2963afbaa51..82f24e21b73 100644
--- a/code/modules/projectiles/guns/ballistic/launchers.dm
+++ b/code/modules/projectiles/guns/ballistic/launchers.dm
@@ -98,7 +98,7 @@
REMOVE_TRAIT(user, TRAIT_NO_TRANSFORM, REF(src))
process_fire(user, user, TRUE)
if(!QDELETED(user)) //if they weren't gibbed by the explosion, take care of them for good.
- user.gib()
+ user.gib(DROP_ALL_REMAINS)
return MANUAL_SUICIDE
else
sleep(0.5 SECONDS)
diff --git a/code/modules/projectiles/projectile/special/rocket.dm b/code/modules/projectiles/projectile/special/rocket.dm
index 899f737d8cc..08a2c18c2f7 100644
--- a/code/modules/projectiles/projectile/special/rocket.dm
+++ b/code/modules/projectiles/projectile/special/rocket.dm
@@ -53,7 +53,7 @@ among other potential differences. This granularity is helpful for things like t
if(random_crit_gib)
var/mob/living/gibbed_dude = target
new /obj/effect/temp_visual/crit(get_turf(gibbed_dude))
- gibbed_dude.gib()
+ gibbed_dude.gib(DROP_ALL_REMAINS)
/// PM9 HEAP rocket - the anti-anything missile you always craved.
/obj/projectile/bullet/rocket/heap
diff --git a/code/modules/reagents/chemistry/reagents/drug_reagents.dm b/code/modules/reagents/chemistry/reagents/drug_reagents.dm
index a72efc8ea82..67fb8104efa 100644
--- a/code/modules/reagents/chemistry/reagents/drug_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/drug_reagents.dm
@@ -855,4 +855,4 @@
span_userdanger("GORE! GORE! GORE! YOU'RE GORE! TOO MUCH GORE! YOU'RE GORE! GORE! IT'S OVER! GORE! GORE! YOU'RE GORE! TOO MUCH G-"),
)
new /obj/structure/bouncy_castle(gored.loc, gored)
- gored.gib(TRUE, TRUE, TRUE) //no brain, no organs, no bodyparts
+ gored.gib()
diff --git a/code/modules/reagents/chemistry/recipes/others.dm b/code/modules/reagents/chemistry/recipes/others.dm
index b3bda10a53a..2723d72eff1 100644
--- a/code/modules/reagents/chemistry/recipes/others.dm
+++ b/code/modules/reagents/chemistry/recipes/others.dm
@@ -584,7 +584,7 @@
var/location = get_turf(M)
if(iscarbon(M))
if(ismonkey(M))
- M.gib()
+ M.gib(DROP_ALL_REMAINS)
else
M.vomit(VOMIT_CATEGORY_BLOOD)
new /mob/living/carbon/human/species/monkey(location, TRUE)
diff --git a/code/modules/religion/honorbound/honorbound_rites.dm b/code/modules/religion/honorbound/honorbound_rites.dm
index 6ba557d5a30..c9c9e711354 100644
--- a/code/modules/religion/honorbound/honorbound_rites.dm
+++ b/code/modules/religion/honorbound/honorbound_rites.dm
@@ -59,7 +59,7 @@
if(joining_now.mind.has_antag_datum(/datum/antagonist/cult))//what the fuck?!
to_chat(user, span_warning("[GLOB.deity] has seen a true, dark evil in [joining_now]'s heart, and they have been smitten!"))
playsound(get_turf(religious_tool), 'sound/effects/pray.ogg', 50, TRUE)
- joining_now.gib(TRUE)
+ joining_now.gib(DROP_ORGANS|DROP_BODYPARTS)
return FALSE
var/datum/brain_trauma/special/honorbound/honor = user.has_trauma_type(/datum/brain_trauma/special/honorbound)
if(joining_now in honor.guilty)
diff --git a/code/modules/research/anomaly/anomaly_core.dm b/code/modules/research/anomaly/anomaly_core.dm
index 56220956182..febb25add53 100644
--- a/code/modules/research/anomaly/anomaly_core.dm
+++ b/code/modules/research/anomaly/anomaly_core.dm
@@ -23,7 +23,7 @@
/obj/item/assembly/signaler/anomaly/manual_suicide(mob/living/carbon/user)
user.visible_message(span_suicide("[user]'s [src] is reacting to the radio signal, warping [user.p_their()] body!"))
user.set_suicide(TRUE)
- user.gib()
+ user.gib(DROP_ALL_REMAINS)
/obj/item/assembly/signaler/anomaly/attack_self()
return
diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm
index f81f328c0f3..b3945fe60c4 100644
--- a/code/modules/research/xenobiology/xenobiology.dm
+++ b/code/modules/research/xenobiology/xenobiology.dm
@@ -460,7 +460,7 @@
to_chat(user, span_userdanger("You explode!"))
explosion(user, devastation_range = 1, heavy_impact_range = 3, light_impact_range = 6, explosion_cause = src)
user.investigate_log("has been gibbed by an oil slime extract explosion.", INVESTIGATE_DEATHS)
- user.gib()
+ user.gib(DROP_ALL_REMAINS)
return
to_chat(user, span_notice("You stop feeding [src], and the feeling passes."))
diff --git a/code/modules/shuttle/on_move.dm b/code/modules/shuttle/on_move.dm
index 89fc0fc6c8e..c65a9ad123a 100644
--- a/code/modules/shuttle/on_move.dm
+++ b/code/modules/shuttle/on_move.dm
@@ -35,7 +35,7 @@ All ShuttleMove procs go here
SSblackbox.record_feedback("tally", "shuttle_gib", 1, M.type)
log_shuttle("[key_name(M)] was shuttle gibbed by [shuttle].")
M.investigate_log("has been gibbed by [shuttle].", INVESTIGATE_DEATHS)
- M.gib()
+ M.gib(DROP_ALL_REMAINS)
else //non-living mobs shouldn't be affected by shuttles, which is why this is an else
diff --git a/code/modules/spells/spell_types/shapeshift/_shape_status.dm b/code/modules/spells/spell_types/shapeshift/_shape_status.dm
index 10d42760c91..94e1d549af2 100644
--- a/code/modules/spells/spell_types/shapeshift/_shape_status.dm
+++ b/code/modules/spells/spell_types/shapeshift/_shape_status.dm
@@ -115,7 +115,7 @@
// Our caster inside was gibbed, mirror the gib to our mob
if(gibbed)
- owner.gib()
+ owner.gib(DROP_ALL_REMAINS)
// Otherwise our caster died, just make our mob die
else
diff --git a/code/modules/spells/spell_types/shapeshift/_shapeshift.dm b/code/modules/spells/spell_types/shapeshift/_shapeshift.dm
index a5e590685c0..5aecd863bce 100644
--- a/code/modules/spells/spell_types/shapeshift/_shapeshift.dm
+++ b/code/modules/spells/spell_types/shapeshift/_shapeshift.dm
@@ -132,7 +132,7 @@
// Gib our caster, and make sure to leave nothing behind
// (If we leave something behind, it'll drop on the turf of the pipe, which is kinda wrong.)
cast_on.investigate_log("has been gibbed by shapeshifting while ventcrawling.", INVESTIGATE_DEATHS)
- cast_on.gib(TRUE, TRUE, TRUE)
+ cast_on.gib()
/// Callback for the radial that allows the user to choose their species.
/datum/action/cooldown/spell/shapeshift/proc/check_menu(mob/living/caster)
diff --git a/code/modules/spells/spell_types/touch/smite.dm b/code/modules/spells/spell_types/touch/smite.dm
index bcd234979c6..f02ea8247dd 100644
--- a/code/modules/spells/spell_types/touch/smite.dm
+++ b/code/modules/spells/spell_types/touch/smite.dm
@@ -48,7 +48,7 @@
return TRUE
victim.investigate_log("has been gibbed by the smite spell.", INVESTIGATE_DEATHS)
- victim.gib()
+ victim.gib(DROP_ALL_REMAINS)
return TRUE
/obj/item/melee/touch_attack/smite
diff --git a/code/modules/vehicles/mecha/_mecha.dm b/code/modules/vehicles/mecha/_mecha.dm
index fdb53c47572..0652c554b8a 100644
--- a/code/modules/vehicles/mecha/_mecha.dm
+++ b/code/modules/vehicles/mecha/_mecha.dm
@@ -323,7 +323,7 @@
if(!ai.linked_core) // we probably shouldnt gib AIs with a core
unlucky_ai = occupant
ai.investigate_log("has been gibbed by having their mech destroyed.", INVESTIGATE_DEATHS)
- ai.gib() //No wreck, no AI to recover
+ ai.gib(DROP_ALL_REMAINS) //No wreck, no AI to recover
else
mob_exit(ai,silent = TRUE, forced = TRUE) // so we dont ghost the AI
continue
diff --git a/code/modules/vehicles/mecha/combat/savannah_ivanov.dm b/code/modules/vehicles/mecha/combat/savannah_ivanov.dm
index dae449d8388..e3926aa7d35 100644
--- a/code/modules/vehicles/mecha/combat/savannah_ivanov.dm
+++ b/code/modules/vehicles/mecha/combat/savannah_ivanov.dm
@@ -212,7 +212,7 @@
to_chat(crushed_victim, span_userdanger("[chassis] crashes down on you from above!"))
if(crushed_victim.stat != CONSCIOUS)
crushed_victim.investigate_log("has been gibbed by a falling Savannah Ivanov mech.", INVESTIGATE_DEATHS)
- crushed_victim.gib(FALSE, FALSE, FALSE)
+ crushed_victim.gib(DROP_ALL_REMAINS)
continue
crushed_victim.adjustBruteLoss(80)
diff --git a/code/modules/vehicles/mecha/equipment/tools/mining_tools.dm b/code/modules/vehicles/mecha/equipment/tools/mining_tools.dm
index 6aae4adaaee..de96f3ad5f6 100644
--- a/code/modules/vehicles/mecha/equipment/tools/mining_tools.dm
+++ b/code/modules/vehicles/mecha/equipment/tools/mining_tools.dm
@@ -122,7 +122,7 @@
SEND_SIGNAL(src, COMSIG_MECHA_DRILL_MOB, chassis, target)
else
target.investigate_log("has been gibbed by [src] (attached to [chassis]).", INVESTIGATE_DEATHS)
- target.gib()
+ target.gib(DROP_ALL_REMAINS)
else
//drill makes a hole
var/obj/item/bodypart/target_part = target.get_bodypart(target.get_random_valid_zone(BODY_ZONE_CHEST))
diff --git a/code/modules/vehicles/mecha/mecha_mob_interaction.dm b/code/modules/vehicles/mecha/mecha_mob_interaction.dm
index c5f440ac97e..07b13a27ec0 100644
--- a/code/modules/vehicles/mecha/mecha_mob_interaction.dm
+++ b/code/modules/vehicles/mecha/mecha_mob_interaction.dm
@@ -120,7 +120,7 @@
if(forced)//This should only happen if there are multiple AIs in a round, and at least one is Malf.
if(!AI.linked_core) //if the victim AI has no core
AI.investigate_log("has been gibbed by being forced out of their mech by another AI.", INVESTIGATE_DEATHS)
- AI.gib() //If one Malf decides to steal a mech from another AI (even other Malfs!), they are destroyed, as they have nowhere to go when replaced.
+ AI.gib(DROP_ALL_REMAINS) //If one Malf decides to steal a mech from another AI (even other Malfs!), they are destroyed, as they have nowhere to go when replaced.
AI = null
mecha_flags &= ~SILICON_PILOT
return
diff --git a/code/modules/vehicles/vehicle_key.dm b/code/modules/vehicles/vehicle_key.dm
index e1b45d55f0a..f6e5f7c4e28 100644
--- a/code/modules/vehicles/vehicle_key.dm
+++ b/code/modules/vehicles/vehicle_key.dm
@@ -41,7 +41,7 @@
switch(user.mind?.get_skill_level(/datum/skill/cleaning))
if(SKILL_LEVEL_NONE to SKILL_LEVEL_NOVICE) //Their mind is too weak to ascend as a janny
user.visible_message(span_suicide("[user] is putting \the [src] in [user.p_their()] mouth and is trying to become one with the janicart, but has no idea where to start! It looks like [user.p_theyre()] trying to commit suicide!"))
- user.gib()
+ user.gib(DROP_ALL_REMAINS)
return MANUAL_SUICIDE
if(SKILL_LEVEL_APPRENTICE to SKILL_LEVEL_JOURNEYMAN) //At least they tried
user.visible_message(span_suicide("[user] is putting \the [src] in [user.p_their()] mouth and has inefficiently become one with the janicart! It looks like [user.p_theyre()] trying to commit suicide!"))
diff --git a/code/modules/wiremod/shell/drone.dm b/code/modules/wiremod/shell/drone.dm
index dce5dca46ad..6f7afcfea04 100644
--- a/code/modules/wiremod/shell/drone.dm
+++ b/code/modules/wiremod/shell/drone.dm
@@ -32,7 +32,7 @@
/mob/living/circuit_drone/updatehealth()
. = ..()
if(health < 0)
- gib(no_brain = TRUE, no_organs = TRUE, no_bodyparts = TRUE)
+ gib()
/mob/living/circuit_drone/welder_act(mob/living/user, obj/item/tool)
. = ..()
diff --git a/code/modules/zombie/items.dm b/code/modules/zombie/items.dm
index 65716c0dbfa..dca26d366d8 100644
--- a/code/modules/zombie/items.dm
+++ b/code/modules/zombie/items.dm
@@ -74,7 +74,7 @@
if(target.stat == DEAD)
var/hp_gained = target.maxHealth
target.investigate_log("has been devoured by a zombie.", INVESTIGATE_DEATHS)
- target.gib()
+ target.gib(DROP_ALL_REMAINS)
var/need_mob_update
need_mob_update = user.adjustBruteLoss(-hp_gained, updating_health = FALSE)
need_mob_update += user.adjustToxLoss(-hp_gained, updating_health = FALSE)