diff --git a/code/game/objects/items/clothing.dm b/code/game/objects/items/clothing.dm index 770badebf2d..9b8f13db341 100644 --- a/code/game/objects/items/clothing.dm +++ b/code/game/objects/items/clothing.dm @@ -254,21 +254,22 @@ THERMAL GLASSES /obj/item/clothing/head/helmet/welding/verb/toggle() set category = "Object" set name = "Adjust welding mask" - if(src.up) - src.up = !src.up - src.see_face = !src.see_face - src.flags |= HEADCOVERSEYES - flags_inv |= HIDEMASK|HIDEEARS|HIDEEYES - icon_state = "welding" - usr << "You flip the mask down to protect your eyes." - else - src.up = !src.up - src.see_face = !src.see_face - src.flags &= ~HEADCOVERSEYES - flags_inv &= ~(HIDEMASK|HIDEEARS|HIDEEYES) - icon_state = "weldingup" - usr << "You push the mask up out of your face." - usr.update_clothing() + if(usr.canmove && usr.stat != 2 && !usr.restrained()) + if(src.up) + src.up = !src.up + src.see_face = !src.see_face + src.flags |= HEADCOVERSEYES + flags_inv |= HIDEMASK|HIDEEARS|HIDEEYES + icon_state = "welding" + usr << "You flip the mask down to protect your eyes." + else + src.up = !src.up + src.see_face = !src.see_face + src.flags &= ~HEADCOVERSEYES + flags_inv &= ~(HIDEMASK|HIDEEARS|HIDEEYES) + icon_state = "weldingup" + usr << "You push the mask up out of your face." + usr.update_clothing() /obj/item/clothing/head/cargosoft/dropped() src.icon_state = "cargosoft" diff --git a/code/game/turf.dm b/code/game/turf.dm index 19307955699..22fa7297a8b 100644 --- a/code/game/turf.dm +++ b/code/game/turf.dm @@ -307,7 +307,6 @@ if(!devastated) playsound(src.loc, 'Welder.ogg', 100, 1) new /obj/effect/decal/cleanable/blood(src) - new /obj/structure/cultgirder(src) else new /obj/effect/decal/cleanable/blood(src) new /obj/effect/decal/remains/human(src) diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index 15135220b22..c5d5e718090 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -595,6 +595,7 @@ var/count = 1000 //*** can travel 1000 steps before going to the mail room (in case of loops) var/destinationTag = null // changes if contains a delivery container var/tomail = 0 //changes if contains wrapped package + var/hasmob = 0 //If it contains a mob // initialize a holder from the contents of a disposal unit @@ -602,6 +603,20 @@ if(!istype(D, /obj/machinery/disposal/toilet))//So it does not drain gas from a toilet which does not function on it. gas = D.air_contents// transfer gas resv. into holder object + //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) + 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) + 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) @@ -611,10 +626,10 @@ if(H.mutations & FAT) // is a human and fat? has_fat_guy = 1 // set flag on holder */ - if(istype(AM, /obj/structure/bigDelivery)) + if(istype(AM, /obj/structure/bigDelivery) && !hasmob) var/obj/structure/bigDelivery/T = AM src.destinationTag = T.sortTag - else if(istype(AM, /obj/item/smallDelivery)) + if(istype(AM, /obj/item/smallDelivery) && !hasmob) var/obj/item/smallDelivery/T = AM src.destinationTag = T.sortTag else if (!src.destinationTag)