anchor.diff:  		target.loc = src
   		if(user == target)
   			user.visible_message("[user] dives into [src].", \
  -									"<span class='notice'>You dive into [src].</span>")
  +				"<span class='notice'>You dive into [src].</span>")
   		else
   			target.visible_message("<span class='danger'>[user] has pushed [target] in [src].</span>", \
  -									"<span class='userdanger'>[user] has pushedd [target] in [src].</span>")
  +				"<span class='userdanger'>[user] has pushedd [target] in [src].</span>")
   			add_logs(user, target, "pushed", addition="into [src]")
   		update()
   		sleep(5)
   		trap_flush()
   
   /obj/machinery/disposal/trapdoor/proc/trap_flush()
  -	flushing = 1
  -	flushAnimation()
  -	sleep(10)
  +	if(flushing)
  +		return
  +
  +	flushing = TRUE
   	if(last_sound < world.time + 1)
   		playsound(src, 'sound/machines/disposalflush.ogg', 50, 0, 0)
   		last_sound = world.time
  
positive.code: 	spawn(5)
  		trunk = locate() in loc
  		if(trunk)
  			trunk.linked = src	// link the pipe trunk to self
  
  /obj/machinery/disposal/trapdoor/Crossed(AM as mob|obj)
  	if(trap_closed == 0)
  		if(istype(AM, /mob))
  			var/mob/M = AM
  			M.loc = src
  			trap_flush()
  			return
  		if(istype(AM, /obj))
  			var/obj/O = AM
  			sleep (5)
  			if(O.loc == src.loc)
  				O.loc = src
  				return 1
  
  /obj/machinery/disposal/trapdoor/MouseDrop_T(mob/living/target, mob/living/user)
  	if(istype(target) && user == target)
  		if (trap_closed == 0)
  			push_mob_in(target, user)
  			return 1
  
  /obj/machinery/disposal/trapdoor/proc/push_mob_in(mob/living/target, mob/living/user)
  	if(target.buckled)
  		return
  	if(target.mob_size > MOB_SIZE_HUMAN)
  		user << "<span class='warning'>[target] doesn't fit inside [src]!</span>"
  		return
  	add_fingerprint(user)
  	if(user == target)
  		user.visible_message("[user] is attempting to dive into [src].", \
  								"<span class='notice'>You start diving into [src]...</span>")
  	else
  		target.visible_message("<span class='danger'>[user] starts pushing [target] into [src].</span>", \
  								"<span class='userdanger'>[user] starts pushing you into [src]!</span>")
  	if(do_mob(user, target, 10))
  		if (!loc)
  			return
  
negative.code: 	density = 0
  	icon = 'icons/obj/atmospherics/pipes/trapdoor.dmi'
  	icon_state = "closed"
  	mode = 0 // the trapdoor doesn't need charging and always works
  	layer = 2.01
  	var/id = 1
  	var/auto_close = 1200
  	var/sound_open = 'sound/machines/blast_door.ogg'
  	var/sound_close = 'sound/machines/blast_door.ogg'
  	var/open = FALSE
  	var/trap_door_state = 0
  
  /obj/machinery/disposal/trapdoor/proc/open()
  	if(flushing)
  		return
  	if(open)
  		return
  	flick("opening", src)
  	icon_state = "open"
  	playsound(src.loc, sound_open, 100, 1)
  	open = TRUE
  	return 1
  
  
  /obj/machinery/disposal/trapdoor/proc/close()
  	if(open)
  		flick("closing", src)
  		icon_state = "closed"
  		playsound(src.loc, sound_open, 100, 1)
  		open = FALSE
  		return 1
  
  /obj/machinery/disposal/trapdoor/New(loc,var/obj/structure/disposalconstruct/make_from)
  	..()
  