From 811ccaa273673309b7b3b23eebb4d63427f95255 Mon Sep 17 00:00:00 2001 From: FalseIncarnate Date: Sun, 15 Jan 2017 05:13:17 -0500 Subject: [PATCH 1/3] NTPS: Requests Console Based Shipping Ever been stuck in your office and thought "Wow, I really could go for a burger, but the kitchen doesn't deliver." or "I'm too lazy and/or scared to go to science to ask for a new circuitboard in person."? Introducing NTPS: NanoTrasen Priority Shipping! All requests consoles have been upgraded with a brand new printer, capable of producing pre-tagged, single-use, single-object shipping packages for crew use! Chefs can send burgers to distant diners, or science can package up that brand new circuitboard you've been harassing them for and send it straight to you! But what if you have a larger parcel you want to ship, but don't have access to cargo's coveted destination tagger? Have no fear, simply slap the empty shipping package onto the parcel to give tag it just like cargo! But wait, there's more! Use a pen on any sealed shipping package and you can include the name of your intended recipient on the package! Now, when a coworker steals their mail, at least they will know it! This PR adds the ability for all requests console to print off Shipping Packages that come pre-tagged for a destination of your choosing. Each package can hold a single item of normal or smaller size (no storage containers, so you can't stick a bag or box in them). Once filled, simply activate the package in hand to either dump out the item (in case you put the wrong thing in) or seal the box for shipping. A sealed box can then be further addressed with a pen, and dropped into any disposal bin to start the delivery process (assuming it's connected to the standard loop). Unsealed boxes will be delivered to disposals by way of the cargo mail room, so make sure you seal it or hope that cargo is kind enough to seal and resend it for you! If you have a wrapped parcel (wrapped with packaging paper), you can also affix an empty shipping container to the parcel to tag it yourself with the destination of the shipping package, just in case cargo accidentally sent that virus crate to the wrong person! --- code/game/machinery/requests_console.dm | 47 +++- code/modules/recycling/disposal.dm | 15 +- code/modules/recycling/sortingmachinery.dm | 256 ++++++++++++++------- nano/templates/request_console.tmpl | 34 ++- 4 files changed, 256 insertions(+), 96 deletions(-) diff --git a/code/game/machinery/requests_console.dm b/code/game/machinery/requests_console.dm index 704da886685..5645ac54c3c 100644 --- a/code/game/machinery/requests_console.dm +++ b/code/game/machinery/requests_console.dm @@ -8,14 +8,16 @@ //Request Console Screens #define RCS_MAINMENU 0 // Main menu -#define RCS_RQASSIST 1 // Request supplies -#define RCS_RQSUPPLY 2 // Request assistance +#define RCS_RQSUPPLY 1 // Request supplies +#define RCS_RQASSIST 2 // Request assistance #define RCS_SENDINFO 3 // Relay information #define RCS_SENTPASS 4 // Message sent successfully #define RCS_SENTFAIL 5 // Message sent unsuccessfully #define RCS_VIEWMSGS 6 // View messages #define RCS_MESSAUTH 7 // Authentication before sending #define RCS_ANNOUNCE 8 // Send announcement +#define RCS_SHIPPING 9 // Print Shipping Labels/Packages +#define RCS_SHIP_LOG 10 // View Shipping Label Log var/req_console_assistance = list() var/req_console_supplies = list() @@ -52,6 +54,10 @@ var/list/obj/machinery/requests_console/allConsoles = list() var/priority = -1 ; //Priority of the message being sent light_range = 0 var/datum/announcement/announcement = new + var/list/shipping_log = list() + var/ship_tag_name = "" + var/ship_tag_index = 0 + var/print_cooldown = 0 //cooldown on shipping label printer, stores the in-game time of when the printer will next be ready /obj/machinery/requests_console/power_change() ..() @@ -128,6 +134,7 @@ var/list/obj/machinery/requests_console/allConsoles = list() data["assist_dept"] = req_console_assistance data["supply_dept"] = req_console_supplies data["info_dept"] = req_console_information + data["ship_dept"] = TAGGERLOCATIONS data["message"] = message data["recipient"] = recipient @@ -135,6 +142,8 @@ var/list/obj/machinery/requests_console/allConsoles = list() data["msgStamped"] = msgStamped data["msgVerified"] = msgVerified data["announceAuth"] = announceAuth + data["shipDest"] = ship_tag_name + data["shipping_log"] = shipping_log return data @@ -182,7 +191,7 @@ var/list/obj/machinery/requests_console/allConsoles = list() screen = RCS_SENTPASS message_log += "Message sent to [recipient]
[message]" else - audible_message(text("[bicon(src)] *The Requests Console beeps: 'NOTICE: No server detected!'"),,4) + audible_message(text("[bicon(src)] *The Requests Console beeps: 'NOTICE: No server detected!'"),,4) //Handle screen switching if(href_list["setScreen"]) @@ -199,6 +208,26 @@ var/list/obj/machinery/requests_console/allConsoles = list() reset_message() screen = tempScreen + if(href_list["shipSelect"]) + ship_tag_name = href_list["shipSelect"] + ship_tag_index = TAGGERLOCATIONS.Find(ship_tag_name) + + //Handle Shipping Label Printing + if(href_list["printLabel"]) + var/error_message = "" + if(!ship_tag_index) + error_message = "Please select a destination." + else if(!msgVerified) + error_message = "Please verify shipper ID." + else if(world.time < print_cooldown) + error_message = "Please allow the printer time to prepare the next shipping label." + if(error_message) + audible_message(text("[bicon(src)] *The Requests Console beeps: 'NOTICE: [error_message]'"),,4) + return + print_label(ship_tag_name, ship_tag_index) + shipping_log += "Shipping Label printed for [ship_tag_name]
[msgVerified]" + reset_message(1) + //Handle silencing the console if(href_list["toggleSilent"]) silent = !silent @@ -245,6 +274,10 @@ var/list/obj/machinery/requests_console/allConsoles = list() reset_message() to_chat(user, "You are not authorized to send announcements.") updateUsrDialog() + if(screen == RCS_SHIPPING) + var/obj/item/weapon/card/id/T = O + msgVerified = text("Sender verified as [T.registered_name] ([T.assignment])") + updateUsrDialog() if(istype(O, /obj/item/weapon/stamp)) if(inoperable(MAINT)) return if(screen == RCS_MESSAUTH) @@ -261,6 +294,8 @@ var/list/obj/machinery/requests_console/allConsoles = list() msgStamped = "" announceAuth = 0 announcement.announcer = "" + ship_tag_name = "" + ship_tag_index = 0 if(mainmenu) screen = RCS_MAINMENU @@ -286,3 +321,9 @@ var/list/obj/machinery/requests_console/allConsoles = list() else // Normal src.message_log += "From: [linkedSender]
[message]" set_light(2) + +/obj/machinery/requests_console/proc/print_label(tag_name, tag_index) + var/obj/item/shippingPackage/sp = new /obj/item/shippingPackage(get_turf(src)) + sp.sortTag = tag_index + sp.desc += " The label says \"Deliver to [tag_name]\"." + print_cooldown = world.time + 600 //1 minute cooldown before you can print another label, but you can still configure the next one during this time diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index 6691df19a1d..1867f0a8a0f 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -138,7 +138,8 @@ msg_admin_attack("[key_name_admin(user)] placed [key_name_admin(GM)] in a disposals unit. (JMP)") return - if(!I) return + if(!I) + return if(!user.drop_item()) return @@ -530,14 +531,18 @@ has_fat_guy = 1 // set flag on holder if(istype(AM, /obj/structure/bigDelivery) && !hasmob) var/obj/structure/bigDelivery/T = AM - src.destinationTag = T.sortTag + destinationTag = T.sortTag if(istype(AM, /obj/item/smallDelivery) && !hasmob) var/obj/item/smallDelivery/T = AM - src.destinationTag = T.sortTag + 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 + destinationTag = drone.mail_destination + if(istype(AM, /obj/item/shippingPackage) && !hasmob) + var/obj/item/shippingPackage/sp = AM + if(sp.sealed) //only sealed packages get delivered to their intended destination + destinationTag = sp.sortTag // start the movement process @@ -987,7 +992,7 @@ /obj/structure/disposalpipe/sortjunction icon_state = "pipe-j1s" - var/sortType = 0 //Look at the list called TAGGERLOCATIONS in setup.dm + var/sortType = 0 //Look at the list called TAGGERLOCATIONS in /code/_globalvars/lists/flavor_misc.dm var/posdir = 0 var/negdir = 0 var/sortdir = 0 diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm index 7f7b3bfbb45..4e808c362df 100755 --- a/code/modules/recycling/sortingmachinery.dm +++ b/code/modules/recycling/sortingmachinery.dm @@ -35,6 +35,16 @@ sortTag = O.currTag playsound(loc, 'sound/machines/twobeep.ogg', 100, 1) + else if(istype(W, /obj/item/shippingPackage)) + var/obj/item/shippingPackage/sp = W + if(sp.sealed) + return + else + sortTag = sp.sortTag + to_chat(user, "You rip the label off the shipping package and affix it to [src].") + qdel(sp) + playsound(loc, 'sound/items/poster_ripped.ogg', 50, 1) + else if(istype(W, /obj/item/weapon/pen)) var/str = copytext(sanitize(input(user,"Label text?","Set label","")),1,MAX_NAME_LEN) if(!str || !length(str)) @@ -89,6 +99,16 @@ sortTag = O.currTag playsound(loc, 'sound/machines/twobeep.ogg', 100, 1) + else if(istype(W, /obj/item/shippingPackage)) + var/obj/item/shippingPackage/sp = W + if(sp.sealed) + return + else + sortTag = sp.sortTag + to_chat(user, "You rip the label off the shipping package and affix it to [src].") + qdel(sp) + playsound(loc, 'sound/items/poster_ripped.ogg', 50, 1) + else if(istype(W, /obj/item/weapon/pen)) var/str = copytext(sanitize(input(user,"Label text?","Set label","")),1,MAX_NAME_LEN) if(!str || !length(str)) @@ -134,7 +154,7 @@ - if(istype(target, /obj/item) && !(istype(target, /obj/item/weapon/storage) && !istype(target,/obj/item/weapon/storage/box))) + if(istype(target, /obj/item) && !(istype(target, /obj/item/weapon/storage) && !istype(target,/obj/item/weapon/storage/box) && !istype(target, /obj/item/shippingPackage))) var/obj/item/O = target if(use(1)) var/obj/item/smallDelivery/P = new /obj/item/smallDelivery(get_turf(O.loc)) //Aaannd wrap it up! @@ -235,101 +255,165 @@ var/c_mode = 0 - New() - ..() - spawn(5) - trunk = locate() in src.loc - if(trunk) - trunk.linked = src // link the pipe trunk to self +/obj/machinery/disposal/deliveryChute/New() + ..() + spawn(5) + trunk = locate() in src.loc + if(trunk) + trunk.linked = src // link the pipe trunk to self - interact() - return +/obj/machinery/disposal/deliveryChute/interact() + return - update() - return +/obj/machinery/disposal/deliveryChute/update() + return - Bumped(var/atom/movable/AM) //Go straight into the chute - if(istype(AM, /obj/item/projectile)) return - switch(dir) - if(NORTH) - if(AM.loc.y != src.loc.y+1) return - if(EAST) - if(AM.loc.x != src.loc.x+1) return - if(SOUTH) - if(AM.loc.y != src.loc.y-1) return - if(WEST) - if(AM.loc.x != src.loc.x-1) return +/obj/machinery/disposal/deliveryChute/Bumped(atom/movable/AM) //Go straight into the chute + if(istype(AM, /obj/item/projectile)) return + switch(dir) + if(NORTH) + if(AM.loc.y != src.loc.y+1) return + if(EAST) + if(AM.loc.x != src.loc.x+1) return + if(SOUTH) + if(AM.loc.y != src.loc.y-1) return + 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(istype(AM, /obj)) + var/obj/O = AM + O.loc = src + else if(istype(AM, /mob)) + var/mob/M = AM + M.loc = src + src.flush() - flush() - flushing = 1 - flick("intake-closing", src) - var/deliveryCheck = 0 - var/obj/structure/disposalholder/H = new() // virtual holder object which actually +/obj/machinery/disposal/deliveryChute/flush() + flushing = 1 + flick("intake-closing", src) + var/deliveryCheck = 0 + var/obj/structure/disposalholder/H = new() // virtual holder object which actually // travels through the pipes. - for(var/obj/structure/bigDelivery/O in src) - deliveryCheck = 1 - if(O.sortTag == 0) - O.sortTag = 1 - for(var/obj/item/smallDelivery/O in src) - deliveryCheck = 1 - if(O.sortTag == 0) - O.sortTag = 1 - if(deliveryCheck == 0) - H.destinationTag = 1 + for(var/obj/structure/bigDelivery/O in src) + deliveryCheck = 1 + if(O.sortTag == 0) + O.sortTag = 1 + for(var/obj/item/smallDelivery/O in src) + deliveryCheck = 1 + if(O.sortTag == 0) + O.sortTag = 1 + for(var/obj/item/shippingPackage/O in src) + deliveryCheck = 1 + if(!O.sealed || O.sortTag == 0) //unsealed or untagged shipping packages will default to disposals + O.sortTag = 1 + if(deliveryCheck == 0) + H.destinationTag = 1 - sleep(10) - playsound(src, 'sound/machines/disposalflush.ogg', 50, 0, 0) - sleep(5) // wait for animation to finish + 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 - air_contents = new() // The holder just took our gas; replace it - 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() + H.init(src) // copy the contents of disposer to holder + air_contents = new() // The holder just took our gas; replace it + 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 + +/obj/machinery/disposal/deliveryChute/attackby(obj/item/I, mob/user, params) + if(!I || !user) return - attackby(var/obj/item/I, var/mob/user, params) - if(!I || !user) + if(istype(I, /obj/item/weapon/screwdriver)) + if(c_mode==0) + c_mode=1 + playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) + to_chat(user, "You remove the screws around the power connection.") + return + else if(c_mode==1) + c_mode=0 + playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) + to_chat(user, "You attach the screws around the power connection.") + return + else if(istype(I,/obj/item/weapon/weldingtool) && c_mode==1) + var/obj/item/weapon/weldingtool/W = I + if(W.remove_fuel(0,user)) + playsound(src.loc, 'sound/items/Welder2.ogg', 100, 1) + to_chat(user, "You start slicing the floorweld off the delivery chute.") + if(do_after(user,20, target = src)) + if(!src || !W.isOn()) return + to_chat(user, "You sliced the floorweld off the delivery chute.") + var/obj/structure/disposalconstruct/C = new (src.loc) + C.ptype = 8 // 8 = Delivery chute + C.update() + C.anchored = 1 + C.density = 1 + qdel(src) + return + else + to_chat(user, "You need more welding fuel to complete this task.") return - if(istype(I, /obj/item/weapon/screwdriver)) - if(c_mode==0) - c_mode=1 - playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) - to_chat(user, "You remove the screws around the power connection.") - return - else if(c_mode==1) - c_mode=0 - playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) - to_chat(user, "You attach the screws around the power connection.") - return - else if(istype(I,/obj/item/weapon/weldingtool) && c_mode==1) - var/obj/item/weapon/weldingtool/W = I - if(W.remove_fuel(0,user)) - playsound(src.loc, 'sound/items/Welder2.ogg', 100, 1) - to_chat(user, "You start slicing the floorweld off the delivery chute.") - if(do_after(user,20, target = src)) - if(!src || !W.isOn()) return - to_chat(user, "You sliced the floorweld off the delivery chute.") - var/obj/structure/disposalconstruct/C = new (src.loc) - C.ptype = 8 // 8 = Delivery chute - C.update() - C.anchored = 1 - C.density = 1 - qdel(src) - return - else - to_chat(user, "You need more welding fuel to complete this task.") + +/obj/item/shippingPackage + name = "Shipping package" + desc = "A pre-labeled package for shipping an item to coworkers." + icon = 'icons/obj/storage.dmi' + icon_state = "idOld" + var/obj/item/wrapped = null + var/sortTag = 0 + var/sealed = 0 + var/original_name = "Shipping package" + +/obj/item/shippingPackage/attackby(obj/O, mob/user, params) + if(sealed) + if(istype(O, /obj/item/weapon/pen)) + var/str = copytext(sanitize(input(user,"Intended recipient?","Address","")),1,MAX_NAME_LEN) + if(!str || !length(str)) + to_chat(user, "Invalid text.") return + user.visible_message("[user] addresses [src] to [str].") + name = "[original_name] (RE: [str])" + return + if(wrapped) + to_chat(user, "[src] already contains \a [wrapped].") + return + if(istype(O, /obj/item) && !istype(O, /obj/item/weapon/storage) && !istype(O, /obj/item/shippingPackage)) + var/obj/item/I = O + if(I.w_class > 3) + to_chat(user, "[I] is too large to fit in [src].") + else + wrapped = I + user.unEquip(I) + I.forceMove(src) + I.add_fingerprint(usr) + add_fingerprint(usr) + to_chat(user, "You put [I] in [src].") + +/obj/item/shippingPackage/attack_self(mob/user) + if(sealed) + to_chat(user, "You tear open [src], dropping the contents onto the floor.") + playsound(loc, 'sound/items/poster_ripped.ogg', 50, 1) + user.unEquip(src) + wrapped.forceMove(get_turf(user)) + wrapped = null + qdel(src) + else if(wrapped) + switch(alert("Select an action:",, "Remove Object", "Seal Package", "Cancel")) + if("Remove Object") + to_chat(user, "You shake out [src]'s contents onto the floor.") + wrapped.forceMove(get_turf(user)) + wrapped = null + if("Seal Package") + to_chat(user, "You seal [src], preparing it for delivery.") + sealed = 1 + else + if(alert("Do you want to tear up the package?",, "Yes", "No") == "Yes") + to_chat(user, "You shred [src].") + playsound(loc, 'sound/items/poster_ripped.ogg', 50, 1) + user.unEquip(src) + qdel(src) diff --git a/nano/templates/request_console.tmpl b/nano/templates/request_console.tmpl index 1005f583ec8..eb4f71c6236 100644 --- a/nano/templates/request_console.tmpl +++ b/nano/templates/request_console.tmpl @@ -3,8 +3,8 @@ Title: Request Console Used In File(s): \code\game\machinery\requests_console.dm #define RCS_MAINMENU 0 // Main men -#define RCS_RQASSIST 1 // Request supplies -#define RCS_RQSUPPLY 2 // Request assistance +#define RCS_RQSUPPLY 1 // Request supplies +#define RCS_RQASSIST 2 // Request assistance #define RCS_SENDINFO 3 // Relay information #define RCS_SENTPASS 4 // Message sent successfully #define RCS_SENTFAIL 5 // Message sent unsuccessfully @@ -102,6 +102,33 @@ Used In File(s): \code\game\machinery\requests_console.dm {{:helper.link('Announce', 'signal', { 'sendAnnouncement' : 1 }, (data.announceAuth && data.message) ? null : 'disabled' )}} {{:helper.link('Back', 'arrow-left', { 'setScreen' : 0 })}} +{{else data.screen == 9}} +

