From 196960f6ed0db3fa2fc254c407a20a854b3f55da Mon Sep 17 00:00:00 2001 From: Sealed101 Date: Tue, 24 Sep 2024 21:50:41 +0300 Subject: [PATCH] Gelatinous cubes stop digesting dead mobs instead of mobs with 200 brute damage; Consume action changes to Eject when a mob is consumed (#86817) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## About The Pull Request Title; instead of using 200 brute damage as a point of "victim has been digested enough", it now uses death. Should be about the same mechanically, though consuming alive humans with burn damage will puke them out sooner now, since they won't be able to accumulate as much brute damage as before. But I think it's ?fine?, it feels kinda cheesy to let the cube eat an already almost fried human patty after it expires anyway. EDIT: Consume action isn't allowing for more than one mob to be consumed at a time, and the cube didn't have a way to dispose of the mob it's consuming, so per request I changed it so the action now changes to _Eject Mob_ when you consume a mob, letting you do just that. Also fixes visible message of an attempt at consuming a mob not showing the victim's name. ## Why It's Good For The Game Fixes #53512 QoL for getting rid of the consumed victim No more devouring blank space (in the visible message) ## Changelog :cl: fix: gelatinous cubes now puke out their consume victim when said victim dies, not when it accumulates 200 brute damage (not all mobs can get damaged to that point) qol: gelatinous cube's Consume action can now be used to eject the currently consumed mob fix: fixed gelatinous cube's consume attempt not showing the victim's name properly (You start attempting to devour  !) /:cl: --- .../mob/living/simple_animal/hostile/ooze.dm | 32 +++++++++++++----- icons/mob/actions/actions_slime.dmi | Bin 9174 -> 9881 bytes 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/code/modules/mob/living/simple_animal/hostile/ooze.dm b/code/modules/mob/living/simple_animal/hostile/ooze.dm index 46967b40b3c..a44cae6f139 100644 --- a/code/modules/mob/living/simple_animal/hostile/ooze.dm +++ b/code/modules/mob/living/simple_animal/hostile/ooze.dm @@ -196,7 +196,7 @@ ///This action lets you consume the mob you're currently pulling. I'M GONNA CONSUUUUUME (this is considered one of the funny memes in the 2019-2020 era) /datum/action/consume name = "Consume" - desc = "Consume a mob that you are dragging to gain nutrition from them" + desc = "Consume a mob that you are dragging to gain nutrition from them." background_icon_state = "bg_hive" overlay_icon_state = "bg_hive_border" button_icon = 'icons/mob/actions/actions_slime.dmi' @@ -216,16 +216,16 @@ if(!.) return var/mob/living/simple_animal/hostile/ooze/gelatinous/ooze = owner + if(vored_mob) //one happy meal at a time, buddy + stop_consuming() + return FALSE if(!isliving(ooze.pulling)) to_chat(src, span_warning("You need to be pulling a creature for this to work!")) return FALSE - if(vored_mob) - to_chat(src, span_warning("You are already consuming another creature!")) - return FALSE - owner.visible_message(span_warning("[ooze] starts attempting to devour [target]!"), span_notice("You start attempting to devour [target].")) - if(!do_after(ooze, 1.5 SECONDS, target = ooze.pulling)) - return FALSE var/mob/living/eat_target = ooze.pulling + owner.visible_message(span_warning("[ooze] starts attempting to devour [eat_target]!"), span_notice("You start attempting to devour [eat_target].")) + if(!do_after(ooze, 1.5 SECONDS, eat_target)) + return FALSE if(!(eat_target.mob_biotypes & MOB_ORGANIC) || eat_target.stat == DEAD) to_chat(src, span_warning("This creature isn't to my tastes!")) @@ -240,6 +240,7 @@ playsound(owner,'sound/items/eatfood.ogg', rand(30,50), TRUE) owner.visible_message(span_warning("[src] devours [target]!"), span_notice("You devour [target].")) START_PROCESSING(SSprocessing, src) + build_all_button_icons(UPDATE_BUTTON_NAME|UPDATE_BUTTON_ICON) ///Stop consuming the mob; dump them on the floor /datum/action/consume/proc/stop_consuming() @@ -252,6 +253,7 @@ owner.visible_message(span_warning("[owner] pukes out [vored_mob]!"), span_notice("You puke out [vored_mob].")) UnregisterSignal(vored_mob, COMSIG_QDELETING) vored_mob = null + build_all_button_icons(UPDATE_BUTTON_NAME|UPDATE_BUTTON_ICON) ///Gain health for the consumption and dump some brute loss on the target. /datum/action/consume/process() @@ -260,14 +262,26 @@ ooze.heal_ordered_damage((ooze.maxHealth * 0.03), list(BRUTE, BURN, OXY)) ///Heal 6% of these specific damage types each process ooze.adjust_ooze_nutrition(3) - ///Dump em at 200 bruteloss. - if(vored_mob.getBruteLoss() >= 200) + ///Dump 'em if they're dead. + if(vored_mob.stat == DEAD) stop_consuming() /datum/action/consume/Remove(mob/remove_from) stop_consuming() return ..() +/datum/action/consume/update_button_name(atom/movable/screen/movable/action_button/button, force) + if(vored_mob) + name = "Eject Mob" + desc = "Eject the mob you're currently consuming." + else + name = "Consume" + desc = "Consume a mob that you are dragging to gain nutrition from them." + return ..() + +/datum/action/consume/apply_button_icon(atom/movable/screen/movable/action_button/current_button, force) + button_icon_state = vored_mob ? "eject" : "consume" + return ..() ///* Gelatinious Grapes code below *\\\\ diff --git a/icons/mob/actions/actions_slime.dmi b/icons/mob/actions/actions_slime.dmi index aa92eb702e27a0c87ecd686fff5f44201a2b66c0..fa81c45d24606dec297babbd5eca5e81a513104c 100644 GIT binary patch delta 9746 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 R)YGLekP=Kyu38oz^gqD4e@*}Z delta 9034 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 n^oxjPlgwq|!v0