diff --git a/code/game/machinery/aug_manipulator.dm b/code/game/machinery/aug_manipulator.dm
index a168cdd4d50..99200e510e8 100644
--- a/code/game/machinery/aug_manipulator.dm
+++ b/code/game/machinery/aug_manipulator.dm
@@ -12,7 +12,8 @@
/obj/machinery/aug_manipulator/examine(mob/user)
..()
- to_chat(user, "Alt-click to eject the limb.")
+ if(storedpart)
+ to_chat(user, "Alt-click to eject the limb.")
/obj/machinery/aug_manipulator/Initialize()
initial_icon_state = initial(icon_state)
diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm
index 6fd1faa5fea..7f45f88dcd0 100644
--- a/code/game/machinery/doors/airlock.dm
+++ b/code/game/machinery/doors/airlock.dm
@@ -664,6 +664,12 @@
else
to_chat(user, "It looks very robust.")
+ if(issilicon(user) && (!stat & BROKEN))
+ to_chat(user, "Shift-click [src] to [ density ? "open" : "close"] it.")
+ to_chat(user, "Ctrl-click [src] to [ locked ? "raise" : "drop"] its bolts.")
+ to_chat(user, "Alt-click [src] to [ secondsElectrified ? "un-electrify" : "permanently electrify"] it.")
+ to_chat(user, "Ctrl-Shift-click [src] to [ emergency ? "disable" : "enable"] emergency access.")
+
/obj/machinery/door/airlock/attack_ai(mob/user)
if(!src.canAIControl(user))
if(src.canAIHack())
diff --git a/code/game/machinery/harvester.dm b/code/game/machinery/harvester.dm
index 280c68721c3..17f355b5ad6 100644
--- a/code/game/machinery/harvester.dm
+++ b/code/game/machinery/harvester.dm
@@ -86,6 +86,7 @@
operation_order = reverseList(C.bodyparts) //Chest and head are first in bodyparts, so we invert it to make them suffer more
harvesting = TRUE
visible_message("The [name] begins warming up!")
+ say("Initializing harvest protocol.")
update_icon(TRUE)
addtimer(CALLBACK(src, .proc/harvest), interval)
@@ -175,7 +176,9 @@
/obj/machinery/harvester/examine(mob/user)
..()
+ if(stat & BROKEN)
+ return
if(state_open)
to_chat(user, "[src] must be closed before harvesting.")
- else
+ else if(!harvesting)
to_chat(user, "Alt-click [src] to start harvesting.")
diff --git a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm
index 25fedb1a2c9..185bb91eb8f 100644
--- a/code/game/machinery/porta_turret/portable_turret.dm
+++ b/code/game/machinery/porta_turret/portable_turret.dm
@@ -790,6 +790,12 @@
turrets |= T
T.cp = src
+/obj/machinery/turretid/examine(mob/user)
+ ..()
+ if(issilicon(user) && (!stat & BROKEN))
+ to_chat(user, "Ctrl-click [src] to [ enabled ? "disable" : "enable"] turrets.")
+ to_chat(user, "Alt-click [src] to set turrets to [ lethal ? "stun" : "kill"].")
+
/obj/machinery/turretid/attackby(obj/item/I, mob/user, params)
if(stat & BROKEN)
return
diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm
index 5442277f1ee..b9be1dc5780 100644
--- a/code/game/objects/items/crayons.dm
+++ b/code/game/objects/items/crayons.dm
@@ -516,7 +516,7 @@
item_state = "spraycan"
lefthand_file = 'icons/mob/inhands/equipment/hydroponics_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/hydroponics_righthand.dmi'
- desc = "A metallic container containing tasty paint.\n Alt-click to toggle the cap."
+ desc = "A metallic container containing tasty paint."
instant = TRUE
edible = FALSE
@@ -572,6 +572,7 @@
to_chat(user, "It has [charges_left] use\s left.")
else
to_chat(user, "It is empty.")
+ to_chat(user, "Alt-click [src] to [ is_capped ? "take the cap off" : "put the cap on"].")
/obj/item/toy/crayon/spraycan/afterattack(atom/target, mob/user, proximity)
if(!proximity)
diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm
index c01aa043866..2d9af34a263 100644
--- a/code/game/objects/items/devices/scanners.dm
+++ b/code/game/objects/items/devices/scanners.dm
@@ -388,6 +388,10 @@ SLIME SCANNER
var/cooldown_time = 250
var/accuracy // 0 is the best accuracy.
+/obj/item/analyzer/examine(mob/user)
+ . = ..()
+ to_chat(user, "Alt-click [src] to activate the barometer function.")
+
/obj/item/analyzer/suicide_act(mob/living/carbon/user)
user.visible_message("[user] begins to analyze [user.p_them()]self with [src]! The display shows that [user.p_theyre()] dead!")
return BRUTELOSS
diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm
index 166557dd407..24d81d48264 100644
--- a/code/game/objects/structures/crates_lockers/closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets.dm
@@ -74,7 +74,7 @@
else
add_overlay("[icon_state]_open")
-/obj/structure/closet/examine(mob/user)
+/obj/structure/closet/examine(mob/living/user)
..()
if(welded)
to_chat(user, "It's welded shut.")
@@ -84,6 +84,8 @@
to_chat(user, "The parts are welded together.")
else if(secure && !opened)
to_chat(user, "Alt-click to [locked ? "unlock" : "lock"].")
+ if(user.has_trait(TRAIT_SKITTISH))
+ to_chat(user, "Ctrl-Shift-click [src] to jump inside.")
/obj/structure/closet/CanPass(atom/movable/mover, turf/target)
if(wall_mounted)
diff --git a/code/modules/atmospherics/machinery/airalarm.dm b/code/modules/atmospherics/machinery/airalarm.dm
index 65bd7188850..8cc5dfafab9 100644
--- a/code/modules/atmospherics/machinery/airalarm.dm
+++ b/code/modules/atmospherics/machinery/airalarm.dm
@@ -214,6 +214,16 @@
. = ..()
set_frequency(frequency)
+/obj/machinery/airalarm/examine(mob/user)
+ . = ..()
+ switch(buildstage)
+ if(0)
+ to_chat(user, "It is missing air alarm electronics.")
+ if(1)
+ to_chat(user, "It is missing wiring.")
+ if(2)
+ to_chat(user, "Alt-click to [locked ? "unlock" : "lock"] the interface.")
+
/obj/machinery/airalarm/ui_status(mob/user)
if(user.has_unlimited_silicon_privilege && aidisabled)
to_chat(user, "AI control has been disabled.")
diff --git a/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm b/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm
index 1a276d03c56..b5756392467 100644
--- a/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm
+++ b/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm
@@ -91,6 +91,7 @@
..()
if(holding)
to_chat(user, "\The [src] contains [holding]. Alt-click [src] to remove it.")
+ to_chat(user, "Click [src] with another gas tank to hot swap [holding].")
/obj/machinery/portable_atmospherics/proc/replace_tank(mob/living/user, close_valve, obj/item/tank/new_tank)
if(holding)
diff --git a/code/modules/cargo/supplypod_beacon.dm b/code/modules/cargo/supplypod_beacon.dm
index f72fe595de0..3c82722f692 100644
--- a/code/modules/cargo/supplypod_beacon.dm
+++ b/code/modules/cargo/supplypod_beacon.dm
@@ -48,6 +48,8 @@
..()
if(!express_console)
to_chat(user, "[src] is not currently linked to a Express Supply console.")
+ else
+ to_chat(user, "Alt-click to unlink it from the Express Supply console.")
/obj/item/supplypod_beacon/Destroy()
if(express_console)
diff --git a/code/modules/detectivework/scanner.dm b/code/modules/detectivework/scanner.dm
index 38ec885a504..ca746e74fd2 100644
--- a/code/modules/detectivework/scanner.dm
+++ b/code/modules/detectivework/scanner.dm
@@ -192,6 +192,11 @@
to_chat(user, "The scanner logs are cleared.")
log = list()
+/obj/item/detective_scanner/examine(mob/user)
+ ..()
+ if(LAZYLEN(log) && !scanning)
+ to_chat(user, "Alt-click to clear scanner logs.")
+
/obj/item/detective_scanner/proc/displayDetectiveScanResults(mob/living/user)
// No need for can-use checks since the action button should do proper checks
if(!LAZYLEN(log))
diff --git a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm
index f8969cf1a5d..3bcc8d7659b 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm
@@ -38,6 +38,11 @@
efficiency = E
max_n_of_items = max_items
+/obj/machinery/microwave/examine(mob/user)
+ ..()
+ if(!operating)
+ to_chat(user, "Alt-click [src] to turn it on.")
+
/*******************
* Item Adding
********************/
diff --git a/code/modules/paperwork/paperplane.dm b/code/modules/paperwork/paperplane.dm
index 7cc2580ee31..73eadfbc45c 100644
--- a/code/modules/paperwork/paperplane.dm
+++ b/code/modules/paperwork/paperplane.dm
@@ -98,6 +98,10 @@
H.Knockdown(40)
H.emote("scream")
+/obj/item/paper/examine(mob/user)
+ ..()
+ to_chat(user, "Alt-click [src] to fold it into a paper plane.")
+
/obj/item/paper/AltClick(mob/living/carbon/user, obj/item/I)
if(!istype(user) || !user.canUseTopic(src, BE_CLOSE, ismonkey(user)))
return
diff --git a/code/modules/photography/camera/camera.dm b/code/modules/photography/camera/camera.dm
index 15e82386ddb..9c71de1c6f8 100644
--- a/code/modules/photography/camera/camera.dm
+++ b/code/modules/photography/camera/camera.dm
@@ -4,7 +4,7 @@
/obj/item/camera
name = "camera"
icon = 'icons/obj/items_and_weapons.dmi'
- desc = "A polaroid camera. Alt click to change its focusing, allowing you to set how big of an area it will capture!"
+ desc = "A polaroid camera."
icon_state = "camera"
item_state = "camera"
lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi'
@@ -38,6 +38,10 @@
user.put_in_hands(disk)
disk = null
+/obj/item/camera/examine(mob/user)
+ . = ..()
+ to_chat(user, "Alt-click to change its focusing, allowing you to set how big of an area it will capture.")
+
/obj/item/camera/AltClick(mob/user)
var/desired_x = input(user, "How high do you want the camera to shoot, between [picture_size_x_min] and [picture_size_x_max]?", "Zoom", picture_size_x) as num
var/desired_y = input(user, "How wide do you want the camera to shoot, between [picture_size_y_min] and [picture_size_y_max]?", "Zoom", picture_size_y) as num
diff --git a/code/modules/research/nanites/nanite_hijacker.dm b/code/modules/research/nanites/nanite_hijacker.dm
index 8c5ac0a84bf..dba47a4ac2f 100644
--- a/code/modules/research/nanites/nanite_hijacker.dm
+++ b/code/modules/research/nanites/nanite_hijacker.dm
@@ -15,6 +15,11 @@
if(disk)
eject()
+/obj/item/nanite_hijacker/examine(mob/user)
+ . = ..()
+ if(disk)
+ to_chat(user, "Alt-click [src] to eject the disk.")
+
/obj/item/nanite_hijacker/attackby(obj/item/I, mob/user)
if(istype(I, /obj/item/disk/nanite_program))
var/obj/item/disk/nanite_program/N = I
diff --git a/code/modules/vehicles/ridden.dm b/code/modules/vehicles/ridden.dm
index b15b5705500..25a337bc226 100644
--- a/code/modules/vehicles/ridden.dm
+++ b/code/modules/vehicles/ridden.dm
@@ -14,7 +14,10 @@
/obj/vehicle/ridden/examine(mob/user)
. = ..()
if(key_type)
- to_chat(user, "Put a key inside it by clicking it with the key. If there's a key inside, you can remove it via Alt-Click!")
+ if(!inserted_key)
+ to_chat(user, "Put a key inside it by clicking it with the key.")
+ else
+ to_chat(user, "Alt-click [src] to remove the key.")
/obj/vehicle/ridden/generate_action_type(actiontype)
var/datum/action/vehicle/ridden/A = ..()