From 4a47c90c18bdbbdea1224b3bf9e1f68c8eb5aa8b Mon Sep 17 00:00:00 2001 From: SyncIt21 <110812394+SyncIt21@users.noreply.github.com> Date: Fri, 11 Jul 2025 12:28:11 +0530 Subject: [PATCH] Flatpacker & machine frame enhancements (#91752) ## About The Pull Request **1. Makes the machine creation process from both efficient.** The machine frame no longer creates & deletes the machines old component parts before moving in the new parts. It instead now passes its parts directly to the circuit boards `apply_default_parts()` meaning the old parts are never created and the new ones get applied directly. This also mean it does not have to again call `RefreshParts()` as the machines `Initialize()` proc will do that for us by default so the performance is just faster now. Flatpack box also benefits from this and it will need it as stated below - Fixes #86514. As the circuit board is passed to the machine's `Initialize()` proc during reconstruction so it sets it's `all_products_free` from the board both during mapload & when player constructed from either machine frame & flatpack **2. Flatpack enhancements** - The flatpack box now passes its stored circuit board into the machine meaning any changes made like with a screw driver or such are preserved in the newly created machine rather than the board getting deleted & the machine creating the default board - Flatpacker now accept custom component parts that replaces its stored circuit board default parts. This implements https://github.com/tgstation/tgstation/pull/91670#issuecomment-2977259973 meaning instead of the vendor created from the flatpacker starting out empty it now accepts the refill canister and will package both of them together. Then during deployment that stored canister is stored back in the vendor meaning instead of starting out empty you get to carry over all your previous stock Depends on https://github.com/tgstation/tgstation/pull/91512 because of named arg conflict. Keep this drafted till that gets merged ## Changelog :cl: qol: flatpacker now accepts custom component parts(like vendor refill canister) along with the circuit board so you can carry over your previous stock during deployment rather than starting out empty fix: flatpack boxes now passes its stored circuit board into the machine thus preserving its properties instead of creating a default board in the machine fix: vending machines reconstructed on station from circuits loaded off station(having free products) will continue to sell free products code: machine construction via flatpacker/machine frame is faster performance wise /:cl: --- code/game/machinery/_machinery.dm | 12 ++- code/game/machinery/computer/station_alert.dm | 2 +- code/game/machinery/flatpacker.dm | 102 ++++++++++++++++-- code/game/machinery/machine_frame.dm | 19 ++-- code/game/machinery/navbeacon.dm | 2 +- code/game/machinery/spaceheater.dm | 2 +- .../items/circuitboards/circuitboard.dm | 56 ++++++++-- .../machines/machine_circuitboards.dm | 1 + code/game/objects/items/flatpacks.dm | 19 +++- code/game/shuttle_engines.dm | 2 +- .../atmospherics/machinery/atmosmachinery.dm | 2 +- .../machinery/components/components_base.dm | 2 +- .../components/unary_devices/thermomachine.dm | 2 +- .../components/unary_devices/unary_devices.dm | 2 +- .../portable/portable_atmospherics.dm | 2 +- code/modules/cargo/expressconsole.dm | 2 +- code/modules/cargo/orderconsole.dm | 2 +- .../food_and_drinks/restaurant/_venue.dm | 2 +- code/modules/power/port_gen.dm | 2 +- code/modules/power/smes_portable.dm | 2 +- .../variants/custom/custom_consoles.dm | 4 +- code/modules/transport/tram/tram_controls.dm | 2 +- code/modules/vending/_vending.dm | 13 --- tgui/packages/tgui/interfaces/Flatpacker.tsx | 3 +- 24 files changed, 192 insertions(+), 67 deletions(-) diff --git a/code/game/machinery/_machinery.dm b/code/game/machinery/_machinery.dm index 56991917b21..16c4f06e441 100644 --- a/code/game/machinery/_machinery.dm +++ b/code/game/machinery/_machinery.dm @@ -160,12 +160,20 @@ fire = 50 acid = 70 +///Needed by machine frame & flatpacker i.e the named arg board +/obj/machinery/New(loc, obj/item/circuitboard/board, ...) + if(istype(board)) + circuit = board + + return ..() + /obj/machinery/Initialize(mapload) . = ..() SSmachines.register_machine(src) if(ispath(circuit, /obj/item/circuitboard)) circuit = new circuit(src) + if(istype(circuit)) circuit.apply_default_parts(src) if(processing_flags & START_PROCESSING_ON_INIT) @@ -1191,10 +1199,10 @@ /obj/machinery/examine_more(mob/user) . = ..() if(HAS_TRAIT(user, TRAIT_RESEARCH_SCANNER) && component_parts) - . += display_parts(user, TRUE) + . += display_parts(user) //called on machinery construction (i.e from frame to machinery) but not on initialization -/obj/machinery/proc/on_construction(mob/user, from_flatpack = FALSE) +/obj/machinery/proc/on_construction(mob/user) return /** diff --git a/code/game/machinery/computer/station_alert.dm b/code/game/machinery/computer/station_alert.dm index 4a3af557c27..f063c8a89c9 100644 --- a/code/game/machinery/computer/station_alert.dm +++ b/code/game/machinery/computer/station_alert.dm @@ -17,7 +17,7 @@ link_alerts() return ..() -/obj/machinery/computer/station_alert/on_construction(mob/user, from_flatpack = FALSE) +/obj/machinery/computer/station_alert/on_construction(mob/user) . = ..() link_alerts() diff --git a/code/game/machinery/flatpacker.dm b/code/game/machinery/flatpacker.dm index d39d0a936ac..d9d1e05b06f 100644 --- a/code/game/machinery/flatpacker.dm +++ b/code/game/machinery/flatpacker.dm @@ -19,6 +19,8 @@ var/datum/component/material_container/materials /// The inserted board var/obj/item/circuitboard/machine/inserted_board + /// List of components that need to be packed along with the circuitboard + var/list/obj/item/flatpacked_components = list() /// Materials needed to print this board var/list/needed_mats = list() /// The highest tier of this board @@ -44,12 +46,18 @@ /obj/machinery/flatpacker/Destroy() materials = null QDEL_NULL(inserted_board) + QDEL_LIST(flatpacked_components) . = ..() /obj/machinery/flatpacker/add_context(atom/source, list/context, obj/item/held_item, mob/user) . = NONE if(!QDELETED(inserted_board)) context[SCREENTIP_CONTEXT_CTRL_LMB] = "Eject board" + + if(!isnull(held_item) && (held_item.type in inserted_board.flatpack_components)) + context[SCREENTIP_CONTEXT_LMB] = "Insert flatpack component" + return CONTEXTUAL_SCREENTIP_SET + . = CONTEXTUAL_SCREENTIP_SET if(!isnull(held_item)) @@ -78,6 +86,18 @@ . += span_notice("It can be [EXAMINE_HINT("pried")] apart") if(!QDELETED(inserted_board)) . += span_notice("The board can be ejected via [EXAMINE_HINT("Ctrl Click")]") + if(length(inserted_board.flatpack_components)) + var/list/obj/item/to_insert + for(var/obj/item/component as anything in inserted_board.flatpack_components) + var/inserted = get_flatpack_component_count(component) + var/required = inserted_board.req_components[component] + if(inserted == required) + continue + LAZYADDASSOC(to_insert, get_flatpack_component_name(component), "[inserted]/[required]") + if(length(to_insert)) + . += span_warning("The following components must be inserted by hand before packaging") + for(var/component_name in to_insert) + . += span_warning("[component_name]:[to_insert[component_name]]") /obj/machinery/flatpacker/update_overlays() . = ..() @@ -85,6 +105,36 @@ if(!QDELETED(inserted_board)) . += mutable_appearance(icon, "[base_icon_state]_c") +/** + * Returns the name of this component. Vending canistors & maybe other types in the future require special parsing + * + * Arguments + * * obj/item/component - the component typepath we are trying to get the name + */ +/obj/machinery/flatpacker/proc/get_flatpack_component_name(obj/item/component) + PRIVATE_PROC(TRUE) + + if(ispath(type, /obj/item/vending_refill)) + var/obj/item/vending_refill/canister = component + + return "\improper [canister::machine_name] restocking unit" + + return component::name + +/** + * Returns count of inserted flatpack component parts + * + * Arguments + * * obj/item/type - the component type we are trying to count + */ +/obj/machinery/flatpacker/proc/get_flatpack_component_count(obj/item/type) + PRIVATE_PROC(TRUE) + + . = 0 + for(var/obj/item/test as anything in flatpacked_components) + if(test.type == type) + . += 1 + /obj/machinery/flatpacker/Exited(atom/movable/gone, direction) . = ..() if(gone == inserted_board) @@ -92,6 +142,8 @@ needed_mats.Cut() print_tier = 1 update_appearance(UPDATE_OVERLAYS) + if(gone in flatpacked_components) + flatpacked_components -= gone /obj/machinery/flatpacker/RefreshParts() . = ..() @@ -133,10 +185,11 @@ * Otherwise, the typepath is created in nullspace and fetches materials from the initialized one, then deleted. * * Args: - * part_type - Typepath of the item we are trying to find the costs of - * costs - Assoc list we modify and return + * * part_type - Typepath of the item we are trying to find the costs of + * * costs - Assoc list we modify and return + * * count - the number of parts to compute the cost of */ -/obj/machinery/flatpacker/proc/analyze_cost(part_type, costs) +/obj/machinery/flatpacker/proc/analyze_cost(part_type, costs, count) PRIVATE_PROC(TRUE) var/comp_type = part_type @@ -159,7 +212,7 @@ mat_list = null_comp.custom_materials for(var/atom/mat as anything in mat_list) - CREATE_AND_INCREMENT(costs, mat.type, mat_list[mat] * inserted_board.req_components[part_type]) + CREATE_AND_INCREMENT(costs, mat.type, mat_list[mat] * count) if(null_comp) qdel(null_comp) @@ -183,7 +236,10 @@ //compute the needed mats from its stock parts for(var/type as anything in inserted_board.req_components) - needed_mats = analyze_cost(type, needed_mats) + //these don't count to the final cost as they have to inserted manually + if(type in inserted_board.flatpack_components) + continue + needed_mats = analyze_cost(type, needed_mats, inserted_board.req_components[type]) // 5 sheets of iron and 5 of cable coil CREATE_AND_INCREMENT(needed_mats, /datum/material/iron, (SHEET_MATERIAL_AMOUNT * 5 + (SHEET_MATERIAL_AMOUNT / 20))) @@ -191,6 +247,17 @@ update_appearance(UPDATE_OVERLAYS) return ITEM_INTERACT_SUCCESS + else if(!QDELETED(inserted_board) && (attacking_item.type in inserted_board.flatpack_components)) + if(get_flatpack_component_count(attacking_item.type) == inserted_board.req_components[attacking_item.type]) + balloon_alert(user, "max count reached!") + return ITEM_INTERACT_BLOCKING + + if(!user.transferItemToLoc(attacking_item, src)) + to_chat(user, span_warning("[attacking_item] is stuck in hand!")) + return ITEM_INTERACT_BLOCKING + + LAZYADD(flatpacked_components, attacking_item) + return ITEM_INTERACT_SUCCESS return ..() @@ -237,16 +304,20 @@ var/atom/build = initial(inserted_board.build_path) var/disableReason = "" - var/has_materials = materials.has_materials(needed_mats, creation_efficiency) - if(!has_materials) - disableReason += "Not enough materials. " if(print_tier > max_part_tier) - disableReason += "This design is too advanced for this machine. " + disableReason = "This design is too advanced for this machine. " + else if(!materials.has_materials(needed_mats, creation_efficiency)) + disableReason = "Not enough materials. " + else + for(var/obj/item/component as anything in inserted_board.flatpack_components) + var/diff = inserted_board.req_components[component] - get_flatpack_component_count(component) + if(diff) + disableReason = "Please insert [diff] [get_flatpack_component_name(component)]" + break design = list( "name" = initial(build.name), "requiredMaterials" = cost_mats, "icon" = icon2base64(icon(initial(build.icon), initial(build.icon_state), frame = 1)), - "canPrint" = has_materials && print_tier <= max_part_tier, "disableReason" = disableReason ) .["design"] = design @@ -266,6 +337,10 @@ if(print_tier > max_part_tier) say("Design too complex.") return + for(var/obj/item/component as anything in inserted_board.flatpack_components) + if(inserted_board.req_components[component] != get_flatpack_component_count(component)) + say("Not enough [get_flatpack_component_name(component)].") + return if(!materials.has_materials(needed_mats, creation_efficiency)) say("Not enough materials to begin production.") return @@ -313,7 +388,9 @@ busy = FALSE materials.use_materials(needed_mats, creation_efficiency) - new /obj/item/flatpack(drop_location(), board) + var/obj/item/flatpack/box = new (drop_location(), board) + for(var/obj/item/component as anything in flatpacked_components) + component.forceMove(box) SStgui.update_uis(src) @@ -322,6 +399,9 @@ return CLICK_ACTION_BLOCKING try_put_in_hand(inserted_board, user) + var/drop = drop_location() + for(var/obj/item/component as anything in flatpacked_components) + component.forceMove(drop) return CLICK_ACTION_SUCCESS diff --git a/code/game/machinery/machine_frame.dm b/code/game/machinery/machine_frame.dm index f36edbade22..4447ef140dc 100644 --- a/code/game/machinery/machine_frame.dm +++ b/code/game/machinery/machine_frame.dm @@ -446,22 +446,17 @@ return FALSE tool.play_tool_sound(src) - var/obj/machinery/new_machine = new circuit.build_path(loc) + // Prevent us from dropping stuff thanks to /Exited + var/obj/item/circuitboard/machine/leaving_circuit = circuit + components -= leaving_circuit + leaving_circuit.replacement_parts = components + // Build the machine with the replacement parts + circuit = null + var/obj/machinery/new_machine = new leaving_circuit.build_path(loc, board = leaving_circuit) if(istype(new_machine)) - new_machine.clear_components() // Set anchor state new_machine.set_anchored(anchored) - // Prevent us from dropping stuff thanks to /Exited - var/obj/item/circuitboard/machine/leaving_circuit = circuit - circuit = null - // Assign the circuit & parts & move them all at once into the machine - // no need to separately move circuit board as its already part of the components list - new_machine.circuit = leaving_circuit - new_machine.component_parts = components - for (var/obj/new_part in components) - new_part.forceMove(new_machine) //Inform machine that its finished & cleanup - new_machine.RefreshParts() new_machine.on_construction(user) components = null qdel(src) diff --git a/code/game/machinery/navbeacon.dm b/code/game/machinery/navbeacon.dm index bda3faf10c0..a3f1859fe26 100644 --- a/code/game/machinery/navbeacon.dm +++ b/code/game/machinery/navbeacon.dm @@ -57,7 +57,7 @@ GLOB.navbeacons["[new_turf?.z]"] += src return ..() -/obj/machinery/navbeacon/on_construction(mob/user, from_flatpack = FALSE) +/obj/machinery/navbeacon/on_construction(mob/user) var/turf/our_turf = loc if(!isfloorturf(our_turf)) return diff --git a/code/game/machinery/spaceheater.dm b/code/game/machinery/spaceheater.dm index 87dc29f2e9a..04990c12bab 100644 --- a/code/game/machinery/spaceheater.dm +++ b/code/game/machinery/spaceheater.dm @@ -79,7 +79,7 @@ QDEL_NULL(cell) return..() -/obj/machinery/space_heater/on_construction(mob/user, from_flatpack = FALSE) +/obj/machinery/space_heater/on_construction() set_panel_open(TRUE) QDEL_NULL(cell) diff --git a/code/game/objects/items/circuitboards/circuitboard.dm b/code/game/objects/items/circuitboards/circuitboard.dm index 5ffd1c96845..a556e42a6a5 100644 --- a/code/game/objects/items/circuitboards/circuitboard.dm +++ b/code/game/objects/items/circuitboards/circuitboard.dm @@ -76,13 +76,23 @@ micro-manipulator, console screen, beaker, Microlaser, matter bin, power cells. /// Default replacements for req_components, to be used in apply_default_parts instead of req_components types /// Example: list(/obj/item/stock_parts/matter_bin = /obj/item/stock_parts/matter_bin/super) var/list/def_components + /// List of atoms/datums to replace the default components placed inside the machine + var/list/replacement_parts + /// Components that need to be flatpacked along with the circuitboard so as to replace the defaults + var/list/obj/item/flatpack_components -// Applies the default parts defined by the circuit board when the machine is created -/obj/item/circuitboard/machine/apply_default_parts(obj/machinery/machine) - if(!req_components) - return +/** + * Converts req_components map into a linear list with its datum components resolved + * + * Arguments + * * obj/machinery/machine - if not null adds the parts to the machine directly & will not return anything +*/ +/obj/item/circuitboard/machine/proc/flatten_component_list(obj/machinery/machine) + SHOULD_NOT_OVERRIDE(TRUE) - . = ..() + . = NONE + if(QDELETED(machine)) + . = list() for(var/comp_path in req_components) var/comp_amt = req_components[comp_path] @@ -99,10 +109,40 @@ micro-manipulator, console screen, beaker, Microlaser, matter bin, power cells. if (isnull(stock_part_datum)) CRASH("[comp_path] didn't have a matching stock part datum") for (var/_ in 1 to comp_amt) - machine.component_parts += stock_part_datum + if(!.) + machine.component_parts += stock_part_datum + else + . += stock_part_datum else - for(var/component in 1 to comp_amt) - machine.component_parts += new comp_path(machine) + for(var/_ in 1 to comp_amt) + if(!.) + machine.component_parts += new comp_path(machine) + else + . += comp_path + +/** + * Applies the default component parts for this machine + * + * Arguments + * * obj/machinery/machine - the machine to apply the default parts to +*/ +/obj/item/circuitboard/machine/apply_default_parts(obj/machinery/machine) + if(!req_components && !length(replacement_parts)) + return + + . = ..() + + if(replacement_parts) + for(var/part in replacement_parts) + if(ispath(part, /obj/item)) + part = new part(machine) + else if(ismovable(part)) + var/atom/movable/thing = part + thing.forceMove(machine) + machine.component_parts += part + replacement_parts = null + else + flatten_component_list(machine) machine.RefreshParts() diff --git a/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm b/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm index c8cb3e999b6..38d03f33f56 100644 --- a/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm +++ b/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm @@ -725,6 +725,7 @@ build_path = typepath name = "[vending_names_paths[build_path]] Vendor" req_components = list(initial(typepath.refill_canister) = 1) + flatpack_components = list(initial(typepath.refill_canister)) /obj/item/circuitboard/machine/vendor/apply_default_parts(obj/machinery/machine) for(var/typepath in vending_names_paths) diff --git a/code/game/objects/items/flatpacks.dm b/code/game/objects/items/flatpacks.dm index ce175a700c7..8894b05f7b8 100644 --- a/code/game/objects/items/flatpacks.dm +++ b/code/game/objects/items/flatpacks.dm @@ -71,10 +71,25 @@ return ITEM_INTERACT_BLOCKING new /obj/effect/temp_visual/mook_dust(loc) - var/obj/machinery/new_machine = new board.build_path(loc) + var/obj/item/circuitboard/machine/leaving_circuit = board + if(contents.len > 1) + leaving_circuit.replacement_parts = leaving_circuit.flatten_component_list() + for(var/obj/item/flatpack_component in src) + if(flatpack_component == leaving_circuit) + continue + for(var/i in 1 to leaving_circuit.replacement_parts.len) + var/obj/item/machine_component = leaving_circuit.replacement_parts[i] + if(!ispath(machine_component, /obj/item)) + continue + if(flatpack_component.type == machine_component) + leaving_circuit.replacement_parts[i] = flatpack_component + break + + board = null + var/obj/machinery/new_machine = new leaving_circuit.build_path(loc, board = leaving_circuit) + new_machine.on_construction(user) loc.visible_message(span_warning("[src] deploys!")) playsound(src, 'sound/machines/terminal/terminal_eject.ogg', 70, TRUE) - new_machine.on_construction(user, from_flatpack = TRUE) qdel(src) return ITEM_INTERACT_SUCCESS diff --git a/code/game/shuttle_engines.dm b/code/game/shuttle_engines.dm index 99360a1c68e..35bd07a7f07 100644 --- a/code/game/shuttle_engines.dm +++ b/code/game/shuttle_engines.dm @@ -43,7 +43,7 @@ engine_state = ENGINE_UNWRENCHED anchored = FALSE -/obj/machinery/power/shuttle_engine/on_construction(mob/user, from_flatpack = FALSE) +/obj/machinery/power/shuttle_engine/on_construction(mob/user) . = ..() if(anchored) connect_to_shuttle(port = SSshuttle.get_containing_shuttle(src)) //connect to a new ship, if needed diff --git a/code/modules/atmospherics/machinery/atmosmachinery.dm b/code/modules/atmospherics/machinery/atmosmachinery.dm index 179e56db9b4..854e4c411dd 100644 --- a/code/modules/atmospherics/machinery/atmosmachinery.dm +++ b/code/modules/atmospherics/machinery/atmosmachinery.dm @@ -541,7 +541,7 @@ PIPING_FORWARD_SHIFT(pipe_overlay, piping_layer, 2) return pipe_overlay -/obj/machinery/atmospherics/on_construction(mob/user, obj_color, set_layer = PIPING_LAYER_DEFAULT, from_flatpack = FALSE) +/obj/machinery/atmospherics/on_construction(mob/user, obj_color, set_layer = PIPING_LAYER_DEFAULT) if(can_unwrench) add_atom_colour(obj_color, FIXED_COLOUR_PRIORITY) set_pipe_color(obj_color) diff --git a/code/modules/atmospherics/machinery/components/components_base.dm b/code/modules/atmospherics/machinery/components/components_base.dm index 414aba876ad..74bbfca0bdf 100644 --- a/code/modules/atmospherics/machinery/components/components_base.dm +++ b/code/modules/atmospherics/machinery/components/components_base.dm @@ -125,7 +125,7 @@ airs[i] = null return ..() -/obj/machinery/atmospherics/components/on_construction(mob/user, from_flatpack = FALSE) +/obj/machinery/atmospherics/components/on_construction(mob/user) . = ..() update_parents() diff --git a/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm b/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm index 35cbf87f5af..24674e2e10b 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm @@ -67,7 +67,7 @@ return FALSE . = ..() -/obj/machinery/atmospherics/components/unary/thermomachine/on_construction(mob/user, obj_color, set_layer, from_flatpack = FALSE) +/obj/machinery/atmospherics/components/unary/thermomachine/on_construction(mob/user, obj_color, set_layer) var/obj/item/circuitboard/machine/thermomachine/board = circuit if(board) piping_layer = board.pipe_layer diff --git a/code/modules/atmospherics/machinery/components/unary_devices/unary_devices.dm b/code/modules/atmospherics/machinery/components/unary_devices/unary_devices.dm index 0e3b86ac311..c8bfd8628e9 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/unary_devices.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/unary_devices.dm @@ -13,7 +13,7 @@ /obj/machinery/atmospherics/components/unary/set_init_directions() initialize_directions = dir -/obj/machinery/atmospherics/components/unary/on_construction(mob/user, from_flatpack = FALSE) +/obj/machinery/atmospherics/components/unary/on_construction(mob/user) ..() update_appearance() diff --git a/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm b/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm index 6d485dc1235..72c322621ac 100644 --- a/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm +++ b/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm @@ -64,7 +64,7 @@ AddElement(/datum/element/elevation, pixel_shift = 8) register_context() -/obj/machinery/portable_atmospherics/on_construction(mob/user, from_flatpack = FALSE) +/obj/machinery/portable_atmospherics/on_construction(mob/user) . = ..() set_anchored(FALSE) diff --git a/code/modules/cargo/expressconsole.dm b/code/modules/cargo/expressconsole.dm index 26a4c4eba2f..86a4d4f3a4f 100644 --- a/code/modules/cargo/expressconsole.dm +++ b/code/modules/cargo/expressconsole.dm @@ -37,7 +37,7 @@ WARNING("[src] couldnt find a Quartermaster/Storage (aka cargobay) area on the station, and as such it has set the supplypod landingzone to the area it resides in.") landingzone = get_area(src) -/obj/machinery/computer/cargo/express/on_construction(mob/user, from_flatpack = FALSE) +/obj/machinery/computer/cargo/express/on_construction(mob/user) . = ..() packin_up() diff --git a/code/modules/cargo/orderconsole.dm b/code/modules/cargo/orderconsole.dm index fe737af9b47..420d5486c63 100644 --- a/code/modules/cargo/orderconsole.dm +++ b/code/modules/cargo/orderconsole.dm @@ -69,7 +69,7 @@ update_static_data(user) return TRUE -/obj/machinery/computer/cargo/on_construction(mob/user, from_flatpack = FALSE) +/obj/machinery/computer/cargo/on_construction(mob/user) . = ..() circuit.configure_machine(src) diff --git a/code/modules/food_and_drinks/restaurant/_venue.dm b/code/modules/food_and_drinks/restaurant/_venue.dm index af5f52b7f01..0a968e3351f 100644 --- a/code/modules/food_and_drinks/restaurant/_venue.dm +++ b/code/modules/food_and_drinks/restaurant/_venue.dm @@ -201,7 +201,7 @@ linked_venue = null return ..() -/obj/machinery/restaurant_portal/on_construction(mob/user, from_flatpack = FALSE) +/obj/machinery/restaurant_portal/on_construction(mob/user) . = ..() circuit.configure_machine(src) diff --git a/code/modules/power/port_gen.dm b/code/modules/power/port_gen.dm index d3004299946..81c3a78996e 100644 --- a/code/modules/power/port_gen.dm +++ b/code/modules/power/port_gen.dm @@ -102,7 +102,7 @@ DropFuel() return ..() -/obj/machinery/power/port_gen/pacman/on_construction(mob/user, from_flatpack = FALSE) +/obj/machinery/power/port_gen/pacman/on_construction(mob/user) var/obj/item/circuitboard/machine/pacman/our_board = circuit if(our_board.high_production_profile) icon_state = "portgen1_0" diff --git a/code/modules/power/smes_portable.dm b/code/modules/power/smes_portable.dm index 1ea5bc6f80c..3b2d6166959 100644 --- a/code/modules/power/smes_portable.dm +++ b/code/modules/power/smes_portable.dm @@ -118,7 +118,7 @@ /// The port this is connected to. var/obj/machinery/power/smes/connector/connected_port -/obj/machinery/power/smesbank/on_construction(mob/user, from_flatpack = FALSE) +/obj/machinery/power/smesbank/on_construction(mob/user) . = ..() set_anchored(FALSE) diff --git a/code/modules/shuttle/mobile_port/variants/custom/custom_consoles.dm b/code/modules/shuttle/mobile_port/variants/custom/custom_consoles.dm index 6632fe6ceaf..b8a5ddedba0 100644 --- a/code/modules/shuttle/mobile_port/variants/custom/custom_consoles.dm +++ b/code/modules/shuttle/mobile_port/variants/custom/custom_consoles.dm @@ -6,7 +6,7 @@ may_be_remote_controlled = TRUE var/static/list/connections = list(COMSIG_TURF_ADDED_TO_SHUTTLE = PROC_REF(on_loc_added_to_shuttle)) -/obj/machinery/computer/shuttle/custom_shuttle/on_construction(mob/user, from_flatpack = FALSE) +/obj/machinery/computer/shuttle/custom_shuttle/on_construction(mob/user) circuit.configure_machine(src) if(!shuttleId) AddElement(/datum/element/connect_loc, connections) @@ -48,7 +48,7 @@ zlink_range = 1 var/static/list/connections = list(COMSIG_TURF_ADDED_TO_SHUTTLE = PROC_REF(on_loc_added_to_shuttle)) -/obj/machinery/computer/camera_advanced/shuttle_docker/custom/on_construction(mob/user, from_flatpack = FALSE) +/obj/machinery/computer/camera_advanced/shuttle_docker/custom/on_construction(mob/user) circuit.configure_machine(src) if(!shuttleId) AddElement(/datum/element/connect_loc, connections) diff --git a/code/modules/transport/tram/tram_controls.dm b/code/modules/transport/tram/tram_controls.dm index 6ddb2458882..308e58cf5f0 100644 --- a/code/modules/transport/tram/tram_controls.dm +++ b/code/modules/transport/tram/tram_controls.dm @@ -183,7 +183,7 @@ update_appearance() -/obj/machinery/computer/tram_controls/on_construction(mob/user, from_flatpack = FALSE) +/obj/machinery/computer/tram_controls/on_construction(mob/user) . = ..() var/obj/item/circuitboard/computer/tram_controls/my_circuit = circuit split_mode = my_circuit.split_mode diff --git a/code/modules/vending/_vending.dm b/code/modules/vending/_vending.dm index 4b1bb5c023f..418175f9a9f 100644 --- a/code/modules/vending/_vending.dm +++ b/code/modules/vending/_vending.dm @@ -325,19 +325,6 @@ GLOBAL_LIST_EMPTY(vending_machines_to_restock) for(var/obj/item/vending_refill/installed_refill in component_parts) restock(installed_refill) -/obj/machinery/vending/on_construction(mob/user, from_flatpack = FALSE) - if (!from_flatpack) - return - // When built from a flatpack, empty our canister upon construction - for(var/obj/item/vending_refill/installed_refill in component_parts) - for (var/item_sold in installed_refill.products) - installed_refill.products[item_sold] = 0 - for (var/item_sold in installed_refill.contraband) - installed_refill.contraband[item_sold] = 0 - for (var/item_sold in installed_refill.premium) - installed_refill.premium[item_sold] = 0 - RefreshParts() - /obj/machinery/vending/on_deconstruction(disassembled) if(refill_canister) return ..() diff --git a/tgui/packages/tgui/interfaces/Flatpacker.tsx b/tgui/packages/tgui/interfaces/Flatpacker.tsx index 1b0d6496bd1..a6e73a9e3aa 100644 --- a/tgui/packages/tgui/interfaces/Flatpacker.tsx +++ b/tgui/packages/tgui/interfaces/Flatpacker.tsx @@ -29,7 +29,6 @@ type Design = { name: string; icon: string; requiredMaterials: Material[]; - canPrint: BooleanLike; disableReason?: string; }; @@ -145,7 +144,7 @@ const BoardPreview = (props: BoardPreviewProps) => { icon="cog" fontSize={1.2} textAlign="center" - disabled={!design || !design.canPrint} + disabled={!design || design.disableReason !== ''} tooltip={design.disableReason} tooltipPosition="bottom" onClick={() => onPrint()}