From 77019460ccace9250377c7ecfd53e669a8e649e6 Mon Sep 17 00:00:00 2001 From: FabianK3 <21039694+FabianK3@users.noreply.github.com> Date: Mon, 10 Aug 2026 02:36:44 +0200 Subject: [PATCH] Refactor round start volume of welding packs and fryers (#23027) # Summary This PR adjust welding packs and fryers. Welding packs now spawn empty [on the Horizon] to encourage the persistent welding tanks and fryers have their optimal oil level adjusted to balance out oil refills. **Depends on https://github.com/Aurorastation/Aurora.3/pull/23005**. ## Changes - Added new sprite for empty welding packs. (Regular vs new low variant) image - Welding packs now spawn empty (only on the Horizon and during map load). - Deep fryer no longer contain 9 full tanks of cooking oil. They contain 100u now and make refills using the [persistent cooking oil tanks](https://github.com/Aurorastation/Aurora.3/pull/23005) much more reasonable. Added a wrench to the kitchen for tank handling. --- code/game/objects/random/food.dm | 10 +++++++ .../machinery/cooking_machines/fryer.dm | 2 +- .../reagent_containers/welding_backpack.dm | 25 ++++++++++++++++++ .../fabiank3-empty-liquid-container.yml | 9 +++++++ .../obj/item/reagent_containers/weldpack.dmi | Bin 1391 -> 1885 bytes maps/sccv_horizon/sccv_horizon.dmm | 1 + 6 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 html/changelogs/fabiank3-empty-liquid-container.yml diff --git a/code/game/objects/random/food.dm b/code/game/objects/random/food.dm index 64a95915110..2150e7136ce 100644 --- a/code/game/objects/random/food.dm +++ b/code/game/objects/random/food.dm @@ -273,3 +273,13 @@ /obj/item/reagent_containers/food/snacks/chocolate_bar/laughterbar = 1, /obj/item/storage/box/fancy/readies ) + +/obj/random/cookingoil + name = "random cooking oil" + desc = "Has a 50% chance of spawning a tank of cooking oil, otherwise nothing." + icon = 'icons/obj/reagent_dispensers.dmi' + icon_state = "oiltank" + spawn_nothing_percentage = 50 + spawnlist = list( + /obj/structure/reagent_dispensers/cookingoil + ) diff --git a/code/modules/cooking/machinery/cooking_machines/fryer.dm b/code/modules/cooking/machinery/cooking_machines/fryer.dm index a26b2d82d25..115bf37a676 100644 --- a/code/modules/cooking/machinery/cooking_machines/fryer.dm +++ b/code/modules/cooking/machinery/cooking_machines/fryer.dm @@ -29,7 +29,7 @@ /obj/item/stock_parts/matter_bin = 2) var/datum/reagents/oil - var/optimal_oil = 9000//90 litres of cooking oil + var/optimal_oil = 100 // 1/10 of a cooking oil tank /obj/structure/machinery/appliance/cooker/fryer/get_examine_text(mob/user, distance, is_adjacent, infix, suffix) . = ..() diff --git a/code/modules/reagents/reagent_containers/welding_backpack.dm b/code/modules/reagents/reagent_containers/welding_backpack.dm index d5395a81518..0ce6de89ade 100644 --- a/code/modules/reagents/reagent_containers/welding_backpack.dm +++ b/code/modules/reagents/reagent_containers/welding_backpack.dm @@ -15,6 +15,16 @@ drop_sound = 'sound/items/drop/backpack.ogg' pickup_sound = 'sound/items/pickup/backpack.ogg' +/obj/item/reagent_containers/weldpack/Initialize(mapload) + var/turf/T = get_turf(src) + if(mapload && T && is_station_level(T.z)) + // If the weldpack is spawned on a station level during map load, don't give it any fuel. + // This is in support of persistent welding fuel tanks and only for the persistent levels. + reagents_to_add = null + create_reagents(volume) // Ensure reagents datum is created, even if empty + update_volume() + . = ..() // After reagents_to_add is updated + /obj/item/reagent_containers/weldpack/feedback_hints(mob/user, distance, is_adjacent) . += ..() if(ishuman(loc) && user != loc) // what if we want to sneak some reagents out of somewhere? @@ -27,6 +37,20 @@ else . += SPAN_WARNING("\The [src] is empty!") +/obj/item/reagent_containers/weldpack/proc/update_volume() + var/fill_level = reagents.total_volume / volume + if(fill_level <= 0.1) + icon_state = "welderpack_low" + item_state = "welderpack_low" + else + icon_state = "welderpack" + item_state = "welderpack" + update_icon() + update_worn_icon() + +/obj/item/reagent_containers/weldpack/on_reagent_change() + update_volume() + /obj/item/reagent_containers/weldpack/attackby(obj/item/attacking_item, mob/user) if(attacking_item.tool_behaviour == TOOL_WRENCH) if(atom_flags & ATOM_FLAG_OPEN_CONTAINER) @@ -60,5 +84,6 @@ reagents.trans_type_to(attacking_item, /singleton/reagent/fuel, min(fuel_volume, T.reagents.maximum_volume - tool_fuel_volume)) to_chat(user, SPAN_NOTICE("Welder refilled!")) playsound(loc, 'sound/effects/refill.ogg', 50, 1, -6) + update_volume() return return ..() diff --git a/html/changelogs/fabiank3-empty-liquid-container.yml b/html/changelogs/fabiank3-empty-liquid-container.yml new file mode 100644 index 00000000000..7b84a0a3a3f --- /dev/null +++ b/html/changelogs/fabiank3-empty-liquid-container.yml @@ -0,0 +1,9 @@ +author: FabianK3 + +delete-after: True + +changes: + - balance: "Welding packs (on the Horizon) now start empty to support persistent welding fuel tanks." + - imageadd: "Added a sprite for empty welding packs." + - balance: "Reduced the 'optimal' oil amount in the deep fryers from 9000u to 100u. One cooking oil tank can now be used multiple times instead of needing 9 tanks to refill it." + - rscadd: "Added a wrench to the kitchen to allow better handling of cooking oil tanks." diff --git a/icons/obj/item/reagent_containers/weldpack.dmi b/icons/obj/item/reagent_containers/weldpack.dmi index a6901e0010432cb30e646ce37a2da785560b192f..46edef7bdc0b2c363342768a65df4d38b176934e 100644 GIT binary patch delta 1624 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