anchor.diff:  	else
   		object.forceMove(drop_location())
   
  -/obj/machinery/proc/can_be_occupant(atom/movable/am)
  -	return occupant_typecache ? is_type_in_typecache(am, occupant_typecache) : isliving(am)
  +/obj/machinery/proc/can_be_occupant(atom/movable/occupant_atom)
  +	return occupant_typecache ? is_type_in_typecache(occupant_atom, occupant_typecache) : isliving(occupant_atom)
   
   /obj/machinery/proc/close_machine(atom/movable/target = null)
   	state_open = FALSE
   	set_density(TRUE)
   	if(!target)
  -		for(var/am in loc)
  -			if (!(can_be_occupant(am)))
  +		for(var/atom in loc)
  +			if (!(can_be_occupant(atom)))
   				continue
  -			var/atom/movable/AM = am
  -			if(AM.has_buckled_mobs())
  +			var/atom/movable/current_atom = atom
  +			if(current_atom.has_buckled_mobs())
   				continue
  -			if(isliving(AM))
  -				var/mob/living/L = am
  -				if(L.buckled || L.mob_size >= MOB_SIZE_LARGE)
  +			if(isliving(current_atom))
  +				var/mob/living/current_mob = atom
  +				if(current_mob.buckled || current_mob.mob_size >= MOB_SIZE_LARGE)
   					continue
  -			target = am
  +			target = atom
   
   	var/mob/living/mobtarget = target
   	if(target && !target.has_buckled_mobs() && (!isliving(target) || !mobtarget.buckled))
  
positive.code: 		if(EXPLODE_LIGHT)
  			SSexplosions.low_mov_atom += occupant
  
  /obj/machinery/handle_atom_del(atom/A)
  	if(A == occupant)
  		set_occupant(null)
  		update_appearance()
  		updateUsrDialog()
  		return ..()
  
  	// The circuit should also be in component parts, so don't early return.
  	if(A == circuit)
  		circuit = null
  	if((A in component_parts) && !QDELETED(src))
  		component_parts.Remove(A)
  		// It would be unusual for a component_part to be qdel'd ordinarily.
  		deconstruct(FALSE)
  	return ..()
  
  /obj/machinery/proc/default_deconstruction_screwdriver(mob/user, icon_state_open, icon_state_closed, obj/item/I)
  	if(!(flags_1 & NODECONSTRUCT_1) && I.tool_behaviour == TOOL_SCREWDRIVER)
  		I.play_tool_sound(src, 50)
  		if(!panel_open)
  			panel_open = TRUE
  			icon_state = icon_state_open
  			to_chat(user, span_notice("You open the maintenance hatch of [src]."))
  		else
  			panel_open = FALSE
  			icon_state = icon_state_closed
  			to_chat(user, span_notice("You close the maintenance hatch of [src]."))
  		return TRUE
  	return FALSE
  
  /obj/machinery/proc/default_change_direction_wrench(mob/user, obj/item/I)
  	if(panel_open && I.tool_behaviour == TOOL_WRENCH)
  		I.play_tool_sound(src, 50)
  		setDir(turn(dir,-90))
  		to_chat(user, span_notice("You rotate [src]."))
  		return TRUE
  	return FALSE
  
  /obj/proc/can_be_unfasten_wrench(mob/user, silent) //if we can unwrench this object; returns SUCCESSFUL_UNFASTEN and FAILED_UNFASTEN, which are both TRUE, or CANT_UNFASTEN, which isn't.
  	if(!(isfloorturf(loc) || istype(loc, /turf/open/indestructible)) && !anchored)
  
negative.code: 		LAZYREMOVE(component_parts, gone)
  		circuit = null
  
  /obj/machinery/proc/adjust_item_drop_location(atom/movable/dropped_atom) // Adjust item drop location to a 3x3 grid inside the tile, returns slot id from 0 to 8
  	var/md5 = md5(dropped_atom.name) // Oh, and it's deterministic too. A specific item will always drop from the same slot.
  	for (var/i in 1 to 32)
  		. += hex2num(md5[i])
  	. = . % 9
  	dropped_atom.pixel_x = -8 + ((.%3)*8)
  	dropped_atom.pixel_y = -8 + (round( . / 3)*8)
  
  /obj/machinery/rust_heretic_act()
  	take_damage(500, BRUTE, MELEE, 1)
  