anchor.diff:  	else	//wtf make your ladders properly assholes
   		icon_state = "ladder00"
   
  -/obj/structure/ladder/proc/go_up(mob/user,is_ghost)
  +/obj/structure/ladder/proc/travel(going_up, mob/user, is_ghost, obj/structure/ladder/ladder)
   	if(!is_ghost)
  -		show_fluff_message(1,user)
  -		up.add_fingerprint(user)
  -	user.loc = get_turf(up)
  +		show_fluff_message(going_up,user)
  +		ladder.add_fingerprint(user)
   
  -/obj/structure/ladder/proc/go_down(mob/user,is_ghost)
  -	if(!is_ghost)
  -		show_fluff_message(0,user)
  -		down.add_fingerprint(user)
  -	user.loc = get_turf(down)
  +	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")
  -				go_up(user,is_ghost)
  +				travel(TRUE, user, is_ghost, up)
   			if("Down")
  -				go_down(user,is_ghost)
  +				travel(FALSE, user, is_ghost, down)
   			if("Cancel")
   				return
   	else if(up)
  -		go_up(user,is_ghost)
  +		travel(TRUE, user, is_ghost, up)
   	else if(down)
  -		go_down(user,is_ghost)
  +		travel(FALSE, user,is_ghost, down)
   	else
   		to_chat(user, "<span class='warning'>[src] doesn't seem to lead anywhere!</span>")
   
  
positive.code: 		. = ..()
  	else
  		return QDEL_HINT_LETMELIVE
  
negative.code: 	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"
  