Gelatinous cubes stop digesting dead mobs instead of mobs with 200 brute damage; Consume action changes to Eject when a mob is consumed (#86817)

## 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

🆑
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  !)
/🆑
This commit is contained in:
Sealed101
2024-09-24 14:50:41 -04:00
committed by GitHub
parent 96fa7bd356
commit 196960f6ed
2 changed files with 23 additions and 9 deletions
@@ -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 *\\\\