diff --git a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm b/code/game/gamemodes/miniantags/abduction/abduction_gear.dm
index 8c6bf1a8aa..36168a58d2 100644
--- a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm
+++ b/code/game/gamemodes/miniantags/abduction/abduction_gear.dm
@@ -328,7 +328,7 @@ Congratulations! You are now trained for invasive xenobiology research!"}
return
/obj/item/paper/guides/antag/abductor/AltClick()
- return
+ return //otherwise it would fold into a paperplane.
#define BATON_STUN 0
#define BATON_SLEEP 1
diff --git a/code/game/machinery/aug_manipulator.dm b/code/game/machinery/aug_manipulator.dm
index ff072fd010..299b0500ce 100644
--- a/code/game/machinery/aug_manipulator.dm
+++ b/code/game/machinery/aug_manipulator.dm
@@ -11,6 +11,9 @@
var/initial_icon_state
var/static/list/style_list_icons = list("standard" = 'icons/mob/augmentation/augments.dmi', "engineer" = 'icons/mob/augmentation/augments_engineer.dmi', "security" = 'icons/mob/augmentation/augments_security.dmi', "mining" = 'icons/mob/augmentation/augments_mining.dmi')
+/obj/machinery/aug_manipulator/examine(mob/user)
+ ..()
+ 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/deployable.dm b/code/game/machinery/deployable.dm
index 333aa6ac55..f0e1e8a18a 100644
--- a/code/game/machinery/deployable.dm
+++ b/code/game/machinery/deployable.dm
@@ -110,13 +110,17 @@
/obj/item/grenade/barrier
name = "barrier grenade"
- desc = "Instant cover. Alt+click to toggle modes."
+ desc = "Instant cover."
icon = 'icons/obj/grenade.dmi'
icon_state = "flashbang"
item_state = "flashbang"
actions_types = list(/datum/action/item_action/toggle_barrier_spread)
var/mode = SINGLE
+/obj/item/grenade/barrier/examine(mob/user)
+ ..()
+ to_chat(user, "Alt-click to toggle modes.")
+
/obj/item/grenade/barrier/AltClick(mob/living/user)
if(!istype(user) || user.incapacitated())
return
diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm
index eb521d8510..43f6d95910 100644
--- a/code/game/objects/items/devices/PDA/PDA.dm
+++ b/code/game/objects/items/devices/PDA/PDA.dm
@@ -58,6 +58,13 @@ GLOBAL_LIST_EMPTY(PDAs)
var/obj/item/inserted_item //Used for pen, crayon, and lipstick insertion or removal. Same as above.
var/overlays_x_offset = 0 //x offset to use for certain overlays
+/obj/item/device/pda/examine(mob/user)
+ ..()
+ if(!id && !inserted_item)
+ return
+ else
+ to_chat(user, "Alt-click to remove contents.")
+
/obj/item/device/pda/Initialize()
. = ..()
if(fon)
diff --git a/code/game/objects/items/devices/gps.dm b/code/game/objects/items/devices/gps.dm
index 55c8bb5252..6ba8425392 100644
--- a/code/game/objects/items/devices/gps.dm
+++ b/code/game/objects/items/devices/gps.dm
@@ -1,7 +1,7 @@
GLOBAL_LIST_EMPTY(GPS_list)
/obj/item/device/gps
name = "global positioning system"
- desc = "Helping lost spacemen find their way through the planets since 2016. Alt+click to toggle power."
+ desc = "Helping lost spacemen find their way through the planets since 2016."
icon = 'icons/obj/telescience.dmi'
icon_state = "gps-c"
w_class = WEIGHT_CLASS_SMALL
@@ -15,6 +15,9 @@ GLOBAL_LIST_EMPTY(GPS_list)
var/updating = TRUE //Automatic updating of GPS list. Can be set to manual by user.
var/global_mode = TRUE //If disabled, only GPS signals of the same Z level are shown
+/obj/item/device/gps/examine(mob/user)
+ ..()
+ to_chat(user, "Alt-click to switch it [tracking ? "off":"on"].")
/obj/item/device/gps/Initialize()
. = ..()
@@ -209,4 +212,4 @@ GLOBAL_LIST_EMPTY(GPS_list)
clear()
tagged = null
STOP_PROCESSING(SSfastprocess, src)
- . = ..()
\ No newline at end of file
+ . = ..()
diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm
index 4c309f4aa1..9817614e24 100644
--- a/code/game/objects/items/devices/radio/headset.dm
+++ b/code/game/objects/items/devices/radio/headset.dm
@@ -1,6 +1,6 @@
/obj/item/device/radio/headset
name = "radio headset"
- desc = "An updated, modular intercom that fits over the head. Takes encryption keys. \nTo speak on the general radio frequency, use ; before speaking."
+ desc = "An updated, modular intercom that fits over the head. Takes encryption keys."
icon_state = "headset"
item_state = "headset"
materials = list(MAT_METAL=75)
@@ -11,6 +11,12 @@
var/obj/item/device/encryptionkey/keyslot2 = null
dog_fashion = null
+/obj/item/device/radio/headset/examine(mob/user)
+ ..()
+ to_chat(user, "To speak on the general radio frequency, use ; before speaking.")
+ if (command)
+ to_chat(user, "Alt-click to toggle the high-volume mode.")
+
/obj/item/device/radio/headset/Initialize()
. = ..()
recalculateChannels()
diff --git a/code/game/objects/items/extinguisher.dm b/code/game/objects/items/extinguisher.dm
index 05ef0220de..2e6ec98606 100644
--- a/code/game/objects/items/extinguisher.dm
+++ b/code/game/objects/items/extinguisher.dm
@@ -1,3 +1,4 @@
+<<<<<<< HEAD
/obj/item/extinguisher
name = "fire extinguisher"
desc = "A traditional red fire extinguisher."
@@ -186,3 +187,194 @@
theturf.MakeSlippery(min_wet_time = 10, wet_time_to_add = 5)
user.visible_message("[user] empties out \the [src] onto the floor using the release valve.", "You quietly empty out \the [src] using its release valve.")
+=======
+/obj/item/extinguisher
+ name = "fire extinguisher"
+ desc = "A traditional red fire extinguisher."
+ icon = 'icons/obj/items_and_weapons.dmi'
+ icon_state = "fire_extinguisher0"
+ item_state = "fire_extinguisher"
+ hitsound = 'sound/weapons/smash.ogg'
+ flags_1 = CONDUCT_1
+ throwforce = 10
+ w_class = WEIGHT_CLASS_NORMAL
+ throw_speed = 2
+ throw_range = 7
+ force = 10
+ materials = list(MAT_METAL=90)
+ attack_verb = list("slammed", "whacked", "bashed", "thunked", "battered", "bludgeoned", "thrashed")
+ dog_fashion = /datum/dog_fashion/back
+ resistance_flags = FIRE_PROOF
+ var/max_water = 50
+ var/last_use = 1
+ var/safety = TRUE
+ var/refilling = FALSE
+ var/sprite_name = "fire_extinguisher"
+ var/power = 5 //Maximum distance launched water will travel
+ var/precision = 0 //By default, turfs picked from a spray are random, set to 1 to make it always have at least one water effect per row
+ var/cooling_power = 2 //Sets the cooling_temperature of the water reagent datum inside of the extinguisher when it is refilled
+
+/obj/item/extinguisher/mini
+ name = "pocket fire extinguisher"
+ desc = "A light and compact fibreglass-framed model fire extinguisher."
+ icon_state = "miniFE0"
+ item_state = "miniFE"
+ hitsound = null //it is much lighter, after all.
+ flags_1 = null //doesn't CONDUCT_1
+ throwforce = 2
+ w_class = WEIGHT_CLASS_SMALL
+ force = 3
+ materials = list()
+ max_water = 30
+ sprite_name = "miniFE"
+ dog_fashion = null
+
+/obj/item/extinguisher/New()
+ ..()
+ create_reagents(max_water)
+ reagents.add_reagent("water", max_water)
+
+/obj/item/extinguisher/attack_self(mob/user)
+ safety = !safety
+ src.icon_state = "[sprite_name][!safety]"
+ src.desc = "The safety is [safety ? "on" : "off"]."
+ to_chat(user, "The safety is [safety ? "on" : "off"].")
+ return
+
+/obj/item/extinguisher/attack(mob/M, mob/user)
+ if(user.a_intent == INTENT_HELP && !safety) //If we're on help intent and going to spray people, don't bash them.
+ return FALSE
+ else
+ return ..()
+
+/obj/item/extinguisher/attack_obj(obj/O, mob/living/user)
+ if(AttemptRefill(O, user))
+ refilling = TRUE
+ return FALSE
+ else
+ return ..()
+
+/obj/item/extinguisher/examine(mob/user)
+ ..()
+ if(reagents.total_volume)
+ to_chat(user, "It contains [round(reagents.total_volume)] units.")
+ to_chat(user, "Alt-click to empty it.")
+ else
+ to_chat(user, "It is empty.")
+
+/obj/item/extinguisher/proc/AttemptRefill(atom/target, mob/user)
+ if(istype(target, /obj/structure/reagent_dispensers/watertank) && target.Adjacent(user))
+ var/safety_save = safety
+ safety = TRUE
+ if(reagents.total_volume == reagents.maximum_volume)
+ to_chat(user, "\The [src] is already full!")
+ safety = safety_save
+ return 1
+ var/obj/structure/reagent_dispensers/watertank/W = target
+ var/transferred = W.reagents.trans_to(src, max_water)
+ if(transferred > 0)
+ to_chat(user, "\The [src] has been refilled by [transferred] units.")
+ playsound(src.loc, 'sound/effects/refill.ogg', 50, 1, -6)
+ for(var/datum/reagent/water/R in reagents.reagent_list)
+ R.cooling_temperature = cooling_power
+ else
+ to_chat(user, "\The [W] is empty!")
+ safety = safety_save
+ return 1
+ else
+ return 0
+
+/obj/item/extinguisher/afterattack(atom/target, mob/user , flag)
+ // Make it so the extinguisher doesn't spray yourself when you click your inventory items
+ if (target.loc == user)
+ return
+ //TODO; Add support for reagents in water.
+ if(refilling)
+ refilling = FALSE
+ return
+ if (!safety)
+ if (src.reagents.total_volume < 1)
+ to_chat(usr, "\The [src] is empty!")
+ return
+
+ if (world.time < src.last_use + 12)
+ return
+
+ src.last_use = world.time
+
+ playsound(src.loc, 'sound/effects/extinguish.ogg', 75, 1, -3)
+
+ var/direction = get_dir(src,target)
+
+ if(user.buckled && isobj(user.buckled) && !user.buckled.anchored)
+ spawn(0)
+ var/obj/B = user.buckled
+ var/movementdirection = turn(direction,180)
+ step(B, movementdirection)
+ sleep(1)
+ step(B, movementdirection)
+ sleep(1)
+ step(B, movementdirection)
+ sleep(1)
+ step(B, movementdirection)
+ sleep(2)
+ step(B, movementdirection)
+ sleep(2)
+ step(B, movementdirection)
+ sleep(3)
+ step(B, movementdirection)
+ sleep(3)
+ step(B, movementdirection)
+ sleep(3)
+ step(B, movementdirection)
+
+ else user.newtonian_move(turn(direction, 180))
+
+ var/turf/T = get_turf(target)
+ var/turf/T1 = get_step(T,turn(direction, 90))
+ var/turf/T2 = get_step(T,turn(direction, -90))
+ var/list/the_targets = list(T,T1,T2)
+ if(precision)
+ var/turf/T3 = get_step(T1, turn(direction, 90))
+ var/turf/T4 = get_step(T2,turn(direction, -90))
+ the_targets = list(T,T1,T2,T3,T4)
+
+ for(var/a=0, a<5, a++)
+ spawn(0)
+ var/obj/effect/particle_effect/water/W = new /obj/effect/particle_effect/water(get_turf(src))
+ var/turf/my_target = pick(the_targets)
+ if(precision)
+ the_targets -= my_target
+ var/datum/reagents/R = new/datum/reagents(5)
+ if(!W) return
+ W.reagents = R
+ R.my_atom = W
+ if(!W || !src) return
+ src.reagents.trans_to(W,1)
+ for(var/b=0, bYou quietly empty out \the [src] using its release valve.")
+>>>>>>> 086d636... Alt-clicking descriptions when examining (#30988)
diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm
index cc718be2bd..3a79ce23db 100644
--- a/code/game/objects/items/stacks/stack.dm
+++ b/code/game/objects/items/stacks/stack.dm
@@ -76,6 +76,7 @@
to_chat(user, "There are [get_amount()] in the stack.")
else
to_chat(user, "There is [get_amount()] in the stack.")
+ to_chat(user, "Alt-click to take a custom amount.")
/obj/item/stack/proc/get_amount()
if(is_cyborg)
diff --git a/code/game/objects/items/storage/fancy.dm b/code/game/objects/items/storage/fancy.dm
index 883641d43b..b5417e8f8e 100644
--- a/code/game/objects/items/storage/fancy.dm
+++ b/code/game/objects/items/storage/fancy.dm
@@ -125,13 +125,21 @@
icon_type = "cigarette"
spawn_type = /obj/item/clothing/mask/cigarette/space_cigarette
+/obj/item/storage/fancy/cigarettes/examine(mob/user)
+ ..()
+ to_chat(user, "Alt-click to extract contents.")
+
/obj/item/storage/fancy/cigarettes/AltClick(mob/user)
- if(user.get_active_held_item())
+ if(user.stat || user.restrained())
return
- for(var/obj/item/lighter/lighter in src)
- remove_from_storage(lighter, user.loc)
- user.put_in_active_hand(lighter)
- break
+ var/obj/item/clothing/mask/cigarette/W = locate(/obj/item/clothing/mask/cigarette) in contents
+ if(W && contents.len > 0)
+ remove_from_storage(W, user)
+ user.put_in_hands(W)
+ contents -= W
+ to_chat(user, "You take a [icon_type] out of the pack.")
+ else
+ to_chat(user, "There are no [icon_type]s left in the pack.")
/obj/item/storage/fancy/cigarettes/update_icon()
if(fancy_open || !contents.len)
diff --git a/code/game/objects/items/storage/lockbox.dm b/code/game/objects/items/storage/lockbox.dm
index 346e9ba409..385a069c00 100644
--- a/code/game/objects/items/storage/lockbox.dm
+++ b/code/game/objects/items/storage/lockbox.dm
@@ -123,6 +123,11 @@
icon_broken = "medalbox+b"
can_hold = list(/obj/item/clothing/accessory/medal)
+/obj/item/storage/lockbox/medal/examine(mob/user)
+ ..()
+ if(!locked)
+ to_chat(user, "Alt-click to [open ? "close":"open"] it.")
+
/obj/item/storage/lockbox/medal/AltClick()
if(!locked)
open = (open ? FALSE : TRUE)
@@ -179,4 +184,4 @@
/obj/item/storage/lockbox/medal/sci/PopulateContents()
for(var/i in 1 to 3)
- new /obj/item/clothing/accessory/medal/plasma/nobel_science(src)
\ No newline at end of file
+ new /obj/item/clothing/accessory/medal/plasma/nobel_science(src)
diff --git a/code/game/objects/items/twohanded.dm b/code/game/objects/items/twohanded.dm
index 6668937003..048184578a 100644
--- a/code/game/objects/items/twohanded.dm
+++ b/code/game/objects/items/twohanded.dm
@@ -427,6 +427,11 @@
var/obj/item/grenade/explosive = null
var/war_cry = "AAAAARGH!!!"
+/obj/item/twohanded/spear/examine(mob/user)
+ ..()
+ if(explosive)
+ to_chat(user, "Alt-click to set your war cry.")
+
/obj/item/twohanded/spear/update_icon()
if(explosive)
icon_state = "spearbomb[wielded]"
@@ -475,7 +480,7 @@
if(G)
explosive = G
name = "explosive lance"
- desc = "A makeshift spear with [G] attached to it. Alt+click on the spear to set your war cry!"
+ desc = "A makeshift spear with [G] attached to it."
update_icon()
// CHAINSAW
diff --git a/code/game/objects/structures/extinguisher.dm b/code/game/objects/structures/extinguisher.dm
index f0ff566b60..e61e1a1870 100644
--- a/code/game/objects/structures/extinguisher.dm
+++ b/code/game/objects/structures/extinguisher.dm
@@ -10,6 +10,10 @@
var/obj/item/extinguisher/stored_extinguisher
var/opened = 0
+/obj/structure/extinguisher_cabinet/examine(mob/user)
+ ..()
+ to_chat(user, "Alt-click to [opened ? "close":"open"] it.")
+
/obj/structure/extinguisher_cabinet/New(loc, ndir, building)
..()
if(building)
diff --git a/code/game/objects/structures/reflector.dm b/code/game/objects/structures/reflector.dm
index 338979cf4d..5b758377c4 100644
--- a/code/game/objects/structures/reflector.dm
+++ b/code/game/objects/structures/reflector.dm
@@ -13,6 +13,10 @@
var/buildstacktype = /obj/item/stack/sheet/metal
var/buildstackamount = 0
+/obj/structure/reflector/examine(mob/user)
+ ..()
+ to_chat(user, "Alt-click to adjust its direction.")
+
/obj/structure/reflector/bullet_act(obj/item/projectile/P)
var/turf/reflector_turf = get_turf(src)
var/turf/reflect_turf
diff --git a/code/modules/atmospherics/machinery/atmosmachinery.dm b/code/modules/atmospherics/machinery/atmosmachinery.dm
index 585b4c4550..ce68eecdc9 100644
--- a/code/modules/atmospherics/machinery/atmosmachinery.dm
+++ b/code/modules/atmospherics/machinery/atmosmachinery.dm
@@ -34,6 +34,11 @@ Pipelines + Other Objects -> Pipe network
var/device_type = 0
var/list/obj/machinery/atmospherics/nodes
+/obj/machinery/atmospherics/examine(mob/living/user)
+ ..()
+ if(is_type_in_list(src, GLOB.ventcrawl_machinery) && user.ventcrawler)
+ to_chat(user, "Alt-click to crawl through it.")
+
/obj/machinery/atmospherics/New(loc, process = TRUE)
nodes = new(device_type)
if (!armor)
@@ -300,4 +305,3 @@ Pipelines + Other Objects -> Pipe network
//Used for certain children of obj/machinery/atmospherics to not show pipe vision when mob is inside it.
/obj/machinery/atmospherics/proc/can_see_pipes()
return TRUE
-
diff --git a/code/modules/clothing/glasses/glasses.dm b/code/modules/clothing/glasses/glasses.dm
index 5dd0a34c1e..cf7dc9eb5f 100644
--- a/code/modules/clothing/glasses/glasses.dm
+++ b/code/modules/clothing/glasses/glasses.dm
@@ -3,6 +3,11 @@
materials = list(MAT_GLASS = 250)
var/glass_colour_type = null //colors your vision when worn
+/obj/item/clothing/glasses/examine(mob/user)
+ ..()
+ if(glass_colour_type && ishuman(user))
+ to_chat(user, "Alt-click to toggle its colors.")
+
/obj/item/clothing/glasses/visor_toggling()
..()
if(visor_vars_to_toggle & VISOR_VISIONFLAGS)
diff --git a/code/modules/clothing/head/jobs.dm b/code/modules/clothing/head/jobs.dm
index 8982e553f6..bbc0ada952 100644
--- a/code/modules/clothing/head/jobs.dm
+++ b/code/modules/clothing/head/jobs.dm
@@ -82,6 +82,10 @@
pockets = /obj/item/storage/internal/pocket/small/detective
dog_fashion = /datum/dog_fashion/head/detective
+/obj/item/clothing/head/fedora/det_hat/examine(mob/user)
+ ..()
+ to_chat(user, "Alt-click to take a candy corn.")
+
/obj/item/clothing/head/fedora/det_hat/AltClick()
..()
if(ismob(loc))
@@ -172,4 +176,4 @@
/obj/item/clothing/head/fedora/curator
name = "treasure hunter's fedora"
desc = "You got red text today kid, but it doesn't mean you have to like it."
- icon_state = "curator"
\ No newline at end of file
+ icon_state = "curator"
diff --git a/code/modules/games/cas.dm b/code/modules/games/cas.dm
index 675fe328af..ecdc1a641f 100644
--- a/code/modules/games/cas.dm
+++ b/code/modules/games/cas.dm
@@ -104,12 +104,14 @@
var/buffertext = "A funny bit of text."
/obj/item/toy/cards/singlecard/cas/examine(mob/user)
+ ..()
if (flipped)
to_chat(user, "The card is face down.")
else if (blank)
to_chat(user, "The card is blank. Write on it with a pen.")
else
to_chat(user, "The card reads: [name]")
+ to_chat(user, "Alt-click to flip it.")
/obj/item/toy/cards/singlecard/cas/Flip()
set name = "Flip Card"
@@ -145,4 +147,4 @@
return
name = cardtext
buffertext = cardtext
- blank = 0
\ No newline at end of file
+ blank = 0
diff --git a/code/modules/mining/abandoned_crates.dm b/code/modules/mining/abandoned_crates.dm
index 4db42b6933..6c445c9ceb 100644
--- a/code/modules/mining/abandoned_crates.dm
+++ b/code/modules/mining/abandoned_crates.dm
@@ -184,7 +184,7 @@
/obj/structure/closet/crate/secure/loot/AltClick(mob/living/user)
if(!user.canUseTopic(src))
return
- attack_hand(user)
+ attack_hand(user) //this helps you not blow up so easily by overriding unlocking which results in an immediate boom.
/obj/structure/closet/crate/secure/loot/attackby(obj/item/W, mob/user)
if(locked)
diff --git a/code/modules/modular_computers/computers/item/laptop.dm b/code/modules/modular_computers/computers/item/laptop.dm
index b6cf404248..1618b68478 100644
--- a/code/modules/modular_computers/computers/item/laptop.dm
+++ b/code/modules/modular_computers/computers/item/laptop.dm
@@ -21,6 +21,11 @@
var/w_class_open = WEIGHT_CLASS_BULKY
var/slowdown_open = TRUE
+/obj/item/device/modular_computer/laptop/examine(mob/user)
+ ..()
+ if(screen_on)
+ to_chat(user, "Alt-click to close it.")
+
/obj/item/device/modular_computer/laptop/Initialize()
. = ..()
diff --git a/code/modules/modular_computers/computers/machinery/console_presets.dm b/code/modules/modular_computers/computers/machinery/console_presets.dm
index bc188485bc..25fa05ef1e 100644
--- a/code/modules/modular_computers/computers/machinery/console_presets.dm
+++ b/code/modules/modular_computers/computers/machinery/console_presets.dm
@@ -44,6 +44,10 @@
desc = "A stationary computer. This one comes preloaded with research programs."
_has_ai = 1
+/obj/machinery/modular_computer/console/preset/research/examine(mob/user)
+ ..()
+ to_chat(user, "Alt-click to eject the intelliCard.")
+
/obj/machinery/modular_computer/console/preset/research/install_programs()
var/obj/item/computer_hardware/hard_drive/hard_drive = cpu.all_components[MC_HDD]
hard_drive.store_file(new/datum/computer_file/program/ntnetmonitor())
@@ -59,6 +63,10 @@
_has_id_slot = 1
_has_printer = 1
+/obj/machinery/modular_computer/console/preset/command/examine(mob/user)
+ ..()
+ to_chat(user, "Alt-click [src] to eject the identification card.")
+
/obj/machinery/modular_computer/console/preset/command/install_programs()
var/obj/item/computer_hardware/hard_drive/hard_drive = cpu.all_components[MC_HDD]
hard_drive.store_file(new/datum/computer_file/program/chatclient())
@@ -72,4 +80,4 @@
/obj/machinery/modular_computer/console/preset/civilian/install_programs()
var/obj/item/computer_hardware/hard_drive/hard_drive = cpu.all_components[MC_HDD]
hard_drive.store_file(new/datum/computer_file/program/chatclient())
- hard_drive.store_file(new/datum/computer_file/program/nttransfer())
\ No newline at end of file
+ hard_drive.store_file(new/datum/computer_file/program/nttransfer())
diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm
index e3d6154606..47c7b81e26 100644
--- a/code/modules/paperwork/paper.dm
+++ b/code/modules/paperwork/paper.dm
@@ -64,6 +64,8 @@
/obj/item/paper/examine(mob/user)
..()
+ to_chat(user, "Alt-click to fold it.")
+
var/datum/asset/assets = get_asset_datum(/datum/asset/simple/paper)
assets.send(user)
@@ -79,7 +81,7 @@
user << browse("[name][stars(info)]
[stamps]", "window=[name]")
onclose(user, "[name]")
else
- to_chat(user, "It is too far away.")
+ to_chat(user, "You're too far away to read it!")
/obj/item/paper/verb/rename()
@@ -101,10 +103,12 @@
name = "paper[(n_name ? text("- '[n_name]'") : null)]"
add_fingerprint(usr)
+
/obj/item/paper/suicide_act(mob/user)
user.visible_message("[user] scratches a grid on [user.p_their()] wrist with the paper! It looks like [user.p_theyre()] trying to commit sudoku...")
return (BRUTELOSS)
+
/obj/item/paper/attack_self(mob/user)
user.examinate(src)
if(rigged && (SSevents.holidays && SSevents.holidays[APRIL_FOOLS]))
@@ -399,4 +403,8 @@
return
/obj/item/paper/crumpled/bloody
- icon_state = "scrap_bloodied"
\ No newline at end of file
+<<<<<<< HEAD
+ icon_state = "scrap_bloodied"
+=======
+ icon_state = "scrap_bloodied"
+>>>>>>> 086d636... Alt-clicking descriptions when examining (#30988)
diff --git a/code/modules/projectiles/guns/ballistic/shotgun.dm b/code/modules/projectiles/guns/ballistic/shotgun.dm
index 71bdce7f28..bbaf20689c 100644
--- a/code/modules/projectiles/guns/ballistic/shotgun.dm
+++ b/code/modules/projectiles/guns/ballistic/shotgun.dm
@@ -213,6 +213,10 @@
var/toggled = FALSE
var/obj/item/ammo_box/magazine/internal/shot/alternate_magazine
+/obj/item/gun/ballistic/shotgun/automatic/dual_tube/examine(mob/user)
+ ..()
+ to_chat(user, "Alt-click to pump it.")
+
/obj/item/gun/ballistic/shotgun/automatic/dual_tube/Initialize()
. = ..()
if (!alternate_magazine)