anchor.diff:  
   /obj/machinery/gibber/update_icon()
   	overlays.Cut()
  +
   	if (dirty)
   		src.overlays += image('icons/obj/kitchen.dmi', "grbloody")
  +
   	if(stat & (NOPOWER|BROKEN))
   		return
  +
   	if (!occupant)
   		src.overlays += image('icons/obj/kitchen.dmi', "grjam")
  +
   	else if (operating)
   		src.overlays += image('icons/obj/kitchen.dmi', "gruse")
  +
   	else
   		src.overlays += image('icons/obj/kitchen.dmi', "gridle")
   
  
positive.code: 
  	src.occupant.emote("scream")
  	playsound(src.loc, 'sound/effects/gib.ogg', 50, 1)
  	src.occupant.death(1)
  	src.occupant.ghostize()
  	del(src.occupant)
  	spawn(src.gibtime)
  		playsound(src.loc, 'sound/effects/splat.ogg', 50, 1)
  		operating = 0
  		for (var/i=1 to totalslabs)
  			var/obj/item/meatslab = allmeat[i]
  			var/turf/Tx = locate(src.x - i, src.y, src.z)
  			meatslab.loc = src.loc
  			meatslab.throw_at(Tx,i,3,src)
  			if (!Tx.density)
  				new /obj/effect/decal/cleanable/blood/gibs(Tx,i)
  		src.operating = 0
  		update_icon()
  
  
negative.code: /obj/machinery/gibber/relaymove(mob/user as mob)
  	if(locked)
  		return
  
  	src.go_out()
  
  	return
  
  /obj/machinery/gibber/attack_hand(mob/user as mob)
  	if(stat & (NOPOWER|BROKEN))
  		return
  
  	if(operating)
  		user << "<span class='danger'>The gibber is locked and running, wait for it to finish.</span>"
  		return
  
  	if(locked)
  		user << "<span class='warning'>Wait for [occupant.name] to finish being loaded!</span>"
  		return
  
  	else
  		src.startgibbing(user)
  
  /obj/machinery/gibber/attackby(obj/item/weapon/grab/G as obj, mob/user as mob, params)
  	if(!istype(G))
  		return ..()
  
  	if(G.state < 2)
  		user << "<span class='danger'>You need a better grip to do that!</span>"
  		return
  
  	move_into_gibber(user,G.affecting)
  
  	del(G)
  
  /obj/machinery/gibber/MouseDrop_T(mob/target, mob/user)
  	if(usr.stat || (!ishuman(user)) || user.restrained() || user.weakened || user.stunned || user.paralysis || user.resting)
  		return
  
  	if(!istype(target,/mob/living))
  		return
  
  	var/mob/living/targetl = target
  
  	if(targetl.buckled)
  		return
  
  	move_into_gibber(user,target)
  
  /obj/machinery/gibber/proc/move_into_gibber(var/mob/user,var/mob/living/victim)
  	if(src.occupant)
  		user << "<span class='danger'>The gibber is full, empty it first!</span>"
  		return
  
  	if(operating)
  		user << "<span class='danger'>The gibber is locked and running, wait for it to finish.</span>"
  		return
  
  	if(!(istype(victim, /mob/living/carbon/human)))
  		user << "<span class='danger'>This is not suitable for the gibber!</span>"
  		return
  
  	if(victim.abiotic(1))
  		user << "<span class='danger'>Subject may not have abiotic items on.</span>"
  		return
  
  	user.visible_message("\red [user] starts to put [victim] into the gibber!")
  	src.add_fingerprint(user)
  	if(do_after(user, 30) && user.Adjacent(src) && victim.Adjacent(user) && !occupant)
  
  		user.visible_message("\red [user] stuffs [victim] into the gibber!")
  
  		if(victim.client)
  			victim.client.perspective = EYE_PERSPECTIVE
  			victim.client.eye = src
  
  		victim.loc = src
  		src.occupant = victim
  
  		update_icon()
  		feedinTopanim()
  
  