TG: Disposal and welding helmet exploit fixes:

- You can no longer toggle the welding helmet when stunned or restrained.

- You can no longer give yourself all-access via-disposals. Living mobs and
living mobs inside of a container cancel their holder's destination. This still
allows people wrapped in lockers to be sent to their proper destination, however
it would require someone on the other end to open it. So it's their fault for
not dragging it out before opening it.
Revision: r3400
Author: 	 johnsonmt88
This commit is contained in:
Ren Erthilo
2012-05-01 20:13:51 +01:00
parent 3c76551253
commit d6d3d60e0d
3 changed files with 33 additions and 18 deletions
+17 -2
View File
@@ -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)