The Toiletbong and other poetical additions (*click* Noice) (#68193)

* Main

* Added deconstruction and better rotation

* Open flame during usage, emagging

* Wording fix, sound fix

* Extra-indestructable check

* Storage is now a normal datum instead of a component? Noice

* Updated harvest.dmi after bell pepper resprite

* The new atom storage broke the emag capability, added a small fix
This commit is contained in:
LordVollkorn
2022-07-15 17:35:19 +02:00
committed by GitHub
parent 35b003f783
commit 641aa16bae
16 changed files with 258 additions and 0 deletions
@@ -1766,5 +1766,34 @@
/obj/item/stock_parts/water_recycler = 1)
category = CAT_STRUCTURE
/datum/crafting_recipe/toiletbong
name = "Toiletbong"
category = CAT_STRUCTURE
tool_behaviors = list(TOOL_WRENCH)
reqs = list(
/obj/item/flamethrower = 1)
result = /obj/structure/toiletbong
time = 5 SECONDS
additional_req_text = " plasma tank (on flamethrower), toilet"
/datum/crafting_recipe/toiletbong/check_requirements(mob/user, list/collected_requirements)
if((locate(/obj/structure/toilet) in range(1, user.loc)) == null)
return FALSE
var/obj/item/flamethrower/flamethrower = collected_requirements[/obj/item/flamethrower][1]
if(flamethrower.ptank == null)
return FALSE
return TRUE
/datum/crafting_recipe/toiletbong/on_craft_completion(mob/user, atom/result)
var/obj/structure/toiletbong/toiletbong = result
var/obj/structure/toilet/toilet = locate(/obj/structure/toilet) in range(1, user.loc)
for (var/obj/item/cistern_item in toilet.contents)
cistern_item.forceMove(user.loc)
to_chat(user, span_warning("[cistern_item] falls out of the toilet!"))
toiletbong.dir = toilet.dir
toiletbong.loc = toilet.loc
qdel(toilet)
to_chat(user, span_notice("[user] attaches the flamethrower to the repurposed toilet."))
#undef CRAFTING_MACHINERY_CONSUME
#undef CRAFTING_MACHINERY_USE
+19
View File
@@ -517,3 +517,22 @@
/obj/item/food/cakeslice/fruit/Initialize(mapload)
. = ..()
icon_state = "[base_icon_state][rand(1,3)]"
/obj/item/food/cake/plum
name = "plum cake"
desc = "A cake centred with Plums."
icon_state = "plumcake"
food_reagents = list(/datum/reagent/consumable/nutriment = 20, /datum/reagent/consumable/nutriment/vitamin = 10, /datum/reagent/impurity/rosenol = 8)
tastes = list("cake" = 5, "sweetness" = 1, "plum" = 2)
foodtypes = GRAIN | DAIRY | FRUIT | SUGAR
venue_value = FOOD_PRICE_CHEAP
/obj/item/food/cake/plum/MakeProcessable()
AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/cakeslice/plum, 5, 3 SECONDS, table_required = TRUE)
/obj/item/food/cakeslice/plum
name = "plum cake slice"
desc = "A slice of plum cake."
icon_state = "plumcakeslice"
tastes = list("cake" = 5, "sweetness" = 1, "plum" = 2)
foodtypes = GRAIN | DAIRY | FRUIT | SUGAR
+110
View File
@@ -0,0 +1,110 @@
/obj/structure/toiletbong
name = "toilet bong"
desc = "A repurposed toilet with re-arranged piping and an attached flamethrower. Why would anyone build this?"
icon = 'icons/obj/watercloset.dmi'
icon_state = "toiletbong"
density = TRUE
anchored = TRUE
var/emagged = FALSE
var/smokeradius = 1
var/mutable_appearance/weed_overlay
/obj/structure/toiletbong/Initialize()
. = ..()
create_storage()
atom_storage.attack_hand_interact = FALSE
atom_storage.set_holdable(list(/obj/item/food/))
atom_storage.max_total_storage = 100
atom_storage.max_slots = 12
weed_overlay = mutable_appearance('icons/obj/watercloset.dmi', "toiletbong_overlay")
START_PROCESSING(SSobj, src)
/obj/structure/toiletbong/update_icon()
. = ..()
cut_overlays()
if (LAZYLEN(contents))
add_overlay(weed_overlay)
/obj/structure/toiletbong/attack_hand(mob/living/carbon/user)
. = ..()
if (!anchored)
user.balloon_alert(user, "Secure it first!")
return
if (!LAZYLEN(contents))
user.balloon_alert(user, "It's empty!")
return
user.visible_message(span_boldnotice("[user] takes a huge drag on the [src]."))
if (do_after(user, 2 SECONDS, target = src))
var/turf/toiletbong_location = loc
toiletbong_location.hotspot_expose(1000, 5)
for (var/obj/item/item in contents)
if (item.resistance_flags & INDESTRUCTIBLE)
user.balloon_alert(user, "[item.name] is blocking the pipes!")
continue
playsound(src, 'sound/items/modsuit/flamethrower.ogg', 50)
var/datum/effect_system/fluid_spread/smoke/chem/smoke_machine/puff = new
puff.set_up(smokeradius, holder = src, location = user, carry = item.reagents, efficiency = 20)
puff.start()
if (prob(5) && !emagged)
if(islizard(user))
to_chat(user, span_boldnotice("A hidden treat in the pipes!"))
user.balloon_alert(user, "A hidden treat in the pipes!")
user.visible_message(span_danger("[user] fishes a mouse out of the pipes."))
else
to_chat(user, span_userdanger("There was something disgusting in the pipes!"))
user.visible_message(span_danger("[user] spits out a mouse."))
user.adjust_disgust(50)
user.vomit(10)
var/mob/living/spawned_mob = new /mob/living/simple_animal/mouse(get_turf(user))
spawned_mob.faction |= "[REF(user)]"
if(prob(50))
for(var/j in 1 to rand(1, 3))
step(spawned_mob, pick(NORTH,SOUTH,EAST,WEST))
qdel(item)
if(!emagged)
break
update_icon()
/obj/structure/toiletbong/wrench_act(mob/living/user, obj/item/tool)
tool.play_tool_sound(src)
if(anchored)
to_chat(user, span_notice("You begin unsecuring the [src]."))
anchored = FALSE
else
to_chat(user, span_notice("You secure the [src] to the floor."))
anchored = TRUE
return TRUE
/obj/structure/toiletbong/crowbar_act(mob/living/user, obj/item/tool)
if(anchored)
return FALSE
tool.play_tool_sound(src)
to_chat(user, span_notice("You begin taking apart the [src]."))
if (!do_after(user, 10 SECONDS, target = src))
return FALSE
new /obj/item/flamethrower(get_turf(src))
new /obj/item/stack/sheet/iron(get_turf(src))
var/obj/item/tank/internals/plasma/ptank = new /obj/item/tank/internals/plasma(get_turf(src))
ptank.air_contents.gases[/datum/gas/plasma][MOLES] = (0)
qdel(src)
return TRUE
/obj/structure/toiletbong/AltClick(mob/living/user)
if(anchored)
return ..()
setDir(turn(dir,90))
playsound(src, 'sound/items/deconstruct.ogg', 50)
return
/obj/structure/toiletbong/emag_act(mob/user, obj/item/card/emag/emag_card)
playsound(src, 'sound/effects/fish_splash.ogg', 50)
user.balloon_alert(user, "Whoops!")
if(!emagged)
emagged = TRUE
smokeradius = 2
to_chat(user, span_boldwarning("The [emag_card.name] falls into the toilet. You fish it back out. Looks like you broke the toilet."))
/obj/structure/toiletbong/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/card/emag))
return
. = ..()
@@ -790,3 +790,7 @@
results = list(/datum/reagent/consumable/vanilla_dream = 3)
required_reagents = list(/datum/reagent/consumable/vanilla = 1, /datum/reagent/consumable/milk = 1, /datum/reagent/consumable/cream = 1)
/datum/chemical_reaction/drink/thehat
results = list(/datum/reagent/consumable/ethanol/thehat = 1)
required_reagents = list(/datum/reagent/consumable/ethanol = 1, /datum/reagent/water = 1, /datum/reagent/consumable/ethanol/plumwine = 1)
mix_message = "The drink starts to smell perfumy..."
@@ -243,3 +243,12 @@
)
result = /obj/item/food/cake/fruit
subcategory = CAT_CAKE
/datum/crafting_recipe/food/plumcake
name = "Plum cake"
reqs = list(
/obj/item/food/cake/plain = 1,
/obj/item/food/grown/plum = 2
)
result = /obj/item/food/cake/plum
subcategory = CAT_CAKE
+48
View File
@@ -0,0 +1,48 @@
// Plum
/obj/item/seeds/plum
name = "pack of plum seeds"
desc = "These seeds grow into plum trees."
icon_state = "seed-plum"
species = "plum"
plantname = "Plum Tree"
product = /obj/item/food/grown/plum
lifespan = 55
endurance = 35
yield = 5
growing_icon = 'icons/obj/hydroponics/growing_fruits.dmi'
icon_grow = "plum-grow"
icon_dead = "plum-dead"
genes = list(/datum/plant_gene/trait/repeated_harvest, /datum/plant_gene/trait/one_bite)
mutatelist = list(/obj/item/seeds/plum/plumb)
reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1, /datum/reagent/impurity/rosenol = 0.04)
/obj/item/food/grown/plum
seed = /obj/item/seeds/plum
name = "plum"
desc = "A poet's favorite fruit. Noice."
icon_state = "plum"
foodtypes = FRUIT
juice_results = list(/datum/reagent/consumable/plumjuice = 0)
tastes = list("plum" = 1)
distill_reagent = /datum/reagent/consumable/ethanol/plumwine
// Plumb
/obj/item/seeds/plum/plumb
name = "pack of plumb seeds"
desc = "These seeds grow into plumb trees."
icon_state = "seed-plumb"
species = "plumb"
plantname = "Plumb Tree"
product = /obj/item/food/grown/plum/plumb
genes = list(/datum/plant_gene/trait/repeated_harvest)
mutatelist = null
reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1, /datum/reagent/lead = 0.04)
rarity = 30
/obj/item/food/grown/plum/plumb
seed = /obj/item/seeds/plum/plumb
name = "plumb"
desc = "It feels very heavy."
icon_state = "plumb"
distill_reagent = null
wine_power = 50
@@ -2891,3 +2891,29 @@ All effects don't start immediately, but rather get worse over time; the rate is
if(drinker.hallucination < hal_cap && DT_PROB(5, delta_time))
drinker.hallucination += hal_amt
..()
/datum/reagent/consumable/ethanol/plumwine
name = "Plum wine"
description = "Plums turned into wine."
color = "#8a0421"
nutriment_factor = 1 * REAGENTS_METABOLISM
boozepwr = 20
taste_description = "a poet's love and undoing"
glass_icon_state = "plumwineglass"
glass_name = "plum wine"
glass_desc = "Looks like an evening of writing fine poetry."
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
glass_price = DRINK_PRICE_STOCK
/datum/reagent/consumable/ethanol/thehat
name = "The Hat"
description = "A fancy drink, usually served in a man's hat."
color = "#b90a5c"
boozepwr = 80
quality = DRINK_NICE
taste_description = "something perfumy"
glass_icon_state = "thehatglass"
glass_name = "The Hat"
glass_desc ="A single plum floating in perfume, served in a man's hat."
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
glass_price = DRINK_PRICE_STOCK
@@ -211,6 +211,16 @@
taste_description = "grape soda"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/plumjuice
name = "Plum Juice"
description = "Refreshing and slightly acidic beverage."
color = "#b6062c"
taste_description = "plums"
glass_icon_state = "plumjuiceglass"
glass_name = "glass of plum juice"
glass_desc = "Noice."
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/milk
name = "Milk"
description = "An opaque white liquid produced by the mammary glands of mammals."
+1
View File
@@ -36,6 +36,7 @@
/obj/item/seeds/orange = 3,
/obj/item/seeds/peas = 3,
/obj/item/seeds/pineapple = 3,
/obj/item/seeds/plum = 3,
/obj/item/seeds/potato = 3,
/obj/item/seeds/poppy = 3,
/obj/item/seeds/pumpkin = 3,
Binary file not shown.

Before

Width:  |  Height:  |  Size: 123 KiB

After

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 99 KiB

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 28 KiB

+2
View File
@@ -1851,6 +1851,7 @@
#include "code\game\objects\structures\tables_racks.dm"
#include "code\game\objects\structures\tank_dispenser.dm"
#include "code\game\objects\structures\tank_holder.dm"
#include "code\game\objects\structures\toiletbong.dm"
#include "code\game\objects\structures\training_machine.dm"
#include "code\game\objects\structures\traps.dm"
#include "code\game\objects\structures\votingbox.dm"
@@ -3050,6 +3051,7 @@
#include "code\modules\hydroponics\grown\onion.dm"
#include "code\modules\hydroponics\grown\peas.dm"
#include "code\modules\hydroponics\grown\pineapple.dm"
#include "code\modules\hydroponics\grown\plum.dm"
#include "code\modules\hydroponics\grown\potato.dm"
#include "code\modules\hydroponics\grown\pumpkin.dm"
#include "code\modules\hydroponics\grown\rainbow_bunch.dm"