From bcb267ef3a7d95fd92c8d00a162dcb594f3c5e74 Mon Sep 17 00:00:00 2001 From: Twitchcog Date: Tue, 13 Dec 2022 03:23:39 -0800 Subject: [PATCH] Autolathes accept mat stacks raw --- code/game/machinery/autolathe.dm | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index 27161b6e266..5feb8915f58 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -191,32 +191,31 @@ var/filltype = 0 // Used to determine message. var/total_used = 0 // Amount of material used. var/mass_per_sheet = 0 // Amount of material constituting one sheet. + var/list/matter_inputs + if(istype(eating, /obj/item/stack/material)) + var/obj/item/stack/material/matstack = eating + matter_inputs = list(matstack.material.name = 2000) + else + matter_inputs = eating.matter - for(var/material in eating.matter) - + for(var/material in matter_inputs) if(isnull(stored_material[material]) || isnull(storage_capacity[material])) continue - if(stored_material[material] >= storage_capacity[material]) continue - - var/total_material = eating.matter[material] - + var/total_material = matter_inputs[material] //If it's a stack, we eat multiple sheets. if(istype(eating,/obj/item/stack)) var/obj/item/stack/stack = eating total_material *= stack.get_amount() - if(stored_material[material] + total_material > storage_capacity[material]) total_material = storage_capacity[material] - stored_material[material] filltype = 1 else filltype = 2 - stored_material[material] += total_material total_used += total_material - mass_per_sheet += eating.matter[material] - + mass_per_sheet += matter_inputs[material] if(!filltype) to_chat(user, "\The [src] is full. Please remove material from the autolathe in order to insert more.") return @@ -224,18 +223,15 @@ to_chat(user, "You fill \the [src] to capacity with \the [eating].") else to_chat(user, "You fill \the [src] with \the [eating].") - flick("autolathe_loading", src) // Plays metal insertion animation. Work out a good way to work out a fitting animation. ~Z - if(istype(eating,/obj/item/stack)) var/obj/item/stack/stack = eating stack.use(max(1, round(total_used/mass_per_sheet))) // Always use at least 1 to prevent infinite materials. else user.remove_from_mob(O) qdel(O) - updateUsrDialog() - return + /obj/machinery/autolathe/attack_hand(mob/user as mob) user.set_machine(src)