diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index b7cdd87cdaa..6c13db51ad5 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -16,7 +16,7 @@ var/operating = 0.0 var/list/queue = list() - var/queue_max_len = 10 + var/queue_max_len = 12 var/turf/BuildTurf anchored = 1.0 var/list/L = list() @@ -34,7 +34,7 @@ var/prod_coeff var/datum/wires/autolathe/wires = null - var/datum/design/being_built + var/list/being_built = list() var/datum/research/files var/list/datum/design/matching_designs var/selected_category @@ -190,16 +190,17 @@ ///////////////// //href protection - being_built = files.FindDesignByID(href_list["make"]) //check if it's a valid design - if(!being_built) + var/datum/design/design_last_ordered + design_last_ordered = files.FindDesignByID(href_list["make"]) //check if it's a valid design + if(!design_last_ordered) return - if(!(being_built.build_type & AUTOLATHE)) + if(!(design_last_ordered.build_type & AUTOLATHE)) return //multiplier checks : only stacks can have one and its value is 1, 10 ,25 or max_multiplier var/multiplier = text2num(href_list["multiplier"]) - var/max_multiplier = min(50, being_built.materials["$metal"] ?round(m_amount/being_built.materials["$metal"]):INFINITY,being_built.materials["$glass"]?round(g_amount/being_built.materials["$glass"]):INFINITY) - var/is_stack = ispath(being_built.build_path, /obj/item/stack) + var/max_multiplier = min(50, design_last_ordered.materials["$metal"] ?round(m_amount/design_last_ordered.materials["$metal"]):INFINITY,design_last_ordered.materials["$glass"]?round(g_amount/design_last_ordered.materials["$glass"]):INFINITY) + var/is_stack = ispath(design_last_ordered.build_path, /obj/item/stack) if(!is_stack && (multiplier > 1)) return @@ -207,8 +208,8 @@ return ///////////////// - if(queue.len1) + var/output = "PROCESSING: [initial(D.name)][is_stack?" (x[multiplier])":null]" + return output + /obj/machinery/autolathe/proc/get_queue() var/temp_metal = m_amount var/temp_glass = g_amount @@ -318,19 +329,27 @@ output += "
" output += "Queue contains:" if (!istype(queue) || !queue.len) - output += "
Nothing" + if(being_built.len) + output += "
  1. " + output += get_processing_line() + output += "
" + else + output += "
Nothing" else output += "
    " + if(being_built.len) + output += "
  1. " + output += get_processing_line() + output += "
  2. " var/i = 0 var/datum/design/D for(var/list/L in queue) i++ D = L[1] var/multiplier = L[2] - var/obj/part = D.build_path var/list/LL = get_design_cost_as_list(D,multiplier) var/is_stack = (multiplier>1) - output += "[initial(part.name)][is_stack?" (x[multiplier])":null] - [i>1?"":null] [i↓":null] Remove" + output += "[initial(D.name)][is_stack?" (x[multiplier])":null] - [i>1?"":null] [i↓":null] Remove" temp_metal = max(temp_metal-LL[1],1) temp_glass = max(temp_glass-LL[2],1) @@ -363,16 +382,19 @@ return while(D) if(stat&(NOPOWER|BROKEN)) + being_built = new /list() return 0 if(!can_build(D,multiplier)) visible_message("\icon[src] \The [src] beeps, \"Not enough resources. Queue processing terminated.\"") queue = list() + being_built = new /list() return 0 remove_from_queue(1) build_item(D,multiplier) D = listgetindex(listgetindex(queue, 1),1) multiplier = listgetindex(listgetindex(queue,1),2) + being_built = new /list() //visible_message("\icon[src] \The [src] beeps, \"Queue processing finished successfully.\"") /obj/machinery/autolathe/proc/main_win(mob/user)