Print a Shipping Label.

+
+
Destination: {{:data.shipDest}}
+
Validated by: {{:data.msgVerified}}
+
{{:helper.link('Print Label', null, { 'printLabel' : 1 })}}
+
+ + {{for data.ship_dept}} + + + + + {{empty}} + + {{/for}} +
{{:value}} -
{{:helper.link('Select', null, { 'shipSelect' : value })}}
There are no available shipping destinations.

+
{{:helper.link('Back', 'arrow-left', { 'setScreen' : 0 })}}
+{{else data.screen == 10}} +
+ {{for data.shipping_log}} +
{{:value}}
+ {{empty}} +
No shipping labels have been printed.
+ {{/for}} +
+
{{:helper.link('Back', 'arrow-left', { 'setScreen' : 0 })}}
{{else}} {{if data.newmessagepriority == 1}}
There are new messages
@@ -114,6 +141,9 @@ Used In File(s): \code\game\machinery\requests_console.dm
{{:helper.link('Request Supplies', 'gear', { 'setScreen' : 2 })}}
{{:helper.link('Relay Anonymous Information', 'gear', { 'setScreen' : 3})}}

+
{{:helper.link('Print Shipping Label', 'gear', { 'setScreen' : 9})}}
+
{{:helper.link('View Shipping Logs', 'gear', { 'setScreen' : 10})}}
+
{{if data.announcementConsole}}
{{:helper.link('Send Station-wide Announcement', 'signal', { 'setScreen' : 8})}}

