From b28c11d9f5ee28cc9273ed4fe04a6cf0b6081d08 Mon Sep 17 00:00:00 2001 From: Metis <100518708+sheepishgoat@users.noreply.github.com> Date: Fri, 15 Nov 2024 01:12:29 -0500 Subject: [PATCH] extra functionality :3 --- .../code/mechanics/transformation/food.dm | 16 ++++++++++++++++ .../transformation/transformation_component.dm | 2 ++ code/modules/food_and_drinks/food/snacks.dm | 1 + tgstation.dme | 1 + 4 files changed, 20 insertions(+) create mode 100644 GainStation13/code/mechanics/transformation/food.dm diff --git a/GainStation13/code/mechanics/transformation/food.dm b/GainStation13/code/mechanics/transformation/food.dm new file mode 100644 index 0000000000..a84dae4f94 --- /dev/null +++ b/GainStation13/code/mechanics/transformation/food.dm @@ -0,0 +1,16 @@ +/obj/item/reagent_containers/food/snacks/proc/handle_tf(mob/living/eater) + var/datum/component/transformation_item/transformation_component = GetComponent(/datum/component/transformation_item) + if(!istype(transformation_component) || transformation_component.transfer_to_vore || (transformation_component.transformed_mob != src)) + return FALSE + + var/mob/living/food_mob = transformation_component.transformed_mob + if(!istype(food_mob) || !(food_mob?.vore_flags & DEVOURABLE) || (eater?.vore_flags & NO_VORE) || !istype(eater.vore_selected)) + return FALSE + + qdel(transformation_component) + var/obj/belly/vore_belly = eater.vore_selected + if(!vore_belly.nom_mob(food_mob,eater)) + return FALSE + + return TRUE + diff --git a/GainStation13/code/mechanics/transformation/transformation_component.dm b/GainStation13/code/mechanics/transformation/transformation_component.dm index 63909f01db..2a7462b38c 100644 --- a/GainStation13/code/mechanics/transformation/transformation_component.dm +++ b/GainStation13/code/mechanics/transformation/transformation_component.dm @@ -19,6 +19,8 @@ var/stuck_on_item = FALSE /// Is the person able to struggle out? var/able_to_struggle_out = TRUE + /// Transfer to vore belly when eaten + var/transfer_to_vore = TRUE /datum/component/transformation_item/Initialize() RegisterSignal(parent, COMSIG_PARENT_EXAMINE, PROC_REF(examine)) diff --git a/code/modules/food_and_drinks/food/snacks.dm b/code/modules/food_and_drinks/food/snacks.dm index 600a1e91ff..fbc8403bee 100644 --- a/code/modules/food_and_drinks/food/snacks.dm +++ b/code/modules/food_and_drinks/food/snacks.dm @@ -89,6 +89,7 @@ All foods are distributed among various categories. Use common sense. if(!reagents.total_volume) var/mob/living/location = loc var/obj/item/trash_item = generate_trash(location) + handle_tf()//GS13 EDIT qdel(src) if(istype(location)) location.put_in_hands(trash_item) diff --git a/tgstation.dme b/tgstation.dme index 883a4fce8f..563af60324 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -3972,6 +3972,7 @@ #include "GainStation13\code\mechanics\web_weaving.dm" #include "GainStation13\code\mechanics\den abductors\console.dm" #include "GainStation13\code\mechanics\den abductors\purchaseble_goodies.dm" +#include "GainStation13\code\mechanics\transformation\food.dm" #include "GainStation13\code\mechanics\transformation\mob_procs.dm" #include "GainStation13\code\mechanics\transformation\transformation_component.dm" #include "GainStation13\code\mechanics\transformation\transformation_item.dm"