From 9fe7b5901c93fcd3fad799388c173a8d6291789e Mon Sep 17 00:00:00 2001 From: Verkister Date: Fri, 2 Feb 2018 15:53:56 +0200 Subject: [PATCH 1/2] Broadens the scope of trashcan perk a little. -Adds a bunch of additional "trash" types that aren't included in obj/item/trash, such as: -Those spicy cardboard tubes called flares, preferably expended but whatever. -Glow sticks, full of delicious looking juice you'll regret. -Toy figures, become an impostor predator. -Ciggy butts, yum! -Banana peels. -Cardboard sheets, interesting flavor not included. -Crumpled papers. Hide that lewd drawing in seconds. -Broken light bulbs and tubes. Don't do this it's not healthy for most people. -Broken bottles, see the warning above. -A selection of emptied vendor drinkables (small milk, small chocomilk, coffee, tea, dutch choco, ice cup, ramen cup, and paper cups) -Those pesky torn inflatables. -And "burnt mess" with reduced toxin content via vore digestion. --- code/game/objects/items/trash_vr.dm | 286 +++++++++++++++++++++++++++- 1 file changed, 284 insertions(+), 2 deletions(-) diff --git a/code/game/objects/items/trash_vr.dm b/code/game/objects/items/trash_vr.dm index 58f8e23967..fc9086a3cb 100644 --- a/code/game/objects/items/trash_vr.dm +++ b/code/game/objects/items/trash_vr.dm @@ -14,7 +14,7 @@ user.drop_item() var/belly = H.vore_selected var/datum/belly/selected = H.vore_organs[belly] - src.forceMove(H) + forceMove(H) selected.internal_contents |= src to_chat(H, "You can taste the flavor of garbage. Wait what?") return @@ -26,8 +26,290 @@ user.drop_item() var/belly = R.vore_selected var/datum/belly/selected = R.vore_organs[belly] - src.forceMove(R) + forceMove(R) 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 From f553219bbdc3ca9af6029e9ecc14208d95c2701c Mon Sep 17 00:00:00 2001 From: Verkister Date: Sun, 4 Feb 2018 22:43:02 +0200 Subject: [PATCH 2/2] Squashed commit of the following: commit b3d348258c4c93a1df81652bdf68fd00f4130369 Author: Verkister Date: Sun Feb 4 22:40:08 2018 +0200 Squashed commit of the following: commit 5faa5f9d063e57400584ab1ae458e626629b6842 Author: Verkister Date: Sun Feb 4 22:31:10 2018 +0200 Update pai.dm commit fd4bbdc6b99d74d94befb440ffe5e0c23a98a918 Author: Verkister Date: Sun Feb 4 11:28:58 2018 +0200 Makes pAI cards, AI cards, and posis "edible" -Also makes it so that pAI cannot fold out if inside a gut. commit 1d13c207240c4bc296b188533e8cf50b1424cc36 Author: Verkister Date: Sun Feb 4 10:40:38 2018 +0200 some more trashcan refactoring commit 28d02c272dbd218d2d91c91fb1ecec999b9dd05e Author: Verkister Date: Sat Feb 3 13:32:14 2018 +0200 Trashcan perk refactor --- code/_helpers/global_lists_vr.dm | 36 +++ code/game/objects/items/trash_vr.dm | 282 ------------------ .../species/station/traits_vr/neutral.dm | 6 +- code/modules/mob/living/silicon/pai/pai.dm | 4 + code/modules/vore/eating/living_vr.dm | 63 ++++ 5 files changed, 108 insertions(+), 283 deletions(-) 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