diff --git a/code/modules/food_and_drinks/kitchen_machinery/gibber.dm b/code/modules/food_and_drinks/kitchen_machinery/gibber.dm
index b8850429bf9..f098f5ac594 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/gibber.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/gibber.dm
@@ -25,7 +25,7 @@
/obj/machinery/gibber/Initialize(mapload)
. = ..()
- add_overlay("grjam")
+ add_overlay("grinder_jam")
component_parts = list()
component_parts += new /obj/item/circuitboard/gibber(null)
component_parts += new /obj/item/stock_parts/matter_bin(null)
@@ -45,23 +45,29 @@
user.Stun(20 SECONDS)
user.forceMove(src)
occupant = user
- update_icon(UPDATE_OVERLAYS)
+ update_icon(UPDATE_OVERLAYS | UPDATE_ICON_STATE)
feedinTopanim()
addtimer(CALLBACK(src, PROC_REF(startgibbing), user), 33)
return OBLITERATION
+/obj/machinery/gibber/update_icon_state()
+ if(operating && !(stat & (NOPOWER|BROKEN)))
+ icon_state = "grinder_on"
+ return
+ icon_state = initial(icon_state)
+
/obj/machinery/gibber/update_overlays()
. = ..()
if(dirty)
- . += "grbloody"
+ . += "grinder_bloody"
if(stat & (NOPOWER|BROKEN))
return
if(!occupant)
- . += "grjam"
+ . += "grinder_jam"
else if(operating)
- . += "gruse"
+ . += "grinder_use"
else
- . += "gridle"
+ . += "grinder_idle"
/obj/machinery/gibber/relaymove(mob/user)
if(locked)
@@ -145,7 +151,7 @@
victim.forceMove(src)
occupant = victim
- update_icon(UPDATE_OVERLAYS)
+ update_icon(UPDATE_OVERLAYS | UPDATE_ICON_STATE)
INVOKE_ASYNC(src, PROC_REF(feedinTopanim))
/obj/machinery/gibber/verb/eject()
@@ -172,7 +178,7 @@
occupant.forceMove(get_turf(src))
occupant = null
- update_icon(UPDATE_OVERLAYS)
+ update_icon(UPDATE_OVERLAYS | UPDATE_ICON_STATE)
return
@@ -184,8 +190,9 @@
var/image/gibberoverlay = new //used to simulate 3D effects
gibberoverlay.icon = icon
- gibberoverlay.icon_state = "grinderoverlay"
- gibberoverlay.overlays += image('icons/obj/kitchen.dmi', "gridle")
+ gibberoverlay.icon_state = "grinder_overlay"
+ gibberoverlay.overlays += image('icons/obj/kitchen.dmi', "grinder_idle")
+ icon_state = "grinder_on"
var/image/feedee = new
occupant.dir = 2
@@ -195,7 +202,6 @@
holder.name = null //make unclickable
holder.overlays += feedee //add occupant to holder overlays
holder.pixel_y = 25 //above the gibber
- holder.pixel_x = 2
holder.loc = get_turf(src)
holder.layer = MOB_LAYER //simulate mob-like layering
holder.anchored = TRUE
@@ -221,6 +227,7 @@
qdel(holder) //get rid of holder object
qdel(holder2) //get rid of holder object
locked = FALSE //unlock
+ dirty = TRUE //dirty gibber
/obj/machinery/gibber/proc/startgibbing(mob/user, UserOverride=0)
if(!istype(user) && !UserOverride)
@@ -242,7 +249,7 @@
visible_message("You hear a loud squelchy grinding sound.")
operating = TRUE
- update_icon(UPDATE_OVERLAYS)
+ update_icon(UPDATE_OVERLAYS | UPDATE_ICON_STATE)
var/offset = prob(50) ? -2 : 2
animate(src, pixel_x = pixel_x + offset, time = 0.2, loop = gibtime * 5) //start shaking
@@ -304,7 +311,7 @@
pixel_x = initial(pixel_x) //return to it's spot after shaking
operating = FALSE
- update_icon(UPDATE_OVERLAYS)
+ update_icon(UPDATE_OVERLAYS | UPDATE_ICON_STATE)
@@ -334,7 +341,7 @@
RefreshParts()
/obj/machinery/gibber/autogibber/process()
- if(!lturf || occupant || locked || dirty || operating || victim_targets.len)
+ if(!lturf || occupant || locked || operating || victim_targets.len)
return
if(acceptdir != lastacceptdir)
@@ -368,7 +375,7 @@
victim.forceMove(src)
occupant = victim
- update_icon(UPDATE_OVERLAYS)
+ update_icon(UPDATE_OVERLAYS | UPDATE_ICON_STATE)
feedinTopanim()
return 1
diff --git a/code/modules/food_and_drinks/kitchen_machinery/processor.dm b/code/modules/food_and_drinks/kitchen_machinery/processor.dm
index b71bdd1bb20..443bf394238 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/processor.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/processor.dm
@@ -20,6 +20,13 @@
component_parts += new /obj/item/stock_parts/manipulator(null)
RefreshParts()
+/obj/machinery/processor/update_icon_state()
+ . = ..()
+ if(processing)
+ icon_state = "processor_on"
+ return
+ icon_state = initial(icon_state)
+
/obj/machinery/processor/RefreshParts()
for(var/obj/item/stock_parts/matter_bin/B in component_parts)
rating_amount = B.rating
@@ -207,6 +214,7 @@
to_chat(user, "\the [src] is empty.")
return 1
processing = TRUE
+ update_icon(UPDATE_ICON_STATE)
user.visible_message("[user] turns on [src].", \
"You turn on [src].", \
"You hear a food processor.")
@@ -228,6 +236,7 @@
continue
P.process_food(loc, O, src)
processing = FALSE
+ update_icon(UPDATE_ICON_STATE)
visible_message("\the [src] has finished processing.", \
"\the [src] has finished processing.", \
diff --git a/icons/obj/kitchen.dmi b/icons/obj/kitchen.dmi
index b8424e583f5..b1f00a1f2de 100644
Binary files a/icons/obj/kitchen.dmi and b/icons/obj/kitchen.dmi differ