anchor.diff:  
   /obj/structure/inflatable/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
   	return 0
  -		
  +
   /obj/structure/inflatable/CanAtmosPass(turf/T)
   	return !density
   
  
positive.code: 		visible_message("[src] rapidly deflates!")
  		var/obj/item/inflatable/door/torn/R = new /obj/item/inflatable/door/torn(loc)
  		src.transfer_fingerprints_to(R)
  	else
  		visible_message("[src] slowly deflates.")
  		spawn(50)
  			var/obj/item/inflatable/door/R = new /obj/item/inflatable/door(loc)
  			src.transfer_fingerprints_to(R)
  	
  	air_update_turf(1)
  	qdel(src)
  
  /obj/item/inflatable/torn
  	name = "torn inflatable wall"
  
negative.code: 	if(istype(mover, /obj/effect/beam))
  		return !opacity
  	return !density
  
  /obj/structure/inflatable/door/CanAtmosPass(turf/T)
  	return !density
  
  /obj/structure/inflatable/door/proc/TryToSwitchState(atom/user)
  	if(isSwitchingStates)
  		return
  	if(ismob(user))
  		var/mob/M = user
  		if(world.time - user.last_bumped <= 60)
  			return //NOTE do we really need that?
  		if(M.client)
  			if(iscarbon(M))
  