diff --git a/code/datums/recipe.dm b/code/datums/recipe.dm index 6098315c11..96b01b4242 100644 --- a/code/datums/recipe.dm +++ b/code/datums/recipe.dm @@ -69,12 +69,12 @@ break return . -/datum/recipe/proc/check_items(var/obj/container as obj) +/datum/recipe/proc/check_items(var/obj/machinery/microwave/container as obj) . = 1 if (items && items.len) var/list/checklist = list() checklist = items.Copy() // You should really trust Copy - for(var/obj/O in container) + for(var/obj/O in container.ingredient_list) if(istype(O,/obj/item/weapon/reagent_containers/food/snacks/grown)) continue // Fruit is handled in check_fruit(). var/found = 0 @@ -100,17 +100,18 @@ return result_obj // food-related -/datum/recipe/proc/make_food(var/obj/container as obj) +/datum/recipe/proc/make_food(var/obj/machinery/microwave/container as obj) if(!result) world << "Recipe [type] is defined without a result, please bug this." return var/obj/result_obj = new result(container) - for (var/obj/O in (container.contents-result_obj)) + for (var/obj/O in (container.ingredient_list)) //We no longer need to take result_obj out of the list, since it doesn't exist in the list. if (O.reagents) O.reagents.del_reagent("nutriment") O.reagents.update_total() O.reagents.trans_to_obj(result_obj, O.reagents.total_volume) qdel(O) + container.ingredient_list.Cut() //Trust in Cut(). container.reagents.clear_reagents() return result_obj diff --git a/code/game/machinery/kitchen/microwave.dm b/code/game/machinery/kitchen/microwave.dm index ace68645d8..16e8d8e6e7 100644 --- a/code/game/machinery/kitchen/microwave.dm +++ b/code/game/machinery/kitchen/microwave.dm @@ -18,6 +18,8 @@ var/global/list/acceptable_items // List of the items you can put in var/global/list/acceptable_reagents // List of the reagents you can put in var/global/max_n_of_items = 0 + + var/list/ingredient_list = list() //MUST BE INTIALIZED OR YOU GET RUNTIME ERRORS // see code/modules/food/recipes_microwave.dm for recipes @@ -114,12 +116,13 @@ user << "It's dirty!" return 1 else if(is_type_in_list(O,acceptable_items)) - if (contents.len>=max_n_of_items) + if (ingredient_list.len>=max_n_of_items) user << "This [src] is full of ingredients, you cannot put more." return 1 if(istype(O, /obj/item/stack) && O:get_amount() > 1) // This is bad, but I can't think of how to change it var/obj/item/stack/S = O - new O.type (src) + var/obj/item/stack/K = new O.type (src) //Needed for change into ingredient lists, rather than just contents. + ingredient_list += K S.use(1) user.visible_message( \ "\The [user] has added one of [O] to \the [src].", \ @@ -129,6 +132,7 @@ // user.remove_from_mob(O) //This just causes problems so far as I can tell. -Pete user.drop_item() O.loc = src + ingredient_list += O user.visible_message( \ "\The [user] has added \the [O] to \the [src].", \ "You add \the [O] to \the [src].") @@ -177,7 +181,7 @@ var/list/items_counts = new var/list/items_measures = new var/list/items_measures_p = new - for (var/obj/O in contents) + for (var/obj/O in ingredient_list) var/display_name = O.name if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/egg)) items_measures[display_name] = "egg" @@ -237,7 +241,7 @@ if(stat & (NOPOWER|BROKEN)) return start() - if (reagents.total_volume==0 && !(locate(/obj) in contents)) //dry run + if (reagents.total_volume==0 && !(locate(/obj) in ingredient_list)) //dry run if (!wzhzhzh(10)) abort() return @@ -299,7 +303,7 @@ return 1 /obj/machinery/microwave/proc/has_extra_item() - for (var/obj/O in contents) + for (var/obj/O in ingredient_list) if ( \ !istype(O,/obj/item/weapon/reagent_containers/food) && \ !istype(O, /obj/item/weapon/grown) \ @@ -325,8 +329,9 @@ src.updateUsrDialog() /obj/machinery/microwave/proc/dispose() - for (var/obj/O in contents) + for (var/obj/O in ingredient_list) O.loc = src.loc + ingredient_list -= O if (src.reagents.total_volume) src.dirty++ src.reagents.clear_reagents() @@ -360,7 +365,7 @@ /obj/machinery/microwave/proc/fail() var/obj/item/weapon/reagent_containers/food/snacks/badrecipe/ffuu = new(src) var/amount = 0 - for (var/obj/O in contents-ffuu) + for (var/obj/O in ingredient_list-ffuu) amount++ if (O.reagents) var/id = O.reagents.get_master_reagent_id() diff --git a/html/changelogs/Datraen-MicrowaveRework.yml b/html/changelogs/Datraen-MicrowaveRework.yml new file mode 100644 index 0000000000..1859d3c180 --- /dev/null +++ b/html/changelogs/Datraen-MicrowaveRework.yml @@ -0,0 +1,6 @@ +author: Datraen + +delete-after: True + +changes: + - bugfix: "Microwaves no longer try cooking their components while cooking."