From 37a2e0151d7d2bf598023074fe0d094ab0e1cebd Mon Sep 17 00:00:00 2001 From: Will <7099514+Willburd@users.noreply.github.com> Date: Thu, 11 Sep 2025 01:40:43 -0400 Subject: [PATCH] Disposal Connector Component (#18431) * looks like we're just recoding disposals entirely lol * wip * fixes * doc * code cleanup * define use * use doafter * disposal flooring breaks now properly drop floor sheets * Moved disposal mail tag to packet init instead of before it * modernization * cleans up overrides that shouldn't exist * more cleanup * Update code/modules/recycling/disposal_holder.dm Co-authored-by: Cameron Lennox * Update code/modules/recycling/disposal_holder.dm Co-authored-by: Cameron Lennox * Update code/modules/recycling/disposal_machines.dm Co-authored-by: Cameron Lennox --------- Co-authored-by: Cameron Lennox --- code/__defines/dcs/signals.dm | 4 + .../machinery/disposal_connection.dm | 157 +++ code/modules/recycling/destination_tagger.dm | 56 + .../recycling/disposal-construction.dm | 9 +- code/modules/recycling/disposal.dm | 1218 +---------------- code/modules/recycling/disposal_holder.dm | 153 +++ code/modules/recycling/disposal_junctions.dm | 197 +++ code/modules/recycling/disposal_machines.dm | 492 +++++++ code/modules/recycling/disposal_mail.dm | 230 ++++ code/modules/recycling/disposal_outlet.dm | 49 + code/modules/recycling/disposal_tagger.dm | 51 + code/modules/recycling/disposal_trunk.dm | 62 + code/modules/recycling/disposal_vr.dm | 19 - code/modules/recycling/packagewrap.dm | 97 ++ code/modules/recycling/sortingmachinery.dm | 439 +----- icons/obj/pipes/disposal.dmi | Bin 117808 -> 118488 bytes icons/obj/pipes/disposal_vr.dmi | Bin 2225 -> 0 bytes vorestation.dme | 11 +- 18 files changed, 1614 insertions(+), 1630 deletions(-) create mode 100644 code/datums/components/machinery/disposal_connection.dm create mode 100644 code/modules/recycling/destination_tagger.dm create mode 100644 code/modules/recycling/disposal_holder.dm create mode 100644 code/modules/recycling/disposal_junctions.dm create mode 100644 code/modules/recycling/disposal_machines.dm create mode 100644 code/modules/recycling/disposal_mail.dm create mode 100644 code/modules/recycling/disposal_outlet.dm create mode 100644 code/modules/recycling/disposal_tagger.dm create mode 100644 code/modules/recycling/disposal_trunk.dm delete mode 100644 code/modules/recycling/disposal_vr.dm create mode 100644 code/modules/recycling/packagewrap.dm delete mode 100644 icons/obj/pipes/disposal_vr.dmi diff --git a/code/__defines/dcs/signals.dm b/code/__defines/dcs/signals.dm index 16d622926f..78c0a86c81 100644 --- a/code/__defines/dcs/signals.dm +++ b/code/__defines/dcs/signals.dm @@ -265,6 +265,10 @@ ///from /datum/controller/subsystem/motion_tracker/notice() (/datum/weakref/source_atom,/turf/echo_turf_location) #define COMSIG_MOVABLE_MOTIONTRACKER "move_motiontracker" +///called when a disposal connected object flushes its contents into the disposal pipe network +#define COMSIG_DISPOSAL_FLUSH "disposal_system_flushing" +///called when a disposal connected object gets a packet from the disposal pipe network +#define COMSIG_DISPOSAL_RECEIVING "disposal_system_receiving" ///called when the movable is added to a disposal holder object for disposal movement: (obj/structure/disposalholder/holder, obj/machinery/disposal/source) #define COMSIG_MOVABLE_DISPOSING "movable_disposing" diff --git a/code/datums/components/machinery/disposal_connection.dm b/code/datums/components/machinery/disposal_connection.dm new file mode 100644 index 0000000000..35b5e2f3c5 --- /dev/null +++ b/code/datums/components/machinery/disposal_connection.dm @@ -0,0 +1,157 @@ +///Disposal connection component, allows an atom to recieve and send disposal packages if attached to a disposal trunk. +/datum/component/disposal_system_connection + VAR_PROTECTED/obj/disposal_owner = null + +/datum/component/disposal_system_connection/Initialize() + disposal_owner = parent + RegisterSignal(disposal_owner, COMSIG_DISPOSAL_FLUSH, PROC_REF(on_flush)) + RegisterSignal(disposal_owner, COMSIG_DISPOSAL_RECEIVING, PROC_REF(on_recieve)) + RegisterSignal(disposal_owner, COMSIG_PARENT_EXAMINE, PROC_REF(on_examine)) + +/datum/component/disposal_system_connection/Destroy() + UnregisterSignal(disposal_owner, COMSIG_DISPOSAL_FLUSH) + UnregisterSignal(disposal_owner, COMSIG_DISPOSAL_RECEIVING) + UnregisterSignal(disposal_owner, COMSIG_PARENT_EXAMINE) + disposal_owner = null + . = ..() + +// Signal handling +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +/datum/component/disposal_system_connection/proc/on_flush(datum/source,datum/gas_mixture/flush_gas) + SIGNAL_HANDLER + SHOULD_NOT_OVERRIDE(TRUE) + if(!can_accept()) + return FALSE + // Important note, the flush_gas will be passed to the disposal packet when it's made. Caller should make a fresh gasmix datum after flushing this one! + return handle_flush(flush_gas) + +/datum/component/disposal_system_connection/proc/on_recieve(datum/source,obj/structure/disposalholder/packet) + SIGNAL_HANDLER + SHOULD_NOT_OVERRIDE(TRUE) + if(!can_accept()) + return FALSE + return handle_expel(packet) + +/datum/component/disposal_system_connection/proc/on_examine(datum/source, mob/user, list/examine_texts) + SIGNAL_HANDLER + var/has_connection = FALSE + if(can_accept() && (locate(/obj/structure/disposalpipe/trunk) in get_turf(disposal_owner))) + has_connection = TRUE + examine_texts += span_notice("It [has_connection ? "is connected" : "can be connected"] to a disposal pipe network.") + +// Flush handling, can be override by subtypes but excepts parent proc to handle core logic +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +/datum/component/disposal_system_connection/proc/handle_flush(datum/gas_mixture/flush_gas) + PROTECTED_PROC(TRUE) + SHOULD_CALL_PARENT(TRUE) + var/obj/structure/disposalholder/packet = new() // virtual holder object which actually travels through the pipes. + packet.init(get_flushed_item_list(), flush_gas) + finish_flush(packet) + return TRUE + +/datum/component/disposal_system_connection/proc/finish_flush(obj/structure/disposalholder/packet) + PROTECTED_PROC(TRUE) + SHOULD_CALL_PARENT(TRUE) + // if no trunk connected, expel immediately + var/obj/structure/disposalpipe/trunk/trunk = locate() in get_turf(disposal_owner) + if(!trunk) + handle_expel(packet) + return + + // start the holder processing movement + packet.forceMove(trunk) + packet.active = TRUE + packet.set_dir(DOWN) + packet.move() + +// Expel handling, can be override by subtypes but excepts parent proc to handle core logic +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +/datum/component/disposal_system_connection/proc/handle_expel(obj/structure/disposalholder/packet, delay_time = 0) + // Returns true if our owner could handle this packet, used by our child procs to animate our owner. + PROTECTED_PROC(TRUE) + SHOULD_CALL_PARENT(TRUE) + if(!packet || QDELETED(packet)) + return FALSE + + // We need to store the data in the packet to handle it with delays, then delete the packet so nothing else can handle it + packet.active = FALSE // So it stops trying to move + var/list/expelled_items = list() + for(var/atom/movable/AM in packet) + expelled_items += AM + AM.forceMove(disposal_owner) + // Handle client eye we get a black screen between trunk and eject if we have delay on ejection! + if(ismob(AM)) + var/mob/M = AM + if(M.client) + M.client.eye = disposal_owner + var/datum/gas_mixture/gas = new() + gas.copy_from(packet.gas) + qdel(packet) + + // Handle expelling stuff, most things have a delay before ejecting. + if(delay_time <= 0) // Someone is going to pass a negative, I just know it. No, BAD, cutting this off before it gets the chance. + expel_finish(expelled_items, gas) + else + addtimer(CALLBACK(src, PROC_REF(expel_finish), expelled_items, gas), delay_time, TIMER_DELETE_ME) + return TRUE + +/datum/component/disposal_system_connection/proc/expel_finish(list/expelled_items,datum/gas_mixture/gas) + PROTECTED_PROC(TRUE) + SHOULD_CALL_PARENT(TRUE) + // This proc has some checks just incase we have a subtype that wants to handle expelled items or if it vents gasses itself. + // This way it can just pass nulls to this parent proc if it does it's own handling for those things. Like a machine that eats all stuff dumped into it instead of ejecting. + + // Drop all those items + if(expelled_items.len) + var/turf/target = get_expel_target() + for(var/atom/movable/AM in expelled_items) + if(QDELETED(AM)) + continue + AM.forceMove(get_turf(disposal_owner)) + AM.pipe_eject(disposal_owner.dir) + if(istype(AM,/mob/living/silicon/robot/drone)) //Drones keep smashing windows from being fired out of chutes. Bad for the station. ~Z + continue + AM.throw_at(target, 3, 1) + expelled_items.Cut() + + // vent gasses to turf + if(gas) + if(gas.return_pressure() > 0) + playsound(disposal_owner, 'sound/machines/hiss.ogg', 50, 0, 0) + var/turf/T = get_turf(disposal_owner) + if(T) + T.assume_air(gas) + qdel(gas) + +// Overridable procs for easily customizing subtypes +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +/// Override this to add additional checks if an object can flush or accept incoming packets +/datum/component/disposal_system_connection/proc/can_accept() + PROTECTED_PROC(TRUE) + return disposal_owner.anchored + +/// Override this to launch items in a specific direction +/datum/component/disposal_system_connection/proc/get_expel_target() + PROTECTED_PROC(TRUE) + return get_offset_target_turf(get_turf(disposal_owner), rand(5)-rand(5), rand(5)-rand(5)) + +/// Override this to give a custom list of items to flush instead of just the contents of the owner +/datum/component/disposal_system_connection/proc/get_flushed_item_list() + PROTECTED_PROC(TRUE) + return disposal_owner.contents + + + +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// Subtypes for handling how things are animated, if items are spat out, or deciding what items inside an object are flushed +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +// Disposal outlets, needs to animate with a timed buzzer before stuff ejects +/datum/component/disposal_system_connection/disposaloutlet/handle_expel(obj/structure/disposalholder/packet, delay_time) + . = ..(packet,3 SECONDS) + if(.) + flick("outlet-open", disposal_owner) + playsound(disposal_owner, 'sound/machines/warning-buzzer.ogg', 50, 0, 0) + +/datum/component/disposal_system_connection/disposaloutlet/get_expel_target() + return get_ranged_target_turf(get_turf(disposal_owner), disposal_owner.dir, 10) diff --git a/code/modules/recycling/destination_tagger.dm b/code/modules/recycling/destination_tagger.dm new file mode 100644 index 0000000000..f0738ae174 --- /dev/null +++ b/code/modules/recycling/destination_tagger.dm @@ -0,0 +1,56 @@ +/obj/item/destTagger + name = "destination tagger" + desc = "Used to set the destination of properly wrapped packages." + icon = 'icons/obj/device.dmi' + icon_state = "dest_tagger" + var/currTag = 0 + + w_class = ITEMSIZE_SMALL + item_state = "electronic" + slot_flags = SLOT_BELT + pickup_sound = 'sound/items/pickup/device.ogg' + drop_sound = 'sound/items/drop/device.ogg' + +/obj/item/destTagger/tgui_state(mob/user) + return GLOB.tgui_inventory_state + +/obj/item/destTagger/tgui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "DestinationTagger", name) + ui.open() + +/obj/item/destTagger/tgui_static_data(mob/user) + var/list/data = ..() + var/list/taggers = list() + var/list/tagger_levels = list() + for(var/tag in GLOB.tagger_locations) + var/z_level = GLOB.tagger_locations[tag] + taggers += list(list("tag" = tag, "level" = z_level)) + tagger_levels += list(list("z" = z_level, "location" = using_map.get_zlevel_name(z_level))) + data["taggerLevels"] = tagger_levels + data["taggerLocs"] = taggers + + return data + +/obj/item/destTagger/tgui_data(mob/user, datum/tgui/ui) + var/list/data = ..() + + data["currTag"] = currTag + + return data + +/obj/item/destTagger/attack_self(mob/user as mob) + tgui_interact(user) + +/obj/item/destTagger/tgui_act(action, params, datum/tgui/ui) + if(..()) + return TRUE + add_fingerprint(ui.user) + switch(action) + if("set_tag") + var/new_tag = params["tag"] + if(!(new_tag in GLOB.tagger_locations)) + return FALSE + currTag = new_tag + . = TRUE diff --git a/code/modules/recycling/disposal-construction.dm b/code/modules/recycling/disposal-construction.dm index 788d7d229d..6935927376 100644 --- a/code/modules/recycling/disposal-construction.dm +++ b/code/modules/recycling/disposal-construction.dm @@ -17,7 +17,7 @@ var/dpdir = 0 // directions as disposalpipe var/base_state = "pipe-s" -/obj/structure/disposalconstruct/Initialize(mapload, var/newtype, var/newdir, var/flipped, var/newsubtype) +/obj/structure/disposalconstruct/Initialize(mapload, newtype, newdir, flipped, newsubtype) . = ..() ptype = newtype dir = newdir @@ -114,7 +114,7 @@ // hide called by levelupdate if turf intact status changes // change visibility status and force update of icon -/obj/structure/disposalconstruct/hide(var/intact) +/obj/structure/disposalconstruct/hide(intact) invisibility = (intact && level==1) ? INVISIBILITY_ABSTRACT: INVISIBILITY_NONE // hide if floor is intact update() @@ -224,7 +224,7 @@ // attackby item // wrench: (un)anchor // weldingtool: convert to real pipe -/obj/structure/disposalconstruct/attackby(var/obj/item/I, var/mob/user) +/obj/structure/disposalconstruct/attackby(obj/item/I, mob/user) var/nicetype = "pipe" var/ispipe = 0 // Indicates if we should change the level of this pipe src.add_fingerprint(user) @@ -338,9 +338,6 @@ var/obj/structure/disposaloutlet/P = new /obj/structure/disposaloutlet(src.loc) src.transfer_fingerprints_to(P) P.set_dir(dir) - P.target = get_ranged_target_turf(src, dir, 10) //TODO: replace this with a proc parameter or other cleaner - var/obj/structure/disposalpipe/trunk/Trunk = CP - Trunk.linked = P else if(ptype==DISPOSAL_PIPE_CHUTE) var/obj/machinery/disposal/deliveryChute/P = new /obj/machinery/disposal/deliveryChute(src.loc) diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index b1aa9c6ee3..84e1122984 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -1,687 +1,4 @@ -// Disposal bin -// Holds items for disposal into pipe system -// Draws air from turf, gradually charges internal reservoir -// Once full (~1 atm), uses air resv to flush items into the pipes -// Automatically recharges air (unless off), will flush when ready if pre-set -// Can hold items and human size things, no other draggables -// Toilets are a type of disposal bin for small objects only and work on magic. By magic, I mean torque rotation -#define SEND_PRESSURE (0.05 + ONE_ATMOSPHERE) //kPa - assume the inside of a dispoal pipe is 1 atm, so that needs to be added. -#define PRESSURE_TANK_VOLUME 150 //L -#define PUMP_MAX_FLOW_RATE 11.25 //L/s - 4 m/s using a 15 cm by 15 cm inlet //NOTE: I reduced the send pressure from 801 to 101.05 which is about 1/8 there was originally, and this was 90 before that. 90/8 is about 11.25, so that's the new value. -Reo - -/obj/machinery/disposal - name = "disposal unit" - desc = "A pneumatic waste disposal unit." - icon = 'icons/obj/pipes/disposal.dmi' - icon_state = "disposal" - anchored = TRUE - density = TRUE - var/datum/gas_mixture/air_contents // internal reservoir - var/mode = 1 // item mode 0=off 1=charging 2=charged - var/flush = 0 // true if flush handle is pulled - var/obj/structure/disposalpipe/trunk/trunk = null // the attached pipe trunk - var/flushing = 0 // true if flushing in progress - var/flush_every_ticks = 30 //Every 30 ticks it will look whether it is ready to flush - var/flush_count = 0 //this var adds 1 once per tick. When it reaches flush_every_ticks it resets and tries to flush. - var/last_sound = 0 - active_power_usage = 2200 //the pneumatic pump power. 3 HP ~ 2200W - idle_power_usage = 100 - -// create a new disposal -// find the attached trunk (if present) and init gas resvr. -/obj/machinery/disposal/Initialize(mapload) - . = ..() - - trunk = locate() in loc - if(!trunk) - mode = 0 - flush = 0 - else - trunk.linked = src // link the pipe trunk to self - - air_contents = new/datum/gas_mixture(PRESSURE_TANK_VOLUME) - update() - -/obj/machinery/disposal/Destroy() - eject() - if(trunk) - trunk.linked = null - trunk = null - return ..() - -// attack by item places it in to disposal -/obj/machinery/disposal/attackby(var/obj/item/I, var/mob/user) - if(stat & BROKEN || !I || !user) - return - - src.add_fingerprint(user) - if(mode<=0) // It's off - if(I.has_tool_quality(TOOL_SCREWDRIVER)) - if(contents.len > 0) - to_chat(user, "Eject the items first!") - return - if(mode==0) // It's off but still not unscrewed - mode=-1 // Set it to doubleoff l0l - playsound(src, I.usesound, 50, 1) - to_chat(user, "You remove the screws around the power connection.") - return - else if(mode==-1) - mode=0 - playsound(src, I.usesound, 50, 1) - to_chat(user, "You attach the screws around the power connection.") - return - else if(I.has_tool_quality(TOOL_WELDER) && mode==-1) - if(contents.len > 0) - to_chat(user, "Eject the items first!") - return - var/obj/item/weldingtool/W = I.get_welder() - if(W.remove_fuel(0,user)) - playsound(src, W.usesound, 100, 1) - to_chat(user, "You start slicing the floorweld off the disposal unit.") - - if(do_after(user, 2 SECONDS * W.toolspeed, target = src)) - if(!src || !W.isOn()) return - to_chat(user, "You sliced the floorweld off the disposal unit.") - var/obj/structure/disposalconstruct/C = new (src.loc) - src.transfer_fingerprints_to(C) - C.ptype = 6 // 6 = disposal unit - C.anchored = TRUE - C.density = TRUE - C.update() - qdel(src) - return - else - to_chat(user, "You need more welding fuel to complete this task.") - return - - if(istype(I, /obj/item/melee/energy/blade)) - to_chat(user, "You can't place that item inside the disposal unit.") - return - - if(istype(I, /obj/item/storage/bag/trash)) - var/obj/item/storage/bag/trash/T = I - to_chat(user, span_blue("You empty the bag.")) - for(var/obj/item/O in T.contents) - T.remove_from_storage(O,src) - T.update_icon() - update() - return - - if(istype(I, /obj/item/material/ashtray)) - var/obj/item/material/ashtray/A = I - if(A.contents.len > 0) - user.visible_message(span_infoplain(span_bold("\The [user]") + " empties \the [A] into [src].")) - for(var/obj/item/O in A.contents) - O.forceMove(src) - A.update_icon() - update() - return - - var/obj/item/grab/G = I - if(istype(G)) // handle grabbed mob - if(ismob(G.affecting)) - var/mob/GM = G.affecting - for (var/mob/V in viewers(user)) - V.show_message("[user] starts putting [GM.name] into the disposal.", 3) - if(do_after(user, 2 SECONDS, target = src)) - if (GM.client) - GM.client.perspective = EYE_PERSPECTIVE - GM.client.eye = src - GM.forceMove(src) - for (var/mob/C in viewers(src)) - C.show_message(span_red("[GM.name] has been placed in the [src] by [user]."), 3) - qdel(G) - - add_attack_logs(user,GM,"Disposals dunked") - return - - if(isrobot(user)) - return - if(!I || I.anchored || !I.canremove) - return - - user.drop_item() - if(I) - if(istype(I, /obj/item/holder)) - var/obj/item/holder/holder = I - var/mob/victim = holder.held_mob - if(ishuman(victim) || victim.client) - log_and_message_admins("placed [victim] inside \the [src]", user) - victim.forceMove(src) - - I.forceMove(src) - - user.visible_message("[user] places \the [I] into the [src].", "You place \the [I] into the [src].","Ca-Clunk") - update() - -// mouse drop another mob or self -// -/obj/machinery/disposal/MouseDrop_T(mob/target, mob/user) - if(user.stat || !user.canmove || !istype(target)) - return - if(target.buckled || get_dist(user, src) > 1 || get_dist(user, target) > 1) - return - - //animals cannot put mobs other than themselves into disposal - if(isanimal(user) && target != user) - return - - src.add_fingerprint(user) - var/target_loc = target.loc - var/msg - for (var/mob/V in viewers(user)) - if(target == user && !user.stat && !user.weakened && !user.stunned && !user.paralysis) - V.show_message("[user] starts climbing into the disposal.", 3) - if(target != user && !user.restrained() && !user.stat && !user.weakened && !user.stunned && !user.paralysis) - if(target.anchored) return - V.show_message("[user] starts stuffing [target.name] into the disposal.", 3) - if(!do_after(user, 2 SECONDS, target)) - return - if(target_loc != target.loc) - return - if(target == user && !user.stat && !user.weakened && !user.stunned && !user.paralysis) // if drop self, then climbed in - // must be awake, not stunned or whatever - msg = "[user.name] climbs into the [src]." - to_chat(user, "You climb into the [src].") - log_and_message_admins("climbed into disposals!", user) - else if(target != user && !user.restrained() && !user.stat && !user.weakened && !user.stunned && !user.paralysis) - msg = "[user.name] stuffs [target.name] into the [src]!" - to_chat(user, "You stuff [target.name] into the [src]!") - - add_attack_logs(user,target,"Disposals dunked") - else - return - if (target.client) - target.client.perspective = EYE_PERSPECTIVE - target.client.eye = src - - target.forceMove(src) - - for (var/mob/C in viewers(src)) - if(C == user) - continue - C.show_message(msg, 3) - - update() - return - -// attempt to move while inside -/obj/machinery/disposal/relaymove(mob/user as mob) - if(user.stat || src.flushing) - return - if(user.loc == src) - src.go_out(user) - return - -// leave the disposal -/obj/machinery/disposal/proc/go_out(mob/user) - if (user.client) - user.client.eye = user.client.mob - user.client.perspective = MOB_PERSPECTIVE - user.forceMove(src.loc) - update() - return - -// ai as human but can't flush -/obj/machinery/disposal/attack_ai(mob/user as mob) - add_hiddenprint(user) - tgui_interact(user) - -// human interact with machine -/obj/machinery/disposal/attack_hand(mob/user as mob) - if(stat & BROKEN) - return - - if(user && user.loc == src) - to_chat(user, span_red("You cannot reach the controls from inside.")) - return - - // Clumsy folks can only flush it. - if(user.IsAdvancedToolUser(1)) - tgui_interact(user) - else - flush = !flush - update() - return - -// user interaction -/obj/machinery/disposal/tgui_interact(mob/user, datum/tgui/ui = null) - ui = SStgui.try_update_ui(user, src, ui) - if(!ui) - ui = new(user, src, "DisposalBin") - ui.open() - -/obj/machinery/disposal/tgui_data(mob/user) - var/list/data = list() - - data["isAI"] = isAI(user) - data["flushing"] = flush - data["mode"] = mode - data["pressure"] = round(clamp(100* air_contents.return_pressure() / (SEND_PRESSURE), 0, 100),1) - - return data - -/obj/machinery/disposal/tgui_act(action, list/params, datum/tgui/ui, datum/tgui_state/state) - if(..()) - return - - if(ui.user.loc == src) - to_chat(ui.user, span_warning("You cannot reach the controls from inside.")) - return TRUE - - if(mode==-1 && action != "eject") // If the mode is -1, only allow ejection - to_chat(ui.user, span_warning("The disposal units power is disabled.")) - return - - if(stat & BROKEN) - return - - add_fingerprint(ui.user) - - if(flushing) - return - - if(isturf(loc)) - if(action == "pumpOn") - mode = 1 - update() - if(action == "pumpOff") - mode = 0 - update() - - if(action == "engageHandle") - flush = 1 - update() - if(action == "disengageHandle") - flush = 0 - update() - - if(action == "eject") - eject() - - return TRUE - -// eject the contents of the disposal unit - -/obj/machinery/disposal/verb/force_eject() - set src in oview(1) - set category = "Object" - set name = "Force Eject" - if(flushing) - return - eject() - -/obj/machinery/disposal/proc/eject() - for(var/atom/movable/AM in src) - AM.forceMove(src.loc) - AM.pipe_eject(0) - update() - -// update the icon & overlays to reflect mode & status -/obj/machinery/disposal/proc/update() - cut_overlays() - if(stat & BROKEN) - icon_state = "disposal-broken" - mode = 0 - flush = 0 - return - - // flush handle - if(flush) - add_overlay("[initial(icon_state)]-handle") - - // only handle is shown if no power - if(stat & NOPOWER || mode == -1) - return - - // check for items in disposal - occupied light - if(contents.len > 0) - add_overlay("[initial(icon_state)]-full") - - // charging and ready light - if(mode == 1) - add_overlay("[initial(icon_state)]-charge") - else if(mode == 2) - add_overlay("[initial(icon_state)]-ready") - -// timed process -// charge the gas reservoir and perform flush if ready -/obj/machinery/disposal/process() - if(!air_contents || (stat & BROKEN)) // nothing can happen if broken - update_use_power(USE_POWER_OFF) - return - - flush_count++ - if( flush_count >= flush_every_ticks ) - if( contents.len ) - if(mode == 2) - spawn(0) - feedback_inc("disposal_auto_flush",1) - flush() - flush_count = 0 - - src.updateDialog() - - if(flush && air_contents.return_pressure() >= SEND_PRESSURE ) // flush can happen even without power - flush() - - if(mode != 1) //if off or ready, no need to charge - update_use_power(USE_POWER_IDLE) - else if(air_contents.return_pressure() >= SEND_PRESSURE) - mode = 2 //if full enough, switch to ready mode - update() - else - src.pressurize() //otherwise charge - -/obj/machinery/disposal/proc/pressurize() - if(stat & NOPOWER) // won't charge if no power - update_use_power(USE_POWER_OFF) - return - - var/atom/L = loc // recharging from loc turf - var/datum/gas_mixture/env = L.return_air() - - var/power_draw = -1 - if(env && env.temperature > 0) - var/transfer_moles = (PUMP_MAX_FLOW_RATE/env.volume)*env.total_moles //group_multiplier is divided out here - power_draw = pump_gas(src, env, air_contents, transfer_moles, active_power_usage) - - if (power_draw > 0) - use_power(power_draw) - -// perform a flush -/obj/machinery/disposal/proc/flush() - - flushing = 1 - flick("[icon_state]-flush", src) - - var/wrapcheck = 0 - var/obj/structure/disposalholder/H = new() // virtual holder object which actually - // travels through the pipes. - //Hacky test to get drones to mail themselves through disposals. - for(var/mob/living/silicon/robot/drone/D in src) - wrapcheck = 1 - - for(var/obj/item/smallDelivery/O in src) - wrapcheck = 1 - - if(wrapcheck == 1) - H.tomail = 1 - - - sleep(10) - if(last_sound < world.time + 1) - playsound(src, 'sound/machines/disposalflush.ogg', 50, 0, 0) - last_sound = world.time - sleep(5) // wait for animation to finish - GLOB.disposals_flush_shift_roundstat++ - - - H.init(src, air_contents) // copy the contents of disposer to holder - air_contents = new(PRESSURE_TANK_VOLUME) // new empty gas resv. - - H.start(src) // start the holder processing movement - flushing = 0 - // now reset disposal state - flush = 0 - if(mode == 2) // if was ready, - mode = 1 // switch to charging - update() - return - - -// called when area power changes -/obj/machinery/disposal/power_change() - ..() // do default setting/reset of stat NOPOWER bit - update() // update icon - return - - -// called when holder is expelled from a disposal -// should usually only occur if the pipe network is modified -/obj/machinery/disposal/proc/expel(var/obj/structure/disposalholder/H) - - var/turf/target - playsound(src, 'sound/machines/hiss.ogg', 50, 0, 0) - if(H) // Somehow, someone managed to flush a window which broke mid-transit and caused the disposal to go in an infinite loop trying to expel null, hopefully this fixes it - for(var/atom/movable/AM in H) - target = get_offset_target_turf(src.loc, rand(5)-rand(5), rand(5)-rand(5)) - - AM.forceMove(src.loc) - AM.pipe_eject(0) - if(!istype(AM,/mob/living/silicon/robot/drone)) //Poor drones kept smashing windows and taking system damage being fired out of disposals. ~Z - spawn(1) - if(AM) - AM.throw_at(target, 5, 1) - - H.vent_gas(loc) - qdel(H) - -/obj/machinery/disposal/hitby(atom/movable/AM) - . = ..() - if(istype(AM, /obj/item) && !istype(AM, /obj/item/projectile)) - if(prob(75)) - AM.forceMove(src) - visible_message("\The [AM] lands in \the [src].") - else - visible_message("\The [AM] bounces off of \the [src]'s rim!") - - if(istype(AM,/mob/living)) - if(prob(75)) - var/mob/living/to_be_dunked = AM - if(ishuman(AM) ||to_be_dunked.client) - log_and_message_admins("[AM] was thrown into \the [src]", null) - AM.forceMove(src) - visible_message("\The [AM] lands in \the [src].") - -/obj/machinery/disposal/wall - name = "inset disposal unit" - icon_state = "wall" - - density = FALSE - -/obj/machinery/disposal/wall/Initialize(mapload) - . = ..() - - spawn(1 SECOND) // Fixfix for weird interaction with buildmode or other late-spawning. - update() - -/obj/machinery/disposal/wall/update() - ..() - - switch(dir) - if(1) - pixel_x = 0 - pixel_y = -32 - if(2) - pixel_x = 0 - pixel_y = 32 - if(4) - pixel_x = -32 - pixel_y = 0 - if(8) - pixel_x = 32 - pixel_y = 0 - -// virtual disposal object -// travels through pipes in lieu of actual items -// contents will be items flushed by the disposal -// this allows the gas flushed to be tracked - -/obj/structure/disposalholder - invisibility = INVISIBILITY_ABSTRACT - var/datum/gas_mixture/gas = null // gas used to flush, will appear at exit point - var/active = 0 // true if the holder is moving, otherwise inactive - dir = 0 - var/count = 2048 //*** can travel 2048 steps before going inactive (in case of loops) - var/destinationTag = "" // changes if contains a delivery container - var/tomail = 0 //changes if contains wrapped package - var/hasmob = 0 //If it contains a mob - - var/partialTag = "" //set by a partial tagger the first time round, then put in destinationTag if it goes through again. - - - // initialize a holder from the contents of a disposal unit -/obj/structure/disposalholder/proc/init(var/obj/machinery/disposal/D, var/datum/gas_mixture/flush_gas) - gas = flush_gas// transfer gas resv. into holder object -- let's be explicit about the data this proc consumes, please. - - //Check for any living mobs trigger hasmob. - //hasmob effects whether the package goes to cargo or its tagged destination. - for(var/mob/living/M in D) - if(M && M.stat != 2 && !istype(M,/mob/living/silicon/robot/drone)) - hasmob = 1 - - //Checks 1 contents level deep. This means that players can be sent through disposals... - //...but it should require a second person to open the package. (i.e. person inside a wrapped locker) - for(var/obj/O in D) - if(O.contents) - for(var/mob/living/M in O.contents) - if(M && M.stat != 2 && !istype(M,/mob/living/silicon/robot/drone)) - hasmob = 1 - - // now everything inside the disposal gets put into the holder - // note AM since can contain mobs or objs - for(var/atom/movable/AM in D) - AM.forceMove(src) - if(istype(AM, /obj/structure/bigDelivery) && !hasmob) - var/obj/structure/bigDelivery/T = AM - src.destinationTag = T.sortTag - if(istype(AM, /obj/item/smallDelivery) && !hasmob) - var/obj/item/smallDelivery/T = AM - src.destinationTag = T.sortTag - //Drones can mail themselves through maint. - if(istype(AM, /mob/living/silicon/robot/drone)) - var/mob/living/silicon/robot/drone/drone = AM - src.destinationTag = drone.mail_destination - - if(istype(AM, /obj/item/mail) && !hasmob) - var/obj/item/mail/T = AM - src.destinationTag = T.sortTag - - -// start the movement process -// argument is the disposal unit the holder started in -/obj/structure/disposalholder/proc/start(var/obj/machinery/disposal/D) - if(!D.trunk) - D.expel(src) // no trunk connected, so expel immediately - return - - forceMove(D.trunk) - active = 1 - set_dir(DOWN) - spawn(1) - move() // spawn off the movement process - - return - -// movement process, persists while holder is moving through pipes -/obj/structure/disposalholder/proc/move() - var/obj/structure/disposalpipe/last - while(active) - sleep(1) // was 1 - if(!loc) return // check if we got GC'd - - if(hasmob && prob(3)) - for(var/mob/living/H in src) - if(!istype(H,/mob/living/silicon/robot/drone)) //Drones use the mailing code to move through the disposal system, - H.take_overall_damage(20, 0, "Blunt Trauma")//horribly maim any living creature jumping down disposals. c'est la vie - - var/obj/structure/disposalpipe/curr = loc - last = curr - curr = curr.transfer(src) - - if(!loc) return //side effects - - if(!curr) - last.expel(src, loc, dir) - - // - if(!(count--)) - active = 0 - return - - - -// find the turf which should contain the next pipe -/obj/structure/disposalholder/proc/nextloc() - return get_step(loc,dir) - -// find a matching pipe on a turf -/obj/structure/disposalholder/proc/findpipe(var/turf/T) - - if(!T) - return null - - var/fdir = turn(dir, 180) // flip the movement direction - for(var/obj/structure/disposalpipe/P in T) - if(fdir & P.dpdir) // find pipe direction mask that matches flipped dir - return P - // if no matching pipe, return null - return null - -// merge two holder objects -// used when a a holder meets a stuck holder -/obj/structure/disposalholder/proc/merge(var/obj/structure/disposalholder/other) - for(var/atom/movable/AM in other) - AM.forceMove(src) // move everything in other holder to this one - if(ismob(AM)) - var/mob/M = AM - if(M.client) // if a client mob, update eye to follow this holder - M.client.eye = src - - qdel(other) - - -/obj/structure/disposalholder/proc/settag(var/new_tag) - destinationTag = new_tag - -/obj/structure/disposalholder/proc/setpartialtag(var/new_tag) - if(partialTag == new_tag) - destinationTag = new_tag - partialTag = "" - else - partialTag = new_tag - - -// called when player tries to move while in a pipe -/obj/structure/disposalholder/relaymove(mob/user as mob) - - if(!isliving(user)) - return - - var/mob/living/U = user - - if (U.stat || U.last_special <= world.time) - return - - U.last_special = world.time+100 - - if (src.loc) - for (var/mob/M in hearers(src.loc.loc)) - to_chat(M, "CLONG, clong!") - - playsound(src, 'sound/effects/clang.ogg', 50, 0, 0) - - // called to vent all gas in holder to a location -/obj/structure/disposalholder/proc/vent_gas(var/atom/location) - location.assume_air(gas) // vent all gas to turf - return - -/obj/structure/disposalholder/Destroy() - QDEL_NULL(gas) - if(contents.len) - var/turf/qdelloc = get_turf(src) - if(qdelloc) - for(var/atom/movable/AM in contents) - AM.loc = qdelloc - else - log_and_message_admins("A disposal holder was deleted with contents in nullspace") //ideally, this should never happen - - active = 0 - return ..() - // Disposal pipes - /obj/structure/disposalpipe icon = 'icons/obj/pipes/disposal.dmi' name = "disposal pipe" @@ -711,8 +28,8 @@ var/obj/structure/disposalholder/H = locate() in src if(H) // holder was present - H.active = 0 - var/turf/T = src.loc + H.active = FALSE + var/turf/T = get_turf(src) if(T.density) // deleting pipe is inside a dense turf (wall) // this is unlikely, but just dump out everything into the turf in case @@ -736,7 +53,6 @@ // transfer the holder through this pipe segment // overriden for special behaviour -// /obj/structure/disposalpipe/proc/transfer(var/obj/structure/disposalholder/H) var/nextdir = nextdir(H.dir) H.set_dir(nextdir) @@ -759,7 +75,7 @@ // update the icon_state to reflect hidden status /obj/structure/disposalpipe/proc/update() - var/turf/T = src.loc + var/turf/T = get_turf(src) hide(!T.is_plating() && !istype(T,/turf/space)) // space never hides pipes // hide called by levelupdate if turf intact status changes @@ -783,7 +99,7 @@ // expel the held objects into a turf // called when there is a break in the pipe -/obj/structure/disposalpipe/proc/expel(var/obj/structure/disposalholder/H, var/turf/T, var/direction) +/obj/structure/disposalpipe/proc/expel(obj/structure/disposalholder/H, turf/T, direction) if(!istype(H)) return @@ -796,11 +112,9 @@ qdel(H) return - if(!T.is_plating() && istype(T,/turf/simulated/floor)) //intact floor, pop the tile var/turf/simulated/floor/F = T - F.break_tile() - new /obj/item/stack/tile(H) // add to holder so it will be thrown with other stuff + F.make_plating(TRUE) var/turf/target if(direction) // direction is specified @@ -812,11 +126,12 @@ playsound(src, 'sound/machines/hiss.ogg', 50, 0, 0) if(H) for(var/atom/movable/AM in H) + if(QDELETED(AM)) + continue AM.forceMove(T) AM.pipe_eject(direction) - spawn(1) - if(AM) - AM.throw_at(target, 100, 1) + AM.throw_at(target, 100, 1) + H.vent_gas(T) qdel(H) @@ -825,13 +140,12 @@ playsound(src, 'sound/machines/hiss.ogg', 50, 0, 0) if(H) for(var/atom/movable/AM in H) + if(QDELETED(AM)) + continue target = get_offset_target_turf(T, rand(5)-rand(5), rand(5)-rand(5)) - AM.forceMove(T) AM.pipe_eject(0) - spawn(1) - if(AM) - AM.throw_at(target, 5, 1) + AM.throw_at(target, 5, 1) H.vent_gas(T) // all gas vent to turf qdel(H) @@ -842,19 +156,19 @@ // will expel any holder inside at the time // then delete the pipe // remains : set to leave broken pipe pieces in place -/obj/structure/disposalpipe/proc/broken(var/remains = 0) +/obj/structure/disposalpipe/proc/broken(remains = 0) if(remains) for(var/D in GLOB.cardinal) if(D & dpdir) - var/obj/structure/disposalpipe/broken/P = new(src.loc) + var/obj/structure/disposalpipe/broken/P = new(get_turf(src)) P.set_dir(D) - src.invisibility = INVISIBILITY_ABSTRACT // make invisible (since we won't delete the pipe immediately) + invisibility = INVISIBILITY_ABSTRACT // make invisible (since we won't delete the pipe immediately) var/obj/structure/disposalholder/H = locate() in src if(H) // holder was present - H.active = 0 - var/turf/T = src.loc + H.active = FALSE + var/turf/T = get_turf(src) if(T.density) // broken pipe is inside a dense turf (wall) // this is unlikely, but just dump out everything into the turf in case @@ -890,7 +204,7 @@ return - // test health for brokenness +// test health for brokenness /obj/structure/disposalpipe/proc/healthcheck() if(health < -2) broken(0) @@ -898,15 +212,14 @@ broken(1) return - //attack by item - //weldingtool: unfasten and convert to obj/disposalconstruct +//attack by item +//weldingtool: unfasten and convert to obj/disposalconstruct +/obj/structure/disposalpipe/attackby(obj/item/I, mob/user) -/obj/structure/disposalpipe/attackby(var/obj/item/I, var/mob/user) - - var/turf/T = src.loc + var/turf/T = get_turf(src) if(!T.is_plating()) return // prevent interaction with T-scanner revealed pipes - src.add_fingerprint(user) + add_fingerprint(user) if(I.has_tool_quality(TOOL_WELDER)) var/obj/item/weldingtool/W = I.get_welder() if(W.remove_fuel(0,user)) @@ -922,10 +235,10 @@ to_chat(user, "You need more welding fuel to cut the pipe.") return - // called when pipe is cut with welder +// called when pipe is cut with welder /obj/structure/disposalpipe/proc/welded() - var/obj/structure/disposalconstruct/C = new (src.loc) + var/obj/structure/disposalconstruct/C = new (get_turf(src)) switch(base_icon_state) if("pipe-s") C.ptype = 0 @@ -955,8 +268,8 @@ C.ptype = 13 if("pipe-tagger-partial") C.ptype = 14 - C.subtype = src.subtype - src.transfer_fingerprints_to(C) + C.subtype = subtype + transfer_fingerprints_to(C) C.set_dir(dir) C.density = FALSE C.anchored = TRUE @@ -970,8 +283,8 @@ var/obj/structure/disposalholder/H = locate() in src if(H) // holder was present - H.active = 0 - var/turf/T = src.loc + H.active = FALSE + var/turf/T = get_turf(src) if(T.density) // deleting pipe is inside a dense turf (wall) // this is unlikely, but just dump out everything into the turf in case @@ -1009,6 +322,8 @@ update() + + ///// Z-Level stuff /obj/structure/disposalpipe/up icon_state = "pipe-u" @@ -1018,7 +333,7 @@ dpdir = dir update() -/obj/structure/disposalpipe/up/nextdir(var/fromdir) +/obj/structure/disposalpipe/up/nextdir(fromdir) var/nextdir if(fromdir == 11) nextdir = dir @@ -1026,7 +341,7 @@ nextdir = 12 return nextdir -/obj/structure/disposalpipe/up/transfer(var/obj/structure/disposalholder/H) +/obj/structure/disposalpipe/up/transfer(obj/structure/disposalholder/H) var/nextdir = nextdir(H.dir) H.set_dir(nextdir) @@ -1043,7 +358,7 @@ P = F else - T = get_step(src.loc, H.dir) + T = get_step(get_turf(src), H.dir) P = H.findpipe(T) if(P) @@ -1067,7 +382,7 @@ dpdir = dir update() -/obj/structure/disposalpipe/down/nextdir(var/fromdir) +/obj/structure/disposalpipe/down/nextdir(fromdir) var/nextdir if(fromdir == 12) nextdir = dir @@ -1075,7 +390,7 @@ nextdir = 11 return nextdir -/obj/structure/disposalpipe/down/transfer(var/obj/structure/disposalholder/H) +/obj/structure/disposalpipe/down/transfer(obj/structure/disposalholder/H) var/nextdir = nextdir(H.dir) H.dir = nextdir @@ -1085,14 +400,14 @@ if(nextdir == 11) T = GetBelow(src) if(!T) - H.forceMove(src.loc) + H.forceMove(get_turf(src)) return else for(var/obj/structure/disposalpipe/up/F in T) P = F else - T = get_step(src.loc, H.dir) + T = get_step(get_turf(src), H.dir) P = H.findpipe(T) if(P) @@ -1107,354 +422,8 @@ return null return P -///// Z-Level stuff -/obj/structure/disposalpipe/junction/yjunction - icon_state = "pipe-y" -//a three-way junction with dir being the dominant direction -/obj/structure/disposalpipe/junction - icon_state = "pipe-j1" - -/obj/structure/disposalpipe/junction/Initialize(mapload) - . = ..() - if(icon_state == "pipe-j1") - dpdir = dir | turn(dir, -90) | turn(dir,180) - else if(icon_state == "pipe-j2") - dpdir = dir | turn(dir, 90) | turn(dir,180) - else // pipe-y - dpdir = dir | turn(dir,90) | turn(dir, -90) - update() - return - - -// next direction to move -// if coming in from secondary dirs, then next is primary dir -// if coming in from primary dir, then next is equal chance of other dirs - -/obj/structure/disposalpipe/junction/nextdir(var/fromdir) - var/flipdir = turn(fromdir, 180) - if(flipdir != dir) // came from secondary dir - return dir // so exit through primary - else // came from primary - // so need to choose either secondary exit - var/mask = ..(fromdir) - - // find a bit which is set - var/setbit = 0 - if(mask & NORTH) - setbit = NORTH - else if(mask & SOUTH) - setbit = SOUTH - else if(mask & EAST) - setbit = EAST - else - setbit = WEST - - if(prob(50)) // 50% chance to choose the found bit or the other one - return setbit - else - return mask & (~setbit) - - -/obj/structure/disposalpipe/tagger - name = "package tagger" - icon_state = "pipe-tagger" - var/sort_tag = "" - var/partial = 0 - -/obj/structure/disposalpipe/tagger/proc/updatedesc() - desc = initial(desc) - if(sort_tag) - desc += "\nIt's tagging objects with the '[sort_tag]' tag." - -/obj/structure/disposalpipe/tagger/proc/updatename() - if(sort_tag) - name = "[initial(name)] ([sort_tag])" - else - name = initial(name) - -/obj/structure/disposalpipe/tagger/Initialize(mapload) - . = ..() - dpdir = dir | turn(dir, 180) - if(sort_tag) GLOB.tagger_locations |= list("[sort_tag]" = get_z(src)) - updatename() - updatedesc() - update() - -/obj/structure/disposalpipe/tagger/attackby(var/obj/item/I, var/mob/user) - if(..()) - return - - if(istype(I, /obj/item/destTagger)) - var/obj/item/destTagger/O = I - - if(O.currTag)// Tag set - sort_tag = O.currTag - playsound(src, 'sound/machines/twobeep.ogg', 100, 1) - to_chat(user, span_blue("Changed tag to '[sort_tag]'.")) - updatename() - updatedesc() - -/obj/structure/disposalpipe/tagger/transfer(var/obj/structure/disposalholder/H) - if(sort_tag) - if(partial) - H.setpartialtag(sort_tag) - else - H.settag(sort_tag) - return ..() - -/obj/structure/disposalpipe/tagger/partial //needs two passes to tag - name = "partial package tagger" - icon_state = "pipe-tagger-partial" - partial = 1 - -//a three-way junction that sorts objects -/obj/structure/disposalpipe/sortjunction - name = "sorting junction" - icon_state = "pipe-j1s" - desc = "An underfloor disposal pipe with a package sorting mechanism." - - var/sortdir = 0 - - var/last_sort = FALSE - var/sort_scan = TRUE - var/panel_open = FALSE - var/datum/wires/wires = null // ...Why isnt this defined on /atom... - -/obj/structure/disposalpipe/sortjunction/proc/updatedesc() - desc = initial(desc) - if(sortType) - desc += "\nIt's filtering objects with the '[sortType]' tag." - -/obj/structure/disposalpipe/sortjunction/proc/updatename() - if(sortType) - name = "[initial(name)] ([sortType])" - else - name = initial(name) - -/obj/structure/disposalpipe/sortjunction/Destroy() - QDEL_NULL(wires) - . = ..() - -/obj/structure/disposalpipe/sortjunction/proc/updatedir() - var/negdir = turn(dir, 180) - - if(icon_state == "pipe-j1s") - sortdir = turn(dir, -90) - else if(icon_state == "pipe-j2s") - sortdir = turn(dir, 90) - - dpdir = sortdir | dir | negdir - -/obj/structure/disposalpipe/sortjunction/Initialize(mapload) - . = ..() - if(sortType) GLOB.tagger_locations |= list("[sortType]" = get_z(src)) - - wires = new /datum/wires/disposals(src) - - updatedir() - updatename() - updatedesc() - update() - -/obj/structure/disposalpipe/sortjunction/attackby(var/obj/item/I, var/mob/user) - if(..()) - return - - if(I.has_tool_quality(TOOL_SCREWDRIVER)) //Who is screwdriver_act()? - panel_open = !panel_open - playsound(src, I.usesound, 100, 1) - to_chat(user, span_notice("You [panel_open ? "open" : "close"] the wire panel.")) - update_icon() - return - - if(panel_open && is_wire_tool(I)) - wires.Interact(user) - return TRUE - - if(istype(I, /obj/item/destTagger)) - var/obj/item/destTagger/O = I - - if(O.currTag)// Tag set - sortType = O.currTag - playsound(src, 'sound/machines/twobeep.ogg', 100, 1) - to_chat(user, span_blue("Changed filter to '[sortType]'.")) - updatename() - updatedesc() - -/obj/structure/disposalpipe/sortjunction/proc/divert_check(var/checkTag) - return sortType == checkTag - -// next direction to move -// if coming in from negdir then next is primary dir or sortdir -// if coming in from dir, Then next is negdir or sortdir -// if coming in from sortdir, always go to posdir - -/obj/structure/disposalpipe/sortjunction/nextdir(var/fromdir, var/sortTag) - if(sort_scan) - if(divert_check(sortTag)) - if(!wires.is_cut(WIRE_SORT_SIDE)) - last_sort = TRUE - else - if(!wires.is_cut(WIRE_SORT_FORWARD)) - last_sort = FALSE - if(fromdir != sortdir && last_sort) - return sortdir - // so go with the flow to positive direction - return dir - -/obj/structure/disposalpipe/sortjunction/proc/reset_scan() - if(!wires.is_cut(WIRE_SORT_SCAN)) - sort_scan = TRUE - -/obj/structure/disposalpipe/sortjunction/transfer(var/obj/structure/disposalholder/H) - var/nextdir = nextdir(H.dir, H.destinationTag) - H.set_dir(nextdir) - var/turf/T = H.nextloc() - var/obj/structure/disposalpipe/P = H.findpipe(T) - - if(P) - // find other holder in next loc, if inactive merge it with current - var/obj/structure/disposalholder/H2 = locate() in P - if(H2 && !H2.active) - H.merge(H2) - - H.forceMove(P) - else // if wasn't a pipe, then set loc to turf - H.forceMove(T) - return null - - return P - -/obj/structure/disposalpipe/sortjunction/update_icon() - cut_overlays() - . = ..() - if(panel_open) - add_overlay("[icon_state]-open") - -//a three-way junction that filters all wrapped and tagged items -/obj/structure/disposalpipe/sortjunction/wildcard - name = "wildcard sorting junction" - desc = "An underfloor disposal pipe which filters all wrapped and tagged items." - subtype = 1 - -/obj/structure/disposalpipe/sortjunction/wildcard/divert_check(var/checkTag) - return checkTag != "" - -//junction that filters all untagged items -/obj/structure/disposalpipe/sortjunction/untagged - name = "untagged sorting junction" - desc = "An underfloor disposal pipe which filters all untagged items." - subtype = 2 - -/obj/structure/disposalpipe/sortjunction/untagged/divert_check(var/checkTag) - return checkTag == "" - -/obj/structure/disposalpipe/sortjunction/flipped //for easier and cleaner mapping - icon_state = "pipe-j2s" - -/obj/structure/disposalpipe/sortjunction/wildcard/flipped - icon_state = "pipe-j2s" - -/obj/structure/disposalpipe/sortjunction/untagged/flipped - icon_state = "pipe-j2s" - -//a trunk joining to a disposal bin or outlet on the same turf -/obj/structure/disposalpipe/trunk - icon_state = "pipe-t" - var/obj/linked // the linked obj/machinery/disposal or obj/disposaloutlet - -/obj/structure/disposalpipe/trunk/Initialize(mapload) - ..() - dpdir = dir - return INITIALIZE_HINT_LATELOAD - -/obj/structure/disposalpipe/trunk/LateInitialize() - if(!linked) - getlinked() - update() - -/obj/structure/disposalpipe/trunk/Destroy() - if(linked) - if(istype(linked, /obj/machinery/disposal)) - - var/obj/machinery/disposal/D = linked - D.trunk = null - linked = null - return ..() - -/obj/structure/disposalpipe/trunk/proc/getlinked() - linked = null - var/obj/machinery/disposal/D = locate() in loc - if(D) - linked = D - if(!D.trunk) - D.trunk = src - - var/obj/structure/disposaloutlet/O = locate() in loc - if(O) - linked = O - -// Override attackby so we disallow trunkremoval when somethings ontop -/obj/structure/disposalpipe/trunk/attackby(var/obj/item/I, var/mob/user) - //Disposal constructors - var/obj/structure/disposalconstruct/C = locate() in src.loc - if(C && C.anchored) - return - - var/turf/T = src.loc - if(!T.is_plating()) - return // prevent interaction with T-scanner revealed pipes - src.add_fingerprint(user) - if(I.has_tool_quality(TOOL_WELDER)) - var/obj/item/weldingtool/W = I.get_welder() - - if(W.remove_fuel(0,user)) - playsound(src, W.usesound, 100, 1) - // check if anything changed over 2 seconds - var/turf/uloc = user.loc - var/atom/wloc = W.loc - to_chat(user, "Slicing the disposal pipe.") - sleep(30) - if(!W.isOn()) return - if(user.loc == uloc && wloc == W.loc) - welded() - else - to_chat(user, "You must stay still while welding the pipe.") - else - to_chat(user, "You need more welding fuel to cut the pipe.") - return - - // would transfer to next pipe segment, but we are in a trunk - // if not entering from disposal bin, - // transfer to linked object (outlet or bin) - -/obj/structure/disposalpipe/trunk/transfer(var/obj/structure/disposalholder/H) - - if(H.dir == DOWN) // we just entered from a disposer - return ..() // so do base transfer proc - // otherwise, go to the linked object - if(linked) - var/obj/structure/disposaloutlet/O = linked - if(istype(O) && (H)) - O.expel(H) // expel at outlet - else - var/obj/machinery/disposal/D = linked - if(H) - D.expel(H) // expel at disposal - else - if(H) - src.expel(H, src.loc, 0) // expel at turf - return null - - // nextdir - -/obj/structure/disposalpipe/trunk/nextdir(var/fromdir) - if(fromdir == DOWN) - return dir - else - return 0 // a broken pipe /obj/structure/disposalpipe/broken @@ -1468,128 +437,33 @@ update() // called when welded -// for broken pipe, remove and turn into scrap /obj/structure/disposalpipe/broken/welded() -// var/obj/item/scrap/S = new(src.loc) -// S.set_components(200,0,0) qdel(src) -// the disposal outlet machine - -/obj/structure/disposaloutlet - name = "disposal outlet" - desc = "An outlet for the pneumatic disposal system." - icon = 'icons/obj/pipes/disposal.dmi' - icon_state = "outlet" - density = TRUE - anchored = TRUE - var/active = 0 - var/turf/target // this will be where the output objects are 'thrown' to. - var/mode = 0 - -/obj/structure/disposaloutlet/Initialize(mapload) - . = ..() - - target = get_ranged_target_turf(src, dir, 10) - - - var/obj/structure/disposalpipe/trunk/trunk = locate() in loc - if(trunk) - trunk.linked = src // link the pipe trunk to self - -/obj/structure/disposaloutlet/Destroy() - var/obj/structure/disposalpipe/trunk/trunk = locate() in loc - if(trunk && trunk.linked == src) - trunk.linked = null - return ..() - - // expel the contents of the holder object, then delete it - // called when the holder exits the outlet -/obj/structure/disposaloutlet/proc/expel(var/obj/structure/disposalholder/H) - flick("outlet-open", src) - playsound(src, 'sound/machines/warning-buzzer.ogg', 50, 0, 0) - sleep(20) //wait until correct animation frame - playsound(src, 'sound/machines/hiss.ogg', 50, 0, 0) - - if(H) - for(var/atom/movable/AM in H) - AM.forceMove(src.loc) - AM.pipe_eject(dir) - if(!istype(AM,/mob/living/silicon/robot/drone)) //Drones keep smashing windows from being fired out of chutes. Bad for the station. ~Z - spawn(5) - AM.throw_at(target, 3, 1) - H.vent_gas(src.loc) - qdel(H) - - return - -/obj/structure/disposaloutlet/attackby(var/obj/item/I, var/mob/user) - if(!I || !user) - return - src.add_fingerprint(user) - if(I.has_tool_quality(TOOL_SCREWDRIVER)) - if(mode==0) - mode=1 - to_chat(user, "You remove the screws around the power connection.") - playsound(src, I.usesound, 50, 1) - return - else if(mode==1) - mode=0 - to_chat(user, "You attach the screws around the power connection.") - playsound(src, I.usesound, 50, 1) - return - else if(I.has_tool_quality(TOOL_WELDER) && mode==1) - var/obj/item/weldingtool/W = I.get_welder() - if(W.remove_fuel(0,user)) - playsound(src, W.usesound, 100, 1) - to_chat(user, "You start slicing the floorweld off the disposal outlet.") - if(do_after(user, 2 SECONDS * W.toolspeed, target = src)) - if(!src || !W.isOn()) return - to_chat(user, "You sliced the floorweld off the disposal outlet.") - var/obj/structure/disposalconstruct/C = new (src.loc) - src.transfer_fingerprints_to(C) - C.ptype = 7 // 7 = outlet - C.update() - C.anchored = TRUE - C.density = TRUE - qdel(src) - return - else - to_chat(user, "You need more welding fuel to complete this task.") - return - // called when movable is expelled from a disposal pipe or outlet // by default does nothing, override for special behaviour - -/atom/movable/proc/pipe_eject(var/direction) +/atom/movable/proc/pipe_eject(direction) return // check if mob has client, if so restore client view on eject /mob/pipe_eject(var/direction) - if (src.client) - src.client.perspective = MOB_PERSPECTIVE - src.client.eye = src - + if (client) + client.perspective = MOB_PERSPECTIVE + client.eye = src return -/obj/effect/decal/cleanable/blood/gibs/pipe_eject(var/direction) +/obj/effect/decal/cleanable/blood/gibs/pipe_eject(direction) var/list/dirs if(direction) dirs = list( direction, turn(direction, -45), turn(direction, 45)) else dirs = GLOB.alldirs.Copy() + streak(dirs) - src.streak(dirs) - -/obj/effect/decal/cleanable/blood/gibs/robot/pipe_eject(var/direction) +/obj/effect/decal/cleanable/blood/gibs/robot/pipe_eject(direction) var/list/dirs if(direction) dirs = list( direction, turn(direction, -45), turn(direction, 45)) else dirs = GLOB.alldirs.Copy() - - src.streak(dirs) - -#undef SEND_PRESSURE -#undef PRESSURE_TANK_VOLUME -#undef PUMP_MAX_FLOW_RATE + streak(dirs) diff --git a/code/modules/recycling/disposal_holder.dm b/code/modules/recycling/disposal_holder.dm new file mode 100644 index 0000000000..db6f549df6 --- /dev/null +++ b/code/modules/recycling/disposal_holder.dm @@ -0,0 +1,153 @@ +// virtual disposal object +// travels through pipes in lieu of actual items +// contents will be items flushed by the disposal +// this allows the gas flushed to be tracked + +/obj/structure/disposalholder + invisibility = INVISIBILITY_ABSTRACT + var/datum/gas_mixture/gas = null // gas used to flush, will appear at exit point + var/active = FALSE // true if the holder is moving, otherwise inactive + var/count = 2048 //*** can travel 2048 steps before going inactive (in case of loops) + var/destinationTag = "" // changes if contains a delivery container + var/hasmob = FALSE //If it contains a mob + var/partialTag = "" //set by a partial tagger the first time round, then put in destinationTag if it goes through again. + dir = 0 + + // initialize a holder from the contents of a disposal unit +/obj/structure/disposalholder/proc/init(list/flush_list, datum/gas_mixture/flush_gas) + gas = flush_gas// transfer gas resv. into holder object -- let's be explicit about the data this proc consumes, please. + + //Check for any living mobs trigger hasmob. + //hasmob effects whether the package goes to cargo or its tagged destination. + for(var/mob/living/M in flush_list) + if(M.stat != DEAD && !istype(M,/mob/living/silicon/robot/drone)) + hasmob = TRUE + if(M.client) + M.client.perspective = EYE_PERSPECTIVE + M.client.eye = src + + //Checks 1 contents level deep. This means that players can be sent through disposals... + //...but it should require a second person to open the package. (i.e. person inside a wrapped locker) + for(var/obj/O in flush_list) + if(!O.contents) + continue + for(var/mob/living/M in O.contents) + if(M && M.stat != DEAD && !istype(M,/mob/living/silicon/robot/drone)) + hasmob = TRUE + + // now everything inside the disposal gets put into the holder + // note AM since can contain mobs or objs + for(var/atom/movable/AM in flush_list) + AM.forceMove(src) + // Mail will use it's sorting tag if dropped into disposals + if(istype(AM, /obj/structure/bigDelivery) && !hasmob) + var/obj/structure/bigDelivery/T = AM + src.destinationTag = T.sortTag + if(istype(AM, /obj/item/smallDelivery) && !hasmob) + var/obj/item/smallDelivery/T = AM + src.destinationTag = T.sortTag + if(istype(AM, /obj/item/mail) && !hasmob) + var/obj/item/mail/T = AM + src.destinationTag = T.sortTag + // Drones can mail themselves through maint. + if(istype(AM, /mob/living/silicon/robot/drone)) + var/mob/living/silicon/robot/drone/drone = AM + src.destinationTag = drone.mail_destination + +// movement process, persists while holder is moving through pipes +/obj/structure/disposalholder/proc/move() + if(!active) + return + + // Clonk n' bonk + if(hasmob && prob(3)) + for(var/mob/living/H in src) + if(!istype(H,/mob/living/silicon/robot/drone)) //Drones use the mailing code to move through the disposal system, + H.take_overall_damage(20, 0, "Blunt Trauma")//horribly maim any living creature jumping down disposals. c'est la vie + + // Transfer to next segment + var/obj/structure/disposalpipe/last = loc + var/obj/structure/disposalpipe/curr = last.transfer(src) + if(!active) + return // Handled by a machine connected to a trunk during transfer() + if(!curr) + last.expel(src, get_turf(loc), dir) + return + + // Onto the next segment + if(!(count--)) + active = FALSE + return + addtimer(CALLBACK(src, PROC_REF(move)), 1, TIMER_DELETE_ME) + + +// find the turf which should contain the next pipe +/obj/structure/disposalholder/proc/nextloc() + return get_step(loc,dir) + +// find a matching pipe on a turf +/obj/structure/disposalholder/proc/findpipe(turf/T) + if(!T) + return null + var/fdir = turn(dir, 180) // flip the movement direction + for(var/obj/structure/disposalpipe/P in T) + if(fdir & P.dpdir) // find pipe direction mask that matches flipped dir + return P + // if no matching pipe, return null + return null + +// merge two holder objects +// used when a a holder meets a stuck holder +/obj/structure/disposalholder/proc/merge(obj/structure/disposalholder/other) + for(var/atom/movable/AM in other) + AM.forceMove(src) // move everything in other holder to this one + if(ismob(AM)) + var/mob/M = AM + if(M.client) // if a client mob, update eye to follow this holder + M.client.eye = src + qdel(other) + +/obj/structure/disposalholder/proc/settag(new_tag) + destinationTag = new_tag + +/obj/structure/disposalholder/proc/setpartialtag(new_tag) + if(partialTag == new_tag) + destinationTag = new_tag + partialTag = "" + else + partialTag = new_tag + + +// called when player tries to move while in a pipe +/obj/structure/disposalholder/relaymove(mob/living/user) + if(!isliving(user)) + return + + if(user.stat || user.last_special <= world.time) + return + user.last_special = world.time+100 + + if(QDELETED(src)) + return + + for(var/mob/M in hearers(get_turf(src))) + to_chat(M, "CLONG, clong!") + playsound(src, 'sound/effects/clang.ogg', 50, 0, 0) + + // called to vent all gas in holder to a location +/obj/structure/disposalholder/proc/vent_gas(atom/location) + location.assume_air(gas) // vent all gas to turf + return + +/obj/structure/disposalholder/Destroy() + QDEL_NULL(gas) + if(contents.len) + var/turf/qdelloc = get_turf(src) + if(qdelloc) + for(var/atom/movable/AM in contents) + AM.forceMove(qdelloc) + else + log_and_message_admins("A disposal holder was deleted with contents in nullspace") //ideally, this should never happen + + active = FALSE + return ..() diff --git a/code/modules/recycling/disposal_junctions.dm b/code/modules/recycling/disposal_junctions.dm new file mode 100644 index 0000000000..d5f16be7a2 --- /dev/null +++ b/code/modules/recycling/disposal_junctions.dm @@ -0,0 +1,197 @@ +/obj/structure/disposalpipe/junction/yjunction + icon_state = "pipe-y" + +//a three-way junction with dir being the dominant direction +/obj/structure/disposalpipe/junction + icon_state = "pipe-j1" + +/obj/structure/disposalpipe/junction/Initialize(mapload) + . = ..() + if(icon_state == "pipe-j1") + dpdir = dir | turn(dir, -90) | turn(dir,180) + else if(icon_state == "pipe-j2") + dpdir = dir | turn(dir, 90) | turn(dir,180) + else // pipe-y + dpdir = dir | turn(dir,90) | turn(dir, -90) + update() + return + + +// next direction to move +// if coming in from secondary dirs, then next is primary dir +// if coming in from primary dir, then next is equal chance of other dirs + +/obj/structure/disposalpipe/junction/nextdir(fromdir) + var/flipdir = turn(fromdir, 180) + if(flipdir != dir) // came from secondary dir + return dir // so exit through primary + else // came from primary + // so need to choose either secondary exit + var/mask = ..(fromdir) + + // find a bit which is set + var/setbit = 0 + if(mask & NORTH) + setbit = NORTH + else if(mask & SOUTH) + setbit = SOUTH + else if(mask & EAST) + setbit = EAST + else + setbit = WEST + + if(prob(50)) // 50% chance to choose the found bit or the other one + return setbit + else + return mask & (~setbit) + +//a three-way junction that sorts objects +/obj/structure/disposalpipe/sortjunction + name = "sorting junction" + icon_state = "pipe-j1s" + desc = "An underfloor disposal pipe with a package sorting mechanism." + + var/sortdir = 0 + + var/last_sort = FALSE + var/sort_scan = TRUE + var/panel_open = FALSE + var/datum/wires/wires = null // ...Why isnt this defined on /atom... + +/obj/structure/disposalpipe/sortjunction/proc/updatedesc() + desc = initial(desc) + if(sortType) + desc += "\nIt's filtering objects with the '[sortType]' tag." + +/obj/structure/disposalpipe/sortjunction/proc/updatename() + if(sortType) + name = "[initial(name)] ([sortType])" + else + name = initial(name) + +/obj/structure/disposalpipe/sortjunction/Destroy() + QDEL_NULL(wires) + . = ..() + +/obj/structure/disposalpipe/sortjunction/proc/updatedir() + var/negdir = turn(dir, 180) + + if(icon_state == "pipe-j1s") + sortdir = turn(dir, -90) + else if(icon_state == "pipe-j2s") + sortdir = turn(dir, 90) + + dpdir = sortdir | dir | negdir + +/obj/structure/disposalpipe/sortjunction/Initialize(mapload) + . = ..() + if(sortType) GLOB.tagger_locations |= list("[sortType]" = get_z(src)) + + wires = new /datum/wires/disposals(src) + + updatedir() + updatename() + updatedesc() + update() + +/obj/structure/disposalpipe/sortjunction/attackby(obj/item/I, mob/user) + if(..()) + return + + if(I.has_tool_quality(TOOL_SCREWDRIVER)) //Who is screwdriver_act()? + panel_open = !panel_open + playsound(src, I.usesound, 100, 1) + to_chat(user, span_notice("You [panel_open ? "open" : "close"] the wire panel.")) + update_icon() + return + + if(panel_open && is_wire_tool(I)) + wires.Interact(user) + return TRUE + + if(istype(I, /obj/item/destTagger)) + var/obj/item/destTagger/O = I + + if(O.currTag)// Tag set + sortType = O.currTag + playsound(src, 'sound/machines/twobeep.ogg', 100, 1) + to_chat(user, span_blue("Changed filter to '[sortType]'.")) + updatename() + updatedesc() + +/obj/structure/disposalpipe/sortjunction/proc/divert_check(checkTag) + return sortType == checkTag + +// next direction to move +// if coming in from negdir then next is primary dir or sortdir +// if coming in from dir, Then next is negdir or sortdir +// if coming in from sortdir, always go to posdir + +/obj/structure/disposalpipe/sortjunction/nextdir(fromdir, sortTag) + if(sort_scan) + if(divert_check(sortTag)) + if(!wires.is_cut(WIRE_SORT_SIDE)) + last_sort = TRUE + else + if(!wires.is_cut(WIRE_SORT_FORWARD)) + last_sort = FALSE + if(fromdir != sortdir && last_sort) + return sortdir + // so go with the flow to positive direction + return dir + +/obj/structure/disposalpipe/sortjunction/proc/reset_scan() + if(!wires.is_cut(WIRE_SORT_SCAN)) + sort_scan = TRUE + +/obj/structure/disposalpipe/sortjunction/transfer(obj/structure/disposalholder/H) + var/nextdir = nextdir(H.dir, H.destinationTag) + H.set_dir(nextdir) + var/turf/T = H.nextloc() + var/obj/structure/disposalpipe/P = H.findpipe(T) + + if(P) + // find other holder in next loc, if inactive merge it with current + var/obj/structure/disposalholder/H2 = locate() in P + if(H2 && !H2.active) + H.merge(H2) + + H.forceMove(P) + else // if wasn't a pipe, then set loc to turf + H.forceMove(T) + return null + + return P + +/obj/structure/disposalpipe/sortjunction/update_icon() + cut_overlays() + . = ..() + if(panel_open) + add_overlay("[icon_state]-open") + +//a three-way junction that filters all wrapped and tagged items +/obj/structure/disposalpipe/sortjunction/wildcard + name = "wildcard sorting junction" + desc = "An underfloor disposal pipe which filters all wrapped and tagged items." + subtype = 1 + +/obj/structure/disposalpipe/sortjunction/wildcard/divert_check(checkTag) + return checkTag != "" + +//junction that filters all untagged items +/obj/structure/disposalpipe/sortjunction/untagged + name = "untagged sorting junction" + desc = "An underfloor disposal pipe which filters all untagged items." + subtype = 2 + +/obj/structure/disposalpipe/sortjunction/untagged/divert_check(checkTag) + return checkTag == "" + +/obj/structure/disposalpipe/sortjunction/flipped //for easier and cleaner mapping + icon_state = "pipe-j2s" + +/obj/structure/disposalpipe/sortjunction/wildcard/flipped + icon_state = "pipe-j2s" + +/obj/structure/disposalpipe/sortjunction/untagged/flipped + icon_state = "pipe-j2s" diff --git a/code/modules/recycling/disposal_machines.dm b/code/modules/recycling/disposal_machines.dm new file mode 100644 index 0000000000..199fcf2201 --- /dev/null +++ b/code/modules/recycling/disposal_machines.dm @@ -0,0 +1,492 @@ +// Disposal bin +// Holds items for disposal into pipe system +// Draws air from turf, gradually charges internal reservoir +// Once full (~1 atm), uses air resv to flush items into the pipes +// Automatically recharges air (unless off), will flush when ready if pre-set +// Can hold items and human size things, no other draggables +// Toilets are a type of disposal bin for small objects only and work on magic. By magic, I mean torque rotation +#define SEND_PRESSURE (0.05 + ONE_ATMOSPHERE) //kPa - assume the inside of a dispoal pipe is 1 atm, so that needs to be added. +#define PRESSURE_TANK_VOLUME 150 //L +#define PUMP_MAX_FLOW_RATE 11.25 //L/s - 4 m/s using a 15 cm by 15 cm inlet //NOTE: I reduced the send pressure from 801 to 101.05 which is about 1/8 there was originally, and this was 90 before that. 90/8 is about 11.25, so that's the new value. -Reo +#define DISPOSALMODE_EJECTONLY -1 +#define DISPOSALMODE_OFF 0 +#define DISPOSALMODE_CHARGING 1 +#define DISPOSALMODE_CHARGED 2 + +/obj/machinery/disposal + name = "disposal unit" + desc = "A pneumatic waste disposal unit." + icon = 'icons/obj/pipes/disposal.dmi' + icon_state = "disposal" + anchored = TRUE + density = TRUE + var/datum/gas_mixture/air_contents // internal reservoir + var/mode = DISPOSALMODE_CHARGING + var/flush = FALSE // true if flush handle is pulled + var/flushing = FALSE // true if flushing in progress + var/flush_every_ticks = 30 //Every 30 ticks it will look whether it is ready to flush + var/flush_count = 0 //this var adds 1 once per tick. When it reaches flush_every_ticks it resets and tries to flush. + active_power_usage = 2200 //the pneumatic pump power. 3 HP ~ 2200W + idle_power_usage = 100 + var/stat_tracking = TRUE + +// create a new disposal +// find the attached trunk (if present) and init gas resvr. +/obj/machinery/disposal/Initialize(mapload) + . = ..() + + var/obj/structure/disposalpipe/trunk/trunk = locate() in loc + if(!trunk) + mode = DISPOSALMODE_OFF + flush = FALSE + + air_contents = new(PRESSURE_TANK_VOLUME) + update() + AddComponent(/datum/component/disposal_system_connection) + +/obj/machinery/disposal/Destroy() + eject() + return ..() + +// attack by item places it in to disposal +/obj/machinery/disposal/attackby(obj/item/I, mob/user) + if(stat & BROKEN || !I || !user) + return + + add_fingerprint(user) + if(mode <= DISPOSALMODE_OFF) // It's off + if(I.has_tool_quality(TOOL_SCREWDRIVER)) + if(contents.len > 0) + to_chat(user, "Eject the items first!") + return + if(mode == DISPOSALMODE_OFF) // It's off but still not unscrewed + mode = DISPOSALMODE_EJECTONLY // Set it to doubleoff l0l + playsound(src, I.usesound, 50, 1) + to_chat(user, "You remove the screws around the power connection.") + return + else if(mode == DISPOSALMODE_EJECTONLY) + mode = DISPOSALMODE_OFF + playsound(src, I.usesound, 50, 1) + to_chat(user, "You attach the screws around the power connection.") + return + else if(I.has_tool_quality(TOOL_WELDER) && mode == DISPOSALMODE_EJECTONLY) + if(contents.len > 0) + to_chat(user, "Eject the items first!") + return + var/obj/item/weldingtool/W = I.get_welder() + if(W.remove_fuel(0,user)) + playsound(src, W.usesound, 100, 1) + to_chat(user, "You start slicing the floorweld off the disposal unit.") + + if(do_after(user, 2 SECONDS * W.toolspeed, target = src)) + if(!src || !W.isOn()) return + to_chat(user, "You sliced the floorweld off the disposal unit.") + var/obj/structure/disposalconstruct/C = new (get_turf(src)) + transfer_fingerprints_to(C) + C.ptype = 6 // 6 = disposal unit + C.anchored = TRUE + C.density = TRUE + C.update() + qdel(src) + return + else + to_chat(user, "You need more welding fuel to complete this task.") + return + + + if(istype(I, /obj/item/storage/bag/trash)) + var/obj/item/storage/bag/trash/T = I + to_chat(user, span_blue("You empty the bag.")) + for(var/obj/item/O in T.contents) + T.remove_from_storage(O,src) + T.update_icon() + update() + return + + if(istype(I, /obj/item/material/ashtray)) + var/obj/item/material/ashtray/A = I + if(A.contents.len > 0) + user.visible_message(span_infoplain(span_bold("\The [user]") + " empties \the [A] into [src].")) + for(var/obj/item/O in A.contents) + O.forceMove(src) + A.update_icon() + update() + return + + var/obj/item/grab/G = I + if(istype(G)) // handle grabbed mob + if(ismob(G.affecting)) + var/mob/GM = G.affecting + for (var/mob/V in viewers(user)) + V.show_message("[user] starts putting [GM.name] into the disposal.", 3) + if(do_after(user, 2 SECONDS, target = src)) + if (GM.client) + GM.client.perspective = EYE_PERSPECTIVE + GM.client.eye = src + GM.forceMove(src) + for (var/mob/C in viewers(src)) + C.show_message(span_red("[GM.name] has been placed in the [src] by [user]."), 3) + qdel(G) + + add_attack_logs(user,GM,"Disposals dunked") + return + + if(isrobot(user)) + return + if(!I || I.anchored || !I.canremove) + return + + user.drop_item() + if(I) + if(istype(I, /obj/item/holder)) + var/obj/item/holder/holder = I + var/mob/victim = holder.held_mob + if(ishuman(victim) || victim.client) + log_and_message_admins("placed [victim] inside \the [src]", user) + victim.forceMove(src) + + I.forceMove(src) + + user.visible_message("[user] places \the [I] into the [src].", "You place \the [I] into the [src].","Ca-Clunk") + update() + +// mouse drop another mob or self +// +/obj/machinery/disposal/MouseDrop_T(mob/target, mob/user) + if(user.stat || !user.canmove || !istype(target)) + return + if(target.buckled || get_dist(user, src) > 1 || get_dist(user, target) > 1) + return + + //animals cannot put mobs other than themselves into disposal + if(isanimal(user) && target != user) + return + + add_fingerprint(user) + var/target_loc = target.loc + var/msg + for (var/mob/V in viewers(user)) + if(target == user && !user.stat && !user.weakened && !user.stunned && !user.paralysis) + V.show_message("[user] starts climbing into the disposal.", 3) + if(target != user && !user.restrained() && !user.stat && !user.weakened && !user.stunned && !user.paralysis) + if(target.anchored) return + V.show_message("[user] starts stuffing [target.name] into the disposal.", 3) + if(!do_after(user, 2 SECONDS, target)) + return + if(target_loc != target.loc) + return + if(target == user && !user.stat && !user.weakened && !user.stunned && !user.paralysis) // if drop self, then climbed in + // must be awake, not stunned or whatever + msg = "[user.name] climbs into the [src]." + to_chat(user, "You climb into the [src].") + log_and_message_admins("climbed into disposals!", user) + else if(target != user && !user.restrained() && !user.stat && !user.weakened && !user.stunned && !user.paralysis) + msg = "[user.name] stuffs [target.name] into the [src]!" + to_chat(user, "You stuff [target.name] into the [src]!") + + add_attack_logs(user,target,"Disposals dunked") + else + return + if (target.client) + target.client.perspective = EYE_PERSPECTIVE + target.client.eye = src + + target.forceMove(src) + + for (var/mob/C in viewers(src)) + if(C == user) + continue + C.show_message(msg, 3) + + update() + return + +// attempt to move while inside +/obj/machinery/disposal/relaymove(mob/user) + if(user.stat || flushing) + return + if(user.loc == src) + go_out(user) + return + +// leave the disposal +/obj/machinery/disposal/proc/go_out(mob/user) + if (user.client) + user.client.eye = user.client.mob + user.client.perspective = MOB_PERSPECTIVE + user.forceMove(get_turf(src)) + update() + return + +// ai as human but can't flush +/obj/machinery/disposal/attack_ai(mob/user) + add_hiddenprint(user) + tgui_interact(user) + +// human interact with machine +/obj/machinery/disposal/attack_hand(mob/user) + if(stat & BROKEN) + return + + if(user && user.loc == src) + to_chat(user, span_red("You cannot reach the controls from inside.")) + return + + // Clumsy folks can only flush it. + if(user.IsAdvancedToolUser(1)) + tgui_interact(user) + else + flush = !flush + update() + return + +// user interaction +/obj/machinery/disposal/tgui_interact(mob/user, datum/tgui/ui = null) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "DisposalBin") + ui.open() + +/obj/machinery/disposal/tgui_data(mob/user) + var/list/data = list() + + data["isAI"] = isAI(user) + data["flushing"] = flush + data["mode"] = mode + data["pressure"] = round(clamp(100* air_contents.return_pressure() / (SEND_PRESSURE), 0, 100),1) + + return data + +/obj/machinery/disposal/tgui_act(action, list/params, datum/tgui/ui, datum/tgui_state/state) + if(..()) + return + + if(ui.user.loc == src) + to_chat(ui.user, span_warning("You cannot reach the controls from inside.")) + return TRUE + + if(mode == DISPOSALMODE_EJECTONLY && action != "eject") // If the mode is -1, only allow ejection + to_chat(ui.user, span_warning("The disposal units power is disabled.")) + return + + if(stat & BROKEN) + return + + add_fingerprint(ui.user) + + if(flushing) + return + + if(isturf(loc)) + if(action == "pumpOn") + mode = DISPOSALMODE_CHARGING + update() + if(action == "pumpOff") + mode = DISPOSALMODE_OFF + update() + + if(action == "engageHandle") + flush = TRUE + update() + if(action == "disengageHandle") + flush = FALSE + update() + + if(action == "eject") + eject() + + return TRUE + +// eject the contents of the disposal unit + +/obj/machinery/disposal/verb/force_eject() + set src in oview(1) + set category = "Object" + set name = "Force Eject" + if(flushing) + return + eject() + +/obj/machinery/disposal/proc/eject() + for(var/atom/movable/AM in src) + AM.forceMove(get_turf(src)) + AM.pipe_eject(0) + update() + +// update the icon & overlays to reflect mode & status +/obj/machinery/disposal/proc/update() + cut_overlays() + if(stat & BROKEN) + icon_state = "disposal-broken" + mode = DISPOSALMODE_OFF + flush = 0 + return + + // flush handle + if(flush) + add_overlay("[initial(icon_state)]-handle") + + // only handle is shown if no power + if(stat & NOPOWER || mode == DISPOSALMODE_EJECTONLY) + return + + // check for items in disposal - occupied light + if(contents.len > 0) + add_overlay("[initial(icon_state)]-full") + + // charging and ready light + if(mode == DISPOSALMODE_CHARGING) + add_overlay("[initial(icon_state)]-charge") + else if(mode == DISPOSALMODE_CHARGED) + add_overlay("[initial(icon_state)]-ready") + +// timed process +// charge the gas reservoir and perform flush if ready +/obj/machinery/disposal/process() + if(!air_contents || (stat & BROKEN)) // nothing can happen if broken + update_use_power(USE_POWER_OFF) + return + + flush_count++ + if( flush_count >= flush_every_ticks ) + if( contents.len ) + if(mode == DISPOSALMODE_CHARGED) + spawn(0) + feedback_inc("disposal_auto_flush",1) + flush() + flush_count = 0 + + if(flush && air_contents.return_pressure() >= SEND_PRESSURE ) // flush can happen even without power + flush() + + if(mode != DISPOSALMODE_CHARGING) //if off or ready, no need to charge + update_use_power(USE_POWER_IDLE) + else if(air_contents.return_pressure() >= SEND_PRESSURE) + mode = DISPOSALMODE_CHARGED //if full enough, switch to ready mode + update() + else + pressurize() //otherwise charge + +/obj/machinery/disposal/proc/pressurize() + if(stat & NOPOWER) // won't charge if no power + update_use_power(USE_POWER_OFF) + return + + var/atom/L = loc // recharging from loc turf + var/datum/gas_mixture/env = L.return_air() + + var/power_draw = -1 + if(env && env.temperature > 0) + var/transfer_moles = (PUMP_MAX_FLOW_RATE/env.volume)*env.total_moles //group_multiplier is divided out here + power_draw = pump_gas(src, env, air_contents, transfer_moles, active_power_usage) + + if (power_draw > 0) + use_power(power_draw) + +// perform a flush +/obj/machinery/disposal/proc/flush() + if(flushing) + return + + flushing = TRUE + flick("[icon_state]-flush", src) + // wait for animation to finish + addtimer(CALLBACK(src, PROC_REF(flush_animation)), 1 SECOND, TIMER_DELETE_ME) + +/obj/machinery/disposal/proc/flush_animation() + PROTECTED_PROC(TRUE) + // wait for animation to finish + playsound(src, 'sound/machines/disposalflush.ogg', 50, 0, 0) + addtimer(CALLBACK(src, PROC_REF(flush_resolve)), 0.5 SECOND, TIMER_DELETE_ME) + +/obj/machinery/disposal/proc/flush_resolve() + SEND_SIGNAL(src,COMSIG_DISPOSAL_FLUSH,air_contents) + air_contents = new(PRESSURE_TANK_VOLUME) // new empty gas resv. Disposal packet takes ownership of the original one! + if(stat_tracking) + GLOB.disposals_flush_shift_roundstat++ + flushing = FALSE + + // now reset disposal state + flush = FALSE + if(mode == DISPOSALMODE_CHARGED) // if was ready, + mode = DISPOSALMODE_CHARGING // switch to charging + update() + return + +// called when area power changes +/obj/machinery/disposal/power_change() + ..() // do default setting/reset of stat NOPOWER bit + update() // update icon + return + +/obj/machinery/disposal/hitby(atom/movable/AM) + . = ..() + if(istype(AM, /obj/item) && !istype(AM, /obj/item/projectile)) + if(prob(75)) + AM.forceMove(src) + visible_message("\The [AM] lands in \the [src].") + else + visible_message("\The [AM] bounces off of \the [src]'s rim!") + + if(istype(AM,/mob/living)) + if(prob(75)) + var/mob/living/to_be_dunked = AM + if(ishuman(AM) ||to_be_dunked.client) + log_and_message_admins("[AM] was thrown into \the [src]", null) + AM.forceMove(src) + visible_message("\The [AM] lands in \the [src].") + +/obj/machinery/disposal/wall + name = "inset disposal unit" + icon_state = "wall" + + density = FALSE + +/obj/machinery/disposal/wall/update() + ..() + + switch(dir) + if(1) + pixel_x = 0 + pixel_y = -32 + if(2) + pixel_x = 0 + pixel_y = 32 + if(4) + pixel_x = -32 + pixel_y = 0 + if(8) + pixel_x = 32 + pixel_y = 0 + + +// Cleaner subtype +/obj/machinery/disposal/wall/cleaner + name = "resleeving equipment deposit" + desc = "Automatically cleans and transports items to the local resleeving facilities." + icon_state = "bluewall" + +/obj/machinery/disposal/wall/cleaner/flush() + if(flushing) + return + + // Clean items before sending them + for(var/obj/item/flushed_item in src) + if(istype(flushed_item, /obj/item/storage)) + var/obj/item/storage/storage_flushed = flushed_item + var/list/storage_items = storage_flushed.return_inv() + for(var/obj/item/item in storage_items) + item.wash(CLEAN_WASH) + continue + if(istype(flushed_item, /obj/item)) + flushed_item.wash(CLEAN_WASH) + + . = ..() + +#undef DISPOSALMODE_EJECTONLY +#undef DISPOSALMODE_OFF +#undef DISPOSALMODE_CHARGING +#undef DISPOSALMODE_CHARGED +#undef SEND_PRESSURE +#undef PRESSURE_TANK_VOLUME +#undef PUMP_MAX_FLOW_RATE diff --git a/code/modules/recycling/disposal_mail.dm b/code/modules/recycling/disposal_mail.dm new file mode 100644 index 0000000000..419477e17c --- /dev/null +++ b/code/modules/recycling/disposal_mail.dm @@ -0,0 +1,230 @@ +/obj/structure/bigDelivery + desc = "A big wrapped package." + name = "large parcel" + icon = 'icons/obj/storage_vr.dmi' //VOREStation Edit + icon_state = "deliverycloset" + var/obj/wrapped = null + density = TRUE + var/sortTag = null + flags = NOBLUDGEON + mouse_drag_pointer = MOUSE_ACTIVE_POINTER + var/examtext = null + var/nameset = 0 + var/label_y + var/label_x + var/tag_x + +/obj/structure/bigDelivery/attack_hand(mob/user as mob) + unwrap() + +/obj/structure/bigDelivery/proc/unwrap() + playsound(src, 'sound/items/package_unwrap.ogg', 50, 1) + // Destroy will drop our wrapped object on the turf, so let it. + qdel(src) + +/obj/structure/bigDelivery/attackby(obj/item/W as obj, mob/user as mob) + if(istype(W, /obj/item/destTagger)) + var/obj/item/destTagger/O = W + if(O.currTag) + if(src.sortTag != O.currTag) + to_chat(user, span_notice("You have labeled the destination as [O.currTag].")) + if(!src.sortTag) + src.sortTag = O.currTag + update_icon() + else + src.sortTag = O.currTag + playsound(src, 'sound/machines/twobeep.ogg', 50, 1) + else + to_chat(user, span_warning("The package is already labeled for [O.currTag].")) + else + to_chat(user, span_warning("You need to set a destination first!")) + + else if(istype(W, /obj/item/pen)) + switch(tgui_alert(user, "What would you like to alter?","Select Alteration",list("Title","Description","Cancel"))) + if("Title") + var/str = sanitizeSafe(tgui_input_text(user,"Label text?","Set label","", MAX_NAME_LEN, encode = FALSE), MAX_NAME_LEN) + if(!str || !length(str)) + to_chat(user, span_warning(" Invalid text.")) + return + user.visible_message("\The [user] titles \the [src] with \a [W], marking down: \"[str]\"",\ + span_notice("You title \the [src]: \"[str]\""),\ + "You hear someone scribbling a note.") + playsound(src, pick('sound/bureaucracy/pen1.ogg','sound/bureaucracy/pen2.ogg'), 20) + name = "[name] ([str])" + if(!examtext && !nameset) + nameset = 1 + update_icon() + else + nameset = 1 + if("Description") + var/str = tgui_input_text(user,"Label text?","Set label","", MAX_MESSAGE_LEN) + if(!str || !length(str)) + to_chat(user, span_red("Invalid text.")) + return + if(!examtext && !nameset) + examtext = str + update_icon() + else + examtext = str + user.visible_message("\The [user] labels \the [src] with \a [W], scribbling down: \"[examtext]\"",\ + span_notice("You label \the [src]: \"[examtext]\""),\ + "You hear someone scribbling a note.") + playsound(src, pick('sound/bureaucracy/pen1.ogg','sound/bureaucracy/pen2.ogg'), 20) + return + +/obj/structure/bigDelivery/update_icon() + cut_overlays() + if(nameset || examtext) + var/image/I = new/image('icons/obj/storage.dmi',"delivery_label") + if(icon_state == "deliverycloset") + I.pixel_x = 2 + if(label_y == null) + label_y = rand(-6, 11) + I.pixel_y = label_y + else if(icon_state == "deliverycrate") + if(label_x == null) + label_x = rand(-8, 6) + I.pixel_x = label_x + I.pixel_y = -3 + add_overlay(I) + if(src.sortTag) + var/image/I = new/image('icons/obj/storage.dmi',"delivery_tag") + if(icon_state == "deliverycloset") + if(tag_x == null) + tag_x = rand(-2, 3) + I.pixel_x = tag_x + I.pixel_y = 9 + else if(icon_state == "deliverycrate") + if(tag_x == null) + tag_x = rand(-8, 6) + I.pixel_x = tag_x + I.pixel_y = -3 + add_overlay(I) + +/obj/structure/bigDelivery/examine(mob/user) + . = ..() + if(get_dist(user, src) <= 4) + if(sortTag) + . += span_notice("It is labeled \"[sortTag]\"") + if(examtext) + . += span_notice("It has a note attached which reads, \"[examtext]\"") + +/obj/structure/bigDelivery/Destroy() + if(wrapped) //sometimes items can disappear. For example, bombs. --rastaf0 + wrapped.forceMove(get_turf(src)) + if(istype(wrapped, /obj/structure/closet)) + var/obj/structure/closet/O = wrapped + O.sealed = 0 + wrapped = null + var/turf/T = get_turf(src) + for(var/atom/movable/AM in contents) + AM.forceMove(T) + return ..() + +/obj/item/smallDelivery + desc = "A small wrapped package." + name = "small parcel" + icon = 'icons/obj/storage_vr.dmi' //VOREStation Edit + icon_state = "deliverycrate3" + drop_sound = 'sound/items/drop/cardboardbox.ogg' + pickup_sound = 'sound/items/pickup/cardboardbox.ogg' + var/obj/item/wrapped = null + var/sortTag = null + var/examtext = null + var/nameset = 0 + var/tag_x + +/obj/item/smallDelivery/attack_self(mob/user as mob) + if (src.wrapped) //sometimes items can disappear. For example, bombs. --rastaf0 + wrapped.loc = user.loc + if(ishuman(user)) + user.put_in_hands(wrapped) + else + wrapped.loc = get_turf(src) + + qdel(src) + return + +/obj/item/smallDelivery/attackby(obj/item/W as obj, mob/user as mob) + if(istype(W, /obj/item/destTagger)) + var/obj/item/destTagger/O = W + if(O.currTag) + if(src.sortTag != O.currTag) + to_chat(user, span_notice("You have labeled the destination as [O.currTag].")) + if(!src.sortTag) + src.sortTag = O.currTag + update_icon() + else + src.sortTag = O.currTag + playsound(src, 'sound/machines/twobeep.ogg', 50, 1) + else + to_chat(user, span_warning("The package is already labeled for [O.currTag].")) + else + to_chat(user, span_warning("You need to set a destination first!")) + + else if(istype(W, /obj/item/pen)) + switch(tgui_alert(user, "What would you like to alter?","Select Alteration",list("Title","Description","Cancel"))) + if("Title") + var/str = sanitizeSafe(tgui_input_text(user,"Label text?","Set label","", MAX_NAME_LEN, encode = FALSE), MAX_NAME_LEN) + if(!str || !length(str)) + to_chat(user, span_warning(" Invalid text.")) + return + user.visible_message("\The [user] titles \the [src] with \a [W], marking down: \"[str]\"",\ + span_notice("You title \the [src]: \"[str]\""),\ + "You hear someone scribbling a note.") + playsound(src, pick('sound/bureaucracy/pen1.ogg','sound/bureaucracy/pen2.ogg'), 20) + name = "[name] ([str])" + if(!examtext && !nameset) + nameset = 1 + update_icon() + else + nameset = 1 + + if("Description") + var/str = tgui_input_text(user,"Label text?","Set label","", MAX_MESSAGE_LEN) + if(!str || !length(str)) + to_chat(user, span_red("Invalid text.")) + return + if(!examtext && !nameset) + examtext = str + update_icon() + else + examtext = str + user.visible_message("\The [user] labels \the [src] with \a [W], scribbling down: \"[examtext]\"",\ + span_notice("You label \the [src]: \"[examtext]\""),\ + "You hear someone scribbling a note.") + playsound(src, pick('sound/bureaucracy/pen1.ogg','sound/bureaucracy/pen2.ogg'), 20) + return + +/obj/item/smallDelivery/update_icon() + cut_overlays() + if((nameset || examtext) && icon_state != "deliverycrate1") + var/image/I = new/image('icons/obj/storage.dmi',"delivery_label") + if(icon_state == "deliverycrate5") + I.pixel_y = -1 + add_overlay(I) + if(src.sortTag) + var/image/I = new/image('icons/obj/storage.dmi',"delivery_tag") + switch(icon_state) + if("deliverycrate1") + I.pixel_y = -5 + if("deliverycrate2") + I.pixel_y = -2 + if("deliverycrate3") + I.pixel_y = 0 + if("deliverycrate4") + if(tag_x == null) + tag_x = rand(0,5) + I.pixel_x = tag_x + I.pixel_y = 3 + if("deliverycrate5") + I.pixel_y = -3 + add_overlay(I) + +/obj/item/smallDelivery/examine(mob/user) + . = ..() + if(get_dist(user, src) <= 4) + if(sortTag) + . += span_notice("It is labeled \"[sortTag]\"") + if(examtext) + . += span_notice("It has a note attached which reads, \"[examtext]\"") diff --git a/code/modules/recycling/disposal_outlet.dm b/code/modules/recycling/disposal_outlet.dm new file mode 100644 index 0000000000..4415379117 --- /dev/null +++ b/code/modules/recycling/disposal_outlet.dm @@ -0,0 +1,49 @@ +// the disposal outlet machine +/obj/structure/disposaloutlet + name = "disposal outlet" + desc = "An outlet for the pneumatic disposal system." + icon = 'icons/obj/pipes/disposal.dmi' + icon_state = "outlet" + density = TRUE + anchored = TRUE + var/active = 0 + var/mode = 0 + +/obj/structure/disposaloutlet/Initialize(mapload) + . = ..() + AddComponent(/datum/component/disposal_system_connection/disposaloutlet) // Special subtype for directional tossing and it's animation/buzzer + +/obj/structure/disposaloutlet/attackby(obj/item/I, mob/user) + if(!I || !user) + return + src.add_fingerprint(user) + if(I.has_tool_quality(TOOL_SCREWDRIVER)) + if(mode==0) + mode=1 + to_chat(user, "You remove the screws around the power connection.") + playsound(src, I.usesound, 50, 1) + return + else if(mode==1) + mode=0 + to_chat(user, "You attach the screws around the power connection.") + playsound(src, I.usesound, 50, 1) + return + else if(I.has_tool_quality(TOOL_WELDER) && mode==1) + var/obj/item/weldingtool/W = I.get_welder() + if(W.remove_fuel(0,user)) + playsound(src, W.usesound, 100, 1) + to_chat(user, "You start slicing the floorweld off the disposal outlet.") + if(do_after(user, 2 SECONDS * W.toolspeed, target = src)) + if(!src || !W.isOn()) return + to_chat(user, "You sliced the floorweld off the disposal outlet.") + var/obj/structure/disposalconstruct/C = new (src.loc) + src.transfer_fingerprints_to(C) + C.ptype = 7 // 7 = outlet + C.update() + C.anchored = TRUE + C.density = TRUE + qdel(src) + return + else + to_chat(user, "You need more welding fuel to complete this task.") + return diff --git a/code/modules/recycling/disposal_tagger.dm b/code/modules/recycling/disposal_tagger.dm new file mode 100644 index 0000000000..4a2ba5d9dc --- /dev/null +++ b/code/modules/recycling/disposal_tagger.dm @@ -0,0 +1,51 @@ +/obj/structure/disposalpipe/tagger + name = "package tagger" + icon_state = "pipe-tagger" + var/sort_tag = "" + var/partial = 0 + +/obj/structure/disposalpipe/tagger/proc/updatedesc() + desc = initial(desc) + if(sort_tag) + desc += "\nIt's tagging objects with the '[sort_tag]' tag." + +/obj/structure/disposalpipe/tagger/proc/updatename() + if(sort_tag) + name = "[initial(name)] ([sort_tag])" + else + name = initial(name) + +/obj/structure/disposalpipe/tagger/Initialize(mapload) + . = ..() + dpdir = dir | turn(dir, 180) + if(sort_tag) GLOB.tagger_locations |= list("[sort_tag]" = get_z(src)) + updatename() + updatedesc() + update() + +/obj/structure/disposalpipe/tagger/attackby(obj/item/I, mob/user) + if(..()) + return + + if(istype(I, /obj/item/destTagger)) + var/obj/item/destTagger/O = I + + if(O.currTag)// Tag set + sort_tag = O.currTag + playsound(src, 'sound/machines/twobeep.ogg', 100, 1) + to_chat(user, span_blue("Changed tag to '[sort_tag]'.")) + updatename() + updatedesc() + +/obj/structure/disposalpipe/tagger/transfer(obj/structure/disposalholder/H) + if(sort_tag) + if(partial) + H.setpartialtag(sort_tag) + else + H.settag(sort_tag) + return ..() + +/obj/structure/disposalpipe/tagger/partial //needs two passes to tag + name = "partial package tagger" + icon_state = "pipe-tagger-partial" + partial = 1 diff --git a/code/modules/recycling/disposal_trunk.dm b/code/modules/recycling/disposal_trunk.dm new file mode 100644 index 0000000000..947e9c6f83 --- /dev/null +++ b/code/modules/recycling/disposal_trunk.dm @@ -0,0 +1,62 @@ +//a trunk joining to a disposal bin or outlet on the same turf +/obj/structure/disposalpipe/trunk + icon_state = "pipe-t" + +/obj/structure/disposalpipe/trunk/Initialize(mapload) + ..() + dpdir = dir + return INITIALIZE_HINT_LATELOAD + +/obj/structure/disposalpipe/trunk/LateInitialize() + update() + +// Override attackby so we disallow trunkremoval when somethings ontop +/obj/structure/disposalpipe/trunk/attackby(obj/item/I, mob/user) + //Disposal constructors + var/turf/T = get_turf(src) + var/obj/structure/disposalconstruct/C = locate() in T + if(C && C.anchored) + return + + if(!T.is_plating()) + return // prevent interaction with T-scanner revealed pipes + add_fingerprint(user) + if(I.has_tool_quality(TOOL_WELDER)) + var/obj/item/weldingtool/W = I.get_welder() + + if(W.remove_fuel(0,user)) + playsound(src, W.usesound, 100, 1) + to_chat(user, "Slicing the disposal pipe.") + if(do_after(user, 3 SECONDS * W.toolspeed, target = src)) + if(!src || !W.isOn()) return + welded() + else + to_chat(user, "You must stay still while welding the pipe.") + else + to_chat(user, "You need more welding fuel to cut the pipe.") + +// would transfer to next pipe segment, but we are in a trunk +// if not entering from disposal bin, +// transfer to linked object (outlet or bin) +/obj/structure/disposalpipe/trunk/transfer(obj/structure/disposalholder/H) + if(H.dir == DOWN) // we just entered from a disposer + return ..() // so do base transfer proc + + // Find a disposal handler component. First come first serve. + var/transfered = FALSE + var/turf/T = get_turf(src) + for(var/obj/O in T) + if(SEND_SIGNAL(O,COMSIG_DISPOSAL_RECEIVING,H)) + transfered = TRUE + break + if(!transfered) // Check if anything handled it, will be deleted if so. + expel(H, T, 0) // expel at turf if nothing handled it + + return null + +// nextdir +/obj/structure/disposalpipe/trunk/nextdir(fromdir) + if(fromdir == DOWN) + return dir + else + return 0 diff --git a/code/modules/recycling/disposal_vr.dm b/code/modules/recycling/disposal_vr.dm deleted file mode 100644 index 292fff7fd6..0000000000 --- a/code/modules/recycling/disposal_vr.dm +++ /dev/null @@ -1,19 +0,0 @@ -/obj/machinery/disposal/wall/cleaner - name = "resleeving equipment deposit" - desc = "Automatically cleans and transports items to the local resleeving facilities." - icon = 'icons/obj/pipes/disposal_vr.dmi' - icon_state = "bluewall" - -/obj/machinery/disposal/wall/cleaner/flush() - flick("[icon_state]-flush", src) - for(var/obj/item/storage/i in src) - if(istype(i, /obj/item/storage)) - var/list/storage_items = i.return_inv() - - for(var/obj/item/item in storage_items) - item.wash(CLEAN_WASH) - - for(var/obj/item/i in src) - if(istype(i, /obj/item)) - i.wash(CLEAN_WASH) - . = ..() diff --git a/code/modules/recycling/packagewrap.dm b/code/modules/recycling/packagewrap.dm new file mode 100644 index 0000000000..be914f5e0d --- /dev/null +++ b/code/modules/recycling/packagewrap.dm @@ -0,0 +1,97 @@ +/obj/item/packageWrap + name = "package wrapper" + desc = "Like wrapping paper, but less festive." + icon = 'icons/obj/items.dmi' + icon_state = "deliveryPaper" + w_class = ITEMSIZE_NORMAL + var/amount = 25.0 + drop_sound = 'sound/items/drop/wrapper.ogg' + +/obj/item/packageWrap/afterattack(obj/target, mob/user, proximity) + if(!proximity) return + if(!istype(target)) //this really shouldn't be necessary (but it is). -Pete + return + if(istype(target, /obj/item/smallDelivery) || istype(target,/obj/structure/bigDelivery) \ + || istype(target, /obj/item/gift) || istype(target, /obj/item/evidencebag)) + return + if(target.anchored) + return + if(!isturf(target.loc)) //no wrapping things inside other things, just breaks things, put it on the ground first. + return + if(user in target) //no wrapping closets that you are inside - it's not physically possible + return + + user.attack_log += text("\[[time_stamp()]\] [span_blue("Has used [src.name] on \ref[target]")]") + + if (istype(target, /obj/item) && !(istype(target, /obj/item/storage) && !istype(target,/obj/item/storage/box))) + var/obj/item/O = target + if (src.amount > 1) + var/obj/item/smallDelivery/P = new /obj/item/smallDelivery(get_turf(O.loc)) //Aaannd wrap it up! + if(!istype(O.loc, /turf)) + if(user.client) + user.client.screen -= O + P.wrapped = O + O.forceMove(P) + P.w_class = O.w_class + var/i = round(O.w_class) + if(i in list(1,2,3,4,5)) + P.icon_state = "deliverycrate[i]" + switch(i) + if(1) P.name = "tiny parcel" + if(3) P.name = "normal-sized parcel" + if(4) P.name = "large parcel" + if(5) P.name = "huge parcel" + if(i < 1) + P.icon_state = "deliverycrate1" + P.name = "tiny parcel" + if(i > 5) + P.icon_state = "deliverycrate5" + P.name = "huge parcel" + P.add_fingerprint(user) + O.add_fingerprint(user) + src.add_fingerprint(user) + src.amount -= 1 + user.visible_message("\The [user] wraps \a [target] with \a [src].",\ + span_notice("You wrap \the [target], leaving [amount] units of paper on \the [src]."),\ + "You hear someone taping paper around a small object.") + playsound(src, 'sound/items/package_wrap.ogg', 50, 1) + else if (istype(target, /obj/structure/closet/crate)) + var/obj/structure/closet/crate/O = target + if (src.amount > 3 && !O.opened) + var/obj/structure/bigDelivery/P = new /obj/structure/bigDelivery(get_turf(O.loc)) + P.icon_state = "deliverycrate" + P.wrapped = O + O.loc = P + src.amount -= 3 + user.visible_message("\The [user] wraps \a [target] with \a [src].",\ + span_notice("You wrap \the [target], leaving [amount] units of paper on \the [src]."),\ + "You hear someone taping paper around a large object.") + playsound(src, 'sound/items/package_wrap.ogg', 50, 1) + else if(src.amount < 3) + to_chat(user, span_warning("You need more paper.")) + else if (istype (target, /obj/structure/closet)) + var/obj/structure/closet/O = target + if (src.amount > 3 && !O.opened) + var/obj/structure/bigDelivery/P = new /obj/structure/bigDelivery(get_turf(O.loc)) + P.wrapped = O + O.sealed = 1 + O.loc = P + src.amount -= 3 + user.visible_message("\The [user] wraps \a [target] with \a [src].",\ + span_notice("You wrap \the [target], leaving [amount] units of paper on \the [src]."),\ + "You hear someone taping paper around a large object.") + playsound(src, 'sound/items/package_wrap.ogg', 50, 1) + else if(src.amount < 3) + to_chat(user, span_warning("You need more paper.")) + else + to_chat(user, span_blue("The object you are trying to wrap is unsuitable for the sorting machinery!")) + if (src.amount <= 0) + new /obj/item/c_tube( src.loc ) + qdel(src) + return + return + +/obj/item/packageWrap/examine(mob/user) + . = ..() + if(get_dist(user, src) <= 0) + . += span_blue("There are [amount] units of package wrap left!") diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm index 1258a73f37..d7536808b2 100755 --- a/code/modules/recycling/sortingmachinery.dm +++ b/code/modules/recycling/sortingmachinery.dm @@ -1,404 +1,10 @@ -/obj/structure/bigDelivery - desc = "A big wrapped package." - name = "large parcel" - icon = 'icons/obj/storage_vr.dmi' //VOREStation Edit - icon_state = "deliverycloset" - var/obj/wrapped = null - density = TRUE - var/sortTag = null - flags = NOBLUDGEON - mouse_drag_pointer = MOUSE_ACTIVE_POINTER - var/examtext = null - var/nameset = 0 - var/label_y - var/label_x - var/tag_x - -/obj/structure/bigDelivery/attack_hand(mob/user as mob) - unwrap() - -/obj/structure/bigDelivery/proc/unwrap() - playsound(src, 'sound/items/package_unwrap.ogg', 50, 1) - // Destroy will drop our wrapped object on the turf, so let it. - qdel(src) - -/obj/structure/bigDelivery/attackby(obj/item/W as obj, mob/user as mob) - if(istype(W, /obj/item/destTagger)) - var/obj/item/destTagger/O = W - if(O.currTag) - if(src.sortTag != O.currTag) - to_chat(user, span_notice("You have labeled the destination as [O.currTag].")) - if(!src.sortTag) - src.sortTag = O.currTag - update_icon() - else - src.sortTag = O.currTag - playsound(src, 'sound/machines/twobeep.ogg', 50, 1) - else - to_chat(user, span_warning("The package is already labeled for [O.currTag].")) - else - to_chat(user, span_warning("You need to set a destination first!")) - - else if(istype(W, /obj/item/pen)) - switch(tgui_alert(user, "What would you like to alter?","Select Alteration",list("Title","Description","Cancel"))) - if("Title") - var/str = sanitizeSafe(tgui_input_text(user,"Label text?","Set label","", MAX_NAME_LEN, encode = FALSE), MAX_NAME_LEN) - if(!str || !length(str)) - to_chat(user, span_warning(" Invalid text.")) - return - user.visible_message("\The [user] titles \the [src] with \a [W], marking down: \"[str]\"",\ - span_notice("You title \the [src]: \"[str]\""),\ - "You hear someone scribbling a note.") - playsound(src, pick('sound/bureaucracy/pen1.ogg','sound/bureaucracy/pen2.ogg'), 20) - name = "[name] ([str])" - if(!examtext && !nameset) - nameset = 1 - update_icon() - else - nameset = 1 - if("Description") - var/str = tgui_input_text(user,"Label text?","Set label","", MAX_MESSAGE_LEN) - if(!str || !length(str)) - to_chat(user, span_red("Invalid text.")) - return - if(!examtext && !nameset) - examtext = str - update_icon() - else - examtext = str - user.visible_message("\The [user] labels \the [src] with \a [W], scribbling down: \"[examtext]\"",\ - span_notice("You label \the [src]: \"[examtext]\""),\ - "You hear someone scribbling a note.") - playsound(src, pick('sound/bureaucracy/pen1.ogg','sound/bureaucracy/pen2.ogg'), 20) - return - -/obj/structure/bigDelivery/update_icon() - cut_overlays() - if(nameset || examtext) - var/image/I = new/image('icons/obj/storage.dmi',"delivery_label") - if(icon_state == "deliverycloset") - I.pixel_x = 2 - if(label_y == null) - label_y = rand(-6, 11) - I.pixel_y = label_y - else if(icon_state == "deliverycrate") - if(label_x == null) - label_x = rand(-8, 6) - I.pixel_x = label_x - I.pixel_y = -3 - add_overlay(I) - if(src.sortTag) - var/image/I = new/image('icons/obj/storage.dmi',"delivery_tag") - if(icon_state == "deliverycloset") - if(tag_x == null) - tag_x = rand(-2, 3) - I.pixel_x = tag_x - I.pixel_y = 9 - else if(icon_state == "deliverycrate") - if(tag_x == null) - tag_x = rand(-8, 6) - I.pixel_x = tag_x - I.pixel_y = -3 - add_overlay(I) - -/obj/structure/bigDelivery/examine(mob/user) - . = ..() - if(get_dist(user, src) <= 4) - if(sortTag) - . += span_notice("It is labeled \"[sortTag]\"") - if(examtext) - . += span_notice("It has a note attached which reads, \"[examtext]\"") - -/obj/item/smallDelivery - desc = "A small wrapped package." - name = "small parcel" - icon = 'icons/obj/storage_vr.dmi' //VOREStation Edit - icon_state = "deliverycrate3" - drop_sound = 'sound/items/drop/cardboardbox.ogg' - pickup_sound = 'sound/items/pickup/cardboardbox.ogg' - var/obj/item/wrapped = null - var/sortTag = null - var/examtext = null - var/nameset = 0 - var/tag_x - -/obj/item/smallDelivery/attack_self(mob/user as mob) - if (src.wrapped) //sometimes items can disappear. For example, bombs. --rastaf0 - wrapped.loc = user.loc - if(ishuman(user)) - user.put_in_hands(wrapped) - else - wrapped.loc = get_turf(src) - - qdel(src) - return - -/obj/item/smallDelivery/attackby(obj/item/W as obj, mob/user as mob) - if(istype(W, /obj/item/destTagger)) - var/obj/item/destTagger/O = W - if(O.currTag) - if(src.sortTag != O.currTag) - to_chat(user, span_notice("You have labeled the destination as [O.currTag].")) - if(!src.sortTag) - src.sortTag = O.currTag - update_icon() - else - src.sortTag = O.currTag - playsound(src, 'sound/machines/twobeep.ogg', 50, 1) - else - to_chat(user, span_warning("The package is already labeled for [O.currTag].")) - else - to_chat(user, span_warning("You need to set a destination first!")) - - else if(istype(W, /obj/item/pen)) - switch(tgui_alert(user, "What would you like to alter?","Select Alteration",list("Title","Description","Cancel"))) - if("Title") - var/str = sanitizeSafe(tgui_input_text(user,"Label text?","Set label","", MAX_NAME_LEN, encode = FALSE), MAX_NAME_LEN) - if(!str || !length(str)) - to_chat(user, span_warning(" Invalid text.")) - return - user.visible_message("\The [user] titles \the [src] with \a [W], marking down: \"[str]\"",\ - span_notice("You title \the [src]: \"[str]\""),\ - "You hear someone scribbling a note.") - playsound(src, pick('sound/bureaucracy/pen1.ogg','sound/bureaucracy/pen2.ogg'), 20) - name = "[name] ([str])" - if(!examtext && !nameset) - nameset = 1 - update_icon() - else - nameset = 1 - - if("Description") - var/str = tgui_input_text(user,"Label text?","Set label","", MAX_MESSAGE_LEN) - if(!str || !length(str)) - to_chat(user, span_red("Invalid text.")) - return - if(!examtext && !nameset) - examtext = str - update_icon() - else - examtext = str - user.visible_message("\The [user] labels \the [src] with \a [W], scribbling down: \"[examtext]\"",\ - span_notice("You label \the [src]: \"[examtext]\""),\ - "You hear someone scribbling a note.") - playsound(src, pick('sound/bureaucracy/pen1.ogg','sound/bureaucracy/pen2.ogg'), 20) - return - -/obj/item/smallDelivery/update_icon() - cut_overlays() - if((nameset || examtext) && icon_state != "deliverycrate1") - var/image/I = new/image('icons/obj/storage.dmi',"delivery_label") - if(icon_state == "deliverycrate5") - I.pixel_y = -1 - add_overlay(I) - if(src.sortTag) - var/image/I = new/image('icons/obj/storage.dmi',"delivery_tag") - switch(icon_state) - if("deliverycrate1") - I.pixel_y = -5 - if("deliverycrate2") - I.pixel_y = -2 - if("deliverycrate3") - I.pixel_y = 0 - if("deliverycrate4") - if(tag_x == null) - tag_x = rand(0,5) - I.pixel_x = tag_x - I.pixel_y = 3 - if("deliverycrate5") - I.pixel_y = -3 - add_overlay(I) - -/obj/item/smallDelivery/examine(mob/user) - . = ..() - if(get_dist(user, src) <= 4) - if(sortTag) - . += span_notice("It is labeled \"[sortTag]\"") - if(examtext) - . += span_notice("It has a note attached which reads, \"[examtext]\"") - -/obj/item/packageWrap - name = "package wrapper" - desc = "Like wrapping paper, but less festive." - icon = 'icons/obj/items.dmi' - icon_state = "deliveryPaper" - w_class = ITEMSIZE_NORMAL - var/amount = 25.0 - drop_sound = 'sound/items/drop/wrapper.ogg' - - -/obj/item/packageWrap/afterattack(var/obj/target as obj, mob/user as mob, proximity) - if(!proximity) return - if(!istype(target)) //this really shouldn't be necessary (but it is). -Pete - return - if(istype(target, /obj/item/smallDelivery) || istype(target,/obj/structure/bigDelivery) \ - || istype(target, /obj/item/gift) || istype(target, /obj/item/evidencebag)) - return - if(target.anchored) - return - if(!isturf(target.loc)) //no wrapping things inside other things, just breaks things, put it on the ground first. - return - if(user in target) //no wrapping closets that you are inside - it's not physically possible - return - - user.attack_log += text("\[[time_stamp()]\] [span_blue("Has used [src.name] on \ref[target]")]") - - - if (istype(target, /obj/item) && !(istype(target, /obj/item/storage) && !istype(target,/obj/item/storage/box))) - var/obj/item/O = target - if (src.amount > 1) - var/obj/item/smallDelivery/P = new /obj/item/smallDelivery(get_turf(O.loc)) //Aaannd wrap it up! - if(!istype(O.loc, /turf)) - if(user.client) - user.client.screen -= O - P.wrapped = O - O.forceMove(P) - P.w_class = O.w_class - var/i = round(O.w_class) - if(i in list(1,2,3,4,5)) - P.icon_state = "deliverycrate[i]" - switch(i) - if(1) P.name = "tiny parcel" - if(3) P.name = "normal-sized parcel" - if(4) P.name = "large parcel" - if(5) P.name = "huge parcel" - if(i < 1) - P.icon_state = "deliverycrate1" - P.name = "tiny parcel" - if(i > 5) - P.icon_state = "deliverycrate5" - P.name = "huge parcel" - P.add_fingerprint(user) - O.add_fingerprint(user) - src.add_fingerprint(user) - src.amount -= 1 - user.visible_message("\The [user] wraps \a [target] with \a [src].",\ - span_notice("You wrap \the [target], leaving [amount] units of paper on \the [src]."),\ - "You hear someone taping paper around a small object.") - playsound(src, 'sound/items/package_wrap.ogg', 50, 1) - else if (istype(target, /obj/structure/closet/crate)) - var/obj/structure/closet/crate/O = target - if (src.amount > 3 && !O.opened) - var/obj/structure/bigDelivery/P = new /obj/structure/bigDelivery(get_turf(O.loc)) - P.icon_state = "deliverycrate" - P.wrapped = O - O.loc = P - src.amount -= 3 - user.visible_message("\The [user] wraps \a [target] with \a [src].",\ - span_notice("You wrap \the [target], leaving [amount] units of paper on \the [src]."),\ - "You hear someone taping paper around a large object.") - playsound(src, 'sound/items/package_wrap.ogg', 50, 1) - else if(src.amount < 3) - to_chat(user, span_warning("You need more paper.")) - else if (istype (target, /obj/structure/closet)) - var/obj/structure/closet/O = target - if (src.amount > 3 && !O.opened) - var/obj/structure/bigDelivery/P = new /obj/structure/bigDelivery(get_turf(O.loc)) - P.wrapped = O - O.sealed = 1 - O.loc = P - src.amount -= 3 - user.visible_message("\The [user] wraps \a [target] with \a [src].",\ - span_notice("You wrap \the [target], leaving [amount] units of paper on \the [src]."),\ - "You hear someone taping paper around a large object.") - playsound(src, 'sound/items/package_wrap.ogg', 50, 1) - else if(src.amount < 3) - to_chat(user, span_warning("You need more paper.")) - else - to_chat(user, span_blue("The object you are trying to wrap is unsuitable for the sorting machinery!")) - if (src.amount <= 0) - new /obj/item/c_tube( src.loc ) - qdel(src) - return - return - -/obj/item/packageWrap/examine(mob/user) - . = ..() - if(get_dist(user, src) <= 0) - . += span_blue("There are [amount] units of package wrap left!") - -/obj/structure/bigDelivery/Destroy() - if(wrapped) //sometimes items can disappear. For example, bombs. --rastaf0 - wrapped.forceMove(get_turf(src)) - if(istype(wrapped, /obj/structure/closet)) - var/obj/structure/closet/O = wrapped - O.sealed = 0 - wrapped = null - var/turf/T = get_turf(src) - for(var/atom/movable/AM in contents) - AM.forceMove(T) - return ..() - -/obj/item/destTagger - name = "destination tagger" - desc = "Used to set the destination of properly wrapped packages." - icon = 'icons/obj/device.dmi' - icon_state = "dest_tagger" - var/currTag = 0 - - w_class = ITEMSIZE_SMALL - item_state = "electronic" - slot_flags = SLOT_BELT - pickup_sound = 'sound/items/pickup/device.ogg' - drop_sound = 'sound/items/drop/device.ogg' - -/obj/item/destTagger/tgui_state(mob/user) - return GLOB.tgui_inventory_state - -/obj/item/destTagger/tgui_interact(mob/user, datum/tgui/ui) - ui = SStgui.try_update_ui(user, src, ui) - if(!ui) - ui = new(user, src, "DestinationTagger", name) - ui.open() - -/obj/item/destTagger/tgui_static_data(mob/user) - var/list/data = ..() - var/list/taggers = list() - var/list/tagger_levels = list() - for(var/tag in GLOB.tagger_locations) - var/z_level = GLOB.tagger_locations[tag] - taggers += list(list("tag" = tag, "level" = z_level)) - tagger_levels += list(list("z" = z_level, "location" = using_map.get_zlevel_name(z_level))) - data["taggerLevels"] = tagger_levels - data["taggerLocs"] = taggers - - return data - -/obj/item/destTagger/tgui_data(mob/user, datum/tgui/ui) - var/list/data = ..() - - data["currTag"] = currTag - - return data - -/obj/item/destTagger/attack_self(mob/user as mob) - tgui_interact(user) - -/obj/item/destTagger/tgui_act(action, params, datum/tgui/ui) - if(..()) - return TRUE - add_fingerprint(ui.user) - switch(action) - if("set_tag") - var/new_tag = params["tag"] - if(!(new_tag in GLOB.tagger_locations)) - return FALSE - currTag = new_tag - . = TRUE - /obj/machinery/disposal/deliveryChute name = "Delivery chute" desc = "A chute for big and small packages alike!" density = TRUE icon_state = "intake" - - var/c_mode = 0 - -/obj/machinery/disposal/deliveryChute/Initialize(mapload) - . = ..() - trunk = locate() in src.loc - if(trunk) - trunk.linked = src // link the pipe trunk to self + stat_tracking = FALSE + var/c_mode = FALSE /obj/machinery/disposal/deliveryChute/interact() return @@ -418,13 +24,9 @@ if(WEST) if(AM.loc.x != src.loc.x-1) return - if(istype(AM, /obj)) - var/obj/O = AM - O.loc = src - else if(istype(AM, /mob)) - var/mob/M = AM - M.loc = src - src.flush() + if(isobj(AM) || ismob(AM)) + AM.forceMove(src) + flush() /obj/machinery/disposal/deliveryChute/hitby(atom/movable/AM) if(!QDELETED(AM) || (istype(AM, /obj/item) || istype(AM, /mob/living)) && !istype(AM, /obj/item/projectile)) @@ -438,29 +40,7 @@ if(WEST) if(AM.loc.x != src.loc.x-1) return ..() AM.forceMove(src) - src.flush() - -/obj/machinery/disposal/deliveryChute/flush() - flushing = 1 - flick("intake-closing", src) - var/obj/structure/disposalholder/H = new() // virtual holder object which actually - // travels through the pipes. - air_contents = new() // new empty gas resv. - - sleep(10) - playsound(src, 'sound/machines/disposalflush.ogg', 50, 0, 0) - sleep(5) // wait for animation to finish - - H.init(src) // copy the contents of disposer to holder - - H.start(src) // start the holder processing movement - flushing = 0 - // now reset disposal state - flush = 0 - if(mode == 2) // if was ready, - mode = 1 // switch to charging - update() - return + flush() /obj/machinery/disposal/deliveryChute/attackby(var/obj/item/I, var/mob/user) if(!I || !user) @@ -471,7 +51,7 @@ playsound(src, I.usesound, 50, 1) to_chat(user, "You [c_mode ? "remove" : "attach"] the screws around the power connection.") return - if(I.has_tool_quality(TOOL_WELDER) && c_mode==1) + if(I.has_tool_quality(TOOL_WELDER) && c_mode == TRUE) var/obj/item/weldingtool/W = I.get_welder() if(!W.remove_fuel(0,user)) to_chat(user, "You need more welding fuel to complete this task.") @@ -488,8 +68,3 @@ C.density = TRUE qdel(src) return - -/obj/machinery/disposal/deliveryChute/Destroy() - if(trunk) - trunk.linked = null - . = ..() diff --git a/icons/obj/pipes/disposal.dmi b/icons/obj/pipes/disposal.dmi index a20b8c65c3ce1f992864ce48265498d0d8cbe94a..f242efe8fe3144032d6763fc833e86df58b889bf 100644 GIT binary patch literal 118488 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 literal 117808 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

{eL~#J?KNLYvbekJ{Gm2waprEQbgKbHd}C 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 z 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 diff --git a/icons/obj/pipes/disposal_vr.dmi b/icons/obj/pipes/disposal_vr.dmi deleted file mode 100644 index 71c05c2871359262a3ebbf509c9e3cbf297878f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2225 zcmXX|c{r478-GV*8KqHlMyOHN$krfbnd~V=(Mk0Qsgb3u8Tp!dCmc(P4uvcUMLH#N zY9Kc0jmz*sDH zuZoJ_+O?G!Oz)O0ExjMj!uB3ZG&a}Kb=|H{$-3$4dN`PHLCz3A)7CC0L?j+P><{dl z9VN(pY`+NASEcg=5bZ>R)((>*)dM&H$=}^+Sgbf|qlLHlR9tNmv zoBJQB8~RT@W%-YqNOw~Fk(_yo2{~%foDyuyt|@eOInk=5#xho!i~^`i1BQ{jE``%~ z8=@0bSsCG4mDyFIW4LPxNkAz`#&$VQMpw(pPGV@1xz&;9x3TE+ z+G9l(WtQztvRuKe_!0cr-F(>VNo&K?uhb=fpsFr<>LFaJ{OZ4LUAL+m(9GE&Req!2 zk{(%gpWSdz_%c7pyzpM%{mb;?jW%wzn)OOVLt1u)f}i1e{YS{(7Or&kt3{UIgW6kc zi~D^Mula}~?`kizIu#=qrt$#GL1W^zFOZIIJlEE9VojtIrxA6aU~;4tSs;3HEq!sx z@tP>cpW>?)dn4gn8k^vodP>yG2;pBc*%t=H?;l)gUuK_4)q{AL-w)|2@y?ZGA&QN} zXC#w7M^jD6fQp3Y+(zZBv2$@6EOn+yH9Z#B>=SB!R<`oB#_t=g< z1$OxJ#>DBHoHc~}E0<4|_udmC^vX~i1no{biMZ2LcF=N!rv0uDi`EzuQ!3^^5em(H z)LO;JBBNd{`2`wdynaPltdtt?r&uo@=LO4ae1hg;!ABniJF^cFGZM9koRWs_@w(PG z^E^2G#skdYAhPoP zeaInd!>VyUE7Gywc?{{0F3X-K&M79Uw=NU6JXJCeZUJr^(v(h}R%Dc|nU9y@*Pi!`6Lw}!!wR7NPE`K9Kf^%fnJ;;`WERbQWcv;)J{EOSt@&6~ ztlA3`5YsL=GsDZg9wKo|UV-}EMGr{H$>2yGtOcoWZD9;;c8*hPPVUw=kmC)qZH}W* zY}N;;UL6$5$llu+jB0Tw!ivq^I)PQ9^g?*2=r~#EFJyrCy|ACP*~4`uGwF0gDOSM` zx>$<;bA9A)5NR^U{Um%s%A*(I6;`0bw(F~@fzTk2?kH8Cl$Kx6C1Fh#(3!}Dr5p+U za;wFpRLX%Y==hK2`V9O!Y5DCwNASE(_(f1lOt)AeBEivZ(y2t4IV9@jK)D=rm?#?T znH^9lIid^kri6?Rtk}?{1n<7Yp-oIlgVwRkO*^HPit4h;Aq6Y&TbJs4>~{GP>f3M$ z{fq<-gw~VE5nS#>+I9!M+`J~=7Dhszc%BmI{1*F6wq*ink}(_MnB5`Lq-pj%+_&jR zGn-^v$`~T);Ad7`KYCN`UCUoY5p3eDfVc?x%>|?`9~@qrH5KEGw<%zZlgV`{2y5wk zc4i4b=Ci1>IXlT({=)jG1R?#x6_Wkg$M~}ndSa`>_h}~*)?Mh9&d6b-QQbU$;4^D; ziw8fmCfjqd;78)p>wy0gN3zPVKvKl??tC_qIosi^)0n6Xywfb($ z#ms$jG2!bH<*Qe|b1zy1Lh7f}s1jMdbIfDy6~!z6PRKMb6DLh>v!sEs;}B!W8^2OQ zti$BI<>Gx1uNPnq*W3l{D`w7T{KIe0=4EMAhd4M?HRQXfGV)93I9LqqUnNpYTP6m}%-@Ld#%axIE54u^;D5;G${$kIfs*aJOymj!@dz?_EK zd-JXeJ4Z^7=t|(Nx$+TLT!oqMuH8Gm@$39nokFAwy(hyXs2^gqIXkgsX(7(ztoEPY zdaCq8FAjR@hh7wkL(-_Wu7w$aad-ZwfIkOiD!M@yw7Tq8+rCO18$g$5IMWA34yc!K zjF<$A-4fhhLDYp^J&ckH&kGxO{>@Ev$(4o{O3>k*2129&-JcOr^-%_1?zb$z(TXk< z5G{?(!k?7|@6~a`?p)wTGx;Q|A&3#Nj&w5-4q++dIB==wpz