From ee625c4d2c18d456caf0ff6380067efc244c23df Mon Sep 17 00:00:00 2001 From: Iajret Creature <122297233+Steals-The-PRs@users.noreply.github.com> Date: Sun, 2 Jun 2024 16:19:56 +0300 Subject: [PATCH] [MIRROR] Toilet and urinal updates (flushing dead fish included) (#2788) (#3592) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Toilet and urinal updates (flushing dead fish included) (#83490) ## About The Pull Request I split the water closets file into a folder for all the different structures and also did a few other things 1. Remakes https://github.com/tgstation/tgstation/pull/81914 2. Reworks toilets, it’s now Alt Click to open/close the cover, left click takes things out of the toilet and cistern, right click flushes 3. You can now put dead fish in the toilet to flush it 4. Adds context tips to toilets. ## Why It's Good For The Game When I was a 7 year old boy, I had a friend goldfish named Jeremy. He was my greatest friend until one day when my brother told me it’s for babies and flushed him alive down the toilet, and I’ve never seen it again. Closes https://github.com/tgstation/tgstation/issues/81903 Lets you flush down people’s fish in the toilet, and re-experience their loss. This was inspired by my lawyer fish PR, to add things more on the non-fishing side of fish. ## Changelog :cl: add: You can now flush toilets. You can also put fish in the toilet. And flush them. fix: Urinals can no longer be used to delete items. fix: Urinals no longer grant infinite urinal cakes. /:cl: --------- * Toilet and urinal updates (flushing dead fish included) --------- Co-authored-by: NovaBot <154629622+NovaBot13@users.noreply.github.com> Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com> Co-authored-by: Jacquerel Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com> Co-authored-by: NovaBot13 --- .../map_files/IceBoxStation/IceBoxStation.dmm | 4 +- _maps/map_files/Mining/Lavaland.dmm | 2 +- code/game/objects/items/clown_items.dm | 16 + code/game/objects/structures.dm | 2 +- code/game/objects/structures/curtains.dm | 156 ++++ .../structures/water_structures/sink.dm | 301 ++++++ .../structures/water_structures/toilet.dm | 271 ++++++ .../structures/water_structures/urinal.dm | 116 +++ .../water_structures/water_source.dm | 149 +++ code/game/objects/structures/watercloset.dm | 877 ------------------ icons/obj/watercloset.dmi | Bin 33876 -> 33905 bytes sound/attributions.txt | 2 + sound/machines/toilet_flush.ogg | Bin 0 -> 78549 bytes tgstation.dme | 6 +- 14 files changed, 1020 insertions(+), 882 deletions(-) create mode 100644 code/game/objects/structures/curtains.dm create mode 100644 code/game/objects/structures/water_structures/sink.dm create mode 100644 code/game/objects/structures/water_structures/toilet.dm create mode 100644 code/game/objects/structures/water_structures/urinal.dm create mode 100644 code/game/objects/structures/water_structures/water_source.dm delete mode 100644 code/game/objects/structures/watercloset.dm create mode 100644 sound/machines/toilet_flush.ogg diff --git a/_maps/map_files/IceBoxStation/IceBoxStation.dmm b/_maps/map_files/IceBoxStation/IceBoxStation.dmm index 5ac6cff21bb..c7ef4a576d3 100644 --- a/_maps/map_files/IceBoxStation/IceBoxStation.dmm +++ b/_maps/map_files/IceBoxStation/IceBoxStation.dmm @@ -21086,7 +21086,7 @@ /area/station/command/meeting_room) "gnR" = ( /obj/structure/toilet/greyscale{ - cistern = 1; + cistern_open = 1; dir = 1 }, /obj/machinery/light/small/directional/south, @@ -54761,7 +54761,7 @@ /area/station/engineering/storage_shared) "qrq" = ( /obj/structure/toilet/greyscale{ - cistern = 1; + cistern_open = 1; dir = 1 }, /obj/effect/spawner/random/entertainment/cigar, diff --git a/_maps/map_files/Mining/Lavaland.dmm b/_maps/map_files/Mining/Lavaland.dmm index f2d6eb671e3..1ae71b1799f 100644 --- a/_maps/map_files/Mining/Lavaland.dmm +++ b/_maps/map_files/Mining/Lavaland.dmm @@ -5489,7 +5489,7 @@ /area/mine/lounge) "Hz" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/toilet/secret{ +/obj/structure/toilet{ dir = 4 }, /obj/effect/mob_spawn/corpse/human/skeleton, diff --git a/code/game/objects/items/clown_items.dm b/code/game/objects/items/clown_items.dm index 27fa0031485..52ba71a2538 100644 --- a/code/game/objects/items/clown_items.dm +++ b/code/game/objects/items/clown_items.dm @@ -233,6 +233,22 @@ M.emote("flip") COOLDOWN_START(src, golden_horn_cooldown, 1 SECONDS) +/obj/item/bikehorn/rubberducky/plasticducky + name = "plastic ducky" + desc = "It's a cheap plastic knockoff of a loveable bathtime toy." + custom_materials = list(/datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT) + +/obj/item/bikehorn/rubberducky + name = "rubber ducky" + desc = "Rubber ducky you're so fine, you make bathtime lots of fuuun. Rubber ducky I'm awfully fooooond of yooooouuuu~" //thanks doohl + icon = 'icons/obj/watercloset.dmi' + icon_state = "rubberducky" + inhand_icon_state = "rubberducky" + lefthand_file = 'icons/mob/inhands/items_lefthand.dmi' + righthand_file = 'icons/mob/inhands/items_righthand.dmi' + worn_icon_state = "duck" + sound_file = 'sound/effects/quack.ogg' + //canned laughter /obj/item/reagent_containers/cup/soda_cans/canned_laughter name = "Canned Laughter" diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm index 3d976b72cca..f43cc8dfa1c 100644 --- a/code/game/objects/structures.dm +++ b/code/game/objects/structures.dm @@ -26,7 +26,7 @@ icon_state = "" GLOB.cameranet.updateVisibility(src) -/obj/structure/Destroy() +/obj/structure/Destroy(force) GLOB.cameranet.updateVisibility(src) if(smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BITMASK)) QUEUE_SMOOTH_NEIGHBORS(src) diff --git a/code/game/objects/structures/curtains.dm b/code/game/objects/structures/curtains.dm new file mode 100644 index 00000000000..aead6fafb01 --- /dev/null +++ b/code/game/objects/structures/curtains.dm @@ -0,0 +1,156 @@ +/** + * Shower Curtains + */ +/obj/structure/curtain + name = "curtain" + desc = "Contains less than 1% mercury." + icon = 'icons/obj/watercloset.dmi' + icon_state = "bathroom-open" + color = "#ACD1E9" //Default color, didn't bother hardcoding other colors, mappers can and should easily change it. + alpha = 200 //Mappers can also just set this to 255 if they want curtains that can't be seen through + layer = SIGN_LAYER + anchored = TRUE + opacity = FALSE + density = FALSE + /// used in making the icon state + var/icon_type = "bathroom" + var/open = TRUE + /// if it can be seen through when closed + var/opaque_closed = FALSE + +/obj/structure/curtain/Initialize(mapload) + // see-through curtains should let emissives shine through + if(!opaque_closed) + blocks_emissive = EMISSIVE_BLOCK_NONE + return ..() + +/obj/structure/curtain/proc/toggle() + open = !open + if(open) + layer = SIGN_LAYER + set_opacity(FALSE) + else + layer = WALL_OBJ_LAYER + if(opaque_closed) + set_opacity(TRUE) + + update_appearance() + +/obj/structure/curtain/update_icon_state() + icon_state = "[icon_type]-[open ? "open" : "closed"]" + return ..() + +/obj/structure/curtain/attackby(obj/item/W, mob/user) + if (istype(W, /obj/item/toy/crayon)) + color = input(user,"","Choose Color",color) as color + else + return ..() + +/obj/structure/curtain/wrench_act(mob/living/user, obj/item/tool) + . = ..() + default_unfasten_wrench(user, tool, time = 5 SECONDS) + return TRUE + +/obj/structure/curtain/wirecutter_act(mob/living/user, obj/item/I) + ..() + if(anchored) + return TRUE + + user.visible_message(span_warning("[user] cuts apart [src]."), + span_notice("You start to cut apart [src]."), span_hear("You hear cutting.")) + if(I.use_tool(src, user, 50, volume=100) && !anchored) + to_chat(user, span_notice("You cut apart [src].")) + deconstruct() + + return TRUE + + +/obj/structure/curtain/attack_hand(mob/user, list/modifiers) + . = ..() + if(.) + return + playsound(loc, 'sound/effects/curtain.ogg', 50, TRUE) + toggle() + +/obj/structure/curtain/atom_deconstruct(disassembled = TRUE) + new /obj/item/stack/sheet/cloth (loc, 2) + new /obj/item/stack/sheet/plastic (loc, 2) + new /obj/item/stack/rods (loc, 1) + +/obj/structure/curtain/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0) + switch(damage_type) + if(BRUTE) + if(damage_amount) + playsound(src.loc, 'sound/weapons/slash.ogg', 80, TRUE) + else + playsound(loc, 'sound/weapons/tap.ogg', 50, TRUE) + if(BURN) + playsound(loc, 'sound/items/welder.ogg', 80, TRUE) + +/obj/structure/curtain/bounty + icon_type = "bounty" + icon_state = "bounty-open" + color = null + alpha = 255 + opaque_closed = TRUE + +/obj/structure/curtain/bounty/start_closed + icon_state = "bounty-closed" + +/obj/structure/curtain/bounty/start_closed/Initialize(mapload) + . = ..() + if(open) + toggle() + +/obj/structure/curtain/cloth + color = null + alpha = 255 + opaque_closed = TRUE + +/obj/structure/curtain/cloth/atom_deconstruct(disassembled = TRUE) + new /obj/item/stack/sheet/cloth (loc, 4) + new /obj/item/stack/rods (loc, 1) + +/obj/structure/curtain/cloth/fancy + icon_type = "cur_fancy" + icon_state = "cur_fancy-open" + +/obj/structure/curtain/cloth/fancy/mechanical + var/id = null + +/obj/structure/curtain/cloth/fancy/mechanical/Destroy() + GLOB.curtains -= src + return ..() + +/obj/structure/curtain/cloth/fancy/mechanical/Initialize(mapload) + . = ..() + GLOB.curtains += src + +/obj/structure/curtain/cloth/fancy/mechanical/connect_to_shuttle(mapload, obj/docking_port/mobile/port, obj/docking_port/stationary/dock) + id = "[port.shuttle_id]_[id]" + +/obj/structure/curtain/cloth/fancy/mechanical/proc/open() + icon_state = "[icon_type]-open" + layer = SIGN_LAYER + SET_PLANE_IMPLICIT(src, GAME_PLANE) + set_density(FALSE) + open = TRUE + set_opacity(FALSE) + +/obj/structure/curtain/cloth/fancy/mechanical/proc/close() + icon_state = "[icon_type]-closed" + layer = WALL_OBJ_LAYER + set_density(TRUE) + open = FALSE + if(opaque_closed) + set_opacity(TRUE) + +/obj/structure/curtain/cloth/fancy/mechanical/attack_hand(mob/user, list/modifiers) + return + +/obj/structure/curtain/cloth/fancy/mechanical/start_closed + icon_state = "cur_fancy-closed" + +/obj/structure/curtain/cloth/fancy/mechanical/start_closed/Initialize(mapload) + . = ..() + close() diff --git a/code/game/objects/structures/water_structures/sink.dm b/code/game/objects/structures/water_structures/sink.dm new file mode 100644 index 00000000000..f4c9d5a28f4 --- /dev/null +++ b/code/game/objects/structures/water_structures/sink.dm @@ -0,0 +1,301 @@ +/obj/structure/sink + name = "sink" + icon = 'icons/obj/watercloset.dmi' + icon_state = "sink" + desc = "A sink used for washing one's hands and face. Passively reclaims water over time." + anchored = TRUE + layer = ABOVE_OBJ_LAYER + pixel_z = 1 + ///Something's being washed at the moment + var/busy = FALSE + ///What kind of reagent is produced by this sink by default? (We now have actual plumbing, Arcane, August 2020) + var/dispensedreagent = /datum/reagent/water + ///Material to drop when broken or deconstructed. + var/buildstacktype = /obj/item/stack/sheet/iron + ///Number of sheets of material to drop when broken or deconstructed. + var/buildstackamount = 1 + ///Does the sink have a water recycler to recollect it's water supply? + var/has_water_reclaimer = TRUE + ///Units of water to reclaim per second + var/reclaim_rate = 0.5 + ///Amount of shift the pixel for placement + var/pixel_shift = 14 + +MAPPING_DIRECTIONAL_HELPERS(/obj/structure/sink, (-14)) + +/obj/structure/sink/Initialize(mapload, ndir = 0, has_water_reclaimer = null) + . = ..() + + if(ndir) + dir = ndir + + if(has_water_reclaimer != null) + src.has_water_reclaimer = has_water_reclaimer + + switch(dir) + if(NORTH) + pixel_x = 0 + pixel_y = -pixel_shift + if(SOUTH) + pixel_x = 0 + pixel_y = pixel_shift + if(EAST) + pixel_x = -pixel_shift + pixel_y = 0 + if(WEST) + pixel_x = pixel_shift + pixel_y = 0 + + create_reagents(100, NO_REACT) + if(src.has_water_reclaimer) + reagents.add_reagent(dispensedreagent, 100) + AddComponent(/datum/component/plumbing/simple_demand, extend_pipe_to_edge = TRUE) + +/obj/structure/sink/examine(mob/user) + . = ..() + if(has_water_reclaimer) + . += span_notice("A water recycler is installed. It looks like you could pry it out.") + . += span_notice("[reagents.total_volume]/[reagents.maximum_volume] liquids remaining.") + +/obj/structure/sink/attack_hand(mob/living/user, list/modifiers) + . = ..() + if(.) + return + if(!user || !istype(user)) + return + if(!iscarbon(user)) + return + if(!Adjacent(user)) + return + if(reagents.total_volume < 5) + to_chat(user, span_warning("The sink has no more contents left!")) + return + if(busy) + to_chat(user, span_warning("Someone's already washing here!")) + return + var/selected_area = user.parse_zone_with_bodypart(user.zone_selected) + var/washing_face = 0 + if(selected_area in list(BODY_ZONE_HEAD, BODY_ZONE_PRECISE_MOUTH, BODY_ZONE_PRECISE_EYES)) + washing_face = 1 + user.visible_message(span_notice("[user] starts washing [user.p_their()] [washing_face ? "face" : "hands"]..."), \ + span_notice("You start washing your [washing_face ? "face" : "hands"]...")) + busy = TRUE + + if(!do_after(user, 4 SECONDS, target = src)) + busy = FALSE + return + + busy = FALSE + reagents.remove_all(5) + reagents.expose(user, TOUCH, 5 / max(reagents.total_volume, 5)) + begin_reclamation() + if(washing_face) + SEND_SIGNAL(user, COMSIG_COMPONENT_CLEAN_FACE_ACT, CLEAN_WASH) + else if(ishuman(user)) + var/mob/living/carbon/human/human_user = user + if(!human_user.wash_hands(CLEAN_WASH)) + to_chat(user, span_warning("Your hands are covered by something!")) + return + else + user.wash(CLEAN_WASH) + + user.visible_message(span_notice("[user] washes [user.p_their()] [washing_face ? "face" : "hands"] using [src]."), \ + span_notice("You wash your [washing_face ? "face" : "hands"] using [src].")) + +/obj/structure/sink/attackby(obj/item/O, mob/living/user, params) + if(busy) + to_chat(user, span_warning("Someone's already washing here!")) + return + + if(is_reagent_container(O)) + var/obj/item/reagent_containers/RG = O + if(reagents.total_volume <= 0) + to_chat(user, span_notice("\The [src] is dry.")) + return FALSE + if(RG.is_refillable()) + if(!RG.reagents.holder_full()) + reagents.trans_to(RG, RG.amount_per_transfer_from_this, transferred_by = user) + begin_reclamation() + to_chat(user, span_notice("You fill [RG] from [src].")) + return TRUE + to_chat(user, span_notice("\The [RG] is full.")) + return FALSE + + if(istype(O, /obj/item/melee/baton/security)) + var/obj/item/melee/baton/security/baton = O + if(baton.cell?.charge && baton.active) + flick("baton_active", src) + user.Paralyze(baton.knockdown_time) + user.set_stutter(baton.knockdown_time) + baton.cell.use(baton.cell_hit_cost) + user.visible_message(span_warning("[user] shocks [user.p_them()]self while attempting to wash the active [baton.name]!"), \ + span_userdanger("You unwisely attempt to wash [baton] while it's still on.")) + playsound(src, baton.on_stun_sound, 50, TRUE) + return + + if(istype(O, /obj/item/mop)) + if(reagents.total_volume <= 0) + to_chat(user, span_notice("\The [src] is dry.")) + return FALSE + reagents.trans_to(O, 5, transferred_by = user) + begin_reclamation() + to_chat(user, span_notice("You wet [O] in [src].")) + playsound(loc, 'sound/effects/slosh.ogg', 25, TRUE) + return + + if(O.tool_behaviour == TOOL_WRENCH) + O.play_tool_sound(src) + deconstruct() + return + + if(O.tool_behaviour == TOOL_CROWBAR) + if(!has_water_reclaimer) + to_chat(user, span_warning("There isn't a water recycler to remove.")) + return + + O.play_tool_sound(src) + has_water_reclaimer = FALSE + new/obj/item/stock_parts/water_recycler(get_turf(loc)) + to_chat(user, span_notice("You remove the water reclaimer from [src]")) + return + + if(istype(O, /obj/item/stack/medical/gauze)) + var/obj/item/stack/medical/gauze/G = O + new /obj/item/reagent_containers/cup/rag(src.loc) + to_chat(user, span_notice("You tear off a strip of gauze and make a rag.")) + G.use(1) + return + + if(istype(O, /obj/item/stack/sheet/cloth)) + var/obj/item/stack/sheet/cloth/cloth = O + new /obj/item/reagent_containers/cup/rag(loc) + to_chat(user, span_notice("You tear off a strip of cloth and make a rag.")) + cloth.use(1) + return + + if(istype(O, /obj/item/stack/ore/glass)) + new /obj/item/stack/sheet/sandblock(loc) + to_chat(user, span_notice("You wet the sand in the sink and form it into a block.")) + O.use(1) + return + + if(istype(O, /obj/item/stock_parts/water_recycler)) + if(has_water_reclaimer) + to_chat(user, span_warning("There is already has a water recycler installed.")) + return + + playsound(src, 'sound/machines/click.ogg', 20, TRUE) + qdel(O) + has_water_reclaimer = TRUE + begin_reclamation() + return + + if(istype(O, /obj/item/storage/fancy/pickles_jar)) + if(O.contents.len) + to_chat(user, span_notice("Looks like there's something left in the jar")) + return + new /obj/item/reagent_containers/cup/beaker/large(loc) + to_chat(user, span_notice("You washed the jar, ridding it of the brine.")) + qdel(O) + return + + if(!istype(O)) + return + if(O.item_flags & ABSTRACT) //Abstract items like grabs won't wash. No-drop items will though because it's still technically an item in your hand. + return + + if(!user.combat_mode) + to_chat(user, span_notice("You start washing [O]...")) + busy = TRUE + if(!do_after(user, 4 SECONDS, target = src)) + busy = FALSE + return 1 + busy = FALSE + O.wash(CLEAN_WASH) + reagents.expose(O, TOUCH, 5 / max(reagents.total_volume, 5)) + user.visible_message(span_notice("[user] washes [O] using [src]."), \ + span_notice("You wash [O] using [src].")) + return 1 + else + return ..() + +/obj/structure/sink/atom_deconstruct(dissambled = TRUE) + drop_materials() + if(has_water_reclaimer) + new /obj/item/stock_parts/water_recycler(drop_location()) + +/obj/structure/sink/process(seconds_per_tick) + // Water reclamation complete? + if(!has_water_reclaimer || reagents.total_volume >= reagents.maximum_volume) + return PROCESS_KILL + + reagents.add_reagent(dispensedreagent, reclaim_rate * seconds_per_tick) + +/obj/structure/sink/proc/drop_materials() + if(buildstacktype) + new buildstacktype(loc,buildstackamount) + else + for(var/i in custom_materials) + var/datum/material/M = i + new M.sheet_type(loc, FLOOR(custom_materials[M] / SHEET_MATERIAL_AMOUNT, 1)) + +/obj/structure/sink/proc/begin_reclamation() + START_PROCESSING(SSplumbing, src) + +/obj/structure/sink/kitchen + name = "kitchen sink" + icon_state = "sink_alt" + pixel_z = 4 + pixel_shift = 16 + +MAPPING_DIRECTIONAL_HELPERS(/obj/structure/sink/kitchen, (-16)) + +/obj/structure/sink/greyscale + icon_state = "sink_greyscale" + material_flags = MATERIAL_EFFECTS | MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS + buildstacktype = null + +/obj/structure/sinkframe + name = "sink frame" + icon = 'icons/obj/watercloset.dmi' + icon_state = "sink_frame" + desc = "A sink frame, that needs a water recycler to finish construction." + anchored = FALSE + material_flags = MATERIAL_EFFECTS | MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS + +/obj/structure/sinkframe/Initialize(mapload) + . = ..() + AddComponent(/datum/component/simple_rotation) + +/obj/structure/sinkframe/attackby(obj/item/tool, mob/living/user, params) + if(istype(tool, /obj/item/stock_parts/water_recycler)) + qdel(tool) + var/obj/structure/sink/greyscale/new_sink = new(loc, REVERSE_DIR(dir), TRUE) + new_sink.set_custom_materials(custom_materials) + qdel(src) + playsound(new_sink, 'sound/machines/click.ogg', 20, TRUE) + return + return ..() + +/obj/structure/sinkframe/wrench_act(mob/living/user, obj/item/tool) + . = ..() + + tool.play_tool_sound(src) + var/obj/structure/sink/greyscale/new_sink = new(loc, REVERSE_DIR(dir), FALSE) + new_sink.set_custom_materials(custom_materials) + qdel(src) + + return TRUE + +/obj/structure/sinkframe/wrench_act_secondary(mob/living/user, obj/item/tool) + . = ..() + tool.play_tool_sound(src) + deconstruct() + return TRUE + +/obj/structure/sinkframe/atom_deconstruct(dissambled = TRUE) + drop_materials() + +/obj/structure/sinkframe/proc/drop_materials() + for(var/datum/material/material as anything in custom_materials) + new material.sheet_type(loc, FLOOR(custom_materials[material] / SHEET_MATERIAL_AMOUNT, 1)) diff --git a/code/game/objects/structures/water_structures/toilet.dm b/code/game/objects/structures/water_structures/toilet.dm new file mode 100644 index 00000000000..ab6ebc38fad --- /dev/null +++ b/code/game/objects/structures/water_structures/toilet.dm @@ -0,0 +1,271 @@ +/obj/structure/toilet + name = "toilet" + desc = "The HT-451, a torque rotation-based, waste disposal unit for small matter. This one seems remarkably clean." + icon = 'icons/obj/watercloset.dmi' + icon_state = "toilet00" //The first number represents if the toilet lid is up, the second is if the cistern is open. + base_icon_state = "toilet" + density = FALSE + anchored = TRUE + + ///Boolean if whether the toilet is currently flushing. + var/flushing = FALSE + ///Boolean if the toilet seat is up. + var/cover_open = FALSE + ///Boolean if the cistern is up, allowing items to be put in/out. + var/cistern_open = FALSE + ///The combined weight of all items in the cistern put together. + var/w_items = 0 + ///Reference to the mob being given a swirlie. + var/mob/living/swirlie + ///The type of material used to build the toilet. + var/buildstacktype = /obj/item/stack/sheet/iron + ///How much of the buildstacktype is needed to construct the toilet. + var/buildstackamount = 1 + ///Lazylist of items in the cistern. + var/list/cistern_items + ///Lazylist of fish in the toilet, not to be mixed with the items in the cistern. Max of 3 + var/list/fishes + ///Static toilet water overlay given to toilets that are facing a direction we can see the water in. + var/static/mutable_appearance/toilet_water_overlay + +/obj/structure/toilet/Initialize(mapload) + . = ..() + if(isnull(toilet_water_overlay)) + toilet_water_overlay = mutable_appearance(icon, "[base_icon_state]-water") + cover_open = round(rand(0, 1)) + update_appearance(UPDATE_ICON) + if(mapload && SSmapping.level_trait(z, ZTRAIT_STATION)) + AddElement(/datum/element/lazy_fishing_spot, /datum/fish_source/toilet) + register_context() + +/obj/structure/toilet/add_context(atom/source, list/context, obj/item/held_item, mob/user) + . = ..() + if(user.pulling && isliving(user.pulling)) + context[SCREENTIP_CONTEXT_LMB] = "Give Swirlie" + else if(cover_open && istype(held_item, /obj/item/fish)) + context[SCREENTIP_CONTEXT_LMB] = "Insert Fish" + else if(cover_open && LAZYLEN(fishes)) + context[SCREENTIP_CONTEXT_LMB] = "Grab Fish" + else if(cistern_open) + if(isnull(held_item)) + context[SCREENTIP_CONTEXT_LMB] = "Check Cistern" + else + context[SCREENTIP_CONTEXT_LMB] = "Insert Item" + context[SCREENTIP_CONTEXT_RMB] = "Flush" + context[SCREENTIP_CONTEXT_ALT_LMB] = "[cover_open ? "Close" : "Open"] Lid" + return CONTEXTUAL_SCREENTIP_SET + +/obj/structure/toilet/examine(mob/user) + . = ..() + if(cover_open && LAZYLEN(fishes)) + . += span_notice("You can see fish in the toilet, you can probably take one out.") + +/obj/structure/toilet/examine_more(mob/user) + . = ..() + if(cistern_open && LAZYLEN(cistern_items)) + . += span_notice("You can see [cistern_items.len] items inside of the cistern.") + +/obj/structure/toilet/Destroy(force) + . = ..() + QDEL_LAZYLIST(fishes) + QDEL_LAZYLIST(cistern_items) + +/obj/structure/toilet/Exited(atom/movable/gone, direction) + . = ..() + if(gone in cistern_items) + LAZYREMOVE(cistern_items, gone) + return + if(gone in fishes) + LAZYREMOVE(fishes, gone) + return + +/obj/structure/toilet/attack_hand(mob/living/user, list/modifiers) + . = ..() + if(.) + return + + if(swirlie) + user.changeNext_move(CLICK_CD_MELEE) + playsound(src.loc, SFX_SWING_HIT, 25, TRUE) + swirlie.visible_message(span_danger("[user] slams the toilet seat onto [swirlie]'s head!"), span_userdanger("[user] slams the toilet seat onto your head!"), span_hear("You hear reverberating porcelain.")) + log_combat(user, swirlie, "swirlied (brute)") + swirlie.adjustBruteLoss(5) + return + + if(user.pulling && isliving(user.pulling)) + user.changeNext_move(CLICK_CD_MELEE) + var/mob/living/grabbed_mob = user.pulling + if(user.grab_state < GRAB_AGGRESSIVE) + to_chat(user, span_warning("You need a tighter grip!")) + return + if(grabbed_mob.loc != get_turf(src)) + to_chat(user, span_warning("[grabbed_mob] needs to be on [src]!")) + return + if(swirlie) + return + if(cover_open) + grabbed_mob.visible_message(span_danger("[user] starts to give [grabbed_mob] a swirlie!"), span_userdanger("[user] starts to give you a swirlie...")) + swirlie = grabbed_mob + var/was_alive = (swirlie.stat != DEAD) + if(!do_after(user, 3 SECONDS, target = src, timed_action_flags = IGNORE_HELD_ITEM)) + swirlie = null + return + grabbed_mob.visible_message(span_danger("[user] gives [grabbed_mob] a swirlie!"), span_userdanger("[user] gives you a swirlie!"), span_hear("You hear a toilet flushing.")) + if(iscarbon(grabbed_mob)) + var/mob/living/carbon/carbon_grabbed = grabbed_mob + if(!carbon_grabbed.internal) + log_combat(user, carbon_grabbed, "swirlied (oxy)") + carbon_grabbed.adjustOxyLoss(5) + else + log_combat(user, grabbed_mob, "swirlied (oxy)") + grabbed_mob.adjustOxyLoss(5) + if(was_alive && swirlie.stat == DEAD && swirlie.client) + swirlie.client.give_award(/datum/award/achievement/misc/swirlie, swirlie) // just like space high school all over again! + swirlie = null + else + playsound(src.loc, 'sound/effects/bang.ogg', 25, TRUE) + grabbed_mob.visible_message(span_danger("[user] slams [grabbed_mob.name] into [src]!"), span_userdanger("[user] slams you into [src]!")) + log_combat(user, grabbed_mob, "toilet slammed") + grabbed_mob.adjustBruteLoss(5) + return + + if(cistern_open && !cover_open && user.CanReach(src)) + if(!LAZYLEN(cistern_items)) + to_chat(user, span_notice("The cistern is empty.")) + return + var/obj/item/random_cistern_item = pick(cistern_items) + if(ishuman(user)) + user.put_in_hands(random_cistern_item) + else + random_cistern_item.forceMove(drop_location()) + to_chat(user, span_notice("You find [random_cistern_item] in the cistern.")) + w_items -= random_cistern_item.w_class + return + + if(!flushing && LAZYLEN(fishes) && cover_open) + var/obj/item/random_fish = pick(fishes) + if(ishuman(user)) + user.put_in_hands(random_fish) + else + random_fish.forceMove(drop_location()) + to_chat(user, span_notice("You take [random_fish] out of the toilet, poor thing.")) + +/obj/structure/toilet/click_alt(mob/living/user) + if(flushing) + return CLICK_ACTION_BLOCKING + cover_open = !cover_open + update_appearance(UPDATE_ICON) + return CLICK_ACTION_SUCCESS + +/obj/structure/toilet/attack_hand_secondary(mob/user, list/modifiers) + . = ..() + if(flushing) + return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN + flushing = TRUE + playsound(src, "sound/machines/toilet_flush.ogg", cover_open ? 40 : 20, TRUE) + if(cover_open && (dir & SOUTH)) + update_appearance(UPDATE_OVERLAYS) + flick_overlay_view(mutable_appearance(icon, "[base_icon_state]-water-flick"), 3 SECONDS) + addtimer(CALLBACK(src, PROC_REF(end_flushing)), 4 SECONDS) + return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN + +/obj/structure/toilet/update_icon_state() + icon_state = "[base_icon_state][cover_open][cistern_open]" + return ..() + +/obj/structure/toilet/update_overlays() + . = ..() + if(!flushing && cover_open && (dir & SOUTH)) + . += toilet_water_overlay + +/obj/structure/toilet/atom_deconstruct(dissambled = TRUE) + for(var/obj/toilet_item in cistern_items) + toilet_item.forceMove(drop_location()) + if(buildstacktype) + new buildstacktype(loc,buildstackamount) + else + for(var/datum/material/M as anything in custom_materials) + new M.sheet_type(loc, FLOOR(custom_materials[M] / SHEET_MATERIAL_AMOUNT, 1)) + +/obj/structure/toilet/attackby(obj/item/attacking_item, mob/living/user, params) + add_fingerprint(user) + if(cover_open && istype(attacking_item, /obj/item/fish)) + if(fishes >= 3) + to_chat(user, span_warning("There's too many fishes, flush them down first.")) + return + if(!user.transferItemToLoc(attacking_item, src)) + to_chat(user, span_warning("\The [attacking_item] is stuck to your hand!")) + return + var/obj/item/fish/the_fish = attacking_item + if(the_fish.status == FISH_DEAD) + to_chat(user, span_warning("You place [attacking_item] into [src], may it rest in peace.")) + else + to_chat(user, span_notice("You place [attacking_item] into [src], hopefully no one will miss it!")) + LAZYADD(fishes, attacking_item) + return + + if(cistern_open && !user.combat_mode) + if(attacking_item.w_class > WEIGHT_CLASS_NORMAL) + to_chat(user, span_warning("[attacking_item] does not fit!")) + return + if(w_items + attacking_item.w_class > WEIGHT_CLASS_HUGE) + to_chat(user, span_warning("The cistern is full!")) + return + if(!user.transferItemToLoc(attacking_item, src)) + to_chat(user, span_warning("\The [attacking_item] is stuck to your hand, you cannot put it in the cistern!")) + return + LAZYADD(cistern_items, attacking_item) + w_items += attacking_item.w_class + to_chat(user, span_notice("You carefully place [attacking_item] into the cistern.")) + return + + if(is_reagent_container(attacking_item) && !user.combat_mode) + if (!cover_open) + return + if(istype(attacking_item, /obj/item/food/monkeycube)) + var/obj/item/food/monkeycube/cube = attacking_item + cube.Expand() + return + var/obj/item/reagent_containers/RG = attacking_item + RG.reagents.add_reagent(/datum/reagent/water, min(RG.volume - RG.reagents.total_volume, RG.amount_per_transfer_from_this)) + to_chat(user, span_notice("You fill [RG] from [src]. Gross.")) + return ..() + +/obj/structure/toilet/crowbar_act(mob/living/user, obj/item/tool) + to_chat(user, span_notice("You start to [cistern_open ? "replace the lid on" : "lift the lid off"] the cistern...")) + playsound(loc, 'sound/effects/stonedoor_openclose.ogg', 50, TRUE) + if(tool.use_tool(src, user, 30)) + user.visible_message( + span_notice("[user] [cistern_open ? "replaces the lid on" : "lifts the lid off"] the cistern!"), + span_notice("You [cistern_open ? "replace the lid on" : "lift the lid off"] the cistern!"), + span_hear("You hear grinding porcelain.")) + cistern_open = !cistern_open + update_appearance(UPDATE_ICON_STATE) + return ITEM_INTERACT_SUCCESS + +/obj/structure/toilet/wrench_act(mob/living/user, obj/item/tool) + tool.play_tool_sound(src) + deconstruct() + return ITEM_INTERACT_SUCCESS + +///Ends the flushing animation and updates overlays if necessary +/obj/structure/toilet/proc/end_flushing() + flushing = FALSE + if(cover_open && (dir & SOUTH)) + update_appearance(UPDATE_OVERLAYS) + QDEL_LAZYLIST(fishes) + +/obj/structure/toilet/greyscale + material_flags = MATERIAL_EFFECTS | MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS + buildstacktype = null + +/obj/structure/toilet/secret + var/secret_type = null + +/obj/structure/toilet/secret/Initialize(mapload) + . = ..() + if(secret_type) + var/obj/item/secret = new secret_type(src) + secret.desc += " It's a secret!" + w_items += secret.w_class + LAZYADD(cistern_items, secret) diff --git a/code/game/objects/structures/water_structures/urinal.dm b/code/game/objects/structures/water_structures/urinal.dm new file mode 100644 index 00000000000..3b34e2cc0e5 --- /dev/null +++ b/code/game/objects/structures/water_structures/urinal.dm @@ -0,0 +1,116 @@ +/obj/structure/urinal + name = "urinal" + desc = "The HU-452, an experimental urinal. Comes complete with experimental urinal cake." + icon = 'icons/obj/watercloset.dmi' + icon_state = "urinal" + density = FALSE + anchored = TRUE + /// Can you currently put an item inside + var/exposed = FALSE + /// What's in the urinal + var/obj/item/hidden_item + +MAPPING_DIRECTIONAL_HELPERS(/obj/structure/urinal, 32) + +/obj/structure/urinal/Initialize(mapload) + . = ..() + if(mapload) + hidden_item = new /obj/item/food/urinalcake(src) + find_and_hang_on_wall() + +/obj/structure/urinal/Exited(atom/movable/gone, direction) + . = ..() + if(gone == hidden_item) + hidden_item = null + +/obj/structure/urinal/attack_hand(mob/living/user, list/modifiers) + . = ..() + if(.) + return + + if(user.pulling && isliving(user.pulling)) + var/mob/living/grabbed_mob = user.pulling + if(user.grab_state >= GRAB_AGGRESSIVE) + if(grabbed_mob.loc != get_turf(src)) + to_chat(user, span_notice("[grabbed_mob.name] needs to be on [src].")) + return + user.changeNext_move(CLICK_CD_MELEE) + user.visible_message(span_danger("[user] slams [grabbed_mob] into [src]!"), span_danger("You slam [grabbed_mob] into [src]!")) + grabbed_mob.emote("scream") + grabbed_mob.adjustBruteLoss(8) + else + to_chat(user, span_warning("You need a tighter grip!")) + return + + if(exposed) + if(hidden_item) + to_chat(user, span_notice("You fish [hidden_item] out of the drain enclosure.")) + user.put_in_hands(hidden_item) + else + to_chat(user, span_warning("There is nothing in the drain holder!")) + return + return ..() + +/obj/structure/urinal/attackby(obj/item/attacking_item, mob/user, params) + if(exposed) + if(hidden_item) + to_chat(user, span_warning("There is already something in the drain enclosure!")) + return + if(attacking_item.w_class > WEIGHT_CLASS_TINY) + to_chat(user, span_warning("[attacking_item] is too large for the drain enclosure.")) + return + if(!user.transferItemToLoc(attacking_item, src)) + to_chat(user, span_warning("[attacking_item] is stuck to your hand, you cannot put it in the drain enclosure!")) + return + hidden_item = attacking_item + to_chat(user, span_notice("You place [attacking_item] into the drain enclosure.")) + return + return ..() + +/obj/structure/urinal/screwdriver_act(mob/living/user, obj/item/I) + if(..()) + return TRUE + to_chat(user, span_notice("You start to [exposed ? "screw the cap back into place" : "unscrew the cap to the drain protector"]...")) + playsound(loc, 'sound/effects/stonedoor_openclose.ogg', 50, TRUE) + if(I.use_tool(src, user, 20)) + user.visible_message(span_notice("[user] [exposed ? "screws the cap back into place" : "unscrew the cap to the drain protector"]!"), + span_notice("You [exposed ? "screw the cap back into place" : "unscrew the cap on the drain"]!"), + span_hear("You hear metal and squishing noises.")) + exposed = !exposed + return TRUE + +/obj/structure/urinal/wrench_act_secondary(mob/living/user, obj/item/tool) + tool.play_tool_sound(user) + deconstruct(TRUE) + balloon_alert(user, "removed urinal") + return ITEM_INTERACT_SUCCESS + +/obj/structure/urinal/atom_deconstruct(disassembled = TRUE) + new /obj/item/wallframe/urinal(loc) + hidden_item?.forceMove(drop_location()) + +/obj/item/wallframe/urinal + name = "urinal frame" + desc = "An unmounted urinal. Attach it to a wall to use." + icon = 'icons/obj/watercloset.dmi' + icon_state = "urinal" + result_path = /obj/structure/urinal + pixel_shift = 32 + +/obj/item/food/urinalcake + name = "urinal cake" + desc = "The noble urinal cake, protecting the station's pipes from the station's pee. Do not eat." + icon = 'icons/obj/watercloset.dmi' + icon_state = "urinalcake" + w_class = WEIGHT_CLASS_TINY + food_reagents = list( + /datum/reagent/chlorine = 3, + /datum/reagent/ammonia = 1, + ) + foodtypes = TOXIC | GROSS + preserved_food = TRUE + +/obj/item/food/urinalcake/attack_self(mob/living/user) + user.visible_message(span_notice("[user] squishes [src]!"), span_notice("You squish [src]."), "You hear a squish.") + icon_state = "urinalcake_squish" + addtimer(VARSET_CALLBACK(src, icon_state, "urinalcake"), 0.8 SECONDS) diff --git a/code/game/objects/structures/water_structures/water_source.dm b/code/game/objects/structures/water_structures/water_source.dm new file mode 100644 index 00000000000..b7ad26a65ea --- /dev/null +++ b/code/game/objects/structures/water_structures/water_source.dm @@ -0,0 +1,149 @@ +//Water source, use the type water_source for unlimited water sources like classic sinks. +/obj/structure/water_source + name = "Water Source" + icon = 'icons/obj/watercloset.dmi' + icon_state = "sink" + desc = "A sink used for washing one's hands and face. This one seems to be infinite!" + anchored = TRUE + ///Boolean on whether something is currently being washed, preventing multiple people from cleaning at once. + var/busy = FALSE + ///The reagent that is dispensed from this source, by default it's water. + var/datum/reagent/dispensedreagent = /datum/reagent/water + +/obj/structure/water_source/Initialize(mapload) + . = ..() + create_reagents(INFINITY, NO_REACT) + reagents.add_reagent(dispensedreagent, INFINITY) + +/obj/structure/water_source/attack_hand(mob/living/user, list/modifiers) + . = ..() + if(.) + return + if(!iscarbon(user)) + return + if(!Adjacent(user)) + return + + if(busy) + to_chat(user, span_warning("Someone's already washing here!")) + return + var/selected_area = user.parse_zone_with_bodypart(user.zone_selected) + var/washing_face = FALSE + if(selected_area in list(BODY_ZONE_HEAD, BODY_ZONE_PRECISE_MOUTH, BODY_ZONE_PRECISE_EYES)) + washing_face = TRUE + user.visible_message( + span_notice("[user] starts washing [user.p_their()] [washing_face ? "face" : "hands"]..."), + span_notice("You start washing your [washing_face ? "face" : "hands"]...")) + busy = TRUE + + if(!do_after(user, 4 SECONDS, target = src)) + busy = FALSE + return + + busy = FALSE + + if(washing_face) + SEND_SIGNAL(user, COMSIG_COMPONENT_CLEAN_FACE_ACT, CLEAN_WASH) + else if(ishuman(user)) + var/mob/living/carbon/human/human_user = user + if(!human_user.wash_hands(CLEAN_WASH)) + to_chat(user, span_warning("Your hands are covered by something!")) + return + else + user.wash(CLEAN_WASH) + + user.visible_message( + span_notice("[user] washes [user.p_their()] [washing_face ? "face" : "hands"] using [src]."), + span_notice("You wash your [washing_face ? "face" : "hands"] using [src]."), + ) + +/obj/structure/water_source/attackby(obj/item/attacking_item, mob/living/user, params) + if(busy) + to_chat(user, span_warning("Someone's already washing here!")) + return + + if(attacking_item.item_flags & ABSTRACT) //Abstract items like grabs won't wash. No-drop items will though because it's still technically an item in your hand. + return + + if(is_reagent_container(attacking_item)) + var/obj/item/reagent_containers/container = attacking_item + if(container.is_refillable()) + if(!container.reagents.holder_full()) + container.reagents.add_reagent(dispensedreagent, min(container.volume - container.reagents.total_volume, container.amount_per_transfer_from_this)) + to_chat(user, span_notice("You fill [container] from [src].")) + return TRUE + to_chat(user, span_notice("\The [container] is full.")) + return FALSE + + if(istype(attacking_item, /obj/item/melee/baton/security)) + var/obj/item/melee/baton/security/baton = attacking_item + if(baton.cell?.charge && baton.active) + flick("baton_active", src) + user.Paralyze(baton.knockdown_time) + user.set_stutter(baton.knockdown_time) + baton.cell.use(baton.cell_hit_cost) + user.visible_message( + span_warning("[user] shocks [user.p_them()]self while attempting to wash the active [baton.name]!"), + span_userdanger("You unwisely attempt to wash [baton] while it's still on.")) + playsound(src, baton.on_stun_sound, 50, TRUE) + return + + if(istype(attacking_item, /obj/item/mop)) + attacking_item.reagents.add_reagent(dispensedreagent, 5) + to_chat(user, span_notice("You wet [attacking_item] in [src].")) + playsound(loc, 'sound/effects/slosh.ogg', 25, TRUE) + return + + if(istype(attacking_item, /obj/item/stack/medical/gauze)) + var/obj/item/stack/medical/gauze/G = attacking_item + new /obj/item/reagent_containers/cup/rag(loc) + to_chat(user, span_notice("You tear off a strip of gauze and make a rag.")) + G.use(1) + return + + if(istype(attacking_item, /obj/item/stack/sheet/cloth)) + var/obj/item/stack/sheet/cloth/cloth = attacking_item + new /obj/item/reagent_containers/cup/rag(loc) + to_chat(user, span_notice("You tear off a strip of cloth and make a rag.")) + cloth.use(1) + return + + if(istype(attacking_item, /obj/item/stack/ore/glass)) + new /obj/item/stack/sheet/sandblock(loc) + to_chat(user, span_notice("You wet the sand and form it into a block.")) + attacking_item.use(1) + return + + if(!user.combat_mode) + to_chat(user, span_notice("You start washing [attacking_item]...")) + busy = TRUE + if(!do_after(user, 4 SECONDS, target = src)) + busy = FALSE + return TRUE + busy = FALSE + attacking_item.wash(CLEAN_WASH) + reagents.expose(attacking_item, TOUCH, 5 / max(reagents.total_volume, 5)) + user.visible_message( + span_notice("[user] washes [attacking_item] using [src]."), + span_notice("You wash [attacking_item] using [src].")) + return TRUE + + return ..() + +/obj/structure/water_source/puddle //splishy splashy ^_^ + name = "puddle" + desc = "A puddle used for washing one's hands and face." + icon_state = "puddle" + base_icon_state = "puddle" + resistance_flags = UNACIDABLE + +//ATTACK HAND IGNORING PARENT RETURN VALUE +/obj/structure/water_source/puddle/attack_hand(mob/user, list/modifiers) + icon_state = "[base_icon_state]-splash" + . = ..() + icon_state = base_icon_state + +/obj/structure/water_source/puddle/attackby(obj/item/attacking_item, mob/user, params) + icon_state = "[base_icon_state]-splash" + . = ..() + icon_state = base_icon_state diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm deleted file mode 100644 index 51d85d4583d..00000000000 --- a/code/game/objects/structures/watercloset.dm +++ /dev/null @@ -1,877 +0,0 @@ -/obj/structure/toilet - name = "toilet" - desc = "The HT-451, a torque rotation-based, waste disposal unit for small matter. This one seems remarkably clean." - icon = 'icons/obj/watercloset.dmi' - icon_state = "toilet00" - density = FALSE - anchored = TRUE - var/open = FALSE //if the lid is up - var/cistern = 0 //if the cistern bit is open - var/w_items = 0 //the combined w_class of all the items in the cistern - var/mob/living/swirlie = null //the mob being given a swirlie - var/buildstacktype = /obj/item/stack/sheet/iron //they're iron now, shut up - var/buildstackamount = 1 - -/obj/structure/toilet/Initialize(mapload) - . = ..() - open = round(rand(0, 1)) - update_appearance() - if(mapload && SSmapping.level_trait(z, ZTRAIT_STATION)) - AddElement(/datum/element/lazy_fishing_spot, /datum/fish_source/toilet) - -/obj/structure/toilet/attack_hand(mob/living/user, list/modifiers) - . = ..() - if(.) - return - if(swirlie) - user.changeNext_move(CLICK_CD_MELEE) - playsound(src.loc, SFX_SWING_HIT, 25, TRUE) - swirlie.visible_message(span_danger("[user] slams the toilet seat onto [swirlie]'s head!"), span_userdanger("[user] slams the toilet seat onto your head!"), span_hear("You hear reverberating porcelain.")) - log_combat(user, swirlie, "swirlied (brute)") - swirlie.adjustBruteLoss(5) - - else if(user.pulling && isliving(user.pulling)) - user.changeNext_move(CLICK_CD_MELEE) - var/mob/living/GM = user.pulling - if(user.grab_state >= GRAB_AGGRESSIVE) - if(GM.loc != get_turf(src)) - to_chat(user, span_warning("[GM] needs to be on [src]!")) - return - if(!swirlie) - if(open) - GM.visible_message(span_danger("[user] starts to give [GM] a swirlie!"), span_userdanger("[user] starts to give you a swirlie...")) - swirlie = GM - var/was_alive = (swirlie.stat != DEAD) - if(do_after(user, 3 SECONDS, target = src, timed_action_flags = IGNORE_HELD_ITEM)) - GM.visible_message(span_danger("[user] gives [GM] a swirlie!"), span_userdanger("[user] gives you a swirlie!"), span_hear("You hear a toilet flushing.")) - if(iscarbon(GM)) - var/mob/living/carbon/C = GM - if(!C.internal) - log_combat(user, C, "swirlied (oxy)") - C.adjustOxyLoss(5) - else - log_combat(user, GM, "swirlied (oxy)") - GM.adjustOxyLoss(5) - if(was_alive && swirlie.stat == DEAD && swirlie.client) - swirlie.client.give_award(/datum/award/achievement/misc/swirlie, swirlie) // just like space high school all over again! - swirlie = null - else - playsound(src.loc, 'sound/effects/bang.ogg', 25, TRUE) - GM.visible_message(span_danger("[user] slams [GM.name] into [src]!"), span_userdanger("[user] slams you into [src]!")) - log_combat(user, GM, "toilet slammed") - GM.adjustBruteLoss(5) - else - to_chat(user, span_warning("You need a tighter grip!")) - - else if(cistern && !open && user.CanReach(src)) - if(!contents.len) - to_chat(user, span_notice("The cistern is empty.")) - else - var/obj/item/I = pick(contents) - if(ishuman(user)) - user.put_in_hands(I) - else - I.forceMove(drop_location()) - to_chat(user, span_notice("You find [I] in the cistern.")) - w_items -= I.w_class - else - open = !open - update_appearance() - - -/obj/structure/toilet/update_icon_state() - icon_state = "toilet[open][cistern]" - return ..() - -/obj/structure/toilet/atom_deconstruct(dissambled = TRUE) - for(var/obj/toilet_item in contents) - toilet_item.forceMove(drop_location()) - if(buildstacktype) - new buildstacktype(loc,buildstackamount) - else - for(var/i in custom_materials) - var/datum/material/M = i - new M.sheet_type(loc, FLOOR(custom_materials[M] / SHEET_MATERIAL_AMOUNT, 1)) - -/obj/structure/toilet/attackby(obj/item/I, mob/living/user, params) - add_fingerprint(user) - if(I.tool_behaviour == TOOL_CROWBAR) - to_chat(user, span_notice("You start to [cistern ? "replace the lid on the cistern" : "lift the lid off the cistern"]...")) - playsound(loc, 'sound/effects/stonedoor_openclose.ogg', 50, TRUE) - if(I.use_tool(src, user, 30)) - user.visible_message(span_notice("[user] [cistern ? "replaces the lid on the cistern" : "lifts the lid off the cistern"]!"), span_notice("You [cistern ? "replace the lid on the cistern" : "lift the lid off the cistern"]!"), span_hear("You hear grinding porcelain.")) - cistern = !cistern - update_appearance() - return COMPONENT_CANCEL_ATTACK_CHAIN - else if(I.tool_behaviour == TOOL_WRENCH) - I.play_tool_sound(src) - deconstruct() - return TRUE - else if(cistern && !user.combat_mode) - if(I.w_class > WEIGHT_CLASS_NORMAL) - to_chat(user, span_warning("[I] does not fit!")) - return - if(w_items + I.w_class > WEIGHT_CLASS_HUGE) - to_chat(user, span_warning("The cistern is full!")) - return - if(!user.transferItemToLoc(I, src)) - to_chat(user, span_warning("\The [I] is stuck to your hand, you cannot put it in the cistern!")) - return - w_items += I.w_class - to_chat(user, span_notice("You carefully place [I] into the cistern.")) - return - - if(is_reagent_container(I) && !user.combat_mode) - if (!open) - return - if(istype(I, /obj/item/food/monkeycube)) - var/obj/item/food/monkeycube/cube = I - cube.Expand() - return - var/obj/item/reagent_containers/RG = I - RG.reagents.add_reagent(/datum/reagent/water, min(RG.volume - RG.reagents.total_volume, RG.amount_per_transfer_from_this)) - to_chat(user, span_notice("You fill [RG] from [src]. Gross.")) - . = ..() - -/obj/structure/toilet/secret - var/obj/item/secret - var/secret_type = null - -/obj/structure/toilet/secret/Initialize(mapload) - . = ..() - if (secret_type) - secret = new secret_type(src) - secret.desc += " It's a secret!" - w_items += secret.w_class - contents += secret - -/obj/structure/toilet/greyscale - material_flags = MATERIAL_EFFECTS | MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS - buildstacktype = null - -/obj/structure/urinal - name = "urinal" - desc = "The HU-452, an experimental urinal. Comes complete with experimental urinal cake." - icon = 'icons/obj/watercloset.dmi' - icon_state = "urinal" - density = FALSE - anchored = TRUE - /// Can you currently put an item inside - var/exposed = FALSE - /// What's in the urinal - var/obj/item/hidden_item - -MAPPING_DIRECTIONAL_HELPERS(/obj/structure/urinal, 32) - -/obj/structure/urinal/Initialize(mapload) - . = ..() - hidden_item = new /obj/item/food/urinalcake - find_and_hang_on_wall() - -/obj/structure/urinal/attack_hand(mob/living/user, list/modifiers) - . = ..() - if(.) - return - if(user.pulling && isliving(user.pulling)) - var/mob/living/GM = user.pulling - if(user.grab_state >= GRAB_AGGRESSIVE) - if(GM.loc != get_turf(src)) - to_chat(user, span_notice("[GM.name] needs to be on [src].")) - return - user.changeNext_move(CLICK_CD_MELEE) - user.visible_message(span_danger("[user] slams [GM] into [src]!"), span_danger("You slam [GM] into [src]!")) - GM.adjustBruteLoss(8) - else - to_chat(user, span_warning("You need a tighter grip!")) - - else if(exposed) - if(!hidden_item) - to_chat(user, span_warning("There is nothing in the drain holder!")) - else - if(ishuman(user)) - user.put_in_hands(hidden_item) - else - hidden_item.forceMove(get_turf(src)) - to_chat(user, span_notice("You fish [hidden_item] out of the drain enclosure.")) - hidden_item = null - else - ..() - -/obj/structure/urinal/attackby(obj/item/I, mob/living/user, params) - if(exposed) - if (hidden_item) - to_chat(user, span_warning("There is already something in the drain enclosure!")) - return - if(I.w_class > 1) - to_chat(user, span_warning("[I] is too large for the drain enclosure.")) - return - if(!user.transferItemToLoc(I, src)) - to_chat(user, span_warning("[I] is stuck to your hand, you cannot put it in the drain enclosure!")) - return - hidden_item = I - to_chat(user, span_notice("You place [I] into the drain enclosure.")) - else - return ..() - -/obj/structure/urinal/screwdriver_act(mob/living/user, obj/item/I) - if(..()) - return TRUE - to_chat(user, span_notice("You start to [exposed ? "screw the cap back into place" : "unscrew the cap to the drain protector"]...")) - playsound(loc, 'sound/effects/stonedoor_openclose.ogg', 50, TRUE) - if(I.use_tool(src, user, 20)) - user.visible_message(span_notice("[user] [exposed ? "screws the cap back into place" : "unscrew the cap to the drain protector"]!"), - span_notice("You [exposed ? "screw the cap back into place" : "unscrew the cap on the drain"]!"), - span_hear("You hear metal and squishing noises.")) - exposed = !exposed - return TRUE - -/obj/structure/urinal/atom_deconstruct(disassembled = TRUE) - new /obj/item/wallframe/urinal(loc) - -/obj/item/wallframe/urinal - name = "urinal frame" - desc = "An unmounted urinal. Attach it to a wall to use." - icon = 'icons/obj/watercloset.dmi' - icon_state = "urinal" - result_path = /obj/structure/urinal - pixel_shift = 32 - -/obj/item/food/urinalcake - name = "urinal cake" - desc = "The noble urinal cake, protecting the station's pipes from the station's pee. Do not eat." - icon = 'icons/obj/watercloset.dmi' - icon_state = "urinalcake" - w_class = WEIGHT_CLASS_TINY - food_reagents = list( - /datum/reagent/chlorine = 3, - /datum/reagent/ammonia = 1, - ) - foodtypes = TOXIC | GROSS - preserved_food = TRUE - -/obj/item/food/urinalcake/attack_self(mob/living/user) - user.visible_message(span_notice("[user] squishes [src]!"), span_notice("You squish [src]."), "You hear a squish.") - icon_state = "urinalcake_squish" - addtimer(VARSET_CALLBACK(src, icon_state, "urinalcake"), 0.8 SECONDS) - -/obj/item/bikehorn/rubberducky/plasticducky - name = "plastic ducky" - desc = "It's a cheap plastic knockoff of a loveable bathtime toy." - custom_materials = list(/datum/material/plastic =HALF_SHEET_MATERIAL_AMOUNT) - -/obj/item/bikehorn/rubberducky - name = "rubber ducky" - desc = "Rubber ducky you're so fine, you make bathtime lots of fuuun. Rubber ducky I'm awfully fooooond of yooooouuuu~" //thanks doohl - icon = 'icons/obj/watercloset.dmi' - icon_state = "rubberducky" - inhand_icon_state = "rubberducky" - lefthand_file = 'icons/mob/inhands/items_lefthand.dmi' - righthand_file = 'icons/mob/inhands/items_righthand.dmi' - worn_icon_state = "duck" - sound_file = 'sound/effects/quack.ogg' - -/obj/structure/sink - name = "sink" - icon = 'icons/obj/watercloset.dmi' - icon_state = "sink" - desc = "A sink used for washing one's hands and face. Passively reclaims water over time." - anchored = TRUE - layer = ABOVE_OBJ_LAYER - pixel_z = 1 - ///Something's being washed at the moment - var/busy = FALSE - ///What kind of reagent is produced by this sink by default? (We now have actual plumbing, Arcane, August 2020) - var/dispensedreagent = /datum/reagent/water - ///Material to drop when broken or deconstructed. - var/buildstacktype = /obj/item/stack/sheet/iron - ///Number of sheets of material to drop when broken or deconstructed. - var/buildstackamount = 1 - ///Does the sink have a water recycler to recollect it's water supply? - var/has_water_reclaimer = TRUE - ///Units of water to reclaim per second - var/reclaim_rate = 0.5 - ///Amount of shift the pixel for placement - var/pixel_shift = 14 - -MAPPING_DIRECTIONAL_HELPERS(/obj/structure/sink, (-14)) - -/obj/structure/sink/Initialize(mapload, ndir = 0, has_water_reclaimer = null) - . = ..() - - if(ndir) - dir = ndir - - if(has_water_reclaimer != null) - src.has_water_reclaimer = has_water_reclaimer - - switch(dir) - if(NORTH) - pixel_x = 0 - pixel_y = -pixel_shift - if(SOUTH) - pixel_x = 0 - pixel_y = pixel_shift - if(EAST) - pixel_x = -pixel_shift - pixel_y = 0 - if(WEST) - pixel_x = pixel_shift - pixel_y = 0 - - create_reagents(100, NO_REACT) - if(src.has_water_reclaimer) - reagents.add_reagent(dispensedreagent, 100) - AddComponent(/datum/component/plumbing/simple_demand, extend_pipe_to_edge = TRUE) - -/obj/structure/sink/examine(mob/user) - . = ..() - if(has_water_reclaimer) - . += span_notice("A water recycler is installed. It looks like you could pry it out.") - . += span_notice("[reagents.total_volume]/[reagents.maximum_volume] liquids remaining.") - -/obj/structure/sink/attack_hand(mob/living/user, list/modifiers) - . = ..() - if(.) - return - if(!user || !istype(user)) - return - if(!iscarbon(user)) - return - if(!Adjacent(user)) - return - if(reagents.total_volume < 5) - to_chat(user, span_warning("The sink has no more contents left!")) - return - if(busy) - to_chat(user, span_warning("Someone's already washing here!")) - return - var/selected_area = user.parse_zone_with_bodypart(user.zone_selected) - var/washing_face = 0 - if(selected_area in list(BODY_ZONE_HEAD, BODY_ZONE_PRECISE_MOUTH, BODY_ZONE_PRECISE_EYES)) - washing_face = 1 - user.visible_message(span_notice("[user] starts washing [user.p_their()] [washing_face ? "face" : "hands"]..."), \ - span_notice("You start washing your [washing_face ? "face" : "hands"]...")) - busy = TRUE - - if(!do_after(user, 4 SECONDS, target = src)) - busy = FALSE - return - - busy = FALSE - reagents.remove_all(5) - reagents.expose(user, TOUCH, 5 / max(reagents.total_volume, 5)) - begin_reclamation() - if(washing_face) - SEND_SIGNAL(user, COMSIG_COMPONENT_CLEAN_FACE_ACT, CLEAN_WASH) - else if(ishuman(user)) - var/mob/living/carbon/human/human_user = user - if(!human_user.wash_hands(CLEAN_WASH)) - to_chat(user, span_warning("Your hands are covered by something!")) - return - else - user.wash(CLEAN_WASH) - - user.visible_message(span_notice("[user] washes [user.p_their()] [washing_face ? "face" : "hands"] using [src]."), \ - span_notice("You wash your [washing_face ? "face" : "hands"] using [src].")) - -/obj/structure/sink/attackby(obj/item/O, mob/living/user, params) - if(busy) - to_chat(user, span_warning("Someone's already washing here!")) - return - - if(is_reagent_container(O)) - var/obj/item/reagent_containers/RG = O - if(reagents.total_volume <= 0) - to_chat(user, span_notice("\The [src] is dry.")) - return FALSE - if(RG.is_refillable()) - if(!RG.reagents.holder_full()) - reagents.trans_to(RG, RG.amount_per_transfer_from_this, transferred_by = user) - begin_reclamation() - to_chat(user, span_notice("You fill [RG] from [src].")) - return TRUE - to_chat(user, span_notice("\The [RG] is full.")) - return FALSE - - if(istype(O, /obj/item/melee/baton/security)) - var/obj/item/melee/baton/security/baton = O - if(baton.cell?.charge && baton.active) - flick("baton_active", src) - user.Paralyze(baton.knockdown_time) - user.set_stutter(baton.knockdown_time) - baton.cell.use(baton.cell_hit_cost) - user.visible_message(span_warning("[user] shocks [user.p_them()]self while attempting to wash the active [baton.name]!"), \ - span_userdanger("You unwisely attempt to wash [baton] while it's still on.")) - playsound(src, baton.on_stun_sound, 50, TRUE) - return - - if(istype(O, /obj/item/mop)) - if(reagents.total_volume <= 0) - to_chat(user, span_notice("\The [src] is dry.")) - return FALSE - reagents.trans_to(O, 5, transferred_by = user) - begin_reclamation() - to_chat(user, span_notice("You wet [O] in [src].")) - playsound(loc, 'sound/effects/slosh.ogg', 25, TRUE) - return - - if(O.tool_behaviour == TOOL_WRENCH) - O.play_tool_sound(src) - deconstruct() - return - - if(O.tool_behaviour == TOOL_CROWBAR) - if(!has_water_reclaimer) - to_chat(user, span_warning("There isn't a water recycler to remove.")) - return - - O.play_tool_sound(src) - has_water_reclaimer = FALSE - new/obj/item/stock_parts/water_recycler(get_turf(loc)) - to_chat(user, span_notice("You remove the water reclaimer from [src]")) - return - - if(istype(O, /obj/item/stack/medical/gauze)) - var/obj/item/stack/medical/gauze/G = O - new /obj/item/reagent_containers/cup/rag(src.loc) - to_chat(user, span_notice("You tear off a strip of gauze and make a rag.")) - G.use(1) - return - - if(istype(O, /obj/item/stack/sheet/cloth)) - var/obj/item/stack/sheet/cloth/cloth = O - new /obj/item/reagent_containers/cup/rag(loc) - to_chat(user, span_notice("You tear off a strip of cloth and make a rag.")) - cloth.use(1) - return - - if(istype(O, /obj/item/stack/ore/glass)) - new /obj/item/stack/sheet/sandblock(loc) - to_chat(user, span_notice("You wet the sand in the sink and form it into a block.")) - O.use(1) - return - - if(istype(O, /obj/item/stock_parts/water_recycler)) - if(has_water_reclaimer) - to_chat(user, span_warning("There is already has a water recycler installed.")) - return - - playsound(src, 'sound/machines/click.ogg', 20, TRUE) - qdel(O) - has_water_reclaimer = TRUE - begin_reclamation() - return - - if(istype(O, /obj/item/storage/fancy/pickles_jar)) - if(O.contents.len) - to_chat(user, span_notice("Looks like there's something left in the jar")) - return - new /obj/item/reagent_containers/cup/beaker/large(loc) - to_chat(user, span_notice("You washed the jar, ridding it of the brine.")) - qdel(O) - return - - if(!istype(O)) - return - if(O.item_flags & ABSTRACT) //Abstract items like grabs won't wash. No-drop items will though because it's still technically an item in your hand. - return - - if(!user.combat_mode) - to_chat(user, span_notice("You start washing [O]...")) - busy = TRUE - if(!do_after(user, 4 SECONDS, target = src)) - busy = FALSE - return 1 - busy = FALSE - O.wash(CLEAN_WASH) - reagents.expose(O, TOUCH, 5 / max(reagents.total_volume, 5)) - user.visible_message(span_notice("[user] washes [O] using [src]."), \ - span_notice("You wash [O] using [src].")) - return 1 - else - return ..() - -/obj/structure/sink/atom_deconstruct(dissambled = TRUE) - drop_materials() - if(has_water_reclaimer) - new /obj/item/stock_parts/water_recycler(drop_location()) - -/obj/structure/sink/process(seconds_per_tick) - // Water reclamation complete? - if(!has_water_reclaimer || reagents.total_volume >= reagents.maximum_volume) - return PROCESS_KILL - - reagents.add_reagent(dispensedreagent, reclaim_rate * seconds_per_tick) - -/obj/structure/sink/proc/drop_materials() - if(buildstacktype) - new buildstacktype(loc,buildstackamount) - else - for(var/i in custom_materials) - var/datum/material/M = i - new M.sheet_type(loc, FLOOR(custom_materials[M] / SHEET_MATERIAL_AMOUNT, 1)) - -/obj/structure/sink/proc/begin_reclamation() - START_PROCESSING(SSplumbing, src) - -/obj/structure/sink/kitchen - name = "kitchen sink" - icon_state = "sink_alt" - pixel_z = 4 - pixel_shift = 16 - -MAPPING_DIRECTIONAL_HELPERS(/obj/structure/sink/kitchen, (-16)) - -/obj/structure/sink/greyscale - icon_state = "sink_greyscale" - material_flags = MATERIAL_EFFECTS | MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS - buildstacktype = null - -/obj/structure/sinkframe - name = "sink frame" - icon = 'icons/obj/watercloset.dmi' - icon_state = "sink_frame" - desc = "A sink frame, that needs a water recycler to finish construction." - anchored = FALSE - material_flags = MATERIAL_EFFECTS | MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS - -/obj/structure/sinkframe/Initialize(mapload) - . = ..() - AddComponent(/datum/component/simple_rotation) - -/obj/structure/sinkframe/attackby(obj/item/tool, mob/living/user, params) - if(istype(tool, /obj/item/stock_parts/water_recycler)) - qdel(tool) - var/obj/structure/sink/greyscale/new_sink = new(loc, REVERSE_DIR(dir), TRUE) - new_sink.set_custom_materials(custom_materials) - qdel(src) - playsound(new_sink, 'sound/machines/click.ogg', 20, TRUE) - return - return ..() - -/obj/structure/sinkframe/wrench_act(mob/living/user, obj/item/tool) - . = ..() - - tool.play_tool_sound(src) - var/obj/structure/sink/greyscale/new_sink = new(loc, REVERSE_DIR(dir), FALSE) - new_sink.set_custom_materials(custom_materials) - qdel(src) - - return TRUE - -/obj/structure/sinkframe/wrench_act_secondary(mob/living/user, obj/item/tool) - . = ..() - tool.play_tool_sound(src) - deconstruct() - return TRUE - -/obj/structure/sinkframe/atom_deconstruct(dissambled = TRUE) - drop_materials() - -/obj/structure/sinkframe/proc/drop_materials() - for(var/datum/material/material as anything in custom_materials) - new material.sheet_type(loc, FLOOR(custom_materials[material] / SHEET_MATERIAL_AMOUNT, 1)) - return - -//Water source, use the type water_source for unlimited water sources like classic sinks. -/obj/structure/water_source - name = "Water Source" - icon = 'icons/obj/watercloset.dmi' - icon_state = "sink" - desc = "A sink used for washing one's hands and face. This one seems to be infinite!" - anchored = TRUE - var/busy = FALSE //Something's being washed at the moment - var/dispensedreagent = /datum/reagent/water // for whenever plumbing happens - -/obj/structure/water_source/Initialize(mapload) - . = ..() - - create_reagents(INFINITY, NO_REACT) - reagents.add_reagent(dispensedreagent, INFINITY) - -/obj/structure/water_source/attack_hand(mob/living/user, list/modifiers) - . = ..() - if(.) - return - if(!iscarbon(user)) - return - if(!Adjacent(user)) - return - - if(busy) - to_chat(user, span_warning("Someone's already washing here!")) - return - var/selected_area = user.parse_zone_with_bodypart(user.zone_selected) - var/washing_face = FALSE - if(selected_area in list(BODY_ZONE_HEAD, BODY_ZONE_PRECISE_MOUTH, BODY_ZONE_PRECISE_EYES)) - washing_face = TRUE - user.visible_message(span_notice("[user] starts washing [user.p_their()] [washing_face ? "face" : "hands"]..."), \ - span_notice("You start washing your [washing_face ? "face" : "hands"]...")) - busy = TRUE - - if(!do_after(user, 4 SECONDS, target = src)) - busy = FALSE - return - - busy = FALSE - - if(washing_face) - SEND_SIGNAL(user, COMSIG_COMPONENT_CLEAN_FACE_ACT, CLEAN_WASH) - else if(ishuman(user)) - var/mob/living/carbon/human/human_user = user - if(!human_user.wash_hands(CLEAN_WASH)) - to_chat(user, span_warning("Your hands are covered by something!")) - return - else - user.wash(CLEAN_WASH) - - user.visible_message(span_notice("[user] washes [user.p_their()] [washing_face ? "face" : "hands"] using [src]."), \ - span_notice("You wash your [washing_face ? "face" : "hands"] using [src].")) - -/obj/structure/water_source/attackby(obj/item/O, mob/living/user, params) - if(busy) - to_chat(user, span_warning("Someone's already washing here!")) - return - - if(is_reagent_container(O)) - var/obj/item/reagent_containers/container = O - if(container.is_refillable()) - if(!container.reagents.holder_full()) - container.reagents.add_reagent(dispensedreagent, min(container.volume - container.reagents.total_volume, container.amount_per_transfer_from_this)) - to_chat(user, span_notice("You fill [container] from [src].")) - return TRUE - to_chat(user, span_notice("\The [container] is full.")) - return FALSE - - if(istype(O, /obj/item/melee/baton/security)) - var/obj/item/melee/baton/security/baton = O - if(baton.cell?.charge && baton.active) - flick("baton_active", src) - user.Paralyze(baton.knockdown_time) - user.set_stutter(baton.knockdown_time) - baton.cell.use(baton.cell_hit_cost) - user.visible_message(span_warning("[user] shocks [user.p_them()]self while attempting to wash the active [baton.name]!"), \ - span_userdanger("You unwisely attempt to wash [baton] while it's still on.")) - playsound(src, baton.on_stun_sound, 50, TRUE) - return - - if(istype(O, /obj/item/mop)) - O.reagents.add_reagent(dispensedreagent, 5) - to_chat(user, span_notice("You wet [O] in [src].")) - playsound(loc, 'sound/effects/slosh.ogg', 25, TRUE) - return - - if(istype(O, /obj/item/stack/medical/gauze)) - var/obj/item/stack/medical/gauze/G = O - new /obj/item/reagent_containers/cup/rag(loc) - to_chat(user, span_notice("You tear off a strip of gauze and make a rag.")) - G.use(1) - return - - if(istype(O, /obj/item/stack/sheet/cloth)) - var/obj/item/stack/sheet/cloth/cloth = O - new /obj/item/reagent_containers/cup/rag(loc) - to_chat(user, span_notice("You tear off a strip of cloth and make a rag.")) - cloth.use(1) - return - - if(istype(O, /obj/item/stack/ore/glass)) - new /obj/item/stack/sheet/sandblock(loc) - to_chat(user, span_notice("You wet the sand and form it into a block.")) - O.use(1) - return - - if(O.item_flags & ABSTRACT) //Abstract items like grabs won't wash. No-drop items will though because it's still technically an item in your hand. - return - - if(!user.combat_mode) - to_chat(user, span_notice("You start washing [O]...")) - busy = TRUE - if(!do_after(user, 4 SECONDS, target = src)) - busy = FALSE - return TRUE - busy = FALSE - O.wash(CLEAN_WASH) - reagents.expose(O, TOUCH, 5 / max(reagents.total_volume, 5)) - user.visible_message(span_notice("[user] washes [O] using [src]."), \ - span_notice("You wash [O] using [src].")) - return TRUE - - return ..() - - -/obj/structure/water_source/puddle //splishy splashy ^_^ - name = "puddle" - desc = "A puddle used for washing one's hands and face." - icon_state = "puddle" - resistance_flags = UNACIDABLE - -//ATTACK HAND IGNORING PARENT RETURN VALUE -/obj/structure/water_source/puddle/attack_hand(mob/user, list/modifiers) - icon_state = "puddle-splash" - . = ..() - icon_state = "puddle" - -/obj/structure/water_source/puddle/attackby(obj/item/O, mob/user, params) - icon_state = "puddle-splash" - . = ..() - icon_state = "puddle" - -//End legacy sink - - -//Shower Curtains// -//Defines used are pre-existing in layers.dm// - -/obj/structure/curtain - name = "curtain" - desc = "Contains less than 1% mercury." - icon = 'icons/obj/watercloset.dmi' - icon_state = "bathroom-open" - var/icon_type = "bathroom"//used in making the icon state - color = "#ACD1E9" //Default color, didn't bother hardcoding other colors, mappers can and should easily change it. - alpha = 200 //Mappers can also just set this to 255 if they want curtains that can't be seen through - layer = SIGN_LAYER - anchored = TRUE - opacity = FALSE - density = FALSE - var/open = TRUE - /// if it can be seen through when closed - var/opaque_closed = FALSE - -/obj/structure/curtain/Initialize(mapload) - // see-through curtains should let emissives shine through - if(!opaque_closed) - blocks_emissive = EMISSIVE_BLOCK_NONE - return ..() - -/obj/structure/curtain/proc/toggle() - open = !open - if(open) - layer = SIGN_LAYER - set_opacity(FALSE) - else - layer = WALL_OBJ_LAYER - if(opaque_closed) - set_opacity(TRUE) - - update_appearance() - -/obj/structure/curtain/update_icon_state() - icon_state = "[icon_type]-[open ? "open" : "closed"]" - return ..() - -/obj/structure/curtain/attackby(obj/item/W, mob/user) - if (istype(W, /obj/item/toy/crayon)) - color = input(user,"","Choose Color",color) as color - else - return ..() - -/obj/structure/curtain/wrench_act(mob/living/user, obj/item/tool) - . = ..() - default_unfasten_wrench(user, tool, time = 5 SECONDS) - return TRUE - -/obj/structure/curtain/wirecutter_act(mob/living/user, obj/item/I) - ..() - if(anchored) - return TRUE - - user.visible_message(span_warning("[user] cuts apart [src]."), - span_notice("You start to cut apart [src]."), span_hear("You hear cutting.")) - if(I.use_tool(src, user, 50, volume=100) && !anchored) - to_chat(user, span_notice("You cut apart [src].")) - deconstruct() - - return TRUE - - -/obj/structure/curtain/attack_hand(mob/user, list/modifiers) - . = ..() - if(.) - return - playsound(loc, 'sound/effects/curtain.ogg', 50, TRUE) - toggle() - -/obj/structure/curtain/atom_deconstruct(disassembled = TRUE) - new /obj/item/stack/sheet/cloth (loc, 2) - new /obj/item/stack/sheet/plastic (loc, 2) - new /obj/item/stack/rods (loc, 1) - -/obj/structure/curtain/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0) - switch(damage_type) - if(BRUTE) - if(damage_amount) - playsound(src.loc, 'sound/weapons/slash.ogg', 80, TRUE) - else - playsound(loc, 'sound/weapons/tap.ogg', 50, TRUE) - if(BURN) - playsound(loc, 'sound/items/welder.ogg', 80, TRUE) - -/obj/structure/curtain/bounty - icon_type = "bounty" - icon_state = "bounty-open" - color = null - alpha = 255 - opaque_closed = TRUE - -/obj/structure/curtain/bounty/start_closed - icon_state = "bounty-closed" - -/obj/structure/curtain/bounty/start_closed/Initialize(mapload) - . = ..() - if(open) - toggle() - -/obj/structure/curtain/cloth - color = null - alpha = 255 - opaque_closed = TRUE - -/obj/structure/curtain/cloth/atom_deconstruct(disassembled = TRUE) - new /obj/item/stack/sheet/cloth (loc, 4) - new /obj/item/stack/rods (loc, 1) - -/obj/structure/curtain/cloth/fancy - icon_type = "cur_fancy" - icon_state = "cur_fancy-open" - -/obj/structure/curtain/cloth/fancy/mechanical - var/id = null - -/obj/structure/curtain/cloth/fancy/mechanical/Destroy() - GLOB.curtains -= src - return ..() - -/obj/structure/curtain/cloth/fancy/mechanical/Initialize(mapload) - . = ..() - GLOB.curtains += src - -/obj/structure/curtain/cloth/fancy/mechanical/connect_to_shuttle(mapload, obj/docking_port/mobile/port, obj/docking_port/stationary/dock) - id = "[port.shuttle_id]_[id]" - -/obj/structure/curtain/cloth/fancy/mechanical/proc/open() - icon_state = "[icon_type]-open" - layer = SIGN_LAYER - SET_PLANE_IMPLICIT(src, GAME_PLANE) - set_density(FALSE) - open = TRUE - set_opacity(FALSE) - -/obj/structure/curtain/cloth/fancy/mechanical/proc/close() - icon_state = "[icon_type]-closed" - layer = WALL_OBJ_LAYER - set_density(TRUE) - open = FALSE - if(opaque_closed) - set_opacity(TRUE) - -/obj/structure/curtain/cloth/fancy/mechanical/attack_hand(mob/user, list/modifiers) - return - -/obj/structure/curtain/cloth/fancy/mechanical/start_closed - icon_state = "cur_fancy-closed" - -/obj/structure/curtain/cloth/fancy/mechanical/start_closed/Initialize(mapload) - . = ..() - close() diff --git a/icons/obj/watercloset.dmi b/icons/obj/watercloset.dmi index 93ab67c804cc841593d14a12ba385eac8ad22334..0168e12acccb775c0aa402c9c7256d1afc835a06 100644 GIT binary patch literal 33905 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 LC`(sJ>ihpM8avRt literal 33876 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

fk`omj|ota|d{KvkCHtjJNE2(FT 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�OO{oxU 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

374-K_IHlS7E;<+ZsSq$idvZ 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 Mc~gUopF literal 0 HcmV?d00001 diff --git a/tgstation.dme b/tgstation.dme index ea9917c8e44..4284535ad3c 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -2715,6 +2715,7 @@ #include "code\game\objects\structures\cat_house.dm" #include "code\game\objects\structures\chess.dm" #include "code\game\objects\structures\containers.dm" +#include "code\game\objects\structures\curtains.dm" #include "code\game\objects\structures\deployable_turret.dm" #include "code\game\objects\structures\destructible_structures.dm" #include "code\game\objects\structures\displaycase.dm" @@ -2775,7 +2776,6 @@ #include "code\game\objects\structures\training_machine.dm" #include "code\game\objects\structures\traps.dm" #include "code\game\objects\structures\votingbox.dm" -#include "code\game\objects\structures\watercloset.dm" #include "code\game\objects\structures\windoor_assembly.dm" #include "code\game\objects\structures\window.dm" #include "code\game\objects\structures\beds_chairs\alien_nest.dm" @@ -2841,6 +2841,10 @@ #include "code\game\objects\structures\transit_tubes\transit_tube.dm" #include "code\game\objects\structures\transit_tubes\transit_tube_construction.dm" #include "code\game\objects\structures\transit_tubes\transit_tube_pod.dm" +#include "code\game\objects\structures\water_structures\sink.dm" +#include "code\game\objects\structures\water_structures\toilet.dm" +#include "code\game\objects\structures\water_structures\urinal.dm" +#include "code\game\objects\structures\water_structures\water_source.dm" #include "code\game\turfs\baseturf_skipover.dm" #include "code\game\turfs\baseturfs.dm" #include "code\game\turfs\change_turf.dm"