From c1b31d04fed3c33ecc7a4156f077c224e26cecad Mon Sep 17 00:00:00 2001 From: Ian Turk Date: Sat, 23 Dec 2017 16:55:06 -0600 Subject: [PATCH 1/4] Fixed autolathes and ore redemption machines leaving things at previous shuttle locations --- code/game/machinery/autolathe.dm | 62 +++++++++++++---------- code/modules/mining/machine_redemption.dm | 5 +- 2 files changed, 36 insertions(+), 31 deletions(-) diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index 1e0b41bca0e..099059013d7 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -149,8 +149,6 @@ if(href_list["make"]) - var/turf/T = loc - ///////////////// //href protection being_built = stored_research.isDesignResearchedID(href_list["make"]) @@ -175,33 +173,9 @@ icon_state = "autolathe" flick("autolathe_n",src) if(is_stack) - spawn(32*coeff) - use_power(power) - var/list/materials_used = list(MAT_METAL=metal_cost*multiplier, MAT_GLASS=glass_cost*multiplier) - materials.use_amount(materials_used) - - var/obj/item/stack/N = new being_built.build_path(T, multiplier) - N.update_icon() - N.autolathe_crafted(src) - - for(var/obj/item/stack/S in T.contents - N) - if(istype(S, N.merge_type)) - N.merge(S) - busy = FALSE - updateUsrDialog() - + addtimer(CALLBACK(src, .proc/make_stack, power, metal_cost, glass_cost, multiplier, coeff), 32*coeff) else - spawn(32*coeff*multiplier) - use_power(power) - var/list/materials_used = list(MAT_METAL=metal_cost*coeff*multiplier, MAT_GLASS=glass_cost*coeff*multiplier) - materials.use_amount(materials_used) - for(var/i=1, i<=multiplier, i++) - var/obj/item/new_item = new being_built.build_path(T) - for(var/mat in materials_used) - new_item.materials[mat] = materials_used[mat] / multiplier - new_item.autolathe_crafted(src) - busy = FALSE - updateUsrDialog() + addtimer(CALLBACK(src, .proc/make_nonstack, power, metal_cost, glass_cost, multiplier, coeff), 32*coeff*multiplier) if(href_list["search"]) matching_designs.Cut() @@ -218,6 +192,38 @@ return + +/obj/machinery/autolathe/proc/make_stack(power, metal_cost, glass_cost, multiplier, coeff) + GET_COMPONENT(materials, /datum/component/material_container) + var/turf/T = loc + use_power(power) + var/list/materials_used = list(MAT_METAL=metal_cost*multiplier, MAT_GLASS=glass_cost*multiplier) + materials.use_amount(materials_used) + + var/obj/item/stack/N = new being_built.build_path(T, multiplier) + N.update_icon() + N.autolathe_crafted(src) + + for(var/obj/item/stack/S in T.contents - N) + if(istype(S, N.merge_type)) + N.merge(S) + busy = FALSE + updateDialog() + +/obj/machinery/autolathe/proc/make_nonstack(power, metal_cost, glass_cost, multiplier, coeff) + GET_COMPONENT(materials, /datum/component/material_container) + var/turf/T = loc + use_power(power) + var/list/materials_used = list(MAT_METAL=metal_cost*coeff*multiplier, MAT_GLASS=glass_cost*coeff*multiplier) + materials.use_amount(materials_used) + for(var/i=1, i<=multiplier, i++) + var/obj/item/new_item = new being_built.build_path(T) + for(var/mat in materials_used) + new_item.materials[mat] = materials_used[mat] / multiplier + new_item.autolathe_crafted(src) + busy = FALSE + updateDialog() + /obj/machinery/autolathe/RefreshParts() var/T = 0 for(var/obj/item/stock_parts/matter_bin/MB in component_parts) diff --git a/code/modules/mining/machine_redemption.dm b/code/modules/mining/machine_redemption.dm index e16eb0e5b27..ddfcfa62e32 100644 --- a/code/modules/mining/machine_redemption.dm +++ b/code/modules/mining/machine_redemption.dm @@ -257,9 +257,8 @@ if("Release") if(check_access(inserted_id) || allowed(usr)) //Check the ID inside, otherwise check the user - var/out = get_step(src, output_dir) if(params["id"] == "all") - materials.retrieve_all(out) + materials.retrieve_all(get_step(src, output_dir)) else var/mat_id = params["id"] if(!materials.materials[mat_id]) @@ -277,7 +276,7 @@ desired = input("How many sheets?", "How many sheets would you like to smelt?", 1) as null|num var/sheets_to_remove = round(min(desired,50,stored_amount)) - materials.retrieve_sheets(sheets_to_remove, mat_id, out) + materials.retrieve_sheets(sheets_to_remove, mat_id, get_step(src, output_dir)) else to_chat(usr, "Required access not found.") From f9d46e3abb7a2d903fbb3452e18c2052abd42fcc Mon Sep 17 00:00:00 2001 From: Ian Turk Date: Tue, 26 Dec 2017 05:56:28 -0600 Subject: [PATCH 2/4] Removed duplicate code from autolathe replaced a loc with drop_location() --- code/game/machinery/autolathe.dm | 44 ++++++++++++-------------------- 1 file changed, 17 insertions(+), 27 deletions(-) diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index 099059013d7..5e5f15fbb73 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -172,10 +172,8 @@ use_power(power) icon_state = "autolathe" flick("autolathe_n",src) - if(is_stack) - addtimer(CALLBACK(src, .proc/make_stack, power, metal_cost, glass_cost, multiplier, coeff), 32*coeff) - else - addtimer(CALLBACK(src, .proc/make_nonstack, power, metal_cost, glass_cost, multiplier, coeff), 32*coeff*multiplier) + var/time = is_stack ? 32*coeff : 32*coeff*multiplier + addtimer(CALLBACK(src, .proc/make_item, power, metal_cost, glass_cost, multiplier, coeff, is_stack), time) if(href_list["search"]) matching_designs.Cut() @@ -192,35 +190,27 @@ return - -/obj/machinery/autolathe/proc/make_stack(power, metal_cost, glass_cost, multiplier, coeff) +/obj/machinery/autolathe/proc/make_item(power, metal_cost, glass_cost, multiplier, coeff, is_stack) GET_COMPONENT(materials, /datum/component/material_container) - var/turf/T = loc + var/turf/T = drop_location() use_power(power) var/list/materials_used = list(MAT_METAL=metal_cost*multiplier, MAT_GLASS=glass_cost*multiplier) materials.use_amount(materials_used) - var/obj/item/stack/N = new being_built.build_path(T, multiplier) - N.update_icon() - N.autolathe_crafted(src) + if(is_stack) + var/obj/item/stack/N = new being_built.build_path(T, multiplier) + N.update_icon() + N.autolathe_crafted(src) + for(var/obj/item/stack/S in T.contents - N) + if(istype(S, N.merge_type)) + N.merge(S) + else + for(var/i=1, i<=multiplier, i++) + var/obj/item/new_item = new being_built.build_path(T) + for(var/mat in materials_used) + new_item.materials[mat] = materials_used[mat] / multiplier + new_item.autolathe_crafted(src) - for(var/obj/item/stack/S in T.contents - N) - if(istype(S, N.merge_type)) - N.merge(S) - busy = FALSE - updateDialog() - -/obj/machinery/autolathe/proc/make_nonstack(power, metal_cost, glass_cost, multiplier, coeff) - GET_COMPONENT(materials, /datum/component/material_container) - var/turf/T = loc - use_power(power) - var/list/materials_used = list(MAT_METAL=metal_cost*coeff*multiplier, MAT_GLASS=glass_cost*coeff*multiplier) - materials.use_amount(materials_used) - for(var/i=1, i<=multiplier, i++) - var/obj/item/new_item = new being_built.build_path(T) - for(var/mat in materials_used) - new_item.materials[mat] = materials_used[mat] / multiplier - new_item.autolathe_crafted(src) busy = FALSE updateDialog() From e5c7ac805e9ebd9817ad09c05c2f3d997c0aa828 Mon Sep 17 00:00:00 2001 From: Ian Turk Date: Tue, 26 Dec 2017 06:06:01 -0600 Subject: [PATCH 3/4] Fixed coeff not working for non stacks Removed an unnecessary coeff --- code/game/machinery/autolathe.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index 5e5f15fbb73..c6a9781562f 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -172,7 +172,7 @@ use_power(power) icon_state = "autolathe" flick("autolathe_n",src) - var/time = is_stack ? 32*coeff : 32*coeff*multiplier + var/time = is_stack ? 32 : 32*coeff*multiplier addtimer(CALLBACK(src, .proc/make_item, power, metal_cost, glass_cost, multiplier, coeff, is_stack), time) if(href_list["search"]) @@ -194,7 +194,7 @@ GET_COMPONENT(materials, /datum/component/material_container) var/turf/T = drop_location() use_power(power) - var/list/materials_used = list(MAT_METAL=metal_cost*multiplier, MAT_GLASS=glass_cost*multiplier) + var/list/materials_used = list(MAT_METAL=metal_cost*coeff*multiplier, MAT_GLASS=glass_cost*coeff*multiplier) materials.use_amount(materials_used) if(is_stack) From afd52ee7180c933b5814ad1065e8d886a5fa124c Mon Sep 17 00:00:00 2001 From: Ian Turk Date: Fri, 29 Dec 2017 05:14:08 -0600 Subject: [PATCH 4/4] Changed turf to atom --- code/game/machinery/autolathe.dm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index c6a9781562f..3d3d929c814 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -192,21 +192,21 @@ /obj/machinery/autolathe/proc/make_item(power, metal_cost, glass_cost, multiplier, coeff, is_stack) GET_COMPONENT(materials, /datum/component/material_container) - var/turf/T = drop_location() + var/atom/A = drop_location() use_power(power) var/list/materials_used = list(MAT_METAL=metal_cost*coeff*multiplier, MAT_GLASS=glass_cost*coeff*multiplier) materials.use_amount(materials_used) if(is_stack) - var/obj/item/stack/N = new being_built.build_path(T, multiplier) + var/obj/item/stack/N = new being_built.build_path(A, multiplier) N.update_icon() N.autolathe_crafted(src) - for(var/obj/item/stack/S in T.contents - N) + for(var/obj/item/stack/S in (A.contents - N)) if(istype(S, N.merge_type)) N.merge(S) else for(var/i=1, i<=multiplier, i++) - var/obj/item/new_item = new being_built.build_path(T) + var/obj/item/new_item = new being_built.build_path(A) for(var/mat in materials_used) new_item.materials[mat] = materials_used[mat] / multiplier new_item.autolathe_crafted(src)