diff --git a/code/game/objects/random/food.dm b/code/game/objects/random/food.dm index 0aaf247149e..64a95915110 100644 --- a/code/game/objects/random/food.dm +++ b/code/game/objects/random/food.dm @@ -255,20 +255,6 @@ /obj/item/pizzabox/pepperoni, ) -//Sometimes the chef will have spare oil in storage. -//Sometimes they wont, and will need to order it from cargo -//Variety is the spice of life! -/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 - ) - /obj/random/chocolate name = "random chocolate" desc = "This is a random chocolate." diff --git a/code/modules/cargo/items/miscellaneous.dm b/code/modules/cargo/items/miscellaneous.dm index 019200393fb..b444207e2f6 100644 --- a/code/modules/cargo/items/miscellaneous.dm +++ b/code/modules/cargo/items/miscellaneous.dm @@ -26,6 +26,20 @@ groupable = TRUE spawn_amount = 1 +/singleton/cargo_item/cookingoil + category = "miscellaneous" + name = "cooking oil tank" + supplier = "orion" + description = "A tank filled with cooking oil." + price = 450 + items = list( + /obj/structure/reagent_dispensers/cookingoil + ) + access = 0 + container_type = "box" + groupable = TRUE + spawn_amount = 1 + /singleton/cargo_item/sculptingblock category = "miscellaneous" name = "sculpting block" diff --git a/code/modules/cargo/random_stock/t2_uncommon.dm b/code/modules/cargo/random_stock/t2_uncommon.dm index b61da217ca5..7ac90f8382b 100644 --- a/code/modules/cargo/random_stock/t2_uncommon.dm +++ b/code/modules/cargo/random_stock/t2_uncommon.dm @@ -331,15 +331,6 @@ STOCK_ITEM_UNCOMMON(bang, 0.5) var/obj/item/gun/bang/B = pick(subtypesof(/obj/item/gun/bang)) new B(L) -STOCK_ITEM_UNCOMMON(cookingoil, 1) - var/turf/T = get_turf(L) - if(!turf_clear(T)) - for(var/turf/U in range(T,1)) - if(turf_clear(U)) - T = U - break - new /obj/structure/reagent_dispensers/cookingoil(T) - STOCK_ITEM_UNCOMMON(coin, 1.3) new /obj/random/coin(L) if(prob(20)) diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm index f6828b668ff..74d63417ff6 100644 --- a/code/modules/reagents/reagent_dispenser.dm +++ b/code/modules/reagents/reagent_dispenser.dm @@ -2,7 +2,7 @@ name = "strange dispenser" desc = "What the fuck is this?" icon = 'icons/obj/reagent_dispensers.dmi' - icon_state = "watertank" + icon_state = "watertank" // Mapping icon density = 1 anchored = 0 maxhealth = OBJECT_HEALTH_HIGH @@ -12,6 +12,7 @@ var/capacity = 1000 var/can_tamper = TRUE var/is_leaking = FALSE + var/has_fill_levels = FALSE // Features base underlay and overlays for 100%, 80%, 60%, 40%, 20% fill levels var/is_persistent = FALSE /obj/structure/reagent_dispensers/mechanics_hints(mob/user, distance, is_adjacent) @@ -29,11 +30,49 @@ /obj/structure/reagent_dispensers/Initialize() . = ..() + if(has_fill_levels) + icon_state = "[icon_state]_underlay" // Replace mapping icon with underlay version for fill level overlay create_reagents(capacity) if (!possible_transfer_amounts) src.verbs -= /obj/structure/reagent_dispensers/verb/set_APTFT if(is_persistent) SSpersistence.objectsRegisterTrack(src) + update_icon() + +/obj/structure/reagent_dispensers/update_icon() + if(!has_fill_levels) + return + ClearOverlays() + + var/level = reagents.total_volume / capacity + var/fill_level_overlay = null + + if(level <= 1.0) + fill_level_overlay = "_100" + if(level <= 0.8) + fill_level_overlay = "_80" + if(level <= 0.6) + fill_level_overlay = "_60" + if(level <= 0.4) + fill_level_overlay = "_40" + if(level <= 0.2) + fill_level_overlay = "_20" + if(level == 0) + fill_level_overlay = null + + if(fill_level_overlay) + AddOverlays("[initial(icon_state)][fill_level_overlay]") + . = ..() + +// Debug verb, uncomment if you are in need to adjust a lot of tanks +// /obj/structure/reagent_dispensers/verb/adjust_regeant_total_volume() +// set name = "Set reagent total volume" +// set category = "Object" +// set src in view(1) +// var/x = tgui_input_number(usr, "Select the total reagent amount for this. ", "[src]", capacity, capacity, 0) +// if (x) +// reagents.total_volume = x +// update_icon() /obj/structure/reagent_dispensers/persistent_objects_get_content() var/list/content = ..() @@ -70,8 +109,8 @@ qdel(src) /obj/structure/reagent_dispensers/attackby(obj/item/attacking_item, mob/user) - var/obj/item/reagent_containers/RG = attacking_item + if (istype(RG)) if(!user.Adjacent(src)) return if(RG.loc != user && !isrobot(user)) return @@ -89,6 +128,7 @@ RG.standard_pour_into(user,src) else to_chat(user,SPAN_NOTICE("The inlet cap on \the [src] is wrenched on tight!")) + update_icon() if (attacking_item.tool_behaviour == TOOL_WRENCH) if(use_check(user, USE_DISALLOW_SPECIALS)) @@ -121,6 +161,7 @@ var/splash_amount = min(amount_per_transfer_from_this,60) //Hard limit of 60 per process reagents.trans_to_turf(get_turf(src),splash_amount) + update_icon() /obj/structure/reagent_dispensers/on_death(damage, damage_flags, damage_type, armor_penetration, obj/weapon) if(!should_use_health) @@ -139,6 +180,7 @@ icon_state = "extinguisher_tank" amount_per_transfer_from_this = 150 // Same volume as extinguisher refillers, quality of life value reagents_to_add = list(/singleton/reagent/toxin/fertilizer/monoammoniumphosphate = 1000) + has_fill_levels = TRUE is_persistent = TRUE // Tanks @@ -148,6 +190,7 @@ icon_state = "watertank" amount_per_transfer_from_this = 300 reagents_to_add = list(/singleton/reagent/water = 1000) + has_fill_levels = TRUE is_persistent = TRUE /obj/structure/reagent_dispensers/lube @@ -155,6 +198,7 @@ desc = "A tank filled with a silly amount of lube." icon_state = "lubetank" amount_per_transfer_from_this = 30 + has_fill_levels = TRUE reagents_to_add = list(/singleton/reagent/lube = 1000) /obj/structure/reagent_dispensers/fueltank @@ -167,6 +211,7 @@ var/armed = 0 var/obj/item/assembly_holder/rig = null reagents_to_add = list(/singleton/reagent/fuel = 1000) + has_fill_levels = TRUE is_persistent = TRUE /obj/structure/reagent_dispensers/fueltank/feedback_hints(mob/user, distance, is_adjacent) @@ -474,6 +519,8 @@ amount_per_transfer_from_this = 120 capacity = 1000 reagents_to_add = list(/singleton/reagent/nutriment/triglyceride/oil/corn = 1000) + has_fill_levels = TRUE + is_persistent = TRUE /obj/structure/reagent_dispensers/cookingoil/bullet_act(obj/projectile/hitting_projectile, def_zone, piercing_hit) . = ..() diff --git a/html/changelogs/fabiank3-storage-tanks-fill-levels.yml b/html/changelogs/fabiank3-storage-tanks-fill-levels.yml new file mode 100644 index 00000000000..3ccbd5c75c4 --- /dev/null +++ b/html/changelogs/fabiank3-storage-tanks-fill-levels.yml @@ -0,0 +1,8 @@ +author: FabianK3, Wowzewow + +delete-after: True + +changes: + - rscadd: "Added persistence for cooking oil tanks." + - rscadd: "Added fill level indicators to water, fuel, extinguisher, lube and cooking oil tanks." + - rscadd: "Added cooking oil tanks to cargo order manifest." diff --git a/icons/obj/reagent_dispensers.dmi b/icons/obj/reagent_dispensers.dmi index 36c90dfebec..d8bbb1e5b96 100644 Binary files a/icons/obj/reagent_dispensers.dmi and b/icons/obj/reagent_dispensers.dmi differ diff --git a/maps/forbiddenMapTypes.json b/maps/forbiddenMapTypes.json index cc8282fd014..341c0667fd7 100644 --- a/maps/forbiddenMapTypes.json +++ b/maps/forbiddenMapTypes.json @@ -7,7 +7,8 @@ "/obj/item/material/ashtray", "/obj/structure/reagent_dispensers/extinguisher", "/obj/structure/reagent_dispensers/watertank", - "/obj/structure/reagent_dispensers/fueltank" + "/obj/structure/reagent_dispensers/fueltank", + "/obj/structure/reagent_dispensers/cookingoil" ] } ] diff --git a/maps/sccv_horizon/sccv_horizon.dmm b/maps/sccv_horizon/sccv_horizon.dmm index 63420df6f8f..ebbc7889caa 100644 --- a/maps/sccv_horizon/sccv_horizon.dmm +++ b/maps/sccv_horizon/sccv_horizon.dmm @@ -93773,13 +93773,6 @@ }, /turf/simulated/floor/holofloor/tiled, /area/horizon/holodeck/source_emptycourt) -"meu" = ( -/obj/effect/floor_decal/industrial/outline/grey, -/obj/structure/reagent_dispensers/cookingoil, -/turf/simulated/floor/tiled/dark/full{ - temperature = 278 - }, -/area/horizon/service/kitchen/freezer) "meB" = ( /turf/simulated/wall/r_wall, /area/horizon/maintenance/deck_1/workshop) @@ -173999,7 +173992,6 @@ /area/horizon/service/hydroponics/garden) "wuD" = ( /obj/effect/floor_decal/industrial/outline/yellow, -/obj/structure/reagent_dispensers/cookingoil, /obj/structure/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 6 }, @@ -290002,7 +289994,7 @@ rSs giD eSD qSg -meu +sjt cHP uYQ eSV diff --git a/maps/sccv_horizon/submaps/ops_warehouse_small_storage.dmm b/maps/sccv_horizon/submaps/ops_warehouse_small_storage.dmm index 2b6b09d8621..02921502948 100644 --- a/maps/sccv_horizon/submaps/ops_warehouse_small_storage.dmm +++ b/maps/sccv_horizon/submaps/ops_warehouse_small_storage.dmm @@ -511,10 +511,6 @@ /obj/random/contraband, /turf/template_noop, /area/template_noop) -"lI" = ( -/obj/random/cookingoil, -/turf/template_noop, -/area/template_noop) "lJ" = ( /obj/random/plushie, /obj/random/plushie, @@ -3443,7 +3439,7 @@ sW Tf Gz Gz -lI +Gz xg Gz Gz