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)