From 2066ee6bc1319831659b10dd7c31d4f1a1346d2c Mon Sep 17 00:00:00 2001 From: Casper3667 <8396443+Casper3667@users.noreply.github.com> Date: Sun, 2 Aug 2026 03:24:07 +0200 Subject: [PATCH] A bunch of circuit and other fixes (#22970) Fixes https://github.com/Aurorastation/Aurora.3/issues/22959 Fixes https://github.com/Aurorastation/Aurora.3/issues/22960 changes: - bugfix: "Integrated circuits can now display screen text and other examine related things." - bugfix: "Fixed the direction of the wall mounted integrated circuit when placed." - bugfix: "Fixed that the integrated circuit kit had the wrong tools." - bugfix: "Fixed that the integrated circuit printer put things on the turf instead of in hand." - bugfix: "Fixed that removing integrated circuit components put them on the turf, and that they were dropped if they did not fit inside the device." - bugfix: "Harvesting a plant multiple times by clicking it repeatedly before it finishes is no longer possible." - bugfix: "The kitchen machinery can now be upgraded." - bugfix: "The farmbot requirement in bounties was reduced." - bugfix: "Fixes the inability to put custom pizzas in the pizza box." --- .../weapons/circuitboards/machinery/miscboards.dm | 14 +++++++++++++- code/game/objects/items/weapons/storage/fancy.dm | 4 ++-- code/modules/cargo/bounties/bot.dm | 5 ++--- .../cooking/machinery/cooking_machines/fryer.dm | 6 ++++++ .../machinery/cooking_machines/microwave.dm | 6 ++++++ .../cooking/machinery/cooking_machines/oven.dm | 7 +++++++ .../cooking/machinery/cooking_machines/stove.dm | 6 ++++++ code/modules/hydroponics/seed.dm | 2 +- .../integrated_electronics/core/assemblies.dm | 13 ++++++++----- .../core/assemblies/electronic_radio_headset.dm | 9 ++++----- .../core/assemblies/generic.dm | 4 +++- .../core/integrated_circuit.dm | 6 ++++-- .../modules/integrated_electronics/core/printer.dm | 9 ++++++--- code/modules/integrated_electronics/core/tools.dm | 11 +++++++---- html/changelogs/FixesAndFixes.yml | 14 ++++++++++++++ 15 files changed, 89 insertions(+), 27 deletions(-) create mode 100644 html/changelogs/FixesAndFixes.yml diff --git a/code/game/objects/items/weapons/circuitboards/machinery/miscboards.dm b/code/game/objects/items/weapons/circuitboards/machinery/miscboards.dm index 3312c4def6d..fc7101c306f 100644 --- a/code/game/objects/items/weapons/circuitboards/machinery/miscboards.dm +++ b/code/game/objects/items/weapons/circuitboards/machinery/miscboards.dm @@ -143,11 +143,23 @@ origin_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 3) board_type = BOARD_MACHINE req_components = list( - "/obj/item/stock_parts/capacitor" = 2, + "/obj/item/stock_parts/capacitor" = 3, "/obj/item/stock_parts/micro_laser" = 1, "/obj/item/stack/cable_coil" = 5 ) +/obj/item/circuitboard/microwave + name = T_BOARD("microwave") + desc = "The circuitboard for a microwave." + build_path = /obj/structure/machinery/appliance/cooker/microwave + origin_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 3) + board_type = BOARD_MACHINE + req_components = list( + "/obj/item/stock_parts/capacitor" = 3, + "/obj/item/stock_parts/scanning_module" = 1, + "/obj/item/stack/cable_coil" = 5 + ) + /obj/item/circuitboard/candymachine name = T_BOARD("candy machine") desc = "The circuitboard for a candy machine." diff --git a/code/game/objects/items/weapons/storage/fancy.dm b/code/game/objects/items/weapons/storage/fancy.dm index 9ab3174d76d..cd7812e9d9e 100644 --- a/code/game/objects/items/weapons/storage/fancy.dm +++ b/code/game/objects/items/weapons/storage/fancy.dm @@ -574,7 +574,7 @@ var/open = 0 // Is the box open? var/ismessy = 0 // Fancy mess on the lid - var/obj/item/reagent_containers/food/snacks/sliceable/pizza/pizza // Content pizza + var/obj/item/reagent_containers/food/snacks/pizza // Content pizza var/pizza_type var/list/boxes = list() // If the boxes are stacked, they come here var/boxtag = "" @@ -699,7 +699,7 @@ return - if(istype(attacking_item, /obj/item/reagent_containers/food/snacks/sliceable/pizza/)) // Long ass fucking object name + if(istype(attacking_item, /obj/item/reagent_containers/food/snacks/sliceable/pizza/) || istype(attacking_item, /obj/item/reagent_containers/food/snacks/variable/pizza)) // Long ass fucking object name if(src.open) user.drop_from_inventory(attacking_item, src) diff --git a/code/modules/cargo/bounties/bot.dm b/code/modules/cargo/bounties/bot.dm index 9a21baae984..f7d9dcc9b34 100644 --- a/code/modules/cargo/bounties/bot.dm +++ b/code/modules/cargo/bounties/bot.dm @@ -8,11 +8,10 @@ /datum/bounty/item/bot/farmbot name = "Farmbot" - description = "After a k'ois incident multiple botanists were hospitalized. Provide a few farmbots to handle their duties while they recover." + description = "After a k'ois incident multiple botanists were hospitalized. Provide a farmbot to handle their duties while they recover." reward_low = 370 reward_high = 430 - required_count = 3 - random_count = 1 + required_count = 1 wanted_types = list(/mob/living/bot/farmbot) /datum/bounty/item/bot/medbot diff --git a/code/modules/cooking/machinery/cooking_machines/fryer.dm b/code/modules/cooking/machinery/cooking_machines/fryer.dm index 5e767d3dbe0..a26b2d82d25 100644 --- a/code/modules/cooking/machinery/cooking_machines/fryer.dm +++ b/code/modules/cooking/machinery/cooking_machines/fryer.dm @@ -22,6 +22,12 @@ /obj/item/reagent_containers/cooking_container/fryer ) + component_types = list( + /obj/item/circuitboard/fryer, + /obj/item/stock_parts/capacitor = 3, + /obj/item/stock_parts/scanning_module = 1, + /obj/item/stock_parts/matter_bin = 2) + var/datum/reagents/oil var/optimal_oil = 9000//90 litres of cooking oil diff --git a/code/modules/cooking/machinery/cooking_machines/microwave.dm b/code/modules/cooking/machinery/cooking_machines/microwave.dm index ce1492387b9..b4f859e53c4 100644 --- a/code/modules/cooking/machinery/cooking_machines/microwave.dm +++ b/code/modules/cooking/machinery/cooking_machines/microwave.dm @@ -30,6 +30,12 @@ /// Multiplier for break chance var/break_multiplier = 1.0 + component_types = list( + /obj/item/circuitboard/microwave, + /obj/item/stock_parts/capacitor = 3, + /obj/item/stock_parts/scanning_module = 1, + /obj/item/stock_parts/matter_bin = 2) + starts_with = list( /obj/item/reagent_containers/cooking_container/microwave_plate ) diff --git a/code/modules/cooking/machinery/cooking_machines/oven.dm b/code/modules/cooking/machinery/cooking_machines/oven.dm index d5d54d7c0b9..761ec0487d6 100644 --- a/code/modules/cooking/machinery/cooking_machines/oven.dm +++ b/code/modules/cooking/machinery/cooking_machines/oven.dm @@ -26,6 +26,13 @@ var/door_open_overlay = "ovenopen_on" var/door_closed_overlay = "ovenclosed_on" + component_types = list( + /obj/item/circuitboard/oven, + /obj/item/stock_parts/capacitor = 3, + /obj/item/stock_parts/scanning_module = 1, + /obj/item/stock_parts/matter_bin = 2) + + starts_with = list( /obj/item/reagent_containers/cooking_container/oven, /obj/item/reagent_containers/cooking_container/oven, diff --git a/code/modules/cooking/machinery/cooking_machines/stove.dm b/code/modules/cooking/machinery/cooking_machines/stove.dm index 1bbabb66163..ea7431e465e 100644 --- a/code/modules/cooking/machinery/cooking_machines/stove.dm +++ b/code/modules/cooking/machinery/cooking_machines/stove.dm @@ -22,6 +22,12 @@ stat = POWEROFF //Starts turned off + component_types = list( + /obj/item/circuitboard/stove, + /obj/item/stock_parts/capacitor = 3, + /obj/item/stock_parts/scanning_module = 1, + /obj/item/stock_parts/matter_bin = 2) + starts_with = list( /obj/item/reagent_containers/cooking_container/skillet, /obj/item/reagent_containers/cooking_container/pot, diff --git a/code/modules/hydroponics/seed.dm b/code/modules/hydroponics/seed.dm index 348fb9eb0d1..49de3a96d66 100644 --- a/code/modules/hydroponics/seed.dm +++ b/code/modules/hydroponics/seed.dm @@ -790,7 +790,7 @@ return FALSE user.visible_message(SPAN_WARNING("[user] starts harvesting \the [display_name]")) - if (doafter > 0 && !do_after(user, doafter)) + if (doafter > 0 && !do_after(user, doafter, do_flags = DO_BOTH_UNIQUE_ACT | DO_USER_SAME_HAND | DO_SHOW_PROGRESS)) to_chat(user, SPAN_DANGER("You were interrupted while trying to harvest \the [display_name]")) return FALSE diff --git a/code/modules/integrated_electronics/core/assemblies.dm b/code/modules/integrated_electronics/core/assemblies.dm index 5cf571d5c4e..0c850215650 100644 --- a/code/modules/integrated_electronics/core/assemblies.dm +++ b/code/modules/integrated_electronics/core/assemblies.dm @@ -200,8 +200,11 @@ /obj/item/electronic_assembly/feedback_hints(mob/user, distance, is_adjacent) . = ..() - if(is_adjacent && opened) - for(var/obj/item/integrated_circuit/IC in contents) + for(var/obj/item/integrated_circuit/IC in contents) + var/examined = IC.external_examine() + if(length(examined)) + . += examined + if(is_adjacent && opened) . += SPAN_NOTICE("It contains \a [IC].") /obj/item/electronic_assembly/proc/get_part_complexity() @@ -246,6 +249,9 @@ to_chat(user, SPAN_WARNING("You can't seem to add the '[IC.name]', since this setup's too complicated for the case.")) return FALSE + if(!user.unEquip(IC)) + return FALSE + if(!IC.forceMove(src)) return FALSE @@ -264,9 +270,6 @@ /obj/item/electronic_assembly/attackby(obj/item/attacking_item, mob/user) if(istype(attacking_item, /obj/item/integrated_circuit)) - if(!user.unEquip(attacking_item)) - return FALSE - if(add_circuit(attacking_item, user)) to_chat(user, SPAN_NOTICE("You slide \the [attacking_item] inside \the [src].")) playsound(get_turf(src), 'sound/items/Deconstruct.ogg', 50, 1) diff --git a/code/modules/integrated_electronics/core/assemblies/electronic_radio_headset.dm b/code/modules/integrated_electronics/core/assemblies/electronic_radio_headset.dm index fa9416efe6b..8df66d2d518 100644 --- a/code/modules/integrated_electronics/core/assemblies/electronic_radio_headset.dm +++ b/code/modules/integrated_electronics/core/assemblies/electronic_radio_headset.dm @@ -64,13 +64,12 @@ /obj/item/radio/headset/circuitry/feedback_hints(mob/user, distance, is_adjacent) . = ..() - if(distance <= 1 && !circuit_assembly?.opened) - return - var/obj/item/electronic_assembly/E = get_cloneable_assembly() if(E) - for(var/obj/item/integrated_circuit/IC in E.contents) - . += SPAN_NOTICE("It contains \a [IC].") + for(var/obj/item/integrated_circuit/IC in contents) + IC.external_examine() + if(is_adjacent && circuit_assembly?.opened) + . += SPAN_NOTICE("It contains \a [IC].") /obj/item/radio/headset/circuitry/proc/clone_with_integrated_assembly(atom/location, obj/item/integrated_circuit_printer/printer, obj/item/electronic_assembly/source_assembly) if(!location || !printer || !source_assembly) diff --git a/code/modules/integrated_electronics/core/assemblies/generic.dm b/code/modules/integrated_electronics/core/assemblies/generic.dm index 3ac9921c4e8..60b7e3c34a0 100644 --- a/code/modules/integrated_electronics/core/assemblies/generic.dm +++ b/code/modules/integrated_electronics/core/assemblies/generic.dm @@ -284,10 +284,12 @@ if(get_dist(on_wall, user) > 1) return - var/ndir = get_dir(on_wall, user) + var/ndir = get_dir(user, on_wall) if(!(ndir in GLOB.cardinals)) return + dir = ndir + var/turf/T = get_turf(user) if(!istype(T, /turf/simulated/floor)) to_chat(user, SPAN_WARNING("You cannot place \the [src] on this spot!")) diff --git a/code/modules/integrated_electronics/core/integrated_circuit.dm b/code/modules/integrated_electronics/core/integrated_circuit.dm index 5081dbb3d53..c601fb9dbdf 100644 --- a/code/modules/integrated_electronics/core/integrated_circuit.dm +++ b/code/modules/integrated_electronics/core/integrated_circuit.dm @@ -5,12 +5,12 @@ a creative player the means to solve many problems. Circuits are held inside an /obj/item/integrated_circuit/examine(mob/user, distance, is_adjacent, infix, suffix, show_extended) interact(user) - external_examine(user) + . += external_examine(user) . = ..() // This should be used when someone is examining from an 'outside' perspective, e.g. reading a screen or LED. /obj/item/integrated_circuit/proc/external_examine(mob/user) - any_examine(user) + return any_examine(user) /obj/item/integrated_circuit/proc/any_examine(mob/user) . = list() @@ -302,6 +302,8 @@ a creative player the means to solve many problems. Circuits are held inside an disconnect_all() var/turf/T = get_turf(src) forceMove(T) + if(Adjacent(usr, src)) + usr.put_in_hands(src) assembly = null playsound(T, 'sound/items/crowbar_pry.ogg', 50, 1) to_chat(usr, SPAN_NOTICE("You pop \the [src] out of the case, and slide it out.")) diff --git a/code/modules/integrated_electronics/core/printer.dm b/code/modules/integrated_electronics/core/printer.dm index e89579c7830..7ce0163ccf7 100644 --- a/code/modules/integrated_electronics/core/printer.dm +++ b/code/modules/integrated_electronics/core/printer.dm @@ -499,11 +499,14 @@ metal -= cost phoron -= phoron_cost - + var/new_build if(is_printed_assembly_container) - new build_type(get_turf(loc), TRUE) + new_build = new build_type(get_turf(loc), TRUE) else - new build_type(get_turf(loc)) + new_build = new build_type(get_turf(loc)) + + if(Adjacent(usr, src)) + usr.put_in_hands(new_build) return TRUE diff --git a/code/modules/integrated_electronics/core/tools.dm b/code/modules/integrated_electronics/core/tools.dm index 211c7f97fdb..3c715e4006f 100644 --- a/code/modules/integrated_electronics/core/tools.dm +++ b/code/modules/integrated_electronics/core/tools.dm @@ -234,8 +234,9 @@ /obj/item/electronic_assembly, /obj/item/integrated_electronics, /obj/item/crowbar, - /obj/item/screwdriver, - /obj/item/multitool + /obj/item/integrated_electronics/wirer, + /obj/item/integrated_electronics/debugger, + /obj/item/integrated_electronics/detailer ) make_exact_fit = TRUE @@ -255,8 +256,9 @@ new /obj/item/electronic_assembly(src) new /obj/item/assembly/electronic_assembly(src) new /obj/item/assembly/electronic_assembly(src) - new /obj/item/multitool(src) - new /obj/item/screwdriver(src) + new /obj/item/integrated_electronics/wirer(src) + new /obj/item/integrated_electronics/debugger(src) + new /obj/item/integrated_electronics/detailer(src) new /obj/item/crowbar(src) /obj/item/storage/bag/circuits/all/fill() @@ -281,6 +283,7 @@ new /obj/item/electronic_assembly/drone(src) new /obj/item/integrated_electronics/wirer(src) new /obj/item/integrated_electronics/debugger(src) + new /obj/item/integrated_electronics/detailer(src) new /obj/item/crowbar(src) /obj/item/storage/bag/circuits/mini diff --git a/html/changelogs/FixesAndFixes.yml b/html/changelogs/FixesAndFixes.yml new file mode 100644 index 00000000000..c8103c48efb --- /dev/null +++ b/html/changelogs/FixesAndFixes.yml @@ -0,0 +1,14 @@ +author: TheGreyWikf + +delete-after: True + +changes: + - bugfix: "Integrated circuits can now display screen text and other examine related things." + - bugfix: "Fixed the direction of the wall mounted integrated circuit when placed." + - bugfix: "Fixed that the integrated circuit kit had the wrong tools." + - bugfix: "Fixed that the integrated circuit printer put things on the turf instead of in hand." + - bugfix: "Fixed that removing integrated circuit components put them on the turf, and that they were dropped if they did not fit inside the device." + - bugfix: "Harvesting a plant multiple times by clicking it repeatedly before it finishes is no longer possible." + - bugfix: "The kitchen machinery can now be upgraded." + - bugfix: "The farmbot requirement in bounties was reduced." + - bugfix: "Fixes the inability to put custom pizzas in the pizza box."