diff --git a/code/_helpers/global_lists_vr.dm b/code/_helpers/global_lists_vr.dm
index 90c93aba8f..f54d8d6b18 100644
--- a/code/_helpers/global_lists_vr.dm
+++ b/code/_helpers/global_lists_vr.dm
@@ -123,6 +123,42 @@ var/global/list/tf_egg_types = list(
"Xenochimera" = /obj/structure/closet/secure_closet/egg/scree,
"Xenomorph" = /obj/structure/closet/secure_closet/egg/xenomorph)
+var/global/list/edible_trash = list(/obj/item/trash,
+ /obj/item/device/flashlight,
+ /obj/item/toy/figure,
+ /obj/item/weapon/cigbutt,
+ /obj/item/weapon/bananapeel,
+ /obj/item/stack/material/cardboard,
+ /obj/item/weapon/light,
+ /obj/item/weapon/paper,
+ /obj/item/weapon/broken_bottle,
+ /obj/item/weapon/reagent_containers/food,
+ /obj/item/inflatable/torn,
+ /obj/item/weapon/flame/match,
+ /obj/item/clothing/mask/smokable,
+ /obj/item/weapon/storage/wallet,
+ /obj/item/weapon/spacecash,
+ /obj/item/broken_device,
+ /obj/item/weapon/corncob,
+ /obj/item/weapon/paperplane,
+ /obj/item/weapon/pen,
+ /obj/item/weapon/photo,
+ /obj/item/weapon/storage/box/wings,
+ /obj/item/weapon/storage/box/matches,
+ /obj/item/weapon/storage/fancy/cigarettes,
+ /obj/item/weapon/storage/fancy/egg_box,
+ /obj/item/weapon/storage/fancy/candle_box,
+ /obj/item/weapon/storage/fancy/crayons,
+ /obj/item/weapon/dice,
+ /obj/item/weapon/newspaper,
+ /obj/item/weapon/reagent_containers/glass/rag,
+ /obj/item/weapon/lipstick,
+ /obj/item/weapon/soap,
+ /obj/item/weapon/material/shard,
+ /obj/item/device/paicard,
+ /obj/item/device/mmi/digital/posibrain,
+ /obj/item/device/aicard)
+
/hook/startup/proc/init_vore_datum_ref_lists()
var/paths
diff --git a/code/game/objects/items/trash_vr.dm b/code/game/objects/items/trash_vr.dm
index fc9086a3cb..38c434b973 100644
--- a/code/game/objects/items/trash_vr.dm
+++ b/code/game/objects/items/trash_vr.dm
@@ -30,286 +30,4 @@
selected.internal_contents |= src // Too many hoops and obstacles to stick it into the sleeper module.
R.visible_message("[user] feeds [R] with [src]!")
return
- ..()
-
-/obj/item/device/flashlight/flare/attack(mob/living/M as mob, mob/living/user as mob)
- if(ishuman(M))
- var/mob/living/carbon/human/H = M
- if(H.species.trashcan == 1)
- playsound(H.loc,'sound/items/eatfood.ogg', rand(10,50), 1)
- user.drop_item()
- var/belly = H.vore_selected
- var/datum/belly/selected = H.vore_organs[belly]
- forceMove(H)
- selected.internal_contents |= src
- to_chat(H, "You can taste the flavor of spicy cardboard. Wait what?")
- return
- ..()
-
-/obj/item/device/flashlight/glowstick/attack(mob/living/M as mob, mob/living/user as mob)
- if(ishuman(M))
- var/mob/living/carbon/human/H = M
- if(H.species.trashcan == 1)
- playsound(H.loc,'sound/items/eatfood.ogg', rand(10,50), 1)
- user.drop_item()
- var/belly = H.vore_selected
- var/datum/belly/selected = H.vore_organs[belly]
- forceMove(H)
- selected.internal_contents |= src
- to_chat(H, "You found out the glowy juice only tastes like regret. Wait what?")
- return
- ..()
-
-/obj/item/toy/figure/attack(mob/living/M as mob, mob/living/user as mob)
- if(ishuman(M))
- var/mob/living/carbon/human/H = M
- if(H.species.trashcan == 1)
- playsound(H.loc,'sound/vore/gulp.ogg', rand(10,50), 1)
- user.drop_item()
- var/belly = H.vore_selected
- var/datum/belly/selected = H.vore_organs[belly]
- forceMove(H)
- selected.internal_contents |= src
- visible_message("[M] demonstrates their voracious capabilities by swallowing [src] whole!")
- return
- ..()
-
-/obj/item/weapon/cigbutt/attack(mob/living/M as mob, mob/living/user as mob)
- if(ishuman(M))
- var/mob/living/carbon/human/H = M
- if(H.species.trashcan == 1)
- playsound(H.loc,'sound/items/eatfood.ogg', rand(10,50), 1)
- user.drop_item()
- var/belly = H.vore_selected
- var/datum/belly/selected = H.vore_organs[belly]
- forceMove(H)
- selected.internal_contents |= src
- to_chat(H, "You can taste the flavor of bitter ash. Classy.")
- return
- ..()
-
-/obj/item/weapon/bananapeel/attack(mob/living/M as mob, mob/living/user as mob)
- if(ishuman(M))
- var/mob/living/carbon/human/H = M
- if(H.species.trashcan == 1)
- playsound(H.loc,'sound/items/eatfood.ogg', rand(10,50), 1)
- user.drop_item()
- var/belly = H.vore_selected
- var/datum/belly/selected = H.vore_organs[belly]
- forceMove(H)
- selected.internal_contents |= src
- to_chat(H, "You can taste the flavor of bitter banana.")
- return
- ..()
-
-/obj/item/stack/material/cardboard/attack(mob/living/M as mob, mob/living/user as mob)
- if(ishuman(M))
- var/mob/living/carbon/human/H = M
- if(H.species.trashcan == 1)
- playsound(H.loc,'sound/items/eatfood.ogg', rand(10,50), 1)
- user.drop_item()
- var/belly = H.vore_selected
- var/datum/belly/selected = H.vore_organs[belly]
- forceMove(H)
- selected.internal_contents |= src
- to_chat(H, "You can taste the flavor of cardboard. Delicious.")
- return
- ..()
-
-/obj/item/weapon/paper/attack(mob/living/carbon/M as mob, mob/living/user as mob)
- if(icon_state == "scrap")
- if(ishuman(M))
- var/mob/living/carbon/human/H = M
- if(H.species.trashcan == 1)
- playsound(H.loc,'sound/items/eatfood.ogg', rand(10,50), 1)
- user.drop_item()
- var/belly = H.vore_selected
- var/datum/belly/selected = H.vore_organs[belly]
- forceMove(H)
- selected.internal_contents |= src
- to_chat(H, "You can taste the dry flavor of bureaucracy.")
- return
- ..()
-
-/obj/item/weapon/light/attack(mob/living/M as mob, mob/living/user as mob)
- var/obj/item/weapon/light/L = src
- if(ishuman(M) && L.status > 1)
- var/mob/living/carbon/human/H = M
- if(H.species.trashcan == 1)
- playsound(H.loc,'sound/items/eatfood.ogg', rand(10,50), 1)
- user.drop_item()
- var/belly = H.vore_selected
- var/datum/belly/selected = H.vore_organs[belly]
- forceMove(H)
- selected.internal_contents |= src
- to_chat(H, "You can taste the flavor of pain. This can't possibly be healthy for your guts.")
- return
- ..()
-
-/obj/item/weapon/broken_bottle/attack(mob/living/M as mob, mob/living/user as mob)
- if(ishuman(M))
- var/mob/living/carbon/human/H = M
- if(H.species.trashcan == 1)
- playsound(H.loc,'sound/items/eatfood.ogg', rand(10,50), 1)
- user.drop_item()
- var/belly = H.vore_selected
- var/datum/belly/selected = H.vore_organs[belly]
- forceMove(H)
- selected.internal_contents |= src
- to_chat(H, "You can taste the flavor of pain. This can't possibly be healthy for your guts.")
- return
- ..()
-
-/obj/item/weapon/reagent_containers/food/drinks/cans/attack(mob/living/M as mob, mob/living/user as mob)
- if(ishuman(M) && !reagents.total_volume)
- var/mob/living/carbon/human/H = M
- if(H.species.trashcan == 1)
- playsound(H.loc,'sound/items/eatfood.ogg', rand(10,50), 1)
- user.drop_item()
- var/belly = H.vore_selected
- var/datum/belly/selected = H.vore_organs[belly]
- forceMove(H)
- selected.internal_contents |= src
- to_chat(H, "You can taste the flavor of garbage. Wait what?")
- return
- ..()
-
-/obj/item/weapon/reagent_containers/food/drinks/smallmilk/attack(mob/living/M as mob, mob/living/user as mob)
- if(ishuman(M) && !reagents.total_volume)
- var/mob/living/carbon/human/H = M
- if(H.species.trashcan == 1)
- playsound(H.loc,'sound/items/eatfood.ogg', rand(10,50), 1)
- user.drop_item()
- var/belly = H.vore_selected
- var/datum/belly/selected = H.vore_organs[belly]
- forceMove(H)
- selected.internal_contents |= src
- to_chat(H, "You can taste the flavor of creamy garbage. Wait what?")
- return
- ..()
-
-/obj/item/weapon/reagent_containers/food/drinks/smallchocmilk/attack(mob/living/M as mob, mob/living/user as mob)
- if(ishuman(M) && !reagents.total_volume)
- var/mob/living/carbon/human/H = M
- if(H.species.trashcan == 1)
- playsound(H.loc,'sound/items/eatfood.ogg', rand(10,50), 1)
- user.drop_item()
- var/belly = H.vore_selected
- var/datum/belly/selected = H.vore_organs[belly]
- forceMove(H)
- selected.internal_contents |= src
- to_chat(H, "You can taste the flavor of chocolate and garbage. Wait what?")
- return
- ..()
-
-/obj/item/weapon/reagent_containers/food/drinks/coffee/attack(mob/living/M as mob, mob/living/user as mob)
- if(ishuman(M) && !reagents.total_volume)
- var/mob/living/carbon/human/H = M
- if(H.species.trashcan == 1)
- playsound(H.loc,'sound/items/eatfood.ogg', rand(10,50), 1)
- user.drop_item()
- var/belly = H.vore_selected
- var/datum/belly/selected = H.vore_organs[belly]
- forceMove(H)
- selected.internal_contents |= src
- to_chat(H, "You can taste the flavor of caffeinated garbage. Wait what?")
- return
- ..()
-
-/obj/item/weapon/reagent_containers/food/drinks/tea/attack(mob/living/M as mob, mob/living/user as mob)
- if(ishuman(M) && !reagents.total_volume)
- var/mob/living/carbon/human/H = M
- if(H.species.trashcan == 1)
- playsound(H.loc,'sound/items/eatfood.ogg', rand(10,50), 1)
- user.drop_item()
- var/belly = H.vore_selected
- var/datum/belly/selected = H.vore_organs[belly]
- forceMove(H)
- selected.internal_contents |= src
- to_chat(H, "You can taste the flavor of garbage. Wait what?")
- return
- ..()
-
-/obj/item/weapon/reagent_containers/food/drinks/h_chocolate/attack(mob/living/M as mob, mob/living/user as mob)
- if(ishuman(M) && !reagents.total_volume)
- var/mob/living/carbon/human/H = M
- if(H.species.trashcan == 1)
- playsound(H.loc,'sound/items/eatfood.ogg', rand(10,50), 1)
- user.drop_item()
- var/belly = H.vore_selected
- var/datum/belly/selected = H.vore_organs[belly]
- forceMove(H)
- selected.internal_contents |= src
- to_chat(H, "You can taste the flavor of chocolate and garbage. Wait what?")
- return
- ..()
-
-/obj/item/weapon/reagent_containers/food/drinks/ice/attack(mob/living/M as mob, mob/living/user as mob)
- if(ishuman(M) && !reagents.total_volume)
- var/mob/living/carbon/human/H = M
- if(H.species.trashcan == 1)
- playsound(H.loc,'sound/items/eatfood.ogg', rand(10,50), 1)
- user.drop_item()
- var/belly = H.vore_selected
- var/datum/belly/selected = H.vore_organs[belly]
- forceMove(H)
- selected.internal_contents |= src
- to_chat(H, "You can taste the flavor of cold wet garbage. Wait what?")
- return
- ..()
-
-/obj/item/weapon/reagent_containers/food/drinks/dry_ramen/attack(mob/living/M as mob, mob/living/user as mob)
- if(ishuman(M) && !reagents.total_volume)
- var/mob/living/carbon/human/H = M
- if(H.species.trashcan == 1)
- playsound(H.loc,'sound/items/eatfood.ogg', rand(10,50), 1)
- user.drop_item()
- var/belly = H.vore_selected
- var/datum/belly/selected = H.vore_organs[belly]
- forceMove(H)
- selected.internal_contents |= src
- to_chat(H, "You can taste the flavor of garbage. Wait what?")
- return
- ..()
-
-/obj/item/weapon/reagent_containers/food/drinks/sillycup/attack(mob/living/M as mob, mob/living/user as mob)
- if(ishuman(M) && !reagents.total_volume)
- var/mob/living/carbon/human/H = M
- if(H.species.trashcan == 1)
- playsound(H.loc,'sound/items/eatfood.ogg', rand(10,50), 1)
- user.drop_item()
- var/belly = H.vore_selected
- var/datum/belly/selected = H.vore_organs[belly]
- forceMove(H)
- selected.internal_contents |= src
- to_chat(H, "You can taste the flavor of garbage. Wait what?")
- return
- ..()
-
-/obj/item/inflatable/torn/attack(mob/living/M as mob, mob/living/user as mob)
- if(ishuman(M))
- var/mob/living/carbon/human/H = M
- if(H.species.trashcan == 1)
- playsound(H.loc,'sound/items/eatfood.ogg', rand(10,50), 1)
- user.drop_item()
- var/belly = H.vore_selected
- var/datum/belly/selected = H.vore_organs[belly]
- forceMove(H)
- selected.internal_contents |= src
- to_chat(H, "You can taste the flavor of garbage. Wait what?")
- return
- ..()
-
-/obj/item/weapon/reagent_containers/food/snacks/badrecipe/attack(mob/living/M as mob, mob/living/user as mob)
- if(ishuman(M))
- var/mob/living/carbon/human/H = M
- if(H.species.trashcan == 1)
- playsound(H.loc,'sound/items/eatfood.ogg', rand(10,50), 1)
- user.drop_item()
- var/belly = H.vore_selected
- var/datum/belly/selected = H.vore_organs[belly]
- forceMove(H)
- selected.internal_contents |= src
- to_chat(H, "You can taste the flavor of someone's horrible cooking skills.")
- return
..()
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral.dm b/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral.dm
index ee849fb721..7349bafa02 100644
--- a/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral.dm
+++ b/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral.dm
@@ -91,10 +91,14 @@
/datum/trait/trashcan
name = "Trash Can"
- desc = "Allows you to dispose of the snack wrappings on the go instead of having to look for a bin or littering like an animal."
+ desc = "Allows you to dispose of some garbage on the go instead of having to look for a bin or littering like an animal."
cost = 0
var_changes = list("trashcan" = 1)
+/datum/trait/trashcan/apply(var/datum/species/S,var/mob/living/carbon/human/H)
+ ..(S,H)
+ H.verbs |= /mob/living/proc/eat_trash
+
/datum/trait/glowing_eyes
name = "Glowing Eyes"
desc = "Your eyes show up above darkness. SPOOKY! And kinda edgey too."
diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm
index c2bd6e0bf4..df86b24c00 100644
--- a/code/modules/mob/living/silicon/pai/pai.dm
+++ b/code/modules/mob/living/silicon/pai/pai.dm
@@ -270,6 +270,10 @@
return 0
else if(istype(card.loc,/mob))
var/mob/holder = card.loc
+ var/datum/belly/inside_belly = check_belly(card) //VOREStation edit.
+ if(inside_belly) //VOREStation edit.
+ to_chat(src, "There is no room to unfold in here. You're good and stuck.") //VOREStation edit.
+ return 0 //VOREStation edit.
if(ishuman(holder))
var/mob/living/carbon/human/H = holder
for(var/obj/item/organ/external/affecting in H.organs)
diff --git a/code/modules/vore/eating/living_vr.dm b/code/modules/vore/eating/living_vr.dm
index c999b7b88b..a6ec760ffa 100644
--- a/code/modules/vore/eating/living_vr.dm
+++ b/code/modules/vore/eating/living_vr.dm
@@ -587,3 +587,66 @@
var/new_color = input(src,"Select a new color","Body Glow",glow_color) as color
if(new_color)
glow_color = new_color
+
+/mob/living/proc/eat_trash()
+ set name = "Eat Trash"
+ set category = "Abilities"
+ set desc = "Consume held garbage."
+
+ var/obj/item/I = get_active_hand()
+ if(!I)
+ to_chat(src, "You are not holding anything.")
+ return
+ if(is_type_in_list(I,edible_trash))
+ playsound(src.loc,'sound/vore/gulp.ogg', 20, 1)
+ drop_item()
+ var/belly = vore_selected
+ var/datum/belly/selected = vore_organs[belly]
+ I.forceMove(src)
+ selected.internal_contents |= I
+ if(istype(I,/obj/item/device/flashlight/flare) || istype(I,/obj/item/weapon/flame/match) || istype(I,/obj/item/weapon/storage/box/matches))
+ to_chat(src, "You can taste the flavor of spicy cardboard.")
+ else if(istype(I,/obj/item/device/flashlight/glowstick))
+ to_chat(src, "You found out the glowy juice only tastes like regret.")
+ else if(istype(I,/obj/item/weapon/cigbutt))
+ to_chat(src, "You can taste the flavor of bitter ash. Classy.")
+ else if(istype(I,/obj/item/clothing/mask/smokable))
+ var/obj/item/clothing/mask/smokable/C = I
+ if(C.lit)
+ to_chat(src, "You can taste the flavor of burning ash. Spicy!")
+ else
+ to_chat(src, "You can taste the flavor of aromatic rolling paper and funny looks.")
+ else if(istype(I,/obj/item/weapon/paper))
+ to_chat(src, "You can taste the dry flavor of bureaucracy.")
+ else if(istype(I,/obj/item/weapon/dice))
+ to_chat(src, "You can taste the bitter flavor of cheating.")
+ else if(istype(I,/obj/item/weapon/lipstick))
+ to_chat(src, "You can taste the flavor of couture and style. Toddler at the make-up bag style.")
+ else if(istype(I,/obj/item/weapon/soap))
+ to_chat(src, "You can taste the bitter flavor of verbal purification.")
+ else if(istype(I,/obj/item/weapon/spacecash) || istype(I,/obj/item/weapon/storage/wallet))
+ to_chat(src, "You can taste the flavor of wealth and reckless waste.")
+ else if(istype(I,/obj/item/weapon/broken_bottle) || istype(I,/obj/item/weapon/material/shard))
+ to_chat(src, "You can taste the flavor of pain. This can't possibly be healthy for your guts.")
+ else if(istype(I,/obj/item/weapon/light))
+ var/obj/item/weapon/light/L = I
+ if(L.status == LIGHT_BROKEN)
+ to_chat(src, "You can taste the flavor of pain. This can't possibly be healthy for your guts.")
+ else
+ to_chat(src, "You can taste the flavor of really bad ideas.")
+ else if(istype(I,/obj/item/toy/figure))
+ visible_message("[src] demonstrates their voracious capabilities by swallowing [I] whole!")
+ else if(istype(I,/obj/item/device/paicard) || istype(I,/obj/item/device/mmi/digital/posibrain) || istype(I,/obj/item/device/aicard))
+ visible_message("[src] demonstrates their voracious capabilities by swallowing [I] whole!")
+ to_chat(src, "You can taste the sweet flavor of digital friendship. Or maybe it is something else.")
+ else if(istype(I,/obj/item/weapon/reagent_containers/food))
+ var/obj/item/weapon/reagent_containers/food/F = I
+ if(!F.reagents.total_volume)
+ to_chat(src, "You can taste the flavor of garbage and leftovers. Delicious?")
+ else
+ to_chat(src, "You can taste the flavor of gluttonous waste of food.")
+ else
+ to_chat(src, "You can taste the flavor of garbage. Delicious.")
+ return
+ to_chat(src, "This item is not appropriate for ethical consumption.")
+ return
\ No newline at end of file