From a9df4b4f5c59e7a9de5b1524fec232769ebaf7b6 Mon Sep 17 00:00:00 2001 From: Migratingcocofruit <69551563+Migratingcocofruit@users.noreply.github.com> Date: Mon, 21 Jul 2025 18:10:40 +0300 Subject: [PATCH] Moves the compressor grind special species actions to the species datum (#29779) --- .../mob/living/carbon/human/human_mob.dm | 23 +++++-------------- .../living/carbon/human/species/_species.dm | 4 ++++ .../carbon/human/species/diona_species.dm | 3 +++ .../mob/living/carbon/human/species/drask.dm | 2 ++ .../living/carbon/human/species/machine.dm | 3 +++ .../mob/living/carbon/human/species/vox.dm | 3 +++ 6 files changed, 21 insertions(+), 17 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human_mob.dm b/code/modules/mob/living/carbon/human/human_mob.dm index 1ee6434f09a..d9f646a0211 100644 --- a/code/modules/mob/living/carbon/human/human_mob.dm +++ b/code/modules/mob/living/carbon/human/human_mob.dm @@ -114,7 +114,7 @@ if(delta_now < 3 SECONDS) return // Stop counting, print, and reset - if(timer_id != TIMER_ID_NULL) + if(timer_id != TIMER_ID_NULL) deltimer(timer_id) timer_id = TIMER_ID_NULL print_summary() @@ -155,10 +155,6 @@ /mob/living/carbon/human/vox/Initialize(mapload) . = ..(mapload, /datum/species/vox) -/mob/living/carbon/human/vox/compressor_grind(turf/location) - new /obj/item/food/fried_vox(loc) - return ..() - /mob/living/carbon/human/skeleton/Initialize(mapload) . = ..(mapload, /datum/species/skeleton) @@ -186,10 +182,6 @@ /mob/living/carbon/human/diona/Initialize(mapload) . = ..(mapload, /datum/species/diona) -/mob/living/carbon/human/diona/compressor_grind() - new /obj/item/food/salad(loc) - return ..() - /mob/living/carbon/human/pod_diona/Initialize(mapload) . = ..(mapload, /datum/species/diona/pod) @@ -199,10 +191,6 @@ /mob/living/carbon/human/machine/created name = "Integrated Robotic Chassis" -/mob/living/carbon/human/machine/compressor_grind() - new /obj/item/stack/sheet/mineral/titanium(loc) - return ..() - /mob/living/carbon/human/machine/created/Initialize(mapload) . = ..() rename_character(null, "Integrated Robotic Chassis ([rand(1, 9999)])") @@ -225,10 +213,6 @@ /mob/living/carbon/human/drask/Initialize(mapload) . = ..(mapload, /datum/species/drask) -/mob/living/carbon/human/drask/compressor_grind(turf/location) - new /obj/item/soap(loc) - return ..() - /mob/living/carbon/human/monkey/Initialize(mapload) . = ..(mapload, /datum/species/monkey) @@ -2289,3 +2273,8 @@ Eyes need to have significantly high darksight to shine unless the mob has the X changeNext_move(CLICK_CD_POINT) DEFAULT_QUEUE_OR_CALL_VERB(VERB_CALLBACK(src, PROC_REF(run_pointed), A)) + +/// Default behavior when getting ground up in a compressor +/mob/living/carbon/human/compressor_grind() + dna.species.do_compressor_grind(src) + . = ..() diff --git a/code/modules/mob/living/carbon/human/species/_species.dm b/code/modules/mob/living/carbon/human/species/_species.dm index 9a90bb7e192..4b828e9495d 100644 --- a/code/modules/mob/living/carbon/human/species/_species.dm +++ b/code/modules/mob/living/carbon/human/species/_species.dm @@ -1224,3 +1224,7 @@ It'll return null if the organ doesn't correspond, so include null checks when u /// Is this species able to be legion infested? /datum/species/proc/can_be_legion_infested() return TRUE + +/// Prototype for additional behaviour when a specific species is ground by a compressor. +/datum/species/proc/do_compressor_grind(mob/living/carbon/human) + return diff --git a/code/modules/mob/living/carbon/human/species/diona_species.dm b/code/modules/mob/living/carbon/human/species/diona_species.dm index b3c3d834576..a0737965222 100644 --- a/code/modules/mob/living/carbon/human/species/diona_species.dm +++ b/code/modules/mob/living/carbon/human/species/diona_species.dm @@ -137,3 +137,6 @@ species_traits = list(NO_HAIR, NOT_SELECTABLE) pod = TRUE inherent_factions = list("plants", "vines") + +/datum/species/diona/do_compressor_grind(mob/living/carbon/human/H) + new /obj/item/food/salad(H.loc) diff --git a/code/modules/mob/living/carbon/human/species/drask.dm b/code/modules/mob/living/carbon/human/species/drask.dm index 47831972d43..e5d3a2562b4 100644 --- a/code/modules/mob/living/carbon/human/species/drask.dm +++ b/code/modules/mob/living/carbon/human/species/drask.dm @@ -68,3 +68,5 @@ ) autohiss_exempt = list("Orluum") +/datum/species/drask/do_compressor_grind(mob/living/carbon/human/H) + new /obj/item/soap(H.loc) diff --git a/code/modules/mob/living/carbon/human/species/machine.dm b/code/modules/mob/living/carbon/human/species/machine.dm index 89b4b307df0..28cb896704a 100644 --- a/code/modules/mob/living/carbon/human/species/machine.dm +++ b/code/modules/mob/living/carbon/human/species/machine.dm @@ -220,3 +220,6 @@ ) var/error_message = pick(error_messages) to_chat(H, "[error_message]") + +/datum/species/machine/do_compressor_grind(mob/living/carbon/human/H) + new /obj/item/stack/sheet/mineral/titanium(H.loc) diff --git a/code/modules/mob/living/carbon/human/species/vox.dm b/code/modules/mob/living/carbon/human/species/vox.dm index ef4af813f56..2e533ad79e0 100644 --- a/code/modules/mob/living/carbon/human/species/vox.dm +++ b/code/modules/mob/living/carbon/human/species/vox.dm @@ -139,3 +139,6 @@ return FALSE //Handling reagent removal on our own. return ..() + +/datum/species/vox/do_compressor_grind(mob/living/carbon/human/H) + new /obj/item/food/fried_vox(H.loc)