From 1d1a016202308c3ee07f0f3e627f066c0aeb6092 Mon Sep 17 00:00:00 2001 From: MistakeNot4892 Date: Mon, 11 Dec 2023 19:38:05 +1100 Subject: [PATCH 1/2] Generalizing diggable turfs and adding shovel quality to pickaxes/drills. --- code/__defines/tools.dm | 18 +++--- code/__defines/turfs.dm | 4 +- code/game/gamemodes/meteor/meteors.dm | 2 +- code/game/objects/items/stacks/rods.dm | 2 +- .../objects/items/weapons/surgery_tools.dm | 2 +- code/game/objects/structures/flora/potted.dm | 4 +- code/game/objects/structures/pit.dm | 14 ++--- code/game/turfs/exterior/_exterior.dm | 30 ++++----- code/game/turfs/exterior/exterior_concrete.dm | 4 +- code/game/turfs/exterior/exterior_mud.dm | 22 +++++-- code/game/turfs/exterior/exterior_rock.dm | 3 + code/game/turfs/exterior/exterior_sand.dm | 10 ++- code/game/turfs/exterior/exterior_seafloor.dm | 3 + code/game/turfs/exterior/exterior_wall.dm | 1 + code/game/turfs/exterior/exterior_water.dm | 3 + code/game/turfs/simulated/floor_acts.dm | 3 +- code/game/turfs/simulated/floor_attackby.dm | 5 -- code/game/turfs/turf.dm | 54 +++++++++++++++- .../random_exoplanet/planet_types/grass.dm | 2 +- .../random_exoplanet/planet_types/meat.dm | 3 + .../solids/materials_solid_mundane.dm | 22 ++++--- code/modules/materials/materials_ore.dm | 6 +- code/modules/mechs/equipment/utility.dm | 18 +++--- code/modules/mining/drilling/drill_act.dm | 15 +---- code/modules/mining/mine_items.dm | 43 ++++++++++++- code/modules/mining/mine_turfs.dm | 62 +++++-------------- code/modules/paperwork/pen/pen.dm | 2 +- code/modules/power/geothermal/_geothermal.dm | 5 +- code/modules/random_map/_random_map_setup.dm | 36 ++++++----- code/modules/random_map/noise/ore.dm | 36 +++++------ code/modules/random_map/noise/seafloor.dm | 10 +-- code/modules/surgery/crystal.dm | 4 +- code/modules/surgery/implant.dm | 2 +- maps/ministation/ministation.dmm | 4 +- mods/species/vox/organs_vox.dm | 1 + 35 files changed, 262 insertions(+), 193 deletions(-) diff --git a/code/__defines/tools.dm b/code/__defines/tools.dm index 9553d3fa83f..31f2f62419d 100644 --- a/code/__defines/tools.dm +++ b/code/__defines/tools.dm @@ -11,15 +11,15 @@ #define TOOL_PEN /decl/tool_archetype/pen // Surgical tools. -#define TOOL_SCALPEL /decl/tool_archetype/scalpel -#define TOOL_RETRACTOR /decl/tool_archetype/retractor -#define TOOL_HEMOSTAT /decl/tool_archetype/hemostat -#define TOOL_SAW /decl/tool_archetype/saw -#define TOOL_CAUTERY /decl/tool_archetype/cautery -#define TOOL_SUTURES /decl/tool_archetype/sutures -#define TOOL_BONE_GEL /decl/tool_archetype/bone_gel -#define TOOL_BONE_SETTER /decl/tool_archetype/bone_setter -#define TOOL_DRILL /decl/tool_archetype/surgical_drill +#define TOOL_SCALPEL /decl/tool_archetype/scalpel +#define TOOL_RETRACTOR /decl/tool_archetype/retractor +#define TOOL_HEMOSTAT /decl/tool_archetype/hemostat +#define TOOL_SAW /decl/tool_archetype/saw +#define TOOL_CAUTERY /decl/tool_archetype/cautery +#define TOOL_SUTURES /decl/tool_archetype/sutures +#define TOOL_BONE_GEL /decl/tool_archetype/bone_gel +#define TOOL_BONE_SETTER /decl/tool_archetype/bone_setter +#define TOOL_SURGICAL_DRILL /decl/tool_archetype/surgical_drill // Tool qualities (positive multplier) #define TOOL_QUALITY_WORST 0.1 diff --git a/code/__defines/turfs.dm b/code/__defines/turfs.dm index 2747a4a6987..1e85f023d18 100644 --- a/code/__defines/turfs.dm +++ b/code/__defines/turfs.dm @@ -39,8 +39,8 @@ #define EXT_EDGE_VOLCANIC (12 * EXT_LAYER_CONSTANT) #define EXT_EDGE_DIRT (20 * EXT_LAYER_CONSTANT) #define EXT_EDGE_BARREN (21 * EXT_LAYER_CONSTANT) -#define EXT_EDGE_MUD (21 * EXT_LAYER_CONSTANT) -#define EXT_EDGE_MUD_DARK (22 * EXT_LAYER_CONSTANT) +#define EXT_EDGE_CLAY (21 * EXT_LAYER_CONSTANT) +#define EXT_EDGE_MUD (22 * EXT_LAYER_CONSTANT) #define EXT_EDGE_SAND (30 * EXT_LAYER_CONSTANT) #define EXT_EDGE_CHLORINE_SAND (31 * EXT_LAYER_CONSTANT) #define EXT_EDGE_WATER (40 * EXT_LAYER_CONSTANT) diff --git a/code/game/gamemodes/meteor/meteors.dm b/code/game/gamemodes/meteor/meteors.dm index 3289a214b08..f5b19a3e213 100644 --- a/code/game/gamemodes/meteor/meteors.dm +++ b/code/game/gamemodes/meteor/meteors.dm @@ -239,7 +239,7 @@ var/global/list/meteors_cataclysm = list(\ hits = 1 hitpwr = 3 dropamt = 1 - meteordrop = /obj/item/stack/material/ore/glass + meteordrop = /obj/item/stack/material/ore/sand //Medium-sized /obj/effect/meteor/medium diff --git a/code/game/objects/items/stacks/rods.dm b/code/game/objects/items/stacks/rods.dm index 93f7b8cc08a..8a768f4b5e1 100644 --- a/code/game/objects/items/stacks/rods.dm +++ b/code/game/objects/items/stacks/rods.dm @@ -46,7 +46,7 @@ update_icon() throwforce = round(0.25*material.get_edge_damage()) force = round(0.5*material.get_blunt_damage()) - set_extension(src, /datum/extension/tool, list(TOOL_DRILL = TOOL_QUALITY_WORST)) + set_extension(src, /datum/extension/tool, list(TOOL_SURGICAL_DRILL = TOOL_QUALITY_WORST)) /obj/item/stack/material/rods/update_state_from_amount() if(max_icon_state && amount > 0.5*max_amount) diff --git a/code/game/objects/items/weapons/surgery_tools.dm b/code/game/objects/items/weapons/surgery_tools.dm index ecb616a6788..3c24838ae47 100644 --- a/code/game/objects/items/weapons/surgery_tools.dm +++ b/code/game/objects/items/weapons/surgery_tools.dm @@ -88,7 +88,7 @@ /obj/item/surgicaldrill/Initialize() . = ..() - set_extension(src, /datum/extension/tool, list(TOOL_DRILL = TOOL_QUALITY_DEFAULT)) + set_extension(src, /datum/extension/tool, list(TOOL_SURGICAL_DRILL = TOOL_QUALITY_DEFAULT)) /* * Scalpel diff --git a/code/game/objects/structures/flora/potted.dm b/code/game/objects/structures/flora/potted.dm index 6b0d460cc25..c5e4d41e47a 100644 --- a/code/game/objects/structures/flora/potted.dm +++ b/code/game/objects/structures/flora/potted.dm @@ -14,8 +14,8 @@ snd_cut = 'sound/effects/break_ceramic.ogg' material = /decl/material/solid/stone/ceramic matter = list( - /decl/material/solid/clay = MATTER_AMOUNT_REINFORCEMENT, - /decl/material/solid/sand = MATTER_AMOUNT_REINFORCEMENT, + /decl/material/solid/clay = MATTER_AMOUNT_REINFORCEMENT, + /decl/material/solid/sand = MATTER_AMOUNT_REINFORCEMENT, /decl/material/solid/organic/plantmatter = MATTER_AMOUNT_SECONDARY, //#TODO: Maybe eventually drop the plant, or some seeds or something? ) diff --git a/code/game/objects/structures/pit.dm b/code/game/objects/structures/pit.dm index 4c5a01210d7..7d9491315eb 100644 --- a/code/game/objects/structures/pit.dm +++ b/code/game/objects/structures/pit.dm @@ -11,13 +11,14 @@ /obj/structure/pit/attackby(obj/item/W, mob/user) if(IS_SHOVEL(W)) - if(W.do_tool_interaction(TOOL_SHOVEL, user, src, 5 SECONDS, "[open ? "filling up" : "digging open"]", "[open ? "fills up" : "digs open"]")) + var/dig_message = open ? "filling in" : "excavating" + if(W.do_tool_interaction(TOOL_SHOVEL, user, src, 5 SECONDS, dig_message, dig_message)) if(open) close(user) else open() else - to_chat(user, SPAN_NOTICE("You stop shoveling.")) + to_chat(user, SPAN_NOTICE("You stop digging.")) return TRUE if (!open && istype(W, /obj/item/stack/material) && W.material?.type == /decl/material/solid/organic/wood) @@ -57,21 +58,16 @@ //If we close the pit without anything inside, just leave the soil undisturbed var/turf/T = get_turf(src) - if(!length((T.contents - src))) + if(length(T.contents - src) <= 0) qdel(src) return - for(var/atom/movable/A in T) if(!A.anchored && A != user && A.simulated) A.forceMove(src) - update_icon() /obj/structure/pit/return_air() - if(open && loc) - return loc.return_air() - else - return null + return open && loc?.return_air() /obj/structure/pit/proc/digout(mob/escapee) var/breakout_time = 1 //2 minutes by default diff --git a/code/game/turfs/exterior/_exterior.dm b/code/game/turfs/exterior/_exterior.dm index 95d140b196c..7fe91eec612 100644 --- a/code/game/turfs/exterior/_exterior.dm +++ b/code/game/turfs/exterior/_exterior.dm @@ -8,7 +8,6 @@ turf_flags = TURF_FLAG_BACKGROUND | TURF_IS_HOLOMAP_PATH zone_membership_candidate = TRUE var/base_color - var/diggable = 1 var/dirt_color = "#7c5e42" var/possible_states = 0 var/icon_edge_layer = -1 @@ -19,6 +18,15 @@ ///Overrides the level's strata for this turf. var/strata_override var/decl/material/material + /// Whether or not sand/clay has been dug up here. + var/dug = FALSE + +/turf/exterior/can_be_dug() + return !density && !is_open() + +/turf/exterior/clear_diggable_resources() + dug = TRUE + ..() /turf/exterior/Initialize(mapload, no_update_icon = FALSE) @@ -78,25 +86,9 @@ for(var/obj/O in src) O.hide(0) -/turf/exterior/attackby(obj/item/C, mob/user) - //#TODO: Add some way to dig to lower levels? - if(diggable && IS_SHOVEL(C)) - if(C.do_tool_interaction(TOOL_SHOVEL, user, src, 5 SECONDS)) - new /obj/structure/pit(src) - diggable = FALSE - else - to_chat(user, SPAN_NOTICE("You stop shoveling.")) - return TRUE - - if(istype(C, /obj/item/stack/tile)) - var/obj/item/stack/tile/T = C - T.try_build_turf(user, src) - return TRUE - - . = ..() - /turf/exterior/explosion_act(severity) - SHOULD_CALL_PARENT(FALSE) + SHOULD_CALL_PARENT(TRUE) + ..() if(!istype(src, get_base_turf_by_area(src)) && (severity == 1 || (severity == 2 && prob(40)))) ChangeTurf(get_base_turf_by_area(src)) diff --git a/code/game/turfs/exterior/exterior_concrete.dm b/code/game/turfs/exterior/exterior_concrete.dm index 4a1fb989f44..cd50d2256e7 100644 --- a/code/game/turfs/exterior/exterior_concrete.dm +++ b/code/game/turfs/exterior/exterior_concrete.dm @@ -14,10 +14,12 @@ var/global/exterior_broken_states = icon_states('icons/turf/exterior/broken.dmi' name = "concrete" desc = "A flat expanse of artificial stone-like artificial material." icon = 'icons/turf/exterior/concrete.dmi' - diggable = FALSE var/broken var/burned +/turf/exterior/concrete/can_be_dug() + return FALSE + /turf/exterior/concrete/flooded flooded = TRUE color = COLOR_LIQUID_WATER diff --git a/code/game/turfs/exterior/exterior_mud.dm b/code/game/turfs/exterior/exterior_mud.dm index 6f73f298485..018ff3548da 100644 --- a/code/game/turfs/exterior/exterior_mud.dm +++ b/code/game/turfs/exterior/exterior_mud.dm @@ -1,13 +1,25 @@ +/turf/exterior/clay + name = "clay" + desc = "Thick, claggy clay." + icon = 'icons/turf/exterior/mud_light.dmi' + icon_edge_layer = EXT_EDGE_CLAY + footstep_type = /decl/footsteps/mud + +/turf/exterior/clay/get_diggable_resources() + return dug ? null : list(/obj/item/stack/material/ore/clay = list(3, 2)) + +/turf/exterior/clay/flooded + flooded = TRUE + /turf/exterior/mud name = "mud" - desc = "Thick, claggy and waterlogged." - icon = 'icons/turf/exterior/mud_light.dmi' + desc = "Thick, waterlogged mud." + icon = 'icons/turf/exterior/mud_dark.dmi' icon_edge_layer = EXT_EDGE_MUD footstep_type = /decl/footsteps/mud -/turf/exterior/mud/dark - icon = 'icons/turf/exterior/mud_dark.dmi' - icon_edge_layer = EXT_EDGE_MUD_DARK +/turf/exterior/mud/flooded + flooded = TRUE /turf/exterior/dry name = "dry mud" diff --git a/code/game/turfs/exterior/exterior_rock.dm b/code/game/turfs/exterior/exterior_rock.dm index 1bfe367da82..758b907ffc9 100644 --- a/code/game/turfs/exterior/exterior_rock.dm +++ b/code/game/turfs/exterior/exterior_rock.dm @@ -3,6 +3,9 @@ icon = 'icons/turf/exterior/rock.dmi' icon_edge_layer = EXT_EDGE_VOLCANIC +/turf/exterior/rock/can_be_dug() + return FALSE + /turf/exterior/rock/Initialize(mapload, no_update_icon) . = ..() material = SSmaterials.get_strata_material_type(src) diff --git a/code/game/turfs/exterior/exterior_sand.dm b/code/game/turfs/exterior/exterior_sand.dm index 491a9c6fcfb..4dad302d436 100644 --- a/code/game/turfs/exterior/exterior_sand.dm +++ b/code/game/turfs/exterior/exterior_sand.dm @@ -4,7 +4,7 @@ dirt_color = "#ae9e66" footstep_type = /decl/footsteps/sand icon = 'icons/turf/exterior/sand.dmi' - icon_edge_layer = EXT_EDGE_SAND + icon_edge_layer = EXT_EDGE_SAND icon_has_corners = TRUE possible_states = 4 @@ -12,10 +12,16 @@ if((temperature > T0C + 1700 && prob(5)) || temperature > T0C + 3000) melt() +/turf/exterior/sand/get_diggable_resources() + return dug ? null : list(/obj/item/stack/material/ore/sand = list(3, 2)) + /turf/exterior/sand/melt() if(icon_state != "glass") SetName("molten silica") desc = "A glassed patch of sand." icon_state = "glass" icon_edge_layer = -1 - diggable = FALSE + clear_diggable_resources() + +/turf/exterior/sand/can_be_dug() + return icon_state != "glass" && ..() diff --git a/code/game/turfs/exterior/exterior_seafloor.dm b/code/game/turfs/exterior/exterior_seafloor.dm index 4ab69066acd..97b8cd64262 100644 --- a/code/game/turfs/exterior/exterior_seafloor.dm +++ b/code/game/turfs/exterior/exterior_seafloor.dm @@ -5,6 +5,9 @@ icon_edge_layer = EXT_EDGE_SEAFLOOR var/detail_decal +/turf/exterior/seafloor/get_diggable_resources() + return dug ? null : list(/obj/item/stack/material/ore/sand = list(3, 2)) + /turf/exterior/seafloor/flooded flooded = TRUE color = COLOR_LIQUID_WATER diff --git a/code/game/turfs/exterior/exterior_wall.dm b/code/game/turfs/exterior/exterior_wall.dm index f46bceeb40d..856fe356cde 100644 --- a/code/game/turfs/exterior/exterior_wall.dm +++ b/code/game/turfs/exterior/exterior_wall.dm @@ -64,6 +64,7 @@ var/global/list/natural_walls = list() queue_icon_update() /turf/exterior/wall/explosion_act(severity) + SHOULD_CALL_PARENT(FALSE) if(severity == 1 || (severity == 2 && prob(40))) dismantle_wall() diff --git a/code/game/turfs/exterior/exterior_water.dm b/code/game/turfs/exterior/exterior_water.dm index 9f1f1174ebb..d273ef0aad3 100644 --- a/code/game/turfs/exterior/exterior_water.dm +++ b/code/game/turfs/exterior/exterior_water.dm @@ -20,3 +20,6 @@ O.reagents.add_reagent(reagent_type, fill_amount) return TRUE . = ..() + +/turf/exterior/water/can_be_dug() + return FALSE diff --git a/code/game/turfs/simulated/floor_acts.dm b/code/game/turfs/simulated/floor_acts.dm index 421d85e8d31..acb8866719d 100644 --- a/code/game/turfs/simulated/floor_acts.dm +++ b/code/game/turfs/simulated/floor_acts.dm @@ -1,5 +1,6 @@ /turf/simulated/floor/explosion_act(severity) - SHOULD_CALL_PARENT(FALSE) + SHOULD_CALL_PARENT(TRUE) + ..() if(severity == 1) ChangeTurf(get_base_turf_by_area(src)) else if(severity == 2) diff --git a/code/game/turfs/simulated/floor_attackby.dm b/code/game/turfs/simulated/floor_attackby.dm index b962c1e9245..74a2f36c6df 100644 --- a/code/game/turfs/simulated/floor_attackby.dm +++ b/code/game/turfs/simulated/floor_attackby.dm @@ -12,11 +12,6 @@ if(!C || !user) return 0 - if(istype(C, /obj/item/stack/tile/roof)) - var/obj/item/stack/tile/roof/T = C - T.try_build_turf(user, src) - return TRUE - if(IS_COIL(C) || (flooring && istype(C, /obj/item/stack/material/rods))) return ..(C, user) diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index 0a8c26541be..1b77b1a5e47 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -166,7 +166,8 @@ /turf/explosion_act(severity) SHOULD_CALL_PARENT(FALSE) - return + if(severity == 1 || (severity == 2 && prob(70))) + drop_diggable_resources() /turf/proc/is_solid_structure() return !(turf_flags & TURF_FLAG_BACKGROUND) || locate(/obj/structure/lattice, src) @@ -197,6 +198,23 @@ /turf/attackby(obj/item/W, mob/user) + if(is_floor()) + + if(istype(W, /obj/item/stack/tile)) + var/obj/item/stack/tile/T = W + T.try_build_turf(user, src) + return TRUE + + if(IS_SHOVEL(W) && can_be_dug()) + if(get_diggable_resources()) + if(W.do_tool_interaction(TOOL_SHOVEL, user, src, 4 SECONDS)) + drop_diggable_resources() + else if(can_dig_pit()) + try_dig_pit(user, W) + else + to_chat(user, SPAN_WARNING("There is nothing to be dug out of \the [src].")) + return TRUE + if(ATOM_IS_OPEN_CONTAINER(W) && W.reagents) var/obj/effect/fluid/F = locate() in src if(F && F.reagents?.total_volume >= FLUID_PUDDLE) @@ -544,3 +562,37 @@ /turf/proc/resolve_to_actual_turf() return src + +/// Return an assoc list of resource item type to a base and a random component +/// ex. return list(/obj/item/stack/material/ore/sand = list(3, 2)) +/turf/proc/get_diggable_resources() + return null + +/turf/proc/clear_diggable_resources() + SHOULD_CALL_PARENT(TRUE) + update_icon() + +/turf/proc/can_be_dug() + return FALSE + +/turf/proc/drop_diggable_resources() + SHOULD_CALL_PARENT(TRUE) + var/list/diggable_resources = get_diggable_resources() + if(!length(diggable_resources)) + return + for(var/resource_type in diggable_resources) + var/list/resource_amounts = diggable_resources[resource_type] + LAZYADD(., new resource_type(src, resource_amounts[1] + rand(resource_amounts[2]))) + clear_diggable_resources() + + +/turf/proc/can_dig_pit() + return can_be_dug() && !(locate(/obj/structure/pit) in src) + +/turf/proc/try_dig_pit(var/mob/user, var/obj/item/tool) + if(!user || !tool || tool.do_tool_interaction(TOOL_SHOVEL, user, src, 4 SECONDS)) + return dig_pit() + return null + +/turf/proc/dig_pit() + return can_dig_pit() && new /obj/structure/pit(src) diff --git a/code/modules/maps/template_types/random_exoplanet/planet_types/grass.dm b/code/modules/maps/template_types/random_exoplanet/planet_types/grass.dm index 47201560a5e..9961918b2ee 100644 --- a/code/modules/maps/template_types/random_exoplanet/planet_types/grass.dm +++ b/code/modules/maps/template_types/random_exoplanet/planet_types/grass.dm @@ -135,7 +135,7 @@ descriptor = "grass exoplanet" land_type = /turf/exterior/wildgrass water_type = /turf/exterior/water - coast_type = /turf/exterior/mud/dark + coast_type = /turf/exterior/mud water_level_min = 3 flora_prob = 10 grass_prob = 50 diff --git a/code/modules/maps/template_types/random_exoplanet/planet_types/meat.dm b/code/modules/maps/template_types/random_exoplanet/planet_types/meat.dm index 9cebc03c518..22f216e8a0d 100644 --- a/code/modules/maps/template_types/random_exoplanet/planet_types/meat.dm +++ b/code/modules/maps/template_types/random_exoplanet/planet_types/meat.dm @@ -135,6 +135,9 @@ dirt_color = "#c40031" footstep_type = /decl/footsteps/mud +/turf/exterior/meat/get_diggable_resources() + return dug ? null : list(/obj/item/stack/material/ore/meat = list(3, 2)) + /turf/exterior/water/stomach name = "juices" desc = "Half-digested chunks of vines are floating in the puddle of some liquid." diff --git a/code/modules/materials/definitions/solids/materials_solid_mundane.dm b/code/modules/materials/definitions/solids/materials_solid_mundane.dm index 419072501a4..ba5f63c75d3 100644 --- a/code/modules/materials/definitions/solids/materials_solid_mundane.dm +++ b/code/modules/materials/definitions/solids/materials_solid_mundane.dm @@ -9,12 +9,13 @@ reflectiveness = MAT_VALUE_DULL wall_support_value = MAT_VALUE_LIGHT dissolves_into = list( - /decl/material/solid/sand = 0.5, - /decl/material/solid/metal/iron = 0.2, + /decl/material/solid/sand = 0.3, + /decl/material/solid/clay = 0.2, + /decl/material/solid/metal/iron = 0.2, /decl/material/solid/metal/aluminium = 0.05, - /decl/material/solid/phosphorus = 0.05, - /decl/material/gas/sulfur_dioxide = 0.05, - /decl/material/gas/carbon_dioxide = 0.05 + /decl/material/solid/phosphorus = 0.05, + /decl/material/gas/sulfur_dioxide = 0.05, + /decl/material/gas/carbon_dioxide = 0.05 ) value = 0.1 default_solid_form = /obj/item/stack/material/lump @@ -24,10 +25,11 @@ // Slag can be reclaimed into more useful forms by grinding it up and mixing it with strong acid. dissolves_in = MAT_SOLVENT_STRONG dissolves_into = list( - /decl/material/solid/sand = 0.7, - /decl/material/solid/metal/iron = 0.1, + /decl/material/solid/sand = 0.5, + /decl/material/solid/clay = 0.2, + /decl/material/solid/metal/iron = 0.1, /decl/material/solid/metal/aluminium = 0.05, - /decl/material/solid/phosphorus = 0.05, - /decl/material/gas/sulfur_dioxide = 0.05, - /decl/material/gas/carbon_dioxide = 0.05 + /decl/material/solid/phosphorus = 0.05, + /decl/material/gas/sulfur_dioxide = 0.05, + /decl/material/gas/carbon_dioxide = 0.05 ) diff --git a/code/modules/materials/materials_ore.dm b/code/modules/materials/materials_ore.dm index 8ee38f987b0..86b53811cba 100644 --- a/code/modules/materials/materials_ore.dm +++ b/code/modules/materials/materials_ore.dm @@ -119,8 +119,10 @@ material = /decl/material/solid/hematite /obj/item/stack/material/ore/coal material = /decl/material/solid/graphite -/obj/item/stack/material/ore/glass +/obj/item/stack/material/ore/sand material = /decl/material/solid/sand +/obj/item/stack/material/ore/clay + material = /decl/material/solid/clay /obj/item/stack/material/ore/silver material = /decl/material/solid/metal/silver /obj/item/stack/material/ore/gold @@ -157,6 +159,8 @@ material = /decl/material/solid/ice/hydrate/krypton /obj/item/stack/material/ore/xenon material = /decl/material/solid/ice/hydrate/xenon +/obj/item/stack/material/ore/meat + material = /decl/material/solid/organic/meat /client/proc/spawn_ore_pile() set name = "Spawn Ore Pile" diff --git a/code/modules/mechs/equipment/utility.dm b/code/modules/mechs/equipment/utility.dm index c6bd00d378f..8b6d0843a96 100644 --- a/code/modules/mechs/equipment/utility.dm +++ b/code/modules/mechs/equipment/utility.dm @@ -493,15 +493,6 @@ scoop_ore(target) return - if (istype(target, /turf/simulated/floor/asteroid)) - for (var/turf/simulated/floor/asteroid/asteroid in RANGE_TURFS(target, 1)) - if (!(get_dir(owner, asteroid) & owner.dir)) - continue - drill_head.durability -= 1 - asteroid.gets_dug() - scoop_ore(target) - return - if (istype(target, /turf/simulated/wall)) var/turf/simulated/wall/wall = target var/wall_hardness = max(wall.material.hardness, wall.reinf_material ? wall.reinf_material.hardness : 0) @@ -510,6 +501,15 @@ drill_head.durability -= 2 return + if(istype(target, /turf)) + for(var/turf/asteroid in RANGE_TURFS(target, 1)) + if (!(get_dir(owner, asteroid) & owner.dir)) + continue + if(asteroid.can_be_dug() && asteroid.drop_diggable_resources()) + drill_head.durability -= 1 + scoop_ore(asteroid) + return + var/audible = "loudly grinding machinery" if (iscarbon(target)) //splorch audible = "a terrible rending of metal and flesh" diff --git a/code/modules/mining/drilling/drill_act.dm b/code/modules/mining/drilling/drill_act.dm index d75e5162716..30c1e1b9259 100644 --- a/code/modules/mining/drilling/drill_act.dm +++ b/code/modules/mining/drilling/drill_act.dm @@ -1,5 +1,7 @@ /turf/proc/drill_act() SHOULD_CALL_PARENT(TRUE) + drop_diggable_resources() + dig_pit() var/base_turf = get_base_turf_by_area(src) if(!istype(src, base_turf)) return ChangeTurf(base_turf) @@ -29,16 +31,3 @@ var/turf/T = GetBelow(src) if(istype(T)) T.drill_act() - -/turf/exterior/drill_act() - var/turf/exterior/digging = ..() - if(istype(digging) && digging.diggable) - new /obj/structure/pit(digging) - digging.diggable = FALSE - return digging - -/turf/simulated/floor/asteroid/drill_act() - var/turf/simulated/floor/asteroid/digging = ..() - if(istype(digging) && !digging.dug) - digging.gets_dug() - return digging \ No newline at end of file diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm index cbeb4961e21..a5e4141482b 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -55,6 +55,15 @@ I.appearance_flags |= RESET_COLOR add_overlay(I) +/obj/item/pickaxe/Initialize() + var/list/tool_qualities = get_initial_tool_qualities() + if(length(tool_qualities)) + set_extension(src, /datum/extension/tool, tool_qualities) + . = ..() + +/obj/item/pickaxe/proc/get_initial_tool_qualities() + return list(TOOL_SHOVEL = TOOL_QUALITY_MEDIOCRE) + /obj/item/pickaxe/adjust_mob_overlay(mob/living/user_mob, bodytype, image/overlay, slot, bodypart, use_fallback_if_icon_missing = TRUE) if(overlay && build_from_parts && check_state_in_icon("[overlay.icon_state]-handle", overlay.icon)) var/image/handle = image(overlay.icon, "[overlay.icon_state]-handle") @@ -77,9 +86,11 @@ material = /decl/material/solid/metal/steel matter = list(/decl/material/solid/fiberglass = MATTER_AMOUNT_REINFORCEMENT) -/obj/item/pickaxe/drill/Initialize(ml, material_key) - . = ..() - set_extension(src, /datum/extension/tool, list(TOOL_DRILL = TOOL_QUALITY_MEDIOCRE)) +/obj/item/pickaxe/drill/get_initial_tool_qualities() + return list( + TOOL_SURGICAL_DRILL = TOOL_QUALITY_MEDIOCRE, + TOOL_SHOVEL = TOOL_QUALITY_DEFAULT + ) /obj/item/pickaxe/jackhammer name = "sonic jackhammer" @@ -89,6 +100,11 @@ desc = "Cracks rocks with sonic blasts, perfect for killing cave lizards." drill_verb = "hammering" +/obj/item/pickaxe/jackhammer/get_initial_tool_qualities() + return list( + TOOL_SURGICAL_DRILL = TOOL_QUALITY_MEDIOCRE, + TOOL_SHOVEL = TOOL_QUALITY_DECENT + ) /obj/item/pickaxe/diamonddrill //When people ask about the badass leader of the mining tools, they are talking about ME! name = "diamond mining drill" icon = 'icons/obj/items/tool/drills/drill_diamond.dmi' @@ -102,6 +118,12 @@ /decl/material/solid/gemstone/diamond = MATTER_AMOUNT_TRACE ) +/obj/item/pickaxe/diamonddrill/get_initial_tool_qualities() + return list( + TOOL_SURGICAL_DRILL = TOOL_QUALITY_MEDIOCRE, + TOOL_SHOVEL = TOOL_QUALITY_GOOD + ) + /obj/item/pickaxe/borgdrill name = "cyborg mining drill" icon = 'icons/obj/items/tool/drills/drill_diamond.dmi' @@ -109,6 +131,12 @@ desc = "" drill_verb = "drilling" +/obj/item/pickaxe/borgdrill/get_initial_tool_qualities() + return list( + TOOL_SURGICAL_DRILL = TOOL_QUALITY_MEDIOCRE, + TOOL_SHOVEL = TOOL_QUALITY_GOOD + ) + //****************************actual pickaxes*********************** /obj/item/pickaxe/silver name = "silver pickaxe" @@ -122,6 +150,9 @@ build_from_parts = TRUE hardware_color = COLOR_SILVER +/obj/item/pickaxe/silver/get_initial_tool_qualities() + return list(TOOL_SHOVEL = TOOL_QUALITY_DEFAULT) + /obj/item/pickaxe/gold name = "golden pickaxe" desc = "This makes no metallurgic sense." @@ -134,6 +165,9 @@ build_from_parts = TRUE hardware_color = COLOR_GOLD +/obj/item/pickaxe/gold/get_initial_tool_qualities() + return list(TOOL_SHOVEL = TOOL_QUALITY_DECENT) + /obj/item/pickaxe/diamond name = "diamond pickaxe" desc = "A pickaxe with a diamond pick head." @@ -147,6 +181,9 @@ hardware_color = COLOR_DIAMOND material = /decl/material/solid/gemstone/diamond +/obj/item/pickaxe/diamond/get_initial_tool_qualities() + return list(TOOL_SHOVEL = TOOL_QUALITY_GOOD) + /*****************************Shovel********************************/ /obj/item/shovel diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm index 2459a3f49f3..672a492c738 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -41,51 +41,22 @@ LAZYREMOVE(level.mining_turfs, src) return ..() -/turf/simulated/floor/asteroid/explosion_act(severity) - SHOULD_CALL_PARENT(FALSE) - if(severity == 1 || (severity == 2 && prob(70))) - gets_dug() +/turf/simulated/floor/asteroid/can_be_dug() + return !density /turf/simulated/floor/asteroid/is_plating() return !density +/turf/simulated/floor/asteroid/on_update_icon() + ..() + if(dug) + icon_state = "asteroid_dug" + //#TODO: This should probably be generalised? /turf/simulated/floor/asteroid/attackby(obj/item/W, mob/user) if(!W || !user) - return 0 - - var/list/usable_tools = list( - /obj/item/shovel, - /obj/item/pickaxe/diamonddrill, - /obj/item/pickaxe/drill, - /obj/item/pickaxe/borgdrill - ) - - var/valid_tool - for(var/valid_type in usable_tools) - if(istype(W,valid_type)) - valid_tool = 1 - break - - if(valid_tool) - if (dug) - to_chat(user, "This area has already been dug") - return TRUE - - var/turf/T = user.loc - if (!(istype(T))) - return - - to_chat(user, "You start digging.") - playsound(user.loc, 'sound/effects/rustle1.ogg', 50, 1) - . = TRUE - - if(!do_after(user,40, src)) return - - to_chat(user, "You dug a hole.") - gets_dug() - - else if(istype(W,/obj/item/storage/ore)) //#FIXME: Its kinda silly to put this in a specific turf's subtype's attackby. + return FALSE + if(istype(W,/obj/item/storage/ore)) //#FIXME: Its kinda silly to put this in a specific turf's subtype's attackby. var/obj/item/storage/ore/S = W if(S.collection_mode) for(var/obj/item/stack/material/ore/O in contents) @@ -95,17 +66,14 @@ if(S.collection_mode) for(var/obj/item/fossil/F in contents) return F.attackby(W,user) + return ..(W,user) - else - return ..(W,user) - -//#TODO: This should probably be generalised? -/turf/simulated/floor/asteroid/proc/gets_dug() - if(dug) - return - LAZYADD(., new /obj/item/stack/material/ore/glass(src, (rand(3) + 2))) +/turf/simulated/floor/asteroid/clear_diggable_resources() dug = TRUE - icon_state = "asteroid_dug" + ..() + +/turf/simulated/floor/asteroid/get_diggable_resources() + return dug ? null : list(/obj/item/stack/material/ore/sand = list(3, 2)) //#TODO: This should probably be generalised? /turf/simulated/floor/asteroid/proc/updateMineralOverlays(var/update_neighbors) diff --git a/code/modules/paperwork/pen/pen.dm b/code/modules/paperwork/pen/pen.dm index a59046d7236..f145b6795ac 100644 --- a/code/modules/paperwork/pen/pen.dm +++ b/code/modules/paperwork/pen/pen.dm @@ -22,7 +22,7 @@ . = ..() set_extension(src, /datum/extension/tool, list( - TOOL_DRILL = TOOL_QUALITY_WORST, + TOOL_SURGICAL_DRILL = TOOL_QUALITY_WORST, TOOL_PEN = pen_quality), list( diff --git a/code/modules/power/geothermal/_geothermal.dm b/code/modules/power/geothermal/_geothermal.dm index 81e3c8dc968..5b235aec9a3 100644 --- a/code/modules/power/geothermal/_geothermal.dm +++ b/code/modules/power/geothermal/_geothermal.dm @@ -84,7 +84,10 @@ var/global/const/MAX_GEOTHERMAL_PRESSURE = 12000 for(var/turf/exterior/seafloor/T in RANGE_TURFS(loc, 5)) var/dist = get_dist(loc, T)-1 if(prob(100 - (dist * 20))) - T = T.ChangeTurf(/turf/exterior/mud) + if(prob(25)) + T = T.ChangeTurf(/turf/exterior/clay) + else + T = T.ChangeTurf(/turf/exterior/mud) if(prob(50 - (dist * 10))) new /obj/random/seaweed(T) diff --git a/code/modules/random_map/_random_map_setup.dm b/code/modules/random_map/_random_map_setup.dm index 0d3347d89e6..afcb3288e31 100644 --- a/code/modules/random_map/_random_map_setup.dm +++ b/code/modules/random_map/_random_map_setup.dm @@ -3,24 +3,26 @@ */ #define MIN_SURFACE_COUNT_PER_CHUNK 0.1 -#define MIN_RARE_COUNT_PER_CHUNK 0.05 -#define MIN_DEEP_COUNT_PER_CHUNK 0.025 -#define RESOURCE_HIGH_MAX 4 -#define RESOURCE_HIGH_MIN 2 -#define RESOURCE_MID_MAX 3 -#define RESOURCE_MID_MIN 1 -#define RESOURCE_LOW_MAX 1 -#define RESOURCE_LOW_MIN 0 +#define MIN_RARE_COUNT_PER_CHUNK 0.05 +#define MIN_DEEP_COUNT_PER_CHUNK 0.025 +#define RESOURCE_HIGH_MAX 4 +#define RESOURCE_HIGH_MIN 2 +#define RESOURCE_MID_MAX 3 +#define RESOURCE_MID_MIN 1 +#define RESOURCE_LOW_MAX 1 +#define RESOURCE_LOW_MIN 0 +#define RESOURCE_COMMON_MAX 5 +#define RESOURCE_COMMON_MIN 3 -#define FLOOR_CHAR 0 -#define WALL_CHAR 1 -#define DOOR_CHAR 2 -#define EMPTY_CHAR 3 -#define ROOM_TEMP_CHAR 4 -#define MONSTER_CHAR 5 -#define ARTIFACT_TURF_CHAR 6 -#define ARTIFACT_CHAR 7 -#define CORRIDOR_TURF_CHAR 8 +#define FLOOR_CHAR 0 +#define WALL_CHAR 1 +#define DOOR_CHAR 2 +#define EMPTY_CHAR 3 +#define ROOM_TEMP_CHAR 4 +#define MONSTER_CHAR 5 +#define ARTIFACT_TURF_CHAR 6 +#define ARTIFACT_CHAR 7 +#define CORRIDOR_TURF_CHAR 8 #define TRANSLATE_COORD(X,Y) ((((Y) - 1) * limit_x) + (X)) #define TRANSLATE_AND_VERIFY_COORD(X,Y) TRANSLATE_AND_VERIFY_COORD_MLEN(X,Y,map.len) diff --git a/code/modules/random_map/noise/ore.dm b/code/modules/random_map/noise/ore.dm index d1f2f719b50..826d85817de 100644 --- a/code/modules/random_map/noise/ore.dm +++ b/code/modules/random_map/noise/ore.dm @@ -8,30 +8,30 @@ var/min_deep_ratio = MIN_DEEP_COUNT_PER_CHUNK var/list/surface_metals = list( - /decl/material/solid/metal/iron = list(RESOURCE_HIGH_MIN, RESOURCE_HIGH_MAX), - /decl/material/solid/metal/aluminium = list(RESOURCE_MID_MIN, RESOURCE_MID_MAX), - /decl/material/solid/metal/gold = list(RESOURCE_LOW_MIN, RESOURCE_LOW_MAX), - /decl/material/solid/metal/silver = list(RESOURCE_LOW_MIN, RESOURCE_LOW_MAX), - /decl/material/solid/metal/uranium = list(RESOURCE_LOW_MIN, RESOURCE_LOW_MAX) + /decl/material/solid/metal/iron = list(RESOURCE_HIGH_MIN, RESOURCE_HIGH_MAX), + /decl/material/solid/metal/aluminium = list(RESOURCE_MID_MIN, RESOURCE_MID_MAX), + /decl/material/solid/metal/gold = list(RESOURCE_LOW_MIN, RESOURCE_LOW_MAX), + /decl/material/solid/metal/silver = list(RESOURCE_LOW_MIN, RESOURCE_LOW_MAX), + /decl/material/solid/metal/uranium = list(RESOURCE_LOW_MIN, RESOURCE_LOW_MAX) ) var/list/rare_metals = list( - /decl/material/solid/metal/gold = list(RESOURCE_MID_MIN, RESOURCE_MID_MAX), - /decl/material/solid/metal/silver = list(RESOURCE_MID_MIN, RESOURCE_MID_MAX), - /decl/material/solid/metal/uranium = list(RESOURCE_MID_MIN, RESOURCE_MID_MAX), - /decl/material/solid/metal/osmium = list(RESOURCE_MID_MIN, RESOURCE_MID_MAX), - /decl/material/solid/rutile = list(RESOURCE_MID_MIN, RESOURCE_MID_MAX) + /decl/material/solid/metal/gold = list(RESOURCE_MID_MIN, RESOURCE_MID_MAX), + /decl/material/solid/metal/silver = list(RESOURCE_MID_MIN, RESOURCE_MID_MAX), + /decl/material/solid/metal/uranium = list(RESOURCE_MID_MIN, RESOURCE_MID_MAX), + /decl/material/solid/metal/osmium = list(RESOURCE_MID_MIN, RESOURCE_MID_MAX), + /decl/material/solid/rutile = list(RESOURCE_MID_MIN, RESOURCE_MID_MAX) ) var/list/deep_metals = list( - /decl/material/solid/metal/uranium = list(RESOURCE_LOW_MIN, RESOURCE_LOW_MAX), - /decl/material/solid/gemstone/diamond = list(RESOURCE_LOW_MIN, RESOURCE_LOW_MAX), - /decl/material/solid/metal/osmium = list(RESOURCE_HIGH_MIN, RESOURCE_HIGH_MAX), - /decl/material/solid/metallic_hydrogen = list(RESOURCE_MID_MIN, RESOURCE_MID_MAX), - /decl/material/solid/rutile = list(RESOURCE_MID_MIN, RESOURCE_MID_MAX) + /decl/material/solid/metal/uranium = list(RESOURCE_LOW_MIN, RESOURCE_LOW_MAX), + /decl/material/solid/gemstone/diamond = list(RESOURCE_LOW_MIN, RESOURCE_LOW_MAX), + /decl/material/solid/metal/osmium = list(RESOURCE_HIGH_MIN, RESOURCE_HIGH_MAX), + /decl/material/solid/metallic_hydrogen = list(RESOURCE_MID_MIN, RESOURCE_MID_MAX), + /decl/material/solid/rutile = list(RESOURCE_MID_MIN, RESOURCE_MID_MAX) ) var/list/common_resources = list( - /decl/material/solid/sand = list(3,5), - /decl/material/solid/clay = list(3,5), - /decl/material/solid/graphite = list(3,5) + /decl/material/solid/sand = list(RESOURCE_COMMON_MIN, RESOURCE_COMMON_MAX), + /decl/material/solid/clay = list(RESOURCE_COMMON_MIN, RESOURCE_COMMON_MAX), + /decl/material/solid/graphite = list(RESOURCE_COMMON_MIN, RESOURCE_COMMON_MAX) ) /datum/random_map/noise/ore/New(var/tx, var/ty, var/tz, var/tlx, var/tly, var/do_not_apply, var/do_not_announce, var/used_area) diff --git a/code/modules/random_map/noise/seafloor.dm b/code/modules/random_map/noise/seafloor.dm index ce3f584a20d..4283970e757 100644 --- a/code/modules/random_map/noise/seafloor.dm +++ b/code/modules/random_map/noise/seafloor.dm @@ -10,19 +10,13 @@ /datum/random_map/noise/seafloor/replace_space/get_appropriate_path(var/value) return /turf/exterior/seafloor/flooded -/turf/exterior/mud/flooded - flooded = TRUE - -/turf/exterior/mud/dark/flooded - flooded = TRUE - /datum/random_map/noise/seafloor/get_appropriate_path(var/value) var/val = min(9,max(0,round((value/cell_range)*10))) switch(val) if(6) - return /turf/exterior/mud/flooded + return /turf/exterior/clay/flooded if(7 to 9) - return /turf/exterior/mud/dark/flooded + return /turf/exterior/mud/flooded /datum/random_map/noise/seafloor/get_additional_spawns(var/value, var/turf/T) var/val = min(9,max(0,round((value/cell_range)*10))) diff --git a/code/modules/surgery/crystal.dm b/code/modules/surgery/crystal.dm index d9899a24ff6..490d1fcc12c 100644 --- a/code/modules/surgery/crystal.dm +++ b/code/modules/surgery/crystal.dm @@ -1,7 +1,7 @@ /decl/surgery_step/generic/cut_open/crystal name = "Drill keyhole incision" description = "This procedure drills a keyhold incision into crystalline limbs to allow for delicate internal work." - allowed_tools = list(TOOL_DRILL = 100) + allowed_tools = list(TOOL_SURGICAL_DRILL = 100) fail_string = "cracking" access_string = "a neat hole" surgery_candidate_flags = SURGERY_NO_ROBOTIC | SURGERY_NO_FLESH @@ -37,7 +37,7 @@ /decl/surgery_step/internal/detach_organ/crystal name = "Detach crystalline internal organ" description = "This procedure severs a crystalline internal organ, allowing it to be removed." - allowed_tools = list(TOOL_DRILL = 100) + allowed_tools = list(TOOL_SURGICAL_DRILL = 100) surgery_candidate_flags = SURGERY_NO_ROBOTIC | SURGERY_NEEDS_ENCASEMENT | SURGERY_NO_FLESH /decl/surgery_step/internal/attach_organ/crystal diff --git a/code/modules/surgery/implant.dm b/code/modules/surgery/implant.dm index 9873cdec09f..1b8ef1751a0 100644 --- a/code/modules/surgery/implant.dm +++ b/code/modules/surgery/implant.dm @@ -27,7 +27,7 @@ /decl/surgery_step/cavity/make_space name = "Hollow out cavity" description = "This procedure is used to prepare a patient to have something large implanted in their body." - allowed_tools = list(TOOL_DRILL = 100) + allowed_tools = list(TOOL_SURGICAL_DRILL = 100) min_duration = 60 max_duration = 80 diff --git a/maps/ministation/ministation.dmm b/maps/ministation/ministation.dmm index 1342bb111fe..696da4c1778 100644 --- a/maps/ministation/ministation.dmm +++ b/maps/ministation/ministation.dmm @@ -3055,7 +3055,7 @@ /area/ministation/cargo) "hT" = ( /obj/structure/closet/crate, -/obj/item/stack/material/ore/glass, +/obj/item/stack/material/ore/sand, /obj/effect/floor_decal/industrial/outline/yellow, /obj/machinery/camera/network/mining{ dir = 8 @@ -3451,7 +3451,7 @@ "iV" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/closet/crate, -/obj/item/stack/material/ore/glass, +/obj/item/stack/material/ore/sand, /obj/effect/floor_decal/industrial/outline/yellow, /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 4 diff --git a/mods/species/vox/organs_vox.dm b/mods/species/vox/organs_vox.dm index e10f20995ee..e51fd0920d8 100644 --- a/mods/species/vox/organs_vox.dm +++ b/mods/species/vox/organs_vox.dm @@ -63,6 +63,7 @@ /decl/material/solid/metal/copper = TRUE, /decl/material/solid/metal/aluminium = TRUE, /decl/material/solid/sand = TRUE, + /decl/material/solid/clay = TRUE, /decl/material/solid/graphite = TRUE, /decl/material/solid/pitchblende = TRUE, /decl/material/solid/hematite = TRUE, From a9a47de02a5aa309e48d07eb3d103f000aa90952 Mon Sep 17 00:00:00 2001 From: MistakeNot4892 Date: Mon, 11 Dec 2023 20:53:02 +1100 Subject: [PATCH 2/2] Greyscaling pit icons. --- code/game/objects/structures/pit.dm | 16 ++++++++-------- icons/obj/structures/pit.dmi | Bin 1083 -> 598 bytes 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/code/game/objects/structures/pit.dm b/code/game/objects/structures/pit.dm index 7d9491315eb..0ff20c66427 100644 --- a/code/game/objects/structures/pit.dm +++ b/code/game/objects/structures/pit.dm @@ -48,7 +48,7 @@ desc = initial(desc) open = TRUE for(var/atom/movable/A in src) - A.forceMove(src.loc) + A.dropInto(loc) update_icon() /obj/structure/pit/proc/close(var/user) @@ -57,14 +57,14 @@ open = FALSE //If we close the pit without anything inside, just leave the soil undisturbed - var/turf/T = get_turf(src) - if(length(T.contents - src) <= 0) + if(isturf(loc)) + for(var/atom/movable/A in loc) + if(A != src && !A.anchored && A != user && A.simulated) + A.forceMove(src) + if(!length(contents)) qdel(src) - return - for(var/atom/movable/A in T) - if(!A.anchored && A != user && A.simulated) - A.forceMove(src) - update_icon() + else + update_icon() /obj/structure/pit/return_air() return open && loc?.return_air() diff --git a/icons/obj/structures/pit.dmi b/icons/obj/structures/pit.dmi index 76ac50d185a8354892f81165cde2f631e0050c0b..dcd845908e0ca32e03d3d70b78bb099768fe721a 100644 GIT binary patch delta 538 zcmV+#0_FX?2-XBsiBL{Q4GJ0x0000DNk~Le0000$0000W1Oos708q1Iw*UYD6;Mo6 zMZmzo!okV-`1sx3;EIZ#Wny+pMPdg6(`^6%00DGTPE!Ct=GbNc003=~dPsk%AhX0! ziHkEOv#1!zHRR$|36`rlDOFB4r7o232E7+lwtTMi0Dt6iG1HO00iOes#}rz*6>`RrI4H5H-#UI-Av=0$VeSka`8v7ZspM zQK9}8Sj|eLib9FCn}p5Y6;Nnoyrp0bO&pY&49yICEYx+ktNbS!jwYbTg1Iw zR{_Oe62pw3=(6mXi6=fdiyHA@bZ?Y3qN}fC#e0hhnxpq_YXfiHKItAKZ4b1iJ`-iBL{Q4GJ0x0000DNk~Le0001B0000$2m=5B0MhD$JOBUyJWxzj zMZmzoGaw03G!a863{OBSAQ%rhD;f|C2N)6zTuL>-z`$y1YLJkSe0+SMprC$!eppyo zN=iyNI5@7Zu3g54RR9100d!JMQvg8b*k%9#0DXE?Sad{@SVMm)zaTX)UWtn{C9|j) z$T#HTOe;#vO@*-GstPho40B6Uh*4)iq&h>Q48x^JS;5uM1?*t}ybeVcXnxE50009d zNkl*W!IO+NYY)qH*j)Cx|8KomU!!;4=L9zGI5HZKm< z49d$zKr=v@C7KL8QeYn0A41@KA{O0&UldA{vMoAj?3fFm+KAuKoPjbK&==Z-`=`njS6j z89wJMIud`lfJInUYD(LqSeqg~CvdQQE$igCPJ;F*iNwbiNfR9=P}ZY#5#Xpt$*jQl z_AdmkjX>?xX#PonIXE0LIx5QgNZ`ur)QmNY`q#oodP$)t^GQS}MKfhYHtV6EFO@m- zS=SwL&0+j>JsfHro%PS|itefzMR();C$VC@51xNkd1QZjO7zK@WW4#p&74E>bc(iK z9!c2blOJEr=XXM_f z(H;0jp)@JmqJzecx$vot_zlgOD3bwwrA@exd8OBJeEH|wC@dbZX3U{VufxCEs0vd1 zW*mQ~OJvA<6QYn|_lY|!n<1G?0{HtlzBV=o49N^PLo#(D!uFMTYXcPUb`W;}PD6s< zO$`d||2B*wu&y#6<~q_M=$I2v9-6nzlzJsY!t$ z9|f?ad?PhITH+`D%vp3K@C_DWRjDa$k79pq^2CLK0tfutzHj8XPJ;F*iA)?Bj|2+; zl%