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