From b7be76d463cdd3e79e316282d65e1c2a2fd1774a Mon Sep 17 00:00:00 2001 From: NovaBot <154629622+NovaBot13@users.noreply.github.com> Date: Mon, 15 Apr 2024 05:00:51 -0400 Subject: [PATCH 1/2] [MIRROR] [NO GBP] Patches & renaming for `NO_DECONSTRUCTION` flag (#1917) * [NO GBP] Patches & renaming for `NO_DECONSTRUCTION` flag (#82547) ## About The Pull Request 1. Renames `NO_DECONSTRUCTION` -> `NO_DEBRIS_AFTER_DECONSTRUCTION`. As the name suggests when the object is deconstructed it won't drop any items/debris. After my last refactor for this flag it now serves a new purpose so its name has been changed to match that 2. Fixes objects that are now using `NO_DECONSTRUCTION` incorrectly. Some of these changes include - Removing the flag in objects where there are no means to deconstruct them (e.g. jukebox, hydroponics soil, flora etc) - Replacing the flags old purpose by overriding its tool procs so that it regains its old behaviour(e.g. You once again cannot deconstruct ctf reinforced tables, survival pods, indestructible windows etc) ## Changelog :cl: code: renamed `NO_DECONSTRUCTION` to `NO_DEBRIS_AFTER_DECONSTRUCTION` so its name matches its intended purpose fix: fixes some items that incorrectly used `NO_DECONSTRUCTION` prior to its refactor, meaning makes some objects non deconstructable again /:cl: * [NO GBP] Patches & renaming for `NO_DECONSTRUCTION` flag * Update colony_fabricator.dm * renames, this probally needs testing * just a test * Revert "renames, this probally needs testing" This reverts commit 8f3490c95e03869079260824789a73bc0de06481. * Revert "[MODULAR] Adds an entirely new map to Nova's roster: Ouroboros! (#773)" This reverts commit 56a100f88677bfb3af7814549b8e4fbf5a0faeb4. * Fixes most of our items hopefully to work with the new lack of flag * Reapply "[MODULAR] Adds an entirely new map to Nova's roster: Ouroboros! (#773)" This reverts commit 2b063ae4c5680c7d3eef90615dbc28d59d2cdf15. * Additional missed things/fixing mistakes * But wait there's more * Update lavaland_surface_prefab_homestead.dmm --------- Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com> Co-authored-by: SomeRandomOwl <2568378+SomeRandomOwl@users.noreply.github.com> Co-authored-by: Mal <13398309+vinylspiders@users.noreply.github.com> --- .../lavaland_surface_prefab_homestead.dmm | 2 +- code/__DEFINES/obj_flags.dm | 2 +- code/_globalvars/bitfields.dm | 2 +- code/datums/elements/frozen.dm | 2 +- code/game/machinery/_machinery.dm | 2 +- code/game/machinery/dance_machine.dm | 1 - code/game/machinery/doors/airlock.dm | 2 +- code/game/machinery/hologram.dm | 7 +- code/game/machinery/recycler.dm | 8 +- .../machinery/telecomms/machines/allinone.dm | 1 - code/game/objects/obj_defense.dm | 6 +- .../objects/structures/beds_chairs/chair.dm | 4 +- code/game/objects/structures/flora.dm | 1 - code/game/objects/structures/window.dm | 14 +- .../awaymissions/mission_code/murderdome.dm | 19 ++- code/modules/capture_the_flag/ctf_game.dm | 7 +- .../food_and_drinks/machinery/food_cart.dm | 2 +- code/modules/holodeck/computer.dm | 4 +- code/modules/holodeck/holo_effect.dm | 2 +- code/modules/hydroponics/hydroponics.dm | 1 - .../mapfluff/ruins/objects_and_mobs/museum.dm | 7 +- code/modules/mining/equipment/survival_pod.dm | 13 +- .../chemistry/machinery/chem_synthesizer.dm | 10 +- .../shuttle/spaceship_navigation_beacon.dm | 1 - code/modules/shuttle/special.dm | 14 +- code/modules/shuttle/syndicate.dm | 4 +- .../modules/transport/tram/tram_controller.dm | 6 +- .../items/stacks/sheets/sheet_types.dm | 8 +- .../game/objects/structures/towel_bins.dm | 6 +- .../aesthetics/flag/code/signs_flags.dm | 2 +- .../ashwalkers/code/buildings/fuelwell.dm | 2 +- .../modules/cellguns/code/medigun_cells.dm | 5 +- .../code/appliances/wall_cell_charger.dm | 11 +- .../code/colony_fabricator.dm | 11 +- .../code/machines/arc_furnace.dm | 11 +- .../code/machines/power_storage_unit.dm | 8 +- .../colony_fabricator/code/machines/rtg.dm | 11 +- .../code/machines/solar_panels.dm | 24 ++- .../code/machines/solid_fuel_generator.dm | 11 +- .../modules/mapping/code/interdyne.dm | 32 +++- .../modules/mapping/code/machinery.dm | 19 ++- modular_nova/modules/mapping/code/shuttles.dm | 11 +- .../code/lewd_machinery/milking_machine.dm | 59 +++---- .../code/lewd_structures/bdsm_furniture.dm | 5 +- .../code/lewd_structures/construction.dm | 2 +- .../code/lewd_structures/shibari_stand.dm | 5 +- .../code/stone_oven.dm | 11 +- .../code/stone_stove.dm | 8 +- .../primitive_structures/code/fencing.dm | 6 +- .../code/storage_structures.dm | 155 ++++++------------ .../primitive_structures/code/windows.dm | 2 +- .../stasisrework/code/stasissleeper.dm | 2 +- 52 files changed, 355 insertions(+), 216 deletions(-) diff --git a/_maps/RandomRuins/LavaRuins/nova/lavaland_surface_prefab_homestead.dmm b/_maps/RandomRuins/LavaRuins/nova/lavaland_surface_prefab_homestead.dmm index dd706cf10f1..3e798fd86a4 100644 --- a/_maps/RandomRuins/LavaRuins/nova/lavaland_surface_prefab_homestead.dmm +++ b/_maps/RandomRuins/LavaRuins/nova/lavaland_surface_prefab_homestead.dmm @@ -60,7 +60,7 @@ /turf/open/floor/iron/colony/bolts, /area/ruin/colonist_homestead) "t" = ( -/obj/machinery/smartfridge/ration_shelf, +/obj/machinery/smartfridge/wooden/ration_shelf, /turf/open/floor/iron/colony/bolts, /area/ruin/colonist_homestead) "u" = ( diff --git a/code/__DEFINES/obj_flags.dm b/code/__DEFINES/obj_flags.dm index 469811c96dc..ea5b929651d 100644 --- a/code/__DEFINES/obj_flags.dm +++ b/code/__DEFINES/obj_flags.dm @@ -15,7 +15,7 @@ #define IGNORE_DENSITY (1<<11) //! Can we ignore density when building on this object? (for example, directional windows and grilles) #define INFINITE_RESKIN (1<<12) // We can reskin this item infinitely #define CONDUCTS_ELECTRICITY (1<<13) //! Can this object conduct electricity? -#define NO_DECONSTRUCTION (1<<14) //! Atoms don't spawn anything when deconstructed. They just vanish +#define NO_DEBRIS_AFTER_DECONSTRUCTION (1<<14) //! Atoms don't spawn anything when deconstructed. They just vanish // If you add new ones, be sure to add them to /obj/Initialize as well for complete mapping support diff --git a/code/_globalvars/bitfields.dm b/code/_globalvars/bitfields.dm index 2183196e04c..f9eeec99980 100644 --- a/code/_globalvars/bitfields.dm +++ b/code/_globalvars/bitfields.dm @@ -294,7 +294,7 @@ DEFINE_BITFIELD(obj_flags, list( "EMAGGED" = EMAGGED, "IGNORE_DENSITY" = IGNORE_DENSITY, "IN_USE" = IN_USE, - "NO_DECONSTRUCTION" = NO_DECONSTRUCTION, + "NO_DEBRIS_AFTER_DECONSTRUCTION" = NO_DEBRIS_AFTER_DECONSTRUCTION, "UNIQUE_RENAME" = UNIQUE_RENAME, )) diff --git a/code/datums/elements/frozen.dm b/code/datums/elements/frozen.dm index 434968dd4d5..d112ef31b5f 100644 --- a/code/datums/elements/frozen.dm +++ b/code/datums/elements/frozen.dm @@ -63,7 +63,7 @@ GLOBAL_LIST_INIT(freon_color_matrix, list("#2E5E69", "#60A2A8", "#A1AFB1", rgb(0 else log_combat(throwingdatum.thrower, target, "launched", addition = "shattering it due to being frozen.") obj_target.visible_message(span_danger("[obj_target] shatters into a million pieces!")) - obj_target.obj_flags |= NO_DECONSTRUCTION // disable item spawning + obj_target.obj_flags |= NO_DEBRIS_AFTER_DECONSTRUCTION // disable item spawning obj_target.deconstruct(FALSE) // call pre-deletion specialized code -- internals release gas etc /// signal handler for COMSIG_MOVABLE_MOVED that unfreezes our target if it moves onto an open turf thats hotter than diff --git a/code/game/machinery/_machinery.dm b/code/game/machinery/_machinery.dm index 9eb705c8894..fb8a4ce139f 100644 --- a/code/game/machinery/_machinery.dm +++ b/code/game/machinery/_machinery.dm @@ -828,7 +828,7 @@ /obj/machinery/handle_deconstruct(disassembled = TRUE) SHOULD_NOT_OVERRIDE(TRUE) - if(obj_flags & NO_DECONSTRUCTION) + if(obj_flags & NO_DEBRIS_AFTER_DECONSTRUCTION) dump_inventory_contents() //drop stuff we consider important return //Just delete us, no need to call anything else. diff --git a/code/game/machinery/dance_machine.dm b/code/game/machinery/dance_machine.dm index 53799d6dfc1..45daa1966a6 100644 --- a/code/game/machinery/dance_machine.dm +++ b/code/game/machinery/dance_machine.dm @@ -162,7 +162,6 @@ req_access = null anchored = TRUE resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF - obj_flags = parent_type::obj_flags | NO_DECONSTRUCTION /obj/machinery/jukebox/disco/activate_music() . = ..() diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 46a6fe0e954..351506fe4f7 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -1512,7 +1512,7 @@ /obj/machinery/door/airlock/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir) if((damage_amount >= atom_integrity) && (damage_flag == BOMB)) - obj_flags |= NO_DECONSTRUCTION //If an explosive took us out, don't drop the assembly + obj_flags |= NO_DEBRIS_AFTER_DECONSTRUCTION //If an explosive took us out, don't drop the assembly . = ..() if(atom_integrity < (0.75 * max_integrity)) update_appearance() diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index fa232c46ebd..c9c6244c9a1 100644 --- a/code/game/machinery/hologram.dm +++ b/code/game/machinery/hologram.dm @@ -127,7 +127,6 @@ Possible to do for anyone motivated enough: /obj/machinery/holopad/tutorial resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF - obj_flags = parent_type::obj_flags | NO_DECONSTRUCTION on_network = FALSE ///Proximity monitor associated with this atom, needed for proximity checks. var/datum/proximity_monitor/proximity_monitor @@ -143,6 +142,12 @@ Possible to do for anyone motivated enough: new_disk.forceMove(src) disk = new_disk +/obj/machinery/holopad/tutorial/default_deconstruction_screwdriver(mob/user, icon_state_open, icon_state_closed, obj/item/screwdriver) + return NONE + +/obj/machinery/holopad/tutorial/default_deconstruction_crowbar(obj/item/crowbar, ignore_panel, custom_deconstruct) + return NONE + /obj/machinery/holopad/Moved(atom/old_loc, movement_dir, forced, list/old_locs, momentum_change = TRUE) . = ..() if(!loc) diff --git a/code/game/machinery/recycler.dm b/code/game/machinery/recycler.dm index 9cbf787d58d..28aae488866 100644 --- a/code/game/machinery/recycler.dm +++ b/code/game/machinery/recycler.dm @@ -239,9 +239,15 @@ /obj/machinery/recycler/deathtrap name = "dangerous old crusher" - obj_flags = CAN_BE_HIT | EMAGGED | NO_DECONSTRUCTION + obj_flags = CAN_BE_HIT | EMAGGED crush_damage = 120 +/obj/machinery/recycler/deathtrap/default_deconstruction_screwdriver(mob/user, icon_state_open, icon_state_closed, obj/item/screwdriver) + return NONE + +/obj/machinery/recycler/deathtrap/default_deconstruction_crowbar(obj/item/crowbar, ignore_panel, custom_deconstruct) + return NONE + /obj/item/paper/guides/recycler name = "paper - 'garbage duty instructions'" default_raw_text = "

New Assignment

You have been assigned to collect garbage from trash bins, located around the station. The crewmembers will put their trash into it and you will collect said trash.

There is a recycling machine near your closet, inside maintenance; use it to recycle the trash for a small chance to get useful minerals. Then, deliver these minerals to cargo or engineering. You are our last hope for a clean station. Do not screw this up!" diff --git a/code/game/machinery/telecomms/machines/allinone.dm b/code/game/machinery/telecomms/machines/allinone.dm index f159339193e..9b32a4ac192 100644 --- a/code/game/machinery/telecomms/machines/allinone.dm +++ b/code/game/machinery/telecomms/machines/allinone.dm @@ -20,7 +20,6 @@ /obj/machinery/telecomms/allinone/indestructible resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF - obj_flags = parent_type::obj_flags | NO_DECONSTRUCTION /obj/machinery/telecomms/allinone/indestructible/default_deconstruction_screwdriver(mob/user, icon_state_open, icon_state_closed, obj/item/screwdriver) return NONE diff --git a/code/game/objects/obj_defense.dm b/code/game/objects/obj_defense.dm index dd2e999a579..627561255c0 100644 --- a/code/game/objects/obj_defense.dm +++ b/code/game/objects/obj_defense.dm @@ -169,9 +169,9 @@ /** * The interminate proc between deconstruct() & atom_deconstruct(). By default this delegates deconstruction to - * atom_deconstruct if NO_DECONSTRUCTION is absent but subtypes can override this to handle NO_DECONSTRUCTION in their + * atom_deconstruct if NO_DEBRIS_AFTER_DECONSTRUCTION is absent but subtypes can override this to handle NO_DEBRIS_AFTER_DECONSTRUCTION in their * own unique way. Override this if for example you want to dump out important content like mobs from the - * atom before deconstruction regardless if NO_DECONSTRUCTION is present or not + * atom before deconstruction regardless if NO_DEBRIS_AFTER_DECONSTRUCTION is present or not * Arguments * * * disassembled - TRUE means we cleanly took this atom apart using tools. FALSE means this was destroyed in a violent way @@ -179,7 +179,7 @@ /obj/proc/handle_deconstruct(disassembled = TRUE) SHOULD_CALL_PARENT(FALSE) - if(!(obj_flags & NO_DECONSTRUCTION)) + if(!(obj_flags & NO_DEBRIS_AFTER_DECONSTRUCTION)) atom_deconstruct(disassembled) /** diff --git a/code/game/objects/structures/beds_chairs/chair.dm b/code/game/objects/structures/beds_chairs/chair.dm index 565665ffd09..c60a5e10072 100644 --- a/code/game/objects/structures/beds_chairs/chair.dm +++ b/code/game/objects/structures/beds_chairs/chair.dm @@ -484,11 +484,11 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/chair/stool/bar, 0) icon_state = null buildstacktype = null item_chair = null - obj_flags = parent_type::obj_flags | NO_DECONSTRUCTION + obj_flags = parent_type::obj_flags | NO_DEBRIS_AFTER_DECONSTRUCTION alpha = 0 /obj/structure/chair/mime/wrench_act_secondary(mob/living/user, obj/item/weapon) - return ITEM_INTERACT_BLOCKING + return NONE /obj/structure/chair/mime/post_buckle_mob(mob/living/M) M.pixel_y += 5 diff --git a/code/game/objects/structures/flora.dm b/code/game/objects/structures/flora.dm index 8749691c91d..2cfd490203c 100644 --- a/code/game/objects/structures/flora.dm +++ b/code/game/objects/structures/flora.dm @@ -449,7 +449,6 @@ icon_state = "pinepresents" desc = "A wondrous decorated Christmas tree. It has presents!" resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF //protected by the christmas spirit - obj_flags = parent_type::obj_flags | NO_DECONSTRUCTION var/gift_type = /obj/item/gift/anything var/unlimited = FALSE var/static/list/took_presents //shared between all xmas trees diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 83d92a7cc2f..8c0fbd338cc 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -792,10 +792,18 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/window/reinforced/tinted/frosted/spaw name = "hardened shuttle window" flags_1 = PREVENT_CLICK_UNDER_1 resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF - obj_flags = parent_type::obj_flags | NO_DECONSTRUCTION -/obj/structure/window/reinforced/shuttle/indestructible/rcd_vals(mob/user, obj/item/construction/rcd/the_rcd) - return FALSE +/obj/structure/window/reinforced/shuttle/indestructible/welder_act(mob/living/user, obj/item/tool) + return NONE + +/obj/structure/window/reinforced/shuttle/indestructible/screwdriver_act(mob/living/user, obj/item/tool) + return NONE + +/obj/structure/window/reinforced/shuttle/indestructible/wrench_act(mob/living/user, obj/item/tool) + return NONE + +/obj/structure/window/reinforced/shuttle/indestructible/crowbar_act(mob/living/user, obj/item/tool) + return NONE /obj/structure/window/reinforced/plasma/plastitanium name = "plastitanium window" diff --git a/code/modules/awaymissions/mission_code/murderdome.dm b/code/modules/awaymissions/mission_code/murderdome.dm index 520372e68ac..a59a491d492 100644 --- a/code/modules/awaymissions/mission_code/murderdome.dm +++ b/code/modules/awaymissions/mission_code/murderdome.dm @@ -1,20 +1,27 @@ /obj/structure/window/reinforced/fulltile/indestructible name = "robust window" - obj_flags = parent_type::obj_flags | NO_DECONSTRUCTION flags_1 = PREVENT_CLICK_UNDER_1 resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF -/obj/structure/window/reinforced/fulltile/indestructible/rcd_vals(mob/user, obj/item/construction/rcd/the_rcd) - return FALSE +/obj/structure/window/reinforced/fulltile/indestructible/screwdriver_act(mob/living/user, obj/item/tool) + return NONE +/obj/structure/window/reinforced/fulltile/indestructible/wrench_act(mob/living/user, obj/item/tool) + return NONE + +/obj/structure/window/reinforced/fulltile/indestructible/crowbar_act(mob/living/user, obj/item/tool) + return NONE /obj/structure/grille/indestructible - obj_flags = CONDUCTS_ELECTRICITY | NO_DECONSTRUCTION + obj_flags = CONDUCTS_ELECTRICITY resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF -/obj/structure/grille/indestructible/rcd_vals(mob/user, obj/item/construction/rcd/the_rcd) - return FALSE +/obj/structure/grille/indestructible/screwdriver_act(mob/living/user, obj/item/tool) + return NONE + +/obj/structure/grille/indestructible/wirecutter_act(mob/living/user, obj/item/tool) + return NONE /obj/effect/spawner/structure/window/reinforced/indestructible spawn_list = list(/obj/structure/grille/indestructible, /obj/structure/window/reinforced/fulltile/indestructible) diff --git a/code/modules/capture_the_flag/ctf_game.dm b/code/modules/capture_the_flag/ctf_game.dm index aac487a83d6..38a7318b554 100644 --- a/code/modules/capture_the_flag/ctf_game.dm +++ b/code/modules/capture_the_flag/ctf_game.dm @@ -463,7 +463,12 @@ /obj/structure/table/reinforced/ctf resistance_flags = INDESTRUCTIBLE - obj_flags = parent_type::obj_flags | NO_DECONSTRUCTION + +/obj/structure/table/reinforced/ctf/wrench_act_secondary(mob/living/user, obj/item/tool) + return NONE + +/obj/structure/table/reinforced/ctf/screwdriver_act_secondary(mob/living/user, obj/item/tool) + return NONE #define CTF_LOADING_UNLOADED 0 #define CTF_LOADING_LOADING 1 diff --git a/code/modules/food_and_drinks/machinery/food_cart.dm b/code/modules/food_and_drinks/machinery/food_cart.dm index e068b7b8ce2..a14ea3593c5 100644 --- a/code/modules/food_and_drinks/machinery/food_cart.dm +++ b/code/modules/food_and_drinks/machinery/food_cart.dm @@ -8,7 +8,7 @@ anchored = FALSE use_power = NO_POWER_USE req_access = list(ACCESS_KITCHEN) - obj_flags = parent_type::obj_flags | NO_DECONSTRUCTION + obj_flags = parent_type::obj_flags | NO_DEBRIS_AFTER_DECONSTRUCTION var/unpacked = FALSE var/obj/machinery/griddle/stand/cart_griddle var/obj/machinery/smartfridge/food/cart_smartfridge diff --git a/code/modules/holodeck/computer.dm b/code/modules/holodeck/computer.dm index db66578c5bd..1ff5bc47a55 100644 --- a/code/modules/holodeck/computer.dm +++ b/code/modules/holodeck/computer.dm @@ -292,12 +292,12 @@ GLOBAL_LIST_INIT(typecache_holodeck_linked_floorcheck_ok, typecacheof(list(/turf holo_object.resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF if(isstructure(holo_object)) - holo_object.obj_flags |= NO_DECONSTRUCTION + holo_object.obj_flags |= NO_DEBRIS_AFTER_DECONSTRUCTION return if(ismachinery(holo_object)) var/obj/machinery/holo_machine = holo_object - holo_machine.obj_flags |= NO_DECONSTRUCTION + holo_machine.obj_flags |= NO_DEBRIS_AFTER_DECONSTRUCTION holo_machine.power_change() if(istype(holo_machine, /obj/machinery/button)) diff --git a/code/modules/holodeck/holo_effect.dm b/code/modules/holodeck/holo_effect.dm index afd4c227038..caa5b425ca4 100644 --- a/code/modules/holodeck/holo_effect.dm +++ b/code/modules/holodeck/holo_effect.dm @@ -50,7 +50,7 @@ var/newtype = pick(subtypesof(/obj/item/book/manual) - banned_books) var/obj/item/book/manual/to_spawn = new newtype(loc) to_spawn.flags_1 |= HOLOGRAM_1 - to_spawn.obj_flags |= NO_DECONSTRUCTION + to_spawn.obj_flags |= NO_DEBRIS_AFTER_DECONSTRUCTION return to_spawn /obj/effect/holodeck_effect/mobspawner diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm index ad12fa24e68..d32795e90c3 100644 --- a/code/modules/hydroponics/hydroponics.dm +++ b/code/modules/hydroponics/hydroponics.dm @@ -1159,7 +1159,6 @@ circuit = null density = FALSE use_power = NO_POWER_USE - obj_flags = parent_type::obj_flags | NO_DECONSTRUCTION unwrenchable = FALSE self_sustaining_overlay_icon_state = null maxnutri = 15 diff --git a/code/modules/mapfluff/ruins/objects_and_mobs/museum.dm b/code/modules/mapfluff/ruins/objects_and_mobs/museum.dm index 5c1b4323208..1c0a5392fb9 100644 --- a/code/modules/mapfluff/ruins/objects_and_mobs/museum.dm +++ b/code/modules/mapfluff/ruins/objects_and_mobs/museum.dm @@ -159,9 +159,14 @@ mask = /obj/item/clothing/mask/fakemoustache/italian /obj/machinery/vending/hotdog/museum - obj_flags = parent_type::obj_flags|NO_DECONSTRUCTION onstation_override = TRUE +/obj/machinery/vending/hotdog/museum/screwdriver_act(mob/living/user, obj/item/attack_item) + return NONE + +/obj/machinery/vending/hotdog/museum/crowbar_act(mob/living/user, obj/item/attack_item) + return NONE + #define CAFE_KEYCARD_TOILETS "museum_cafe_key_toilets" ///Do not place these beyond the cafeteria shutters, or you might lock people out of reaching it. diff --git a/code/modules/mining/equipment/survival_pod.dm b/code/modules/mining/equipment/survival_pod.dm index d40589dd3f8..b22603f52d9 100644 --- a/code/modules/mining/equipment/survival_pod.dm +++ b/code/modules/mining/equipment/survival_pod.dm @@ -249,7 +249,18 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/door/window/survival_pod/left, 0) light_color = COLOR_VERY_PALE_LIME_GREEN max_n_of_items = 10 pixel_y = -4 - obj_flags = parent_type::obj_flags | NO_DECONSTRUCTION + +/obj/machinery/smartfridge/survival_pod/welder_act(mob/living/user, obj/item/tool) + return NONE + +/obj/machinery/smartfridge/survival_pod/wrench_act(mob/living/user, obj/item/tool) + return NONE + +/obj/machinery/smartfridge/survival_pod/screwdriver_act(mob/living/user, obj/item/tool) + return NONE + +/obj/machinery/smartfridge/survival_pod/crowbar_act(mob/living/user, obj/item/tool) + return NONE /obj/machinery/smartfridge/survival_pod/Initialize(mapload) AddElement(/datum/element/update_icon_blocker) diff --git a/code/modules/reagents/chemistry/machinery/chem_synthesizer.dm b/code/modules/reagents/chemistry/machinery/chem_synthesizer.dm index c0cb45dda2a..552bfe48650 100644 --- a/code/modules/reagents/chemistry/machinery/chem_synthesizer.dm +++ b/code/modules/reagents/chemistry/machinery/chem_synthesizer.dm @@ -6,14 +6,16 @@ base_icon_state = "dispenser" amount = 10 resistance_flags = INDESTRUCTIBLE | FIRE_PROOF | ACID_PROOF | LAVA_PROOF - obj_flags = parent_type::obj_flags | NO_DECONSTRUCTION use_power = NO_POWER_USE - var/static/list/shortcuts = list( - "meth" = /datum/reagent/drug/methamphetamine - ) ///The purity of the created reagent in % (purity uses 0-1 values) var/purity = 100 +/obj/machinery/chem_dispenser/chem_synthesizer/screwdriver_act(mob/living/user, obj/item/tool) + return NONE + +/obj/machinery/chem_dispenser/chem_synthesizer/crowbar_act(mob/living/user, obj/item/tool) + return NONE + /obj/machinery/chem_dispenser/chem_synthesizer/ui_interact(mob/user, datum/tgui/ui) ui = SStgui.try_update_ui(user, src, ui) if(!ui) diff --git a/code/modules/shuttle/spaceship_navigation_beacon.dm b/code/modules/shuttle/spaceship_navigation_beacon.dm index eb613be54de..41b3f5e39ed 100644 --- a/code/modules/shuttle/spaceship_navigation_beacon.dm +++ b/code/modules/shuttle/spaceship_navigation_beacon.dm @@ -5,7 +5,6 @@ icon_state = "beacon_active" base_icon_state = "beacon" density = TRUE - obj_flags = parent_type::obj_flags | NO_DECONSTRUCTION /// Locked beacons cannot be jumped to by ships. var/locked = FALSE diff --git a/code/modules/shuttle/special.dm b/code/modules/shuttle/special.dm index 989ab4edc94..e5b4b0eb024 100644 --- a/code/modules/shuttle/special.dm +++ b/code/modules/shuttle/special.dm @@ -79,7 +79,6 @@ var/obj/machinery/power/emitter/energycannon/magical/our_statue var/list/mob/living/sleepers = list() var/never_spoken = TRUE - obj_flags = parent_type::obj_flags | NO_DECONSTRUCTION /obj/structure/table/abductor/wabbajack/Initialize(mapload) . = ..() @@ -89,6 +88,12 @@ STOP_PROCESSING(SSobj, src) . = ..() +/obj/structure/table/abductor/wabbajack/screwdriver_act(mob/living/user, obj/item/tool) + return NONE + +/obj/structure/table/abductor/wabbajack/wrench_act(mob/living/user, obj/item/tool) + return NONE + /obj/structure/table/abductor/wabbajack/process() if(isnull(our_statue)) our_statue = locate() in orange(4, src) @@ -173,7 +178,6 @@ /obj/structure/table/wood/shuttle_bar resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF - obj_flags = parent_type::obj_flags | NO_DECONSTRUCTION max_integrity = 1000 var/boot_dir = 1 @@ -184,6 +188,12 @@ ) AddElement(/datum/element/connect_loc, loc_connections) +/obj/structure/table/wood/shuttle_bar/screwdriver_act(mob/living/user, obj/item/tool) + return NONE + +/obj/structure/table/wood/shuttle_bar/wrench_act(mob/living/user, obj/item/tool) + return NONE + /obj/structure/table/wood/shuttle_bar/proc/on_entered(datum/source, atom/movable/AM) SIGNAL_HANDLER var/mob/living/M = AM diff --git a/code/modules/shuttle/syndicate.dm b/code/modules/shuttle/syndicate.dm index 402a87bf6d4..08e0b0d2699 100644 --- a/code/modules/shuttle/syndicate.dm +++ b/code/modules/shuttle/syndicate.dm @@ -11,7 +11,9 @@ shuttleId = "syndicate" possible_destinations = "syndicate_away;syndicate_z5;syndicate_ne;syndicate_nw;syndicate_n;syndicate_se;syndicate_sw;syndicate_s;syndicate_custom" resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF - obj_flags = parent_type::obj_flags | NO_DECONSTRUCTION + +/obj/machinery/computer/shuttle/syndicate/screwdriver_act(mob/living/user, obj/item/I) + return NONE /obj/machinery/computer/shuttle/syndicate/launch_check(mob/user) . = ..() diff --git a/code/modules/transport/tram/tram_controller.dm b/code/modules/transport/tram/tram_controller.dm index 7912588ab8a..51b8a32acaf 100644 --- a/code/modules/transport/tram/tram_controller.dm +++ b/code/modules/transport/tram/tram_controller.dm @@ -708,7 +708,9 @@ /obj/machinery/transport/tram_controller/hilbert configured_transport_id = HILBERT_LINE_1 - obj_flags = parent_type::obj_flags | NO_DECONSTRUCTION + +/obj/machinery/transport/tram_controller/wrench_act_secondary(mob/living/user, obj/item/tool) + return NONE /obj/machinery/transport/tram_controller/Initialize(mapload) . = ..() @@ -847,7 +849,7 @@ return playsound(loc, 'sound/items/deconstruct.ogg', 50, vary = TRUE) balloon_alert(user, "unsecured") - deconstruct() + deconstruct(TRUE) return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN /obj/machinery/transport/tram_controller/screwdriver_act_secondary(mob/living/user, obj/item/tool) diff --git a/modular_nova/master_files/code/game/objects/items/stacks/sheets/sheet_types.dm b/modular_nova/master_files/code/game/objects/items/stacks/sheets/sheet_types.dm index ecb54e11ede..176b7ddcb3d 100644 --- a/modular_nova/master_files/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/modular_nova/master_files/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -79,10 +79,10 @@ GLOBAL_LIST_INIT(skyrat_wood_recipes, list( new/datum/stack_recipe("large wooden mortar", /obj/structure/large_mortar, 10, time = 3 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_TOOLS), new/datum/stack_recipe("wooden cutting board", /obj/item/cutting_board, 5, time = 2 SECONDS, check_density = FALSE, category = CAT_TOOLS), new/datum/stack_recipe("wooden shelf", /obj/structure/rack/wooden, 2, time = 2 SECONDS, one_per_turf = TRUE, on_solid_ground = FALSE, category = CAT_STRUCTURE), - new/datum/stack_recipe("seed shelf", /obj/machinery/smartfridge/seed_shelf, 10, time = 2 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_STRUCTURE), - new/datum/stack_recipe("produce bin", /obj/machinery/smartfridge/produce_bin, 10, time = 2 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_STRUCTURE), - new/datum/stack_recipe("produce display", /obj/machinery/smartfridge/produce_display, 10, time = 2 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_STRUCTURE), - new/datum/stack_recipe("ration shelf", /obj/machinery/smartfridge/ration_shelf, 10, time = 2 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_STRUCTURE), + new/datum/stack_recipe("seed shelf", /obj/machinery/smartfridge/wooden/seed_shelf, 10, time = 2 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_STRUCTURE), + new/datum/stack_recipe("produce bin", /obj/machinery/smartfridge/wooden/produce_bin, 10, time = 2 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_STRUCTURE), + new/datum/stack_recipe("produce display", /obj/machinery/smartfridge/wooden/produce_display, 10, time = 2 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_STRUCTURE), + new/datum/stack_recipe("ration shelf", /obj/machinery/smartfridge/wooden/ration_shelf, 10, time = 2 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_STRUCTURE), new/datum/stack_recipe("storage barrel", /obj/structure/closet/crate/wooden/storage_barrel, 4, time = 2 SECONDS, one_per_turf = TRUE, on_solid_ground = FALSE, category = CAT_STRUCTURE), new/datum/stack_recipe("worm barrel", /obj/structure/wormfarm, 5, time = 2 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_TOOLS), new/datum/stack_recipe("gutlunch trough", /obj/structure/ore_container/gutlunch_trough, 5, time = 2 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_STRUCTURE), diff --git a/modular_nova/master_files/code/game/objects/structures/towel_bins.dm b/modular_nova/master_files/code/game/objects/structures/towel_bins.dm index adf8066b6e3..5a45dc96a9a 100644 --- a/modular_nova/master_files/code/game/objects/structures/towel_bins.dm +++ b/modular_nova/master_files/code/game/objects/structures/towel_bins.dm @@ -48,16 +48,14 @@ /obj/structure/towel_bin/screwdriver_act(mob/living/user, obj/item/tool) - if(obj_flags & NO_DECONSTRUCTION) - return FALSE - if(amount) to_chat(user, span_warning("[src] must be empty first!")) return ITEM_INTERACT_SUCCESS if(tool.use_tool(src, user, 0.5 SECONDS, volume = 50)) to_chat(user, span_notice("You disassemble [src].")) - new /obj/item/stack/rods(loc, 2) + if(!(obj_flags & NO_DEBRIS_AFTER_DECONSTRUCTION)) + new /obj/item/stack/rods(loc, 2) qdel(src) return ITEM_INTERACT_SUCCESS diff --git a/modular_nova/modules/aesthetics/flag/code/signs_flags.dm b/modular_nova/modules/aesthetics/flag/code/signs_flags.dm index a327c5f80a2..06f3a79915a 100644 --- a/modular_nova/modules/aesthetics/flag/code/signs_flags.dm +++ b/modular_nova/modules/aesthetics/flag/code/signs_flags.dm @@ -16,7 +16,7 @@ /obj/structure/sign/flag/MouseDrop(over_object, src_location, over_location) . = ..() if(over_object == usr && Adjacent(usr)) - if(!item_flag || src.obj_flags & NO_DECONSTRUCTION) + if(!item_flag || src.obj_flags & NO_DEBRIS_AFTER_DECONSTRUCTION) return if(!usr.can_perform_action(src, NEED_DEXTERITY)) return diff --git a/modular_nova/modules/ashwalkers/code/buildings/fuelwell.dm b/modular_nova/modules/ashwalkers/code/buildings/fuelwell.dm index 862d311e16e..c16548df576 100644 --- a/modular_nova/modules/ashwalkers/code/buildings/fuelwell.dm +++ b/modular_nova/modules/ashwalkers/code/buildings/fuelwell.dm @@ -21,7 +21,7 @@ /obj/structure/sink/fuel_well/attackby(obj/item/O, mob/living/user, params) flick("puddle-oil-splash",src) - if(O.tool_behaviour == TOOL_SHOVEL && !(obj_flags & NO_DECONSTRUCTION)) //attempt to deconstruct the puddle with a shovel + if(O.tool_behaviour == TOOL_SHOVEL) //attempt to deconstruct the puddle with a shovel to_chat(user, "You fill in the fuel well with soil.") O.play_tool_sound(src) deconstruct() diff --git a/modular_nova/modules/cellguns/code/medigun_cells.dm b/modular_nova/modules/cellguns/code/medigun_cells.dm index 1968b167cdc..91816fc8b2a 100644 --- a/modular_nova/modules/cellguns/code/medigun_cells.dm +++ b/modular_nova/modules/cellguns/code/medigun_cells.dm @@ -538,7 +538,6 @@ icon_state = "hardlight_down" base_icon_state = "hardlight" max_integrity = 1 - obj_flags = CAN_BE_HIT | NO_DECONSTRUCTION //Made from nothing, can't deconstruct build_stack_type = null //It would not be good if people could use this to farm materials. var/deploy_time = 20 SECONDS //How long the roller beds lasts for without someone buckled to it. @@ -546,6 +545,10 @@ . = ..() addtimer(CALLBACK(src, PROC_REF(check_bed)), deploy_time) +// formerly NO_DECONSTRUCTION +/obj/structure/bed/medical/medigun/wrench_act_secondary(mob/living/user, obj/item/weapon) + return NONE + /obj/structure/bed/medical/medigun/proc/check_bed() //Checks to see if anyone is buckled to the bed, if not the bed will qdel itself. if(!has_buckled_mobs()) qdel(src) //Deletes the roller bed, mostly meant to prevent stockpiling and clutter diff --git a/modular_nova/modules/colony_fabricator/code/appliances/wall_cell_charger.dm b/modular_nova/modules/colony_fabricator/code/appliances/wall_cell_charger.dm index 4dc8057bfa9..4c38dda85ea 100644 --- a/modular_nova/modules/colony_fabricator/code/appliances/wall_cell_charger.dm +++ b/modular_nova/modules/colony_fabricator/code/appliances/wall_cell_charger.dm @@ -5,7 +5,6 @@ icon_state = "wall_charger" base_icon_state = "wall_charger" circuit = null - obj_flags = CAN_BE_HIT | NO_DECONSTRUCTION max_batteries = 3 charge_rate = 750 KILO WATTS /// The item we turn into when repacked @@ -27,6 +26,16 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/cell_charger_multi/wall_mounted, 29) deconstruct(TRUE) return +// formerly NO_DECONSTRUCTION +/obj/machinery/cell_charger_multi/wall_mounted/default_deconstruction_screwdriver(mob/user, icon_state_open, icon_state_closed, obj/item/screwdriver) + return NONE + +/obj/machinery/cell_charger_multi/wall_mounted/default_deconstruction_crowbar(obj/item/crowbar, ignore_panel, custom_deconstruct) + return NONE + +/obj/machinery/cell_charger_multi/wall_mounted/default_pry_open(obj/item/crowbar, close_after_pry, open_density, closed_density) + return NONE + /obj/machinery/cell_charger_multi/wall_mounted/on_deconstruction(disassembled) if(disassembled) new repacked_type(drop_location()) diff --git a/modular_nova/modules/colony_fabricator/code/colony_fabricator.dm b/modular_nova/modules/colony_fabricator/code/colony_fabricator.dm index b2d86073464..eb85dcedd1b 100644 --- a/modular_nova/modules/colony_fabricator/code/colony_fabricator.dm +++ b/modular_nova/modules/colony_fabricator/code/colony_fabricator.dm @@ -9,7 +9,6 @@ production_animation = null circuit = null production_animation = "colony_lathe_n" - obj_flags = CAN_BE_HIT | NO_DECONSTRUCTION light_color = LIGHT_COLOR_BRIGHT_YELLOW light_power = 5 allowed_buildtypes = COLONY_FABRICATOR @@ -33,6 +32,16 @@ QDEL_NULL(soundloop) return ..() +// formerly NO_DECONSTRUCTION +/obj/machinery/rnd/production/colony_lathe/default_deconstruction_screwdriver(mob/user, icon_state_open, icon_state_closed, obj/item/screwdriver) + return NONE + +/obj/machinery/rnd/production/colony_lathe/default_deconstruction_crowbar(obj/item/crowbar, ignore_panel, custom_deconstruct) + return NONE + +/obj/machinery/rnd/production/colony_lathe/default_pry_open(obj/item/crowbar, close_after_pry, open_density, closed_density) + return NONE + /// Proc for starting extra printing visuals, because upstream removed any nice way to do this /obj/machinery/rnd/production/proc/start_printing_visuals() return diff --git a/modular_nova/modules/colony_fabricator/code/machines/arc_furnace.dm b/modular_nova/modules/colony_fabricator/code/machines/arc_furnace.dm index 2ca5a09d662..1c18067cfaa 100644 --- a/modular_nova/modules/colony_fabricator/code/machines/arc_furnace.dm +++ b/modular_nova/modules/colony_fabricator/code/machines/arc_furnace.dm @@ -18,7 +18,6 @@ circuit = null light_color = LIGHT_COLOR_BRIGHT_YELLOW light_power = 10 - obj_flags = CAN_BE_HIT | NO_DECONSTRUCTION active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION * 10 // This baby consumes so much power /// The item we turn into when repacked var/repacked_type = /obj/item/flatpacked_machine/arc_furnace @@ -46,6 +45,16 @@ if(length(contents)) . += span_notice("It has [contents[1]] sitting in it.") +// formerly NO_DECONSTRUCTION +/obj/machinery/arc_furnace/default_deconstruction_screwdriver(mob/user, icon_state_open, icon_state_closed, obj/item/screwdriver) + return NONE + +/obj/machinery/arc_furnace/default_deconstruction_crowbar(obj/item/crowbar, ignore_panel, custom_deconstruct) + return NONE + +/obj/machinery/arc_furnace/default_pry_open(obj/item/crowbar, close_after_pry, open_density, closed_density) + return NONE + /obj/machinery/arc_furnace/on_deconstruction(disassembled) eject_contents() diff --git a/modular_nova/modules/colony_fabricator/code/machines/power_storage_unit.dm b/modular_nova/modules/colony_fabricator/code/machines/power_storage_unit.dm index 4ee00d66f95..9abfafdf3da 100644 --- a/modular_nova/modules/colony_fabricator/code/machines/power_storage_unit.dm +++ b/modular_nova/modules/colony_fabricator/code/machines/power_storage_unit.dm @@ -9,7 +9,6 @@ input_level_max = 400 KILO WATTS output_level_max = 400 KILO WATTS circuit = null - obj_flags = CAN_BE_HIT | NO_DECONSTRUCTION /// The item we turn into when repacked var/repacked_type = /obj/item/flatpacked_machine/station_battery @@ -34,6 +33,13 @@ to_chat(user, span_notice("You close the maintenance hatch of [src].")) return TRUE +// formerly NO_DECONSTRUCTION +/obj/machinery/power/smes/battery_pack/default_deconstruction_crowbar(obj/item/crowbar, ignore_panel, custom_deconstruct) + return NONE + +/obj/machinery/power/smes/battery_pack/default_pry_open(obj/item/crowbar, close_after_pry, open_density, closed_density) + return NONE + // We don't care about the parts updates because we don't want them to change /obj/machinery/power/smes/battery_pack/RefreshParts() return diff --git a/modular_nova/modules/colony_fabricator/code/machines/rtg.dm b/modular_nova/modules/colony_fabricator/code/machines/rtg.dm index 49eb96d4fb7..7a8cdc59e54 100644 --- a/modular_nova/modules/colony_fabricator/code/machines/rtg.dm +++ b/modular_nova/modules/colony_fabricator/code/machines/rtg.dm @@ -6,7 +6,6 @@ application." icon = 'modular_nova/modules/colony_fabricator/icons/machines.dmi' circuit = null - obj_flags = CAN_BE_HIT | NO_DECONSTRUCTION power_gen = 7.5 KILO WATTS /// What we turn into when we are repacked var/repacked_type = /obj/item/flatpacked_machine/rtg @@ -21,6 +20,16 @@ // Item for creating the arc furnace or carrying it around +// formerly NO_DECONSTRUCTION +/obj/machinery/power/rtg/portable/default_deconstruction_screwdriver(mob/user, icon_state_open, icon_state_closed, obj/item/screwdriver) + return NONE + +/obj/machinery/power/rtg/portable/default_deconstruction_crowbar(obj/item/crowbar, ignore_panel, custom_deconstruct) + return NONE + +/obj/machinery/power/rtg/portable/default_pry_open(obj/item/crowbar, close_after_pry, open_density, closed_density) + return NONE + /obj/item/flatpacked_machine/rtg name = "flat-packed radioisotope thermoelectric generator" icon_state = "rtg_packed" diff --git a/modular_nova/modules/colony_fabricator/code/machines/solar_panels.dm b/modular_nova/modules/colony_fabricator/code/machines/solar_panels.dm index b8191fd795a..2a97d940548 100644 --- a/modular_nova/modules/colony_fabricator/code/machines/solar_panels.dm +++ b/modular_nova/modules/colony_fabricator/code/machines/solar_panels.dm @@ -2,7 +2,6 @@ /obj/machinery/power/solar/deployable icon = 'modular_nova/modules/colony_fabricator/icons/machines.dmi' - obj_flags = CAN_BE_HIT | NO_DECONSTRUCTION /// The item we turn into when repacked var/repacked_type = /obj/item/flatpacked_machine/solar @@ -20,6 +19,16 @@ qdel(assembly) return ..() +// formerly NO_DECONSTRUCTION +/obj/machinery/power/solar/deployable/default_deconstruction_screwdriver(mob/user, icon_state_open, icon_state_closed, obj/item/screwdriver) + return NONE + +/obj/machinery/power/solar/deployable/default_deconstruction_crowbar(obj/item/crowbar, ignore_panel, custom_deconstruct) + return NONE + +/obj/machinery/power/solar/deployable/default_pry_open(obj/item/crowbar, close_after_pry, open_density, closed_density) + return NONE + // Solar panel deployable item /obj/item/flatpacked_machine/solar @@ -37,7 +46,6 @@ /obj/machinery/power/tracker/deployable icon = 'modular_nova/modules/colony_fabricator/icons/machines.dmi' - obj_flags = CAN_BE_HIT | NO_DECONSTRUCTION /// The item we turn into when repacked var/repacked_type = /obj/item/flatpacked_machine/solar_tracker @@ -47,7 +55,17 @@ AddElement(/datum/element/manufacturer_examine, COMPANY_FRONTIER) /obj/machinery/power/tracker/deployable/crowbar_act(mob/user, obj/item/item_acting) - return + return NONE + +// formerly NO_DECONSTRUCTION +/obj/machinery/power/tracker/deployable/default_deconstruction_screwdriver(mob/user, icon_state_open, icon_state_closed, obj/item/screwdriver) + return NONE + +/obj/machinery/power/tracker/deployable/default_deconstruction_crowbar(obj/item/crowbar, ignore_panel, custom_deconstruct) + return NONE + +/obj/machinery/power/tracker/deployable/default_pry_open(obj/item/crowbar, close_after_pry, open_density, closed_density) + return NONE /obj/machinery/power/tracker/deployable/on_deconstruction(disassembled) var/obj/item/solar_assembly/assembly = locate() in src diff --git a/modular_nova/modules/colony_fabricator/code/machines/solid_fuel_generator.dm b/modular_nova/modules/colony_fabricator/code/machines/solid_fuel_generator.dm index caa7883f643..0e8d985d9f5 100644 --- a/modular_nova/modules/colony_fabricator/code/machines/solid_fuel_generator.dm +++ b/modular_nova/modules/colony_fabricator/code/machines/solid_fuel_generator.dm @@ -11,7 +11,6 @@ icon_state = "fuel_generator_0" base_icon_state = "fuel_generator" circuit = null - obj_flags = CAN_BE_HIT | NO_DECONSTRUCTION anchored = TRUE max_sheets = 25 time_per_sheet = 100 @@ -28,6 +27,16 @@ if(!mapload) flick("fuel_generator_deploy", src) +// formerly NO_DECONSTRUCTION +/obj/machinery/power/port_gen/pacman/solid_fuel/default_deconstruction_screwdriver(mob/user, icon_state_open, icon_state_closed, obj/item/screwdriver) + return NONE + +/obj/machinery/power/port_gen/pacman/solid_fuel/default_deconstruction_crowbar(obj/item/crowbar, ignore_panel, custom_deconstruct) + return NONE + +/obj/machinery/power/port_gen/pacman/solid_fuel/default_pry_open(obj/item/crowbar, close_after_pry, open_density, closed_density) + return NONE + // We don't need to worry about the board, this machine doesn't have one! /obj/machinery/power/port_gen/pacman/solid_fuel/on_construction(mob/user) return diff --git a/modular_nova/modules/mapping/code/interdyne.dm b/modular_nova/modules/mapping/code/interdyne.dm index 2825baf6b40..9e4601f280f 100644 --- a/modular_nova/modules/mapping/code/interdyne.dm +++ b/modular_nova/modules/mapping/code/interdyne.dm @@ -1,7 +1,6 @@ // Upgraded Interdyne machines /obj/machinery/processor/slime/fullupgrade - obj_flags = parent_type::obj_flags | NO_DECONSTRUCTION circuit = /obj/item/circuitboard/machine/processor/slime/fullupgrade /obj/item/circuitboard/machine/processor/slime/fullupgrade @@ -13,10 +12,28 @@ /datum/stock_part/matter_bin/tier4 = 1, ) +/obj/machinery/processor/slime/fullupgrade/default_deconstruction_screwdriver(mob/user, icon_state_open, icon_state_closed, obj/item/screwdriver) + return NONE + +/obj/machinery/processor/slime/fullupgrade/default_deconstruction_crowbar(obj/item/crowbar, ignore_panel, custom_deconstruct) + return NONE + +/obj/machinery/processor/slime/fullupgrade/default_pry_open(obj/item/crowbar, close_after_pry, open_density, closed_density) + return NONE + /obj/machinery/monkey_recycler/fullupgrade - obj_flags = parent_type::obj_flags | NO_DECONSTRUCTION circuit = /obj/item/circuitboard/machine/monkey_recycler/fullupgrade +// formerly NO_DECONSTRUCTION +/obj/machinery/monkey_recycler/fullupgrade/default_deconstruction_screwdriver(mob/user, icon_state_open, icon_state_closed, obj/item/screwdriver) + return NONE + +/obj/machinery/monkey_recycler/fullupgrade/default_deconstruction_crowbar(obj/item/crowbar, ignore_panel, custom_deconstruct) + return NONE + +/obj/machinery/monkey_recycler/fullupgrade/default_pry_open(obj/item/crowbar, close_after_pry, open_density, closed_density) + return NONE + /obj/item/circuitboard/machine/monkey_recycler/fullupgrade name = "\improper Monkey Recycler" greyscale_colors = CIRCUIT_COLOR_SCIENCE @@ -28,7 +45,6 @@ /obj/machinery/chem_master/fullupgrade name = "\improper ChemMaster 4000" - obj_flags = parent_type::obj_flags | NO_DECONSTRUCTION circuit = /obj/item/circuitboard/machine/chem_master/fullupgrade /obj/item/circuitboard/machine/chem_master/fullupgrade @@ -44,9 +60,17 @@ needs_anchored = FALSE /obj/machinery/biogenerator/fullupgrade - obj_flags = parent_type::obj_flags | NO_DECONSTRUCTION circuit = /obj/item/circuitboard/machine/biogenerator/fullupgrade +/obj/machinery/biogenerator/fullupgrade/default_deconstruction_screwdriver(mob/user, icon_state_open, icon_state_closed, obj/item/screwdriver) + return NONE + +/obj/machinery/biogenerator/fullupgrade/default_deconstruction_crowbar(obj/item/crowbar, ignore_panel, custom_deconstruct) + return NONE + +/obj/machinery/biogenerator/fullupgrade/default_pry_open(obj/item/crowbar, close_after_pry, open_density, closed_density) + return NONE + /obj/item/circuitboard/machine/biogenerator/fullupgrade name = "\improper Biogenerator" greyscale_colors = CIRCUIT_COLOR_SERVICE diff --git a/modular_nova/modules/mapping/code/machinery.dm b/modular_nova/modules/mapping/code/machinery.dm index 531ee924cf2..72bfa72614b 100644 --- a/modular_nova/modules/mapping/code/machinery.dm +++ b/modular_nova/modules/mapping/code/machinery.dm @@ -13,9 +13,6 @@ /obj/item/gps/computer/space/wrench_act(mob/living/user, obj/item/I) . = ..() - if(obj_flags & NO_DECONSTRUCTION) - return TRUE - if(I.use_tool(src, user, 20, volume=50)) user.visible_message(span_warning("[user] disassembles [src]."), span_notice("You start to disassemble [src]..."), span_hear("You hear clanking and banging noises.")) @@ -32,21 +29,19 @@ return attack_self(user) - /** * Power related machines */ /// Primarily a replacement for Bluespace SMES/RTG spam into be something more realistic /obj/machinery/power/micro_reactor - icon = 'modular_nova/modules/mapping/icons/machinery/reactor.dmi' + icon = 'modular_nova/modules/mapping/icons/machinery/reactor.dmi' name = "micro reactor" desc = "Designed as a self-containing powersource for long-haul vessels, the stamp of SOAR Industries \ on the top. A steady output once active with plenty of safety features to ensure a meltdown is not possible, \ having one installed means a steady clean powersource for between 75-125 years." icon_state = "reactor0_0" base_icon_state = "reactor0" - obj_flags = CAN_BE_HIT | NO_DECONSTRUCTION density = TRUE anchored = TRUE @@ -70,6 +65,16 @@ QDEL_NULL(soundloop) return ..() +// formerly NO_DECONSTRUCTION +/obj/machinery/power/micro_reactor/default_deconstruction_screwdriver(mob/user, icon_state_open, icon_state_closed, obj/item/screwdriver) + return NONE + +/obj/machinery/power/micro_reactor/default_deconstruction_crowbar(obj/item/crowbar, ignore_panel, custom_deconstruct) + return NONE + +/obj/machinery/power/micro_reactor/default_pry_open(obj/item/crowbar, close_after_pry, open_density, closed_density) + return NONE + /obj/machinery/power/micro_reactor/update_icon_state() icon_state = "[base_icon_state]_[active]" return ..() @@ -96,7 +101,7 @@ if(active) active = FALSE set_light_power(0) - set_light_on(0) + set_light_on(0) update_appearance() soundloop.stop() else diff --git a/modular_nova/modules/mapping/code/shuttles.dm b/modular_nova/modules/mapping/code/shuttles.dm index 9dc327ea3ae..74c65b26af6 100644 --- a/modular_nova/modules/mapping/code/shuttles.dm +++ b/modular_nova/modules/mapping/code/shuttles.dm @@ -89,7 +89,16 @@ shuttleId = "slaver_syndie" possible_destinations = "syndicate_ne;syndicate_nw;syndicate_n;syndicate_se;syndicate_sw;syndicate_s" resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF - obj_flags = CAN_BE_HIT | NO_DECONSTRUCTION + +// formerly NO_DECONSTRUCTION +/obj/machinery/computer/shuttle/slaver/default_deconstruction_screwdriver(mob/user, icon_state_open, icon_state_closed, obj/item/screwdriver) + return NONE + +/obj/machinery/computer/shuttle/slaver/default_deconstruction_crowbar(obj/item/crowbar, ignore_panel, custom_deconstruct) + return NONE + +/obj/machinery/computer/shuttle/slaver/default_pry_open(obj/item/crowbar, close_after_pry = FALSE, open_density = FALSE, closed_density = TRUE) + return NONE /datum/map_template/shuttle/slaver_ship port_id = "slaver ship" diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_machinery/milking_machine.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_machinery/milking_machine.dm index e37a66390dd..710ec43555d 100644 --- a/modular_nova/modules/modular_items/lewd_items/code/lewd_machinery/milking_machine.dm +++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_machinery/milking_machine.dm @@ -16,7 +16,6 @@ icon_state = "milking_pink_off" max_buckled_mobs = 1 item_chair = null - obj_flags = CAN_BE_HIT | NO_DECONSTRUCTION max_integrity = 75 var/static/list/milkingmachine_designs @@ -67,33 +66,6 @@ var/mutable_appearance/organ_overlay var/organ_overlay_new_icon_state = "" // Organ overlay update optimization -// Additional examine text -/obj/structure/chair/milking_machine/examine(mob/user) - . = ..() - . += span_notice("What are these metal mounts on the armrests for...?") - -/obj/structure/chair/milking_machine/Destroy() - if(current_mob) - if(current_mob.handcuffed) - current_mob.handcuffed.dropped(current_mob) - current_mob.set_handcuffed(null) - current_mob.update_abstract_handcuffed() - current_mob.layer = initial(current_mob.layer) - - if(beaker) - qdel(beaker) - beaker = null - - current_selected_organ = null - current_mob = null - current_breasts = null - current_testicles = null - current_vagina = null - - STOP_PROCESSING(SSobj, src) - unbuckle_all_mobs() - return ..() - // Object initialization /obj/structure/chair/milking_machine/Initialize(mapload) . = ..() @@ -124,6 +96,37 @@ populate_milkingmachine_designs() START_PROCESSING(SSobj, src) +/obj/structure/chair/milking_machine/Destroy() + if(current_mob) + if(current_mob.handcuffed) + current_mob.handcuffed.dropped(current_mob) + current_mob.set_handcuffed(null) + current_mob.update_abstract_handcuffed() + current_mob.layer = initial(current_mob.layer) + + if(beaker) + qdel(beaker) + beaker = null + + current_selected_organ = null + current_mob = null + current_breasts = null + current_testicles = null + current_vagina = null + + STOP_PROCESSING(SSobj, src) + unbuckle_all_mobs() + return ..() + +// Additional examine text +/obj/structure/chair/milking_machine/examine(mob/user) + . = ..() + . += span_notice("What are these metal mounts on the armrests for...?") + +// formerly NO_DECONSTRUCTION +/obj/structure/chair/milking_machine/wrench_act_secondary(mob/living/user, obj/item/weapon) + return NONE + /* * APPEARANCE MANAGEMENT */ diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_structures/bdsm_furniture.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_structures/bdsm_furniture.dm index 23cae8148d4..07fa5324a59 100644 --- a/modular_nova/modules/modular_items/lewd_items/code/lewd_structures/bdsm_furniture.dm +++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_structures/bdsm_furniture.dm @@ -7,7 +7,6 @@ icon = 'modular_nova/modules/modular_items/lewd_items/icons/obj/lewd_structures/bdsm_furniture.dmi' icon_state = "bdsm_bed" max_integrity = 50 - obj_flags = CAN_BE_HIT | NO_DECONSTRUCTION /obj/item/bdsm_bed_kit name = "bdsm bed construction kit" @@ -41,6 +40,10 @@ . = ..() . += span_purple("[src] can be assembled by using Ctrl+Shift+Click while [src] is on the floor.") +// formerly NO_DECONSTRUCTION +/obj/structure/bed/bdsm_bed/wrench_act_secondary(mob/living/user, obj/item/weapon) + return NONE + /obj/structure/bed/bdsm_bed/post_buckle_mob(mob/living/affected_mob) density = TRUE //Push them up from the normal lying position diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_structures/construction.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_structures/construction.dm index ef70f268a67..08cf4de5752 100644 --- a/modular_nova/modules/modular_items/lewd_items/code/lewd_structures/construction.dm +++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_structures/construction.dm @@ -3,7 +3,7 @@ name = "construction kit" desc = "Used for constructing various things" w_class = WEIGHT_CLASS_BULKY - obj_flags = CAN_BE_HIT | NO_DECONSTRUCTION + obj_flags = CAN_BE_HIT throwforce = 0 ///What is the path for the resulting structure generating by using this item? var/obj/structure/resulting_structure = /obj/structure/chair diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_structures/shibari_stand.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_structures/shibari_stand.dm index c9931d7382b..ff64cbe0a77 100644 --- a/modular_nova/modules/modular_items/lewd_items/code/lewd_structures/shibari_stand.dm +++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_structures/shibari_stand.dm @@ -7,7 +7,6 @@ layer = 4 item_chair = null buildstacktype = null - obj_flags = CAN_BE_HIT | NO_DECONSTRUCTION ///Overlays for ropes var/static/mutable_appearance/shibari_rope_overlay var/static/mutable_appearance/shibari_rope_overlay_behind @@ -45,6 +44,10 @@ if(!has_buckled_mobs() && can_buckle) . += span_notice("They need to be wearing full-body shibari, and you need to be holding ropes!") +// formerly NO_DECONSTRUCT +/obj/structure/chair/shibari_stand/wrench_act_secondary(mob/living/user, obj/item/weapon) + return NONE + /obj/structure/chair/shibari_stand/user_unbuckle_mob(mob/living/buckled_mob, mob/living/user) var/mob/living/buckled = buckled_mob if(buckled) diff --git a/modular_nova/modules/primitive_cooking_additions/code/stone_oven.dm b/modular_nova/modules/primitive_cooking_additions/code/stone_oven.dm index 40b13ac9c69..9367f564350 100644 --- a/modular_nova/modules/primitive_cooking_additions/code/stone_oven.dm +++ b/modular_nova/modules/primitive_cooking_additions/code/stone_oven.dm @@ -6,7 +6,6 @@ icon = 'modular_nova/modules/primitive_cooking_additions/icons/stone_kitchen_machines.dmi' circuit = null use_power = FALSE - obj_flags = CAN_BE_HIT | NO_DECONSTRUCTION /// A list of the different oven trays we can spawn with var/static/list/random_oven_tray_types = list( @@ -32,6 +31,16 @@ . += span_notice("It can be taken apart with a crowbar.") +// formerly NO_DECONSTRUCTION +/obj/machinery/oven/stone/default_deconstruction_screwdriver(mob/user, icon_state_open, icon_state_closed, obj/item/screwdriver) + return NONE + +/obj/machinery/oven/stone/default_deconstruction_crowbar(obj/item/crowbar, ignore_panel, custom_deconstruct) + return NONE + +/obj/machinery/oven/stone/default_pry_open(obj/item/crowbar, close_after_pry, open_density, closed_density) + return NONE + /obj/machinery/oven/stone/add_tray_to_oven(obj/item/plate/oven_tray, mob/baker) used_tray = oven_tray diff --git a/modular_nova/modules/primitive_cooking_additions/code/stone_stove.dm b/modular_nova/modules/primitive_cooking_additions/code/stone_stove.dm index 615bc4ed500..5c9aea2d75d 100644 --- a/modular_nova/modules/primitive_cooking_additions/code/stone_stove.dm +++ b/modular_nova/modules/primitive_cooking_additions/code/stone_stove.dm @@ -10,7 +10,6 @@ use_power = FALSE circuit = null resistance_flags = FIRE_PROOF - obj_flags = CAN_BE_HIT | NO_DECONSTRUCTION /obj/machinery/primitive_stove/Initialize(mapload) . = ..() @@ -22,6 +21,13 @@ . += span_notice("It can be taken apart with a crowbar.") +// formerly NO_DECONSTRUCTION +/obj/machinery/primitive_stove/default_deconstruction_screwdriver(mob/user, icon_state_open, icon_state_closed, obj/item/screwdriver) + return NONE + +/obj/machinery/primitive_stove/default_deconstruction_crowbar(obj/item/crowbar, ignore_panel, custom_deconstruct) + return NONE + /obj/machinery/primitive_stove/crowbar_act(mob/living/user, obj/item/tool) user.balloon_alert_to_viewers("disassembling...") if(!tool.use_tool(src, user, 2 SECONDS, volume = 100)) diff --git a/modular_nova/modules/primitive_structures/code/fencing.dm b/modular_nova/modules/primitive_structures/code/fencing.dm index fbc74dba923..d580a17817e 100644 --- a/modular_nova/modules/primitive_structures/code/fencing.dm +++ b/modular_nova/modules/primitive_structures/code/fencing.dm @@ -6,7 +6,7 @@ icon = 'modular_nova/modules/primitive_structures/icons/wooden_fence.dmi' icon_state = "fence" resistance_flags = FLAMMABLE - flags_1 = NO_DECONSTRUCTION | ON_BORDER_1 + flags_1 = ON_BORDER_1 /// If we randomize our icon on spawning var/random_icons = TRUE @@ -21,6 +21,10 @@ ) update_appearance() +// formerly NO_DECONSTRUCTION +/obj/structure/railing/wirecutter_act(mob/living/user, obj/item/I) + return NONE + // Fence gates for the above mentioned fences /obj/structure/railing/wooden_fencing/gate diff --git a/modular_nova/modules/primitive_structures/code/storage_structures.dm b/modular_nova/modules/primitive_structures/code/storage_structures.dm index 19e4586c8f3..342e9122346 100644 --- a/modular_nova/modules/primitive_structures/code/storage_structures.dm +++ b/modular_nova/modules/primitive_structures/code/storage_structures.dm @@ -5,7 +5,6 @@ icon_state = "shelf_wood" icon = 'modular_nova/modules/primitive_structures/icons/storage.dmi' resistance_flags = FLAMMABLE - obj_flags = CAN_BE_HIT | NO_DECONSTRUCTION /obj/structure/rack/wooden/MouseDrop_T(obj/object, mob/user, params) . = ..() @@ -19,6 +18,9 @@ object.pixel_x = clamp(text2num(LAZYACCESS(modifiers, ICON_X)) - 16, -(world.icon_size / 3), world.icon_size / 3) object.pixel_y = text2num(LAZYACCESS(modifiers, ICON_Y)) > 16 ? 10 : -4 +/obj/structure/rack/wrench_act_secondary(mob/living/user, obj/item/tool) + return NONE + /obj/structure/rack/wooden/crowbar_act(mob/living/user, obj/item/tool) user.balloon_alert_to_viewers("disassembling...") if(!tool.use_tool(src, user, 2 SECONDS, volume = 100)) @@ -40,28 +42,16 @@ base_icon_state = "barrel" icon = 'modular_nova/modules/primitive_structures/icons/storage.dmi' resistance_flags = FLAMMABLE - obj_flags = CAN_BE_HIT | NO_DECONSTRUCTION - -/obj/structure/closet/crate/wooden/storage_barrel/crowbar_act(mob/living/user, obj/item/tool) - user.balloon_alert_to_viewers("disassembling...") - if(!tool.use_tool(src, user, 2 SECONDS, volume = 100)) - return - - deconstruct(TRUE) - return ITEM_INTERACT_SUCCESS - -/obj/structure/closet/crate/wooden/storage_barrel/atom_deconstruct(disassembled = TRUE) - new /obj/item/stack/sheet/mineral/wood(drop_location(), 4) - return ..() + material_drop = /obj/item/stack/sheet/mineral/wood + material_drop_amount = 4 + cutting_tool = /obj/item/crowbar -/obj/machinery/smartfridge/produce_bin - name = "produce bin" - desc = "A wooden hamper, used to hold plant products and try to keep them safe from pests." - icon_state = "producebin" +/obj/machinery/smartfridge/wooden + name = "debug wooden smartfridge" + desc = "You should not be seeing this!" icon = 'modular_nova/modules/primitive_structures/icons/storage.dmi' resistance_flags = FLAMMABLE - obj_flags = parent_type::obj_flags | NO_DECONSTRUCTION - base_build_path = /obj/machinery/smartfridge/produce_bin + base_build_path = /obj/machinery/smartfridge/wooden base_icon_state = "produce" use_power = NO_POWER_USE light_power = 0 @@ -71,20 +61,22 @@ can_atmos_pass = ATMOS_PASS_YES visible_contents = TRUE -/obj/machinery/smartfridge/produce_bin/accept_check(obj/item/item_to_check) - var/static/list/accepted_items = list( - /obj/item/food/grown, - /obj/item/grown, - /obj/item/graft, - ) +/obj/machinery/smartfridge/wooden/Initialize(mapload) + . = ..() + if(type == /obj/machinery/smartfridge/wooden) // don't even let these prototypes exist + return INITIALIZE_HINT_QDEL - return is_type_in_list(item_to_check, accepted_items) +// formerly NO_DECONSTRUCTION +/obj/machinery/smartfridge/wooden/default_deconstruction_screwdriver(mob/user, icon_state_open, icon_state_closed, obj/item/screwdriver) + return NONE -/obj/machinery/smartfridge/produce_bin/structure_examine() - . = span_info("The whole rack can be [EXAMINE_HINT("pried")] apart.") +/obj/machinery/smartfridge/wooden/default_deconstruction_crowbar(obj/item/crowbar, ignore_panel, custom_deconstruct) + return NONE +/obj/machinery/smartfridge/wooden/default_pry_open(obj/item/crowbar, close_after_pry, open_density, closed_density) + return NONE -/obj/machinery/smartfridge/produce_bin/crowbar_act(mob/living/user, obj/item/tool) +/obj/machinery/smartfridge/wooden/crowbar_act(mob/living/user, obj/item/tool) user.balloon_alert_to_viewers("disassembling...") if(!tool.use_tool(src, user, 2 SECONDS, volume = 100)) return @@ -93,88 +85,53 @@ deconstruct(TRUE) return ITEM_INTERACT_SUCCESS -/obj/machinery/smartfridge/seed_shelf +/obj/machinery/smartfridge/wooden/structure_examine() + . = span_info("The whole rack can be [EXAMINE_HINT("pried")] apart.") + +/obj/machinery/smartfridge/wooden/produce_bin + name = "produce bin" + desc = "A wooden hamper, used to hold plant products and try to keep them safe from pests." + icon_state = "producebin" + base_build_path = /obj/machinery/smartfridge/wooden/produce_bin + base_icon_state = "produce" + +/obj/machinery/smartfridge/wooden/produce_bin/accept_check(obj/item/item_to_check) + var/static/list/accepted_items = list( + /obj/item/food/grown, + /obj/item/grown, + /obj/item/graft, + ) + + return is_type_in_list(item_to_check, accepted_items) + +/obj/machinery/smartfridge/wooden/seed_shelf name = "seed shelf" desc = "A wooden shelf, used to hold seeds, preventing them from germinating early." icon_state = "seedshelf" - icon = 'modular_nova/modules/primitive_structures/icons/storage.dmi' - resistance_flags = FLAMMABLE - obj_flags = parent_type::obj_flags | NO_DECONSTRUCTION - base_build_path = /obj/machinery/smartfridge/seed_shelf + base_build_path = /obj/machinery/smartfridge/wooden/seed_shelf base_icon_state = "seed" - use_power = NO_POWER_USE - light_power = 0 - idle_power_usage = 0 - circuit = null - has_emissive = FALSE - can_atmos_pass = ATMOS_PASS_YES - visible_contents = TRUE -/obj/machinery/smartfridge/seed_shelf/accept_check(obj/item/item_to_check) +/obj/machinery/smartfridge/wooden/seed_shelf/wooden/accept_check(obj/item/item_to_check) return istype(item_to_check, /obj/item/seeds) -/obj/machinery/smartfridge/seed_shelf/structure_examine() - . = span_info("The whole rack can be [EXAMINE_HINT("pried")] apart.") - -/obj/machinery/smartfridge/seed_shelf/crowbar_act(mob/living/user, obj/item/tool) - user.balloon_alert_to_viewers("disassembling...") - if(!tool.use_tool(src, user, 2 SECONDS, volume = 100)) - return - - new /obj/item/stack/sheet/mineral/wood(drop_location(), 10) - deconstruct(TRUE) - return ITEM_INTERACT_SUCCESS - -/obj/machinery/smartfridge/ration_shelf +/obj/machinery/smartfridge/wooden/ration_shelf name = "ration shelf" desc = "A wooden shelf, used to store food... Preferably preserved." icon_state = "rationshelf" - icon = 'modular_nova/modules/primitive_structures/icons/storage.dmi' - resistance_flags = FLAMMABLE - obj_flags = parent_type::obj_flags | NO_DECONSTRUCTION - base_build_path = /obj/machinery/smartfridge/ration_shelf + base_build_path = /obj/machinery/smartfridge/wooden/ration_shelf base_icon_state = "ration" - use_power = NO_POWER_USE - light_power = 0 - idle_power_usage = 0 - circuit = null - has_emissive = FALSE - can_atmos_pass = ATMOS_PASS_YES - visible_contents = TRUE -/obj/machinery/smartfridge/ration_shelf/accept_check(obj/item/item_to_check) +/obj/machinery/smartfridge/wooden/ration_shelf/wooden/accept_check(obj/item/item_to_check) return (IS_EDIBLE(item_to_check) || (istype(item_to_check,/obj/item/reagent_containers/cup/bowl) && length(item_to_check.reagents?.reagent_list))) -/obj/machinery/smartfridge/ration_shelf/structure_examine() - . = span_info("The whole rack can be [EXAMINE_HINT("pried")] apart.") - -/obj/machinery/smartfridge/ration_shelf/crowbar_act(mob/living/user, obj/item/tool) - user.balloon_alert_to_viewers("disassembling...") - if(!tool.use_tool(src, user, 2 SECONDS, volume = 100)) - return - - new /obj/item/stack/sheet/mineral/wood(drop_location(), 10) - deconstruct(TRUE) - return ITEM_INTERACT_SUCCESS - -/obj/machinery/smartfridge/produce_display +/obj/machinery/smartfridge/wooden/produce_display name = "produce display" desc = "A wooden table with awning, used to display produce items." icon_state = "producedisplay" - icon = 'modular_nova/modules/primitive_structures/icons/storage.dmi' - resistance_flags = FLAMMABLE - obj_flags = parent_type::obj_flags | NO_DECONSTRUCTION - base_build_path = /obj/machinery/smartfridge/produce_display + base_build_path = /obj/machinery/smartfridge/wooden/produce_display base_icon_state = "nonfood" - use_power = NO_POWER_USE - light_power = 0 - idle_power_usage = 0 - circuit = null - has_emissive = FALSE - can_atmos_pass = ATMOS_PASS_YES - visible_contents = TRUE -/obj/machinery/smartfridge/produce_display/accept_check(obj/item/item_to_check) +/obj/machinery/smartfridge/wooden/produce_display/accept_check(obj/item/item_to_check) var/static/list/accepted_items = list( /obj/item/grown, /obj/item/bouquet, @@ -182,15 +139,3 @@ ) return is_type_in_list(item_to_check, accepted_items) - -/obj/machinery/smartfridge/produce_display/structure_examine() - . = span_info("The whole rack can be [EXAMINE_HINT("pried")] apart.") - -/obj/machinery/smartfridge/produce_display/crowbar_act(mob/living/user, obj/item/tool) - user.balloon_alert_to_viewers("disassembling...") - if(!tool.use_tool(src, user, 2 SECONDS, volume = 100)) - return - - new /obj/item/stack/sheet/mineral/wood(drop_location(), 10) - deconstruct(TRUE) - return ITEM_INTERACT_SUCCESS diff --git a/modular_nova/modules/primitive_structures/code/windows.dm b/modular_nova/modules/primitive_structures/code/windows.dm index 7074f07e31c..e4eb26e294c 100644 --- a/modular_nova/modules/primitive_structures/code/windows.dm +++ b/modular_nova/modules/primitive_structures/code/windows.dm @@ -4,7 +4,7 @@ icon = 'modular_nova/modules/primitive_structures/icons/windows.dmi' icon_state = "green_glass" flags_1 = NONE - obj_flags = CAN_BE_HIT | NO_DECONSTRUCTION + obj_flags = parent_type::obj_flags | NO_DEBRIS_AFTER_DECONSTRUCTION can_be_unanchored = FALSE fulltile = TRUE flags_1 = PREVENT_CLICK_UNDER_1 diff --git a/modular_nova/modules/stasisrework/code/stasissleeper.dm b/modular_nova/modules/stasisrework/code/stasissleeper.dm index b657875b4b0..c024e6ab013 100644 --- a/modular_nova/modules/stasisrework/code/stasissleeper.dm +++ b/modular_nova/modules/stasisrework/code/stasissleeper.dm @@ -141,7 +141,7 @@ /obj/machinery/stasissleeper/default_pry_open(obj/item/used_item) if(occupant) thaw_them(occupant) - . = !(state_open || panel_open || (obj_flags & NO_DECONSTRUCTION)) && used_item.tool_behaviour == TOOL_CROWBAR + . = !(state_open || panel_open) && used_item.tool_behaviour == TOOL_CROWBAR if(.) used_item.play_tool_sound(src, 50) visible_message(span_notice("[usr] pries open [src]."), span_notice("You pry open [src].")) From cb00984f8519cf7bdbec9f28c2787c7bb7b52b90 Mon Sep 17 00:00:00 2001 From: Iajret Date: Tue, 16 Apr 2024 12:04:22 +0300 Subject: [PATCH 2/2] Update storage_structures.dm --- .../modules/primitive_structures/code/storage_structures.dm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/modular_nova/modules/primitive_structures/code/storage_structures.dm b/modular_nova/modules/primitive_structures/code/storage_structures.dm index 342e9122346..c781da63ae3 100644 --- a/modular_nova/modules/primitive_structures/code/storage_structures.dm +++ b/modular_nova/modules/primitive_structures/code/storage_structures.dm @@ -52,7 +52,8 @@ icon = 'modular_nova/modules/primitive_structures/icons/storage.dmi' resistance_flags = FLAMMABLE base_build_path = /obj/machinery/smartfridge/wooden - base_icon_state = "produce" + base_icon_state = "producebin" + icon_state = "producebin" use_power = NO_POWER_USE light_power = 0 idle_power_usage = 0 @@ -93,7 +94,7 @@ desc = "A wooden hamper, used to hold plant products and try to keep them safe from pests." icon_state = "producebin" base_build_path = /obj/machinery/smartfridge/wooden/produce_bin - base_icon_state = "produce" + base_icon_state = "producebin" /obj/machinery/smartfridge/wooden/produce_bin/accept_check(obj/item/item_to_check) var/static/list/accepted_items = list(