From 39c09a60b8b830139d9476a56edce6e8603b4a05 Mon Sep 17 00:00:00 2001
From: timothyteakettle <59849408+timothyteakettle@users.noreply.github.com>
Date: Tue, 13 Jul 2021 23:45:31 +0100
Subject: [PATCH 1/4] initial commit
---
code/__DEFINES/citadel_defines.dm | 1 +
code/__DEFINES/traits.dm | 1 +
code/datums/traits/neutral.dm | 8 ++++++++
code/game/objects/items/trash.dm | 12 +++++++++++-
code/modules/client/preferences.dm | 4 ++++
5 files changed, 25 insertions(+), 1 deletion(-)
diff --git a/code/__DEFINES/citadel_defines.dm b/code/__DEFINES/citadel_defines.dm
index 541b50e9bd..04eeb515c9 100644
--- a/code/__DEFINES/citadel_defines.dm
+++ b/code/__DEFINES/citadel_defines.dm
@@ -101,6 +101,7 @@
#define NO_AUTO_WAG (1<<12)
#define GENITAL_EXAMINE (1<<13)
#define VORE_EXAMINE (1<<14)
+#define TRASH_FORCEFEED (1<<15)
#define TOGGLES_CITADEL 0
//belly sound pref things
diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm
index 3082856ccf..eb9bdccc22 100644
--- a/code/__DEFINES/traits.dm
+++ b/code/__DEFINES/traits.dm
@@ -221,6 +221,7 @@
#define TRAIT_LIVING_NO_DENSITY "living_no_density"
/// forces us to not render our overlays
#define TRAIT_HUMAN_NO_RENDER "human_no_render"
+#define TRAIT_TRASHCAN "trashcan"
// mobility flag traits
// IN THE FUTURE, IT WOULD BE NICE TO DO SOMETHING SIMILAR TO https://github.com/tgstation/tgstation/pull/48923/files (ofcourse not nearly the same because I have my.. thoughts on it)
diff --git a/code/datums/traits/neutral.dm b/code/datums/traits/neutral.dm
index 18d565ed5a..2f0667d942 100644
--- a/code/datums/traits/neutral.dm
+++ b/code/datums/traits/neutral.dm
@@ -154,3 +154,11 @@
/datum/quirk/longtimer/on_spawn()
var/mob/living/carbon/C = quirk_holder
C.generate_fake_scars(rand(min_scars, max_scars))
+
+/datum/quirk/trashcan
+ name = "Trashcan"
+ desc = "You are able to consume and digest trash."
+ value = 0
+ gain_text = "You feel like munching on a can of soda."
+ lose_text = "You no longer feel like you should be eating trash."
+ mob_trait = TRAIT_TRASHCAN
diff --git a/code/game/objects/items/trash.dm b/code/game/objects/items/trash.dm
index 2109d1038e..0f0416bb3c 100644
--- a/code/game/objects/items/trash.dm
+++ b/code/game/objects/items/trash.dm
@@ -82,4 +82,14 @@
grind_results = list(/datum/reagent/aluminium = 1) //from the mylar bag
/obj/item/trash/attack(mob/M, mob/living/user)
- return
+ if((M == user || user.vore_flags & TRASH_FORCEFEED) && ishuman(user))
+ var/mob/living/carbon/human/H = user
+ if(HAS_TRAIT(H, TRAIT_TRASHCAN))
+ playsound(H.loc,'sound/items/eatfood.ogg', rand(10,50), 1)
+ if(H.vore_selected)
+ H.visible_message("[H] [H.vore_selected.vore_verb]s the [src] into their [H.vore_selected]")
+ forceMove(H.vore_selected)
+ else
+ H.visible_message("[H] consumes the [src]")
+ qdel(src)
+
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index 251bcc72ad..fc65e88389 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -1068,6 +1068,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
dat += "Voracious MediHound sleepers: [(cit_toggles & MEDIHOUND_SLEEPER) ? "Yes" : "No"]
"
dat += "Hear Vore Sounds: [(cit_toggles & EATING_NOISES) ? "Yes" : "No"]
"
dat += "Hear Vore Digestion Sounds: [(cit_toggles & DIGESTION_NOISES) ? "Yes" : "No"]
"
+ dat += "Allow trash forcefeeding (requires Trashcan quirk) [(cit_toggles & TRASH_FORCEFEED) ? "Yes" : "No"]
"
dat += "Forced Feminization: [(cit_toggles & FORCED_FEM) ? "Allowed" : "Disallowed"]
"
dat += "Forced Masculinization: [(cit_toggles & FORCED_MASC) ? "Allowed" : "Disallowed"]
"
dat += "Lewd Hypno: [(cit_toggles & HYPNO) ? "Allowed" : "Disallowed"]
"
@@ -2800,6 +2801,9 @@ GLOBAL_LIST_EMPTY(preferences_datums)
if("toggledigestionnoise")
cit_toggles ^= DIGESTION_NOISES
+ if("toggleforcefeedtrash")
+ cit_toggles ^= TRASH_FORCEFEED
+
if("breast_enlargement")
cit_toggles ^= BREAST_ENLARGEMENT
From 5490519c48632b9149131d7cfcd6492347660377 Mon Sep 17 00:00:00 2001
From: timothyteakettle <59849408+timothyteakettle@users.noreply.github.com>
Date: Wed, 14 Jul 2021 00:22:12 +0100
Subject: [PATCH 2/4] Update trash.dm
---
code/game/objects/items/trash.dm | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/code/game/objects/items/trash.dm b/code/game/objects/items/trash.dm
index 0f0416bb3c..c0ff958612 100644
--- a/code/game/objects/items/trash.dm
+++ b/code/game/objects/items/trash.dm
@@ -87,9 +87,10 @@
if(HAS_TRAIT(H, TRAIT_TRASHCAN))
playsound(H.loc,'sound/items/eatfood.ogg', rand(10,50), 1)
if(H.vore_selected)
- H.visible_message("[H] [H.vore_selected.vore_verb]s the [src] into their [H.vore_selected]")
+ H.visible_message("[H] [H.vore_selected.vore_verb]s the [src] into their [H.vore_selected]",
+ "You [H.vore_selected.vore_verb]s the [src] into your [H.vore_selected]")
forceMove(H.vore_selected)
else
- H.visible_message("[H] consumes the [src]")
+ H.visible_message("[H] consumes the [src].")
qdel(src)
From 65c40a51f297fe16d10807005e08f1f74426b4c9 Mon Sep 17 00:00:00 2001
From: timothyteakettle <59849408+timothyteakettle@users.noreply.github.com>
Date: Wed, 14 Jul 2021 17:17:44 +0100
Subject: [PATCH 3/4] trash ELEMENT
---
code/_globalvars/lists/maintenance_loot.dm | 1 +
code/datums/elements/trash.dm | 18 ++++++++++++++++++
code/game/objects/items/cigs_lighters.dm | 4 ++++
code/game/objects/items/trash.dm | 17 +++--------------
tgstation.dme | 1 +
5 files changed, 27 insertions(+), 14 deletions(-)
create mode 100644 code/datums/elements/trash.dm
diff --git a/code/_globalvars/lists/maintenance_loot.dm b/code/_globalvars/lists/maintenance_loot.dm
index b41b7356a8..daa4f5879d 100644
--- a/code/_globalvars/lists/maintenance_loot.dm
+++ b/code/_globalvars/lists/maintenance_loot.dm
@@ -112,6 +112,7 @@ GLOBAL_LIST_INIT(maintenance_loot, list(
/obj/item/storage/box/marshmallow = 2,
/obj/item/clothing/gloves/tackler/offbrand = 1,
/obj/item/stack/sticky_tape = 1,
+ /obj/effect/spawner/lootdrop/grille_or_trash = 15,
"" = 3
))
diff --git a/code/datums/elements/trash.dm b/code/datums/elements/trash.dm
new file mode 100644
index 0000000000..e685f2ad22
--- /dev/null
+++ b/code/datums/elements/trash.dm
@@ -0,0 +1,18 @@
+/datum/element/trash
+ element_flags = ELEMENT_BESPOKE|ELEMENT_DETACH
+
+/datum/element/trash/Attach(datum/target)
+ RegisterSignal(target, COMSIG_ITEM_ATTACK, .proc/UseFromHand)
+
+/datum/element/trash/proc/UseFromHand(obj/item/source, mob/living/M, mob/living/user)
+ if((M == user || user.vore_flags & TRASH_FORCEFEED) && ishuman(user))
+ var/mob/living/carbon/human/H = user
+ if(HAS_TRAIT(H, TRAIT_TRASHCAN))
+ playsound(H.loc,'sound/items/eatfood.ogg', rand(10,50), 1)
+ if(H.vore_selected)
+ H.visible_message("[H] [H.vore_selected.vore_verb]s the [source] into their [H.vore_selected]",
+ "You [H.vore_selected.vore_verb]s the [source] into your [H.vore_selected]")
+ source.forceMove(H.vore_selected)
+ else
+ H.visible_message("[H] consumes the [source].")
+ qdel(source)
diff --git a/code/game/objects/items/cigs_lighters.dm b/code/game/objects/items/cigs_lighters.dm
index 4280e7105f..16ebe20e51 100644
--- a/code/game/objects/items/cigs_lighters.dm
+++ b/code/game/objects/items/cigs_lighters.dm
@@ -387,6 +387,10 @@ CIGARETTE PACKETS ARE IN FANCY.DM
throwforce = 0
grind_results = list(/datum/reagent/carbon = 2)
+/obj/item/cigbutt/Initialize()
+ . = ..()
+ AddElement(/datum/element/trash)
+
/obj/item/cigbutt/cigarbutt
name = "cigar butt"
desc = "A manky old cigar butt."
diff --git a/code/game/objects/items/trash.dm b/code/game/objects/items/trash.dm
index c0ff958612..1dc0378ea1 100644
--- a/code/game/objects/items/trash.dm
+++ b/code/game/objects/items/trash.dm
@@ -7,6 +7,9 @@
w_class = WEIGHT_CLASS_TINY
resistance_flags = FLAMMABLE
+/obj/item/trash/Initialize()
+ AddElement(/datum/element/trash)
+
/obj/item/trash/raisins
name = "\improper 4no raisins"
icon_state= "4no_raisins"
@@ -80,17 +83,3 @@
name = "boritos bag"
icon_state = "boritos"
grind_results = list(/datum/reagent/aluminium = 1) //from the mylar bag
-
-/obj/item/trash/attack(mob/M, mob/living/user)
- if((M == user || user.vore_flags & TRASH_FORCEFEED) && ishuman(user))
- var/mob/living/carbon/human/H = user
- if(HAS_TRAIT(H, TRAIT_TRASHCAN))
- playsound(H.loc,'sound/items/eatfood.ogg', rand(10,50), 1)
- if(H.vore_selected)
- H.visible_message("[H] [H.vore_selected.vore_verb]s the [src] into their [H.vore_selected]",
- "You [H.vore_selected.vore_verb]s the [src] into your [H.vore_selected]")
- forceMove(H.vore_selected)
- else
- H.visible_message("[H] consumes the [src].")
- qdel(src)
-
diff --git a/tgstation.dme b/tgstation.dme
index ed85c32cc4..59a4f99b64 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -639,6 +639,7 @@
#include "code\datums\elements\swimming.dm"
#include "code\datums\elements\sword_point.dm"
#include "code\datums\elements\tactical.dm"
+#include "code\datums\elements\trash.dm"
#include "code\datums\elements\turf_transparency.dm"
#include "code\datums\elements\update_icon_blocker.dm"
#include "code\datums\elements\update_icon_updates_onmob.dm"
From 41759dd163dd35af56c92374dced65b12abcccb0 Mon Sep 17 00:00:00 2001
From: timothyteakettle <59849408+timothyteakettle@users.noreply.github.com>
Date: Wed, 14 Jul 2021 18:15:33 +0100
Subject: [PATCH 4/4] fix
---
code/datums/elements/trash.dm | 1 +
code/game/objects/items/trash.dm | 1 +
2 files changed, 2 insertions(+)
diff --git a/code/datums/elements/trash.dm b/code/datums/elements/trash.dm
index e685f2ad22..3a4d5b0150 100644
--- a/code/datums/elements/trash.dm
+++ b/code/datums/elements/trash.dm
@@ -2,6 +2,7 @@
element_flags = ELEMENT_BESPOKE|ELEMENT_DETACH
/datum/element/trash/Attach(datum/target)
+ . = ..()
RegisterSignal(target, COMSIG_ITEM_ATTACK, .proc/UseFromHand)
/datum/element/trash/proc/UseFromHand(obj/item/source, mob/living/M, mob/living/user)
diff --git a/code/game/objects/items/trash.dm b/code/game/objects/items/trash.dm
index 1dc0378ea1..1816f26843 100644
--- a/code/game/objects/items/trash.dm
+++ b/code/game/objects/items/trash.dm
@@ -8,6 +8,7 @@
resistance_flags = FLAMMABLE
/obj/item/trash/Initialize()
+ . = ..()
AddElement(/datum/element/trash)
/obj/item/trash/raisins