diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm
index 6fbdb235db9..73e6826bbf3 100644
--- a/code/game/machinery/Sleeper.dm
+++ b/code/game/machinery/Sleeper.dm
@@ -5,6 +5,9 @@
icon_state = "sleeper"
density = 1
anchored = 1
+ clicksound = 'sound/machines/buttonbeep.ogg'
+ clickvol = 30
+
var/mob/living/carbon/human/occupant = null
var/list/available_chemicals = list("norepinephrine" = "Norepinephrine", "stoxin" = "Soporific", "paracetamol" = "Paracetamol", "dylovene" = "Dylovene", "dexalin" = "Dexalin")
var/obj/item/reagent_containers/glass/beaker = null
diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm
index 049cc939636..597f479b1f6 100644
--- a/code/game/machinery/alarm.dm
+++ b/code/game/machinery/alarm.dm
@@ -42,6 +42,9 @@
active_power_usage = 1500 //For heating/cooling rooms. 1000 joules equates to about 1 degree every 2 seconds for a single tile of air.
power_channel = ENVIRON
req_one_access = list(access_atmospherics, access_engine_equip)
+ clicksound = "button"
+ clickvol = 30
+
var/alarm_id = null
var/breach_detection = 1 // Whether to use automatic breach detection or not
var/frequency = 1439
diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm
index 4eec54a18c9..28d98b8bffe 100644
--- a/code/game/machinery/autolathe.dm
+++ b/code/game/machinery/autolathe.dm
@@ -7,6 +7,8 @@
use_power = 1
idle_power_usage = 10
active_power_usage = 2000
+ clicksound = "keyboard"
+ clickvol = 30
var/list/machine_recipes
var/list/stored_material = list(DEFAULT_WALL_MATERIAL = 0, "glass" = 0)
diff --git a/code/game/machinery/computer/computer.dm b/code/game/machinery/computer/computer.dm
index 86627ea5be8..7ed745ccb11 100644
--- a/code/game/machinery/computer/computer.dm
+++ b/code/game/machinery/computer/computer.dm
@@ -7,6 +7,8 @@
use_power = 1
idle_power_usage = 300
active_power_usage = 300
+ clicksound = "keyboard"
+
var/circuit = null //The path to the circuit board type. If circuit==null, the computer can't be disassembled.
var/processing = 0
@@ -15,7 +17,6 @@
var/light_power_on = 1
var/overlay_layer
var/is_holographic = TRUE
- clicksound = "keyboard"
/obj/machinery/computer/Initialize()
. = ..()
diff --git a/code/game/machinery/cryo.dm b/code/game/machinery/cryo.dm
index d8741f1285f..187623c3b02 100644
--- a/code/game/machinery/cryo.dm
+++ b/code/game/machinery/cryo.dm
@@ -13,6 +13,8 @@
use_power = 1
idle_power_usage = 20
active_power_usage = 200
+ clicksound = 'sound/machines/buttonbeep.ogg'
+ clickvol = 30
var/temperature_archived
var/mob/living/carbon/occupant = null
diff --git a/code/game/machinery/jukebox.dm b/code/game/machinery/jukebox.dm
index 99eee1afd1b..5fb23bcd0b1 100644
--- a/code/game/machinery/jukebox.dm
+++ b/code/game/machinery/jukebox.dm
@@ -19,6 +19,7 @@ datum/track/New(var/title_name, var/audio)
use_power = 1
idle_power_usage = 10
active_power_usage = 100
+ clicksound = 'sound/machines/buttonbeep.ogg'
var/playing = 0
diff --git a/code/game/machinery/kitchen/microwave.dm b/code/game/machinery/kitchen/microwave.dm
index 7f86296f691..4d9953b6952 100644
--- a/code/game/machinery/kitchen/microwave.dm
+++ b/code/game/machinery/kitchen/microwave.dm
@@ -10,6 +10,9 @@
idle_power_usage = 5
active_power_usage = 2000
flags = OPENCONTAINER | NOREACT
+ clicksound = "button"
+ clickvol = "30"
+
var/operating = FALSE // Is it on?
var/dirty = 0 // = {0..100} Does it need cleaning?
var/broken = 0 // ={0,1,2} How broken is it???
diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm
index b1de271cc39..13950216b0a 100644
--- a/code/game/machinery/machinery.dm
+++ b/code/game/machinery/machinery.dm
@@ -231,7 +231,7 @@ Class Procs:
/obj/machinery/CouldUseTopic(var/mob/user)
..()
- if(istype (user, /mob/living/carbon))
+ if(clicksound && iscarbon(user))
playsound(src, clicksound, clickvol)
user.set_machine(src)
diff --git a/code/game/machinery/spaceheater.dm b/code/game/machinery/spaceheater.dm
index 94bde9ad211..5a50f34479e 100644
--- a/code/game/machinery/spaceheater.dm
+++ b/code/game/machinery/spaceheater.dm
@@ -11,7 +11,7 @@
var/heating_power = 42000
emagged = FALSE
has_special_power_checks = TRUE
-
+ clicksound = "switch"
/obj/machinery/space_heater/Initialize()
. = ..()
diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm
index d7ee51846ad..d5e7a78db48 100644
--- a/code/game/machinery/vending.dm
+++ b/code/game/machinery/vending.dm
@@ -37,6 +37,7 @@
layer = 2.9
anchored = 1
density = 1
+ clicksound = "button"
var/icon_vend //Icon_state when vending
var/icon_deny //Icon_state when denying access
@@ -123,7 +124,6 @@
src.build_inventory()
power_change()
-
/**
* Build src.produdct_records from the products lists
*
@@ -207,12 +207,10 @@
var/obj/item/spacecash/ewallet/C = W
paid = pay_with_ewallet(C)
handled = 1
- playsound(user.loc, 'sound/machines/id_swipe.ogg', 100, 1)
else if (istype(W, /obj/item/spacecash))
var/obj/item/spacecash/C = W
paid = pay_with_cash(C, user)
handled = 1
- playsound(user.loc, 'sound/machines/id_swipe.ogg', 100, 1)
if(paid)
src.vend(currently_vending, usr)
@@ -347,6 +345,7 @@
*/
/obj/machinery/vending/proc/pay_with_ewallet(var/obj/item/spacecash/ewallet/wallet)
visible_message("\The [usr] swipes \the [wallet] through \the [src].")
+ playsound(src.loc, 'sound/machines/id_swipe.ogg', 50, 1)
if(currently_vending.price > wallet.worth)
src.status_message = "Insufficient funds on chargecard."
src.status_error = 1
@@ -367,6 +366,7 @@
visible_message("\The [usr] swipes \the [I] through \the [src].")
else
visible_message("\The [usr] swipes \the [ID_container] through \the [src].")
+ playsound(src.loc, 'sound/machines/id_swipe.ogg', 50, 1)
var/datum/money_account/vendor_account = SSeconomy.get_department_account("Vendor")
var/datum/money_account/customer_account = SSeconomy.get_account(I.associated_account_number)
if (!customer_account)
@@ -509,7 +509,7 @@
var/datum/money_account/vendor_account = SSeconomy.get_department_account("Vendor")
if(stat & (BROKEN|NOPOWER))
return
- if(usr.stat || usr.restrained())
+ if(..())
return
if(href_list["remove_coin"] && !istype(usr,/mob/living/silicon))
diff --git a/code/game/machinery/washing_machine.dm b/code/game/machinery/washing_machine.dm
index 793a7accbc7..9eef6c70ff3 100644
--- a/code/game/machinery/washing_machine.dm
+++ b/code/game/machinery/washing_machine.dm
@@ -4,6 +4,9 @@
icon_state = "wm_10"
density = 1
anchored = 1.0
+ clicksound = "button"
+ clickvol = 40
+
var/state = 1
//1 = empty, open door
//2 = empty, closed door
diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm
index 0ee25b2bac2..905eed3d12d 100644
--- a/code/game/objects/items/devices/radio/radio.dm
+++ b/code/game/objects/items/devices/radio/radio.dm
@@ -756,3 +756,8 @@ var/global/list/default_medbay_channels = list(
/obj/item/device/radio/phone/medbay/Initialize()
. = ..()
internal_channels = default_medbay_channels.Copy()
+
+/obj/item/device/radio/CouldUseTopic(var/mob/user)
+ ..()
+ if(iscarbon(user))
+ playsound(src, "button", 10)
diff --git a/code/game/sound.dm b/code/game/sound.dm
index 9da340a0955..22ecdbc8cf3 100644
--- a/code/game/sound.dm
+++ b/code/game/sound.dm
@@ -134,6 +134,12 @@ var/list/gravelfootsteps = list(
'sound/effects/footsteps/gravel3.wav',
'sound/effects/footsteps/gravel4.wav'
)
+var/list/button_sound = list(
+ 'sound/machines/button1.ogg',
+ 'sound/machines/button2.ogg',
+ 'sound/machines/button3.ogg',
+ 'sound/machines/button4.ogg'
+)
var/list/computerbeeps = list(
'sound/machines/compbeep1.ogg',
'sound/machines/compbeep2.ogg',
@@ -376,6 +382,7 @@ var/list/footstepfx = list("defaultstep","concretestep","grassstep","dirtstep","
if ("sandstep") soundin = pick(sandfootsteps)
if ("gravelstep") soundin = pick(gravelfootsteps)
if ("computerbeep") soundin = pick(computerbeeps)
+ if ("button") soundin = pick(button_sound)
if ("switch") soundin = pick(switchsounds)
if ("keyboard") soundin = pick(keyboardsounds)
if ("pickaxe") soundin = pick(pickaxesounds)
diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm
index 3791f76ec82..b76ed483fa5 100644
--- a/code/modules/power/apc.dm
+++ b/code/modules/power/apc.dm
@@ -78,6 +78,7 @@
use_power = 0
req_access = list(access_engine_equip)
gfi_layer_rotation = GFI_ROTATION_DEFDIR
+ clicksound = "switch"
var/area/area
var/areastring = null
var/obj/item/cell/cell
diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm
index 6d92afdeff8..9592067ba57 100644
--- a/code/modules/power/smes.dm
+++ b/code/modules/power/smes.dm
@@ -25,6 +25,7 @@
density = 1
anchored = 1
use_power = 0
+ clicksound = "switch"
var/capacity = 5e6 // maximum charge
var/charge = 1e6 // actual charge
diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm
index 99de3a4e7d1..81740fc9ad4 100644
--- a/code/modules/reagents/Chemistry-Machinery.dm
+++ b/code/modules/reagents/Chemistry-Machinery.dm
@@ -14,6 +14,8 @@
use_power = 1
idle_power_usage = 20
layer = 2.9
+ clicksound = "button"
+
var/beaker = null
var/obj/item/storage/pill_bottle/loaded_pill_bottle = null
var/mode = TRUE
diff --git a/code/modules/reagents/dispenser/dispenser2.dm b/code/modules/reagents/dispenser/dispenser2.dm
index 85a1230fcfe..5f8c1c08366 100644
--- a/code/modules/reagents/dispenser/dispenser2.dm
+++ b/code/modules/reagents/dispenser/dispenser2.dm
@@ -2,6 +2,7 @@
name = "chemical dispenser"
icon = 'icons/obj/chemical.dmi'
icon_state = "dispenser"
+ clicksound = "button"
var/list/spawn_cartridges = null // Set to a list of types to spawn one of each on New()
diff --git a/html/changelogs/wezzy_button_noises.yml b/html/changelogs/wezzy_button_noises.yml
new file mode 100644
index 00000000000..dbd55da9cd5
--- /dev/null
+++ b/html/changelogs/wezzy_button_noises.yml
@@ -0,0 +1,41 @@
+################################
+# Example Changelog File
+#
+# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
+#
+# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
+# When it is, any changes listed below will disappear.
+#
+# Valid Prefixes:
+# bugfix
+# wip (For works in progress)
+# tweak
+# soundadd
+# sounddel
+# rscadd (general adding of nice things)
+# rscdel (general deleting of nice things)
+# imageadd
+# imagedel
+# maptweak
+# spellcheck (typo fixes)
+# experiment
+# balance
+# admin
+# backend
+# security
+# refactor
+#################################
+
+# Your name.
+author: Wowzewow (Wezzy)
+
+# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
+delete-after: True
+
+# Any changes you've made. See valid prefix list above.
+# INDENT WITH TWO SPACES. NOT TABS. SPACES.
+# SCREW THIS UP AND IT WON'T WORK.
+# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
+# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
+changes:
+ - soundadd: "Adds more clicking button sounds to machines. Try it out on your nearest vending machine! Discover ALL the noises!"
diff --git a/sound/machines/button1.ogg b/sound/machines/button1.ogg
new file mode 100644
index 00000000000..3499e2d1722
Binary files /dev/null and b/sound/machines/button1.ogg differ
diff --git a/sound/machines/button2.ogg b/sound/machines/button2.ogg
new file mode 100644
index 00000000000..83970986e32
Binary files /dev/null and b/sound/machines/button2.ogg differ
diff --git a/sound/machines/button3.ogg b/sound/machines/button3.ogg
new file mode 100644
index 00000000000..a28da269ad6
Binary files /dev/null and b/sound/machines/button3.ogg differ
diff --git a/sound/machines/button4.ogg b/sound/machines/button4.ogg
new file mode 100644
index 00000000000..9fceed1611f
Binary files /dev/null and b/sound/machines/button4.ogg differ
diff --git a/sound/machines/buttonbeep.ogg b/sound/machines/buttonbeep.ogg
new file mode 100644
index 00000000000..347ea135440
Binary files /dev/null and b/sound/machines/buttonbeep.ogg differ