anchor.diff:  		LAZYREMOVE(component_parts, gone)
   		circuit = null
   
  -/obj/machinery/proc/adjust_item_drop_location(atom/movable/AM) // Adjust item drop location to a 3x3 grid inside the tile, returns slot id from 0 to 8
  -	var/md5 = md5(AM.name) // Oh, and it's deterministic too. A specific item will always drop from the same slot.
  +/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
  -	AM.pixel_x = -8 + ((.%3)*8)
  -	AM.pixel_y = -8 + (round( . / 3)*8)
  +	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)
  
positive.code: 		return
  	if(arm.bodypart_disabled)
  		return
  	var/damage = damage_deflection / 10
  	arm.receive_damage(brute=damage, wound_bonus = CANT_WOUND)
  
  /obj/machinery/attack_robot(mob/user)
  	if(!(interaction_flags_machine & INTERACT_MACHINE_ALLOW_SILICON) && !isAdminGhostAI(user))
  		return FALSE
  	if(Adjacent(user) && can_buckle && has_buckled_mobs()) //so that borgs (but not AIs, sadly (perhaps in a future PR?)) can unbuckle people from machines
  		if(buckled_mobs.len > 1)
  			var/unbuckled = input(user, "Who do you wish to unbuckle?","Unbuckle Who?") as null|mob in sortNames(buckled_mobs)
  			if(user_unbuckle_mob(unbuckled,user))
  				return TRUE
  		else
  			if(user_unbuckle_mob(buckled_mobs[1],user))
  				return TRUE
  	return _try_interact(user)
  
  /obj/machinery/attack_ai(mob/user)
  	if(!(interaction_flags_machine & INTERACT_MACHINE_ALLOW_SILICON) && !isAdminGhostAI(user))
  		return FALSE
  	if(iscyborg(user))// For some reason attack_robot doesn't work
  		return attack_robot(user)
  	else
  		return _try_interact(user)
  
  /obj/machinery/attackby(obj/item/weapon, mob/user, params)
  	. = ..()
  
negative.code: 
  ///Called when the value of `machine_stat` changes, so we can react to it.
  /obj/machinery/proc/on_set_machine_stat(old_value)
  	//From off to on.
  	if((old_value & (NOPOWER|BROKEN|MAINT)) && !(machine_stat & (NOPOWER|BROKEN|MAINT)))
  		set_is_operational(TRUE)
  		return
  	//From on to off.
  	if(machine_stat & (NOPOWER|BROKEN|MAINT))
  		set_is_operational(FALSE)
  
  
  