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 37e7ef30d41..5b2f4e9f6dd 100644
--- a/code/_globalvars/bitfields.dm
+++ b/code/_globalvars/bitfields.dm
@@ -290,7 +290,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 30dfaea445f..9648418c5d4 100644
--- a/code/game/machinery/_machinery.dm
+++ b/code/game/machinery/_machinery.dm
@@ -827,7 +827,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 b01609fc10e..96f7d568f0e 100644
--- a/code/game/machinery/doors/airlock.dm
+++ b/code/game/machinery/doors/airlock.dm
@@ -1496,7 +1496,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 88c2959416c..16f89fdf3c1 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 4731ad4395f..9ebcbb253d2 100644
--- a/code/game/objects/obj_defense.dm
+++ b/code/game/objects/obj_defense.dm
@@ -168,9 +168,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
@@ -178,7 +178,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 74546e2ccd7..af4bb3084cd 100644
--- a/code/game/objects/structures/beds_chairs/chair.dm
+++ b/code/game/objects/structures/beds_chairs/chair.dm
@@ -479,11 +479,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 f689a94d162..d9bf9004436 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 cc432d4bbad..669b22ed0ac 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)