From 4e1e3a61078c7d83a83fe045875b486402e736d3 Mon Sep 17 00:00:00 2001 From: FalseIncarnate Date: Mon, 16 Jan 2017 01:18:06 -0500 Subject: [PATCH 2/3] Shipping Package tweaks Shipping packages now have sealed and unsealed icons - These are just minor edits of the idOld icon_state the shipping package previously used. Shipping packages now have their own proc to handle adjusting their description, rather than being done manually by the request console that creates them. - The description also reflects if the package is unsealed (just in case the icon didn't give it away Empty unsealed shipping packages can be destroyed by activating them in-hand. - There is a confirmation to prevent accidental shredding of shipping packages. --- code/game/machinery/requests_console.dm | 2 +- code/modules/recycling/sortingmachinery.dm | 14 +++++++++++--- icons/obj/storage.dmi | Bin 83417 -> 83853 bytes 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/code/game/machinery/requests_console.dm b/code/game/machinery/requests_console.dm index 5645ac54c3c..936b18f35c5 100644 --- a/code/game/machinery/requests_console.dm +++ b/code/game/machinery/requests_console.dm @@ -325,5 +325,5 @@ var/list/obj/machinery/requests_console/allConsoles = list() /obj/machinery/requests_console/proc/print_label(tag_name, tag_index) var/obj/item/shippingPackage/sp = new /obj/item/shippingPackage(get_turf(src)) sp.sortTag = tag_index - sp.desc += " The label says \"Deliver to [tag_name]\"." + sp.update_desc() print_cooldown = world.time + 600 //1 minute cooldown before you can print another label, but you can still configure the next one during this time diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm index 4e808c362df..4468cc6ebee 100755 --- a/code/modules/recycling/sortingmachinery.dm +++ b/code/modules/recycling/sortingmachinery.dm @@ -363,11 +363,10 @@ name = "Shipping package" desc = "A pre-labeled package for shipping an item to coworkers." icon = 'icons/obj/storage.dmi' - icon_state = "idOld" + icon_state = "shippack" var/obj/item/wrapped = null var/sortTag = 0 var/sealed = 0 - var/original_name = "Shipping package" /obj/item/shippingPackage/attackby(obj/O, mob/user, params) if(sealed) @@ -377,7 +376,7 @@ to_chat(user, "Invalid text.") return user.visible_message("[user] addresses [src] to [str].") - name = "[original_name] (RE: [str])" + name = "Shipping package (RE: [str])" return if(wrapped) to_chat(user, "[src] already contains \a [wrapped].") @@ -410,10 +409,19 @@ wrapped = null if("Seal Package") to_chat(user, "You seal [src], preparing it for delivery.") + icon_state = "shippack_sealed" sealed = 1 + update_desc() else if(alert("Do you want to tear up the package?",, "Yes", "No") == "Yes") to_chat(user, "You shred [src].") playsound(loc, 'sound/items/poster_ripped.ogg', 50, 1) user.unEquip(src) qdel(src) + +/obj/item/shippingPackage/proc/update_desc() + desc = "A pre-labeled package for shipping an item to coworkers." + if(sortTag) + desc += " The label says \"Deliver to [TAGGERLOCATIONS[sortTag]]\"." + if(!sealed) + desc += " The package is not sealed." \ No newline at end of file diff --git a/icons/obj/storage.dmi b/icons/obj/storage.dmi index bd09b38dcd4a58f9f4e30f3e33219ff72172e6bd..76286c26373ea435ee0ed97040a4e8de115f626c 100644 GIT binary patch delta 24675 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 G@_zv0QG>bw From 5dcb868cec575e12ebdfc2da610ff1ba5f77c85a Mon Sep 17 00:00:00 2001 From: FalseIncarnate Date: Thu, 19 Jan 2017 03:52:11 -0500 Subject: [PATCH 3/3] NODROP and Destroy() considerations --- code/modules/recycling/sortingmachinery.dm | 28 ++++++++++++++-------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm index 4468cc6ebee..403d2c70aaf 100755 --- a/code/modules/recycling/sortingmachinery.dm +++ b/code/modules/recycling/sortingmachinery.dm @@ -368,7 +368,7 @@ var/sortTag = 0 var/sealed = 0 -/obj/item/shippingPackage/attackby(obj/O, mob/user, params) +/obj/item/shippingPackage/attackby(obj/item/O, mob/user, params) if(sealed) if(istype(O, /obj/item/weapon/pen)) var/str = copytext(sanitize(input(user,"Intended recipient?","Address","")),1,MAX_NAME_LEN) @@ -382,16 +382,18 @@ to_chat(user, "[src] already contains \a [wrapped].") return if(istype(O, /obj/item) && !istype(O, /obj/item/weapon/storage) && !istype(O, /obj/item/shippingPackage)) - var/obj/item/I = O - if(I.w_class > 3) - to_chat(user, "[I] is too large to fit in [src].") + if(!user.canUnEquip(O)) + to_chat(user, "[O] is stuck to your hand, you cannot put it in [src]!") + return + if(O.w_class > 3) + to_chat(user, "[O] is too large to fit in [src].") else - wrapped = I - user.unEquip(I) - I.forceMove(src) - I.add_fingerprint(usr) + wrapped = O + user.unEquip(O) + O.forceMove(src) + O.add_fingerprint(usr) add_fingerprint(usr) - to_chat(user, "You put [I] in [src].") + to_chat(user, "You put [O] in [src].") /obj/item/shippingPackage/attack_self(mob/user) if(sealed) @@ -424,4 +426,10 @@ if(sortTag) desc += " The label says \"Deliver to [TAGGERLOCATIONS[sortTag]]\"." if(!sealed) - desc += " The package is not sealed." \ No newline at end of file + desc += " The package is not sealed." + +/obj/item/shippingPackage/Destroy() + if(wrapped) + qdel(wrapped) + wrapped = null + return ..() \ No newline at end of file