anchor.diff:  	var/height = 0							//the 'height' of the ladder. higher numbers are considered physically higher
   	var/obj/structure/ladder/down = null	//the ladder below this one
   	var/obj/structure/ladder/up = null		//the ladder above this one
  +	var/auto_connect = FALSE
   
   /obj/structure/ladder/unbreakable //mostly useful for awaymissions to prevent halting progress in a mission
   	name = "sturdy ladder"
  
positive.code: 	return INITIALIZE_HINT_LATELOAD
  
  /obj/structure/ladder/Destroy()
  	GLOB.ladders -= src
  	. = ..()
  
  /obj/structure/ladder/LateInitialize()
  	for(var/obj/structure/ladder/L in GLOB.ladders)
  		if(L.id == id)
  			if(L.height == (height - 1))
  				down = L
  				continue
  
negative.code: 	else	//wtf make your ladders properly assholes
  		icon_state = "ladder00"
  
  /obj/structure/ladder/proc/travel(going_up, mob/user, is_ghost, obj/structure/ladder/ladder)
  	if(!is_ghost)
  		show_fluff_message(going_up,user)
  		ladder.add_fingerprint(user)
  
  	var/atom/movable/AM
  	if(user.pulling)
  		AM = user.pulling
  		user.pulling.forceMove(get_turf(ladder))
  	user.forceMove(get_turf(ladder))
  	if(AM)
  		user.start_pulling(AM)
  
  
  /obj/structure/ladder/proc/use(mob/user,is_ghost=0)
  	if(up && down)
  		switch( alert("Go up or down the ladder?", "Ladder", "Up", "Down", "Cancel") )
  			if("Up")
  				travel(TRUE, user, is_ghost, up)
  			if("Down")
  				travel(FALSE, user, is_ghost, down)
  			if("Cancel")
  				return
  	else if(up)
  		travel(TRUE, user, is_ghost, up)
  	else if(down)
  		travel(FALSE, user,is_ghost, down)
  	else
  		to_chat(user, "<span class='warning'>[src] doesn't seem to lead anywhere!</span>")
  
  