diff --git a/code/game/machinery/computer/buildandrepair.dm b/code/game/machinery/computer/buildandrepair.dm
index eec567dab79..f833b642fa8 100644
--- a/code/game/machinery/computer/buildandrepair.dm
+++ b/code/game/machinery/computer/buildandrepair.dm
@@ -164,6 +164,8 @@
if(user.combat_mode)
return ..()
+/obj/structure/frame/computer/AltClick(mob/user)
+ return ..() // This hotkey is BLACKLISTED since it's used by /datum/component/simple_rotation
/obj/structure/frame/computer/deconstruct(disassembled = TRUE)
if(!(flags_1 & NODECONSTRUCT_1))
diff --git a/code/game/machinery/doppler_array.dm b/code/game/machinery/doppler_array.dm
index a99dd24d2e3..9167c93220e 100644
--- a/code/game/machinery/doppler_array.dm
+++ b/code/game/machinery/doppler_array.dm
@@ -125,6 +125,9 @@
return
return ..()
+/obj/machinery/doppler_array/AltClick(mob/user)
+ return ..() // This hotkey is BLACKLISTED since it's used by /datum/component/simple_rotation
+
/obj/machinery/doppler_array/proc/RotationMessage(mob/user)
to_chat(user, span_notice("You adjust [src]'s dish to face to the [dir2text(dir)]."))
playsound(src, 'sound/items/screwdriver2.ogg', 50, TRUE)
diff --git a/code/game/machinery/pipe/construction.dm b/code/game/machinery/pipe/construction.dm
index d090382e48f..ab71b554508 100644
--- a/code/game/machinery/pipe/construction.dm
+++ b/code/game/machinery/pipe/construction.dm
@@ -312,6 +312,9 @@ Buildable meters
balloon_alert(user, "pipe layer set to [piping_layer]")
return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN
+/obj/item/pipe/AltClick(mob/user)
+ return ..() // This hotkey is BLACKLISTED since it's used by /datum/component/simple_rotation
+
/obj/item/pipe/trinary/flippable/examine(mob/user)
. = ..()
. += span_notice("You can flip the device by Right-Clicking it.")
diff --git a/code/game/objects/structures/beds_chairs/chair.dm b/code/game/objects/structures/beds_chairs/chair.dm
index 02592ad3193..ad0fd5b4779 100644
--- a/code/game/objects/structures/beds_chairs/chair.dm
+++ b/code/game/objects/structures/beds_chairs/chair.dm
@@ -68,6 +68,9 @@
return
. = ..()
+/obj/structure/chair/AltClick(mob/user)
+ return ..() // This hotkey is BLACKLISTED since it's used by /datum/component/simple_rotation
+
///allows each chair to request the electrified_buckle component with overlays that dont look ridiculous
/obj/structure/chair/proc/electrify_self(obj/item/assembly/shock_kit/input_shock_kit, mob/user, list/overlays_from_child_procs)
SHOULD_CALL_PARENT(TRUE)
diff --git a/code/game/objects/structures/railings.dm b/code/game/objects/structures/railings.dm
index c9cc37b4089..2a6ac08dee6 100644
--- a/code/game/objects/structures/railings.dm
+++ b/code/game/objects/structures/railings.dm
@@ -51,6 +51,9 @@
to_chat(user, span_warning("[src] is already in good condition!"))
return
+/obj/structure/railing/AltClick(mob/user)
+ return ..() // This hotkey is BLACKLISTED since it's used by /datum/component/simple_rotation
+
/obj/structure/railing/wirecutter_act(mob/living/user, obj/item/I)
. = ..()
if(!anchored)
diff --git a/code/game/objects/structures/shower.dm b/code/game/objects/structures/shower.dm
index 614c192f04a..00d6440ce17 100644
--- a/code/game/objects/structures/shower.dm
+++ b/code/game/objects/structures/shower.dm
@@ -194,6 +194,10 @@
desc = "A shower frame, that needs a water recycler to finish construction."
anchored = FALSE
+/obj/structure/showerframe/Initialize(mapload)
+ . = ..()
+ AddComponent(/datum/component/simple_rotation)
+
/obj/structure/showerframe/attackby(obj/item/I, mob/living/user, params)
if(istype(I, /obj/item/stock_parts/water_recycler))
qdel(I)
@@ -203,9 +207,8 @@
return
return ..()
-/obj/structure/showerframe/Initialize(mapload)
- . = ..()
- AddComponent(/datum/component/simple_rotation)
+/obj/structure/showerframe/AltClick(mob/user)
+ return ..() // This hotkey is BLACKLISTED since it's used by /datum/component/simple_rotation
/obj/effect/mist
name = "mist"
diff --git a/code/game/objects/structures/transit_tubes/transit_tube_construction.dm b/code/game/objects/structures/transit_tubes/transit_tube_construction.dm
index 93fd564e303..8f73c76d48a 100644
--- a/code/game/objects/structures/transit_tubes/transit_tube_construction.dm
+++ b/code/game/objects/structures/transit_tubes/transit_tube_construction.dm
@@ -52,6 +52,9 @@
qdel(src)
return TRUE
+/obj/structure/c_transit_tube/AltClick(mob/user)
+ return ..() // This hotkey is BLACKLISTED since it's used by /datum/component/simple_rotation
+
// transit tube station
/obj/structure/c_transit_tube/station
name = "unattached through station"
diff --git a/code/game/objects/structures/windoor_assembly.dm b/code/game/objects/structures/windoor_assembly.dm
index 0d0a0df7d52..3852bc3267f 100644
--- a/code/game/objects/structures/windoor_assembly.dm
+++ b/code/game/objects/structures/windoor_assembly.dm
@@ -322,6 +322,9 @@
//Update to reflect changes(if applicable)
update_appearance()
+/obj/structure/windoor_assembly/AltClick(mob/user)
+ return ..() // This hotkey is BLACKLISTED since it's used by /datum/component/simple_rotation
+
//Flips the windoor assembly, determines whather the door opens to the left or the right
/obj/structure/windoor_assembly/verb/flip()
set name = "Flip Windoor Assembly"
diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm
index dc2b65f61ec..a8c7ac774b5 100644
--- a/code/game/objects/structures/window.dm
+++ b/code/game/objects/structures/window.dm
@@ -226,6 +226,9 @@
return ..()
+/obj/structure/window/AltClick(mob/user)
+ return ..() // This hotkey is BLACKLISTED since it's used by /datum/component/simple_rotation
+
/obj/structure/window/set_anchored(anchorvalue)
..()
air_update_turf(TRUE, anchorvalue)
diff --git a/code/modules/art/statues.dm b/code/modules/art/statues.dm
index ec46422a0ee..421234337f9 100644
--- a/code/modules/art/statues.dm
+++ b/code/modules/art/statues.dm
@@ -41,6 +41,9 @@
return
return ..()
+/obj/structure/statue/AltClick(mob/user)
+ return ..() // This hotkey is BLACKLISTED since it's used by /datum/component/simple_rotation
+
/obj/structure/statue/deconstruct(disassembled = TRUE)
if(!(flags_1 & NODECONSTRUCT_1))
var/amount_mod = disassembled ? 0 : -2
diff --git a/code/modules/assembly/holder.dm b/code/modules/assembly/holder.dm
index b3e80dc378b..6ea9b5f8511 100644
--- a/code/modules/assembly/holder.dm
+++ b/code/modules/assembly/holder.dm
@@ -111,6 +111,9 @@
if(a_right)
a_right.attack_hand()
+/obj/item/assembly_holder/AltClick(mob/user)
+ return ..() // This hotkey is BLACKLISTED since it's used by /datum/component/simple_rotation
+
/obj/item/assembly_holder/screwdriver_act(mob/user, obj/item/tool)
if(..())
return TRUE
diff --git a/code/modules/assembly/infrared.dm b/code/modules/assembly/infrared.dm
index 73222df5825..ca35ced6c6b 100644
--- a/code/modules/assembly/infrared.dm
+++ b/code/modules/assembly/infrared.dm
@@ -23,6 +23,9 @@
/obj/item/assembly/infra/proc/AfterRotation(mob/user, degrees)
refreshBeam()
+/obj/item/assembly/infra/AltClick(mob/user)
+ return ..() // This hotkey is BLACKLISTED since it's used by /datum/component/simple_rotation
+
/obj/item/assembly/infra/Destroy()
STOP_PROCESSING(SSobj, src)
listeningTo = null
diff --git a/code/modules/atmospherics/machinery/components/binary_devices/circulator.dm b/code/modules/atmospherics/machinery/components/binary_devices/circulator.dm
index f82bf4a280c..af52c1a78a8 100644
--- a/code/modules/atmospherics/machinery/components/binary_devices/circulator.dm
+++ b/code/modules/atmospherics/machinery/components/binary_devices/circulator.dm
@@ -25,6 +25,9 @@
. = ..()
AddComponent(/datum/component/simple_rotation)
+/obj/machinery/atmospherics/components/binary/circulator/AltClick(mob/user)
+ return ..() // This hotkey is BLACKLISTED since it's used by /datum/component/simple_rotation
+
//default cold circ for mappers
/obj/machinery/atmospherics/components/binary/circulator/cold
mode = CIRCULATOR_COLD
diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm
index 8f111139f4b..9b56c72a772 100644
--- a/code/modules/hydroponics/hydroponics.dm
+++ b/code/modules/hydroponics/hydroponics.dm
@@ -173,7 +173,7 @@
/obj/machinery/hydroponics/constructable/examine(mob/user)
. = ..()
- . += span_notice("Use Ctrl-Click to activate autogrow. Alt-Click to empty the tray's nutrients.")
+ . += span_notice("Use Ctrl-Click to activate autogrow. RMB to empty the tray's nutrients.")
if(in_range(user, src) || isobserver(user))
. += span_notice("The status display reads: Tray efficiency at [rating*100]%.")
@@ -975,7 +975,12 @@
to_chat(user, span_notice("You [self_sustaining ? "activate" : "deactivated"] [src]'s autogrow function[self_sustaining ? ", maintaining the tray's health while using high amounts of power" : ""]."))
/obj/machinery/hydroponics/AltClick(mob/user)
+ return ..() // This hotkey is BLACKLISTED since it's used by /datum/component/simple_rotation
+
+/obj/machinery/hydroponics/attack_hand_secondary(mob/user, list/modifiers)
. = ..()
+ if(. == SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN)
+ return
if(!anchored)
update_appearance()
return FALSE
@@ -983,6 +988,7 @@
if(warning == "Yes" && user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
reagents.clear_reagents()
to_chat(user, span_warning("You empty [src]'s nutrient tank."))
+ return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN
/**
* Update Tray Proc
diff --git a/code/modules/plumbing/plumbers/_plumb_machinery.dm b/code/modules/plumbing/plumbers/_plumb_machinery.dm
index 04c9c69138c..a957d23937c 100644
--- a/code/modules/plumbing/plumbers/_plumb_machinery.dm
+++ b/code/modules/plumbing/plumbers/_plumb_machinery.dm
@@ -27,6 +27,9 @@
. = ..()
. += span_notice("The maximum volume display reads: [reagents.maximum_volume] units.")
+/obj/machinery/plumbing/AltClick(mob/user)
+ return ..() // This hotkey is BLACKLISTED since it's used by /datum/component/simple_rotation
+
/obj/machinery/plumbing/wrench_act(mob/living/user, obj/item/I)
..()
default_unfasten_wrench(user, I)
diff --git a/code/modules/power/generator.dm b/code/modules/power/generator.dm
index 4df2c9be02f..e3e84e04511 100644
--- a/code/modules/power/generator.dm
+++ b/code/modules/power/generator.dm
@@ -215,6 +215,9 @@
default_deconstruction_crowbar(I)
return TRUE
+/obj/machinery/power/generator/AltClick(mob/user)
+ return ..() // This hotkey is BLACKLISTED since it's used by /datum/component/simple_rotation
+
/obj/machinery/power/generator/on_deconstruction()
kill_circs()
diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm
index 42b35fabbfc..0a71c1e4f6b 100644
--- a/code/modules/power/singularity/emitter.dm
+++ b/code/modules/power/singularity/emitter.dm
@@ -334,6 +334,9 @@
return
return ..()
+/obj/machinery/power/emitter/AltClick(mob/user)
+ return ..() // This hotkey is BLACKLISTED since it's used by /datum/component/simple_rotation
+
/obj/machinery/power/emitter/proc/integrate(obj/item/gun/energy/energy_gun, mob/user)
if(!istype(energy_gun, /obj/item/gun/energy))
return
diff --git a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm
index 2365ce5ec15..621ce65cdc8 100644
--- a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm
+++ b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm
@@ -111,6 +111,7 @@
. += "The status display reads:\n\
Recharging [recharge_amount] power units per interval.\n\
Power efficiency increased by [round((powerefficiency*1000)-100, 1)]%."
+ . += span_notice("Use RMB to eject a stored beaker.")
/obj/machinery/chem_dispenser/on_set_is_operational(old_value)
@@ -431,38 +432,17 @@
beaker = null
return ..()
-/obj/machinery/chem_dispenser/AltClick(mob/living/user)
+/obj/machinery/chem_dispenser/attack_hand_secondary(mob/user, list/modifiers)
. = ..()
+ if(. == SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN)
+ return
if(!can_interact(user) || !user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
return
replace_beaker(user)
+ return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN
-/obj/machinery/chem_dispenser/drinks/Initialize(mapload)
- . = ..()
- AddComponent(/datum/component/simple_rotation)
-
-/obj/machinery/chem_dispenser/drinks/setDir()
- var/old = dir
- . = ..()
- if(dir != old)
- update_appearance() // the beaker needs to be re-positioned if we rotate
-
-/obj/machinery/chem_dispenser/drinks/display_beaker()
- var/mutable_appearance/b_o = beaker_overlay || mutable_appearance(icon, "disp_beaker")
- switch(dir)
- if(NORTH)
- b_o.pixel_y = 7
- b_o.pixel_x = rand(-9, 9)
- if(EAST)
- b_o.pixel_x = 4
- b_o.pixel_y = rand(-5, 7)
- if(WEST)
- b_o.pixel_x = -5
- b_o.pixel_y = rand(-5, 7)
- else//SOUTH
- b_o.pixel_y = -7
- b_o.pixel_x = rand(-9, 9)
- return b_o
+/obj/machinery/chem_dispenser/AltClick(mob/user)
+ return ..() // This hotkey is BLACKLISTED since it's used by /datum/component/simple_rotation
/obj/machinery/chem_dispenser/drinks
name = "soda dispenser"
@@ -512,6 +492,33 @@
/datum/reagent/toxin/staminatoxin
)
+/obj/machinery/chem_dispenser/drinks/Initialize(mapload)
+ . = ..()
+ AddComponent(/datum/component/simple_rotation)
+
+/obj/machinery/chem_dispenser/drinks/setDir()
+ var/old = dir
+ . = ..()
+ if(dir != old)
+ update_appearance() // the beaker needs to be re-positioned if we rotate
+
+/obj/machinery/chem_dispenser/drinks/display_beaker()
+ var/mutable_appearance/b_o = beaker_overlay || mutable_appearance(icon, "disp_beaker")
+ switch(dir)
+ if(NORTH)
+ b_o.pixel_y = 7
+ b_o.pixel_x = rand(-9, 9)
+ if(EAST)
+ b_o.pixel_x = 4
+ b_o.pixel_y = rand(-5, 7)
+ if(WEST)
+ b_o.pixel_x = -5
+ b_o.pixel_y = rand(-5, 7)
+ else//SOUTH
+ b_o.pixel_y = -7
+ b_o.pixel_x = rand(-9, 9)
+ return b_o
+
/obj/machinery/chem_dispenser/drinks/fullupgrade //fully ugpraded stock parts, emagged
desc = "Contains a large reservoir of soft drinks. This model has had its safeties shorted out."
obj_flags = CAN_BE_HIT | EMAGGED
diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm
index d0e7d636186..986fccb9946 100644
--- a/code/modules/reagents/reagent_dispenser.dm
+++ b/code/modules/reagents/reagent_dispenser.dm
@@ -250,6 +250,9 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/reagent_dispensers/wall/virusfood, 30
. = ..()
AddComponent(/datum/component/simple_rotation)
+/obj/structure/reagent_dispensers/plumbed/storage/AltClick(mob/user)
+ return ..() // This hotkey is BLACKLISTED since it's used by /datum/component/simple_rotation
+
/obj/structure/reagent_dispensers/plumbed/storage/update_overlays()
. = ..()
if(!reagents)
diff --git a/code/modules/recycling/disposal/construction.dm b/code/modules/recycling/disposal/construction.dm
index 65af3f28653..5f24bc63241 100644
--- a/code/modules/recycling/disposal/construction.dm
+++ b/code/modules/recycling/disposal/construction.dm
@@ -95,6 +95,9 @@
pipe_type = initial(temp.flip_type)
update_appearance()
+/obj/structure/disposalconstruct/AltClick(mob/user)
+ return ..() // This hotkey is BLACKLISTED since it's used by /datum/component/simple_rotation
+
// construction/deconstruction
// wrench: (un)anchor
// weldingtool: convert to real pipe
diff --git a/code/modules/vehicles/wheelchair.dm b/code/modules/vehicles/wheelchair.dm
index c7b319053bc..6dee4da1d05 100644
--- a/code/modules/vehicles/wheelchair.dm
+++ b/code/modules/vehicles/wheelchair.dm
@@ -31,7 +31,6 @@
. = ..()
playsound(src, 'sound/effects/roll.ogg', 75, TRUE)
-
/obj/vehicle/ridden/wheelchair/post_buckle_mob(mob/living/user)
. = ..()
update_appearance()
@@ -50,6 +49,9 @@
qdel(src)
return TRUE
+/obj/vehicle/ridden/wheelchair/AltClick(mob/user)
+ return ..() // This hotkey is BLACKLISTED since it's used by /datum/component/simple_rotation
+
/obj/vehicle/ridden/wheelchair/update_overlays()
. = ..()
if(has_buckled_mobs())