diff --git a/code/modules/food_and_drinks/food/snacks.dm b/code/modules/food_and_drinks/food/snacks.dm
index 8476795a1a..5aaa382ece 100644
--- a/code/modules/food_and_drinks/food/snacks.dm
+++ b/code/modules/food_and_drinks/food/snacks.dm
@@ -285,7 +285,7 @@ All foods are distributed among various categories. Use common sense.
reagents.trans_to(S, reagents.total_volume)
if(cooking_efficiency && length(S.bonus_reagents))
for(var/r_id in S.bonus_reagents)
- var/amount = S.bonus_reagents[r_id] * cooking_efficiency
+ var/amount = round(S.bonus_reagents[r_id] * cooking_efficiency)
if(r_id == /datum/reagent/consumable/nutriment || r_id == /datum/reagent/consumable/nutriment/vitamin)
S.reagents.add_reagent(r_id, amount, tastes)
else
diff --git a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm
index a8bb6dc187..3e0c9cb4b5 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm
@@ -19,6 +19,7 @@
var/broken = 0 // 0, 1 or 2 // How broken is it???
var/max_n_of_items = 10
var/efficiency = 0
+ var/productivity = 0
var/datum/looping_sound/microwave/soundloop
var/list/ingredients = list() // may only contain /atom/movables
@@ -43,12 +44,14 @@
. = ..()
/obj/machinery/microwave/RefreshParts()
- efficiency = 0
+ efficiency = 0.6
+ productivity = 0
+ max_n_of_items = 5
for(var/obj/item/stock_parts/micro_laser/M in component_parts)
- efficiency += M.rating
+ efficiency += M.rating * 0.4
+ productivity += M.rating
for(var/obj/item/stock_parts/matter_bin/M in component_parts)
- max_n_of_items = 10 * M.rating
- break
+ max_n_of_items += M.rating * 5
/obj/machinery/microwave/examine(mob/user)
. = ..()
@@ -83,7 +86,7 @@
if(!(stat & (NOPOWER|BROKEN)))
. += "The status display reads:"
. += "- Capacity: [max_n_of_items] items."
- . += "- Cook time reduced by [(efficiency - 1) * 25]%."
+ . += "- Cook time reduced by [(productivity - 1) * 25]%."
/obj/machinery/microwave/update_icon_state()
if(broken)
@@ -240,7 +243,7 @@
playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 0)
return
- if(prob(max((5 / efficiency) - 5, dirty * 5))) //a clean unupgraded microwave has no risk of failure
+ if(prob(dirty * 5 / (5 * efficiency))) //a clean unupgraded microwave has no risk of failure
muck()
return
for(var/obj/O in ingredients)
@@ -285,7 +288,7 @@
update_icon()
loop(MICROWAVE_MUCK, 4)
-/obj/machinery/microwave/proc/loop(type, time, wait = max(12 - 2 * efficiency, 2)) // standard wait is 10
+/obj/machinery/microwave/proc/loop(type, time, wait = max(12 - 2 * productivity, 2)) // standard wait is 10
if(stat & (NOPOWER|BROKEN))
if(type == MICROWAVE_PRE)
pre_fail()