diff --git a/code/__defines/sound.dm b/code/__defines/sound.dm
index 18666dbd34a..c3516e9d035 100644
--- a/code/__defines/sound.dm
+++ b/code/__defines/sound.dm
@@ -1,3 +1,9 @@
+#define PICKUP_SOUND_VOLUME_MIN 20
+#define PICKUP_SOUND_VOLUME_MAX 60
+#define DROP_SOUND_VOLUME_MIN 20
+#define DROP_SOUND_VOLUME_MAX 70
+#define THROW_SOUND_VOLUME 90
+
//Sound environment defines. Reverb preset for sounds played in an area, see sound datum reference for more.
#define GENERIC 0
#define PADDED_CELL 1
@@ -151,7 +157,122 @@
#define SFX_PULL_WOOD "pull_wood"
// PICKUP
+#define SFX_PICKUP_GENERIC "pickup_generic"
+#define SFX_PICKUP_ACCESSORY "pickup_accessory"
+#define SFX_PICKUP_AMMOBOX "pickup_ammobox"
+#define SFX_PICKUP_AXE "pickup_axe"
+#define SFX_PICKUP_BACKPACK "pickup_backpack"
+#define SFX_PICKUP_BALL "pickup_ball"
+#define SFX_PICKUP_BOOK "pickup_book"
+#define SFX_PICKUP_BOOTS "pickup_boots"
#define SFX_PICKUP_BOTTLE "pickup_bottle"
+#define SFX_PICKUP_GLASSBOTTLE "pickup_glassbottle"
+#define SFX_PICKUP_CARD "pickup_card"
+#define SFX_PICKUP_CARDBOARD "pickup_cardboard"
+#define SFX_PICKUP_CLOTH "pickup_cloth"
+#define SFX_PICKUP_COMPONENT "pickup_component"
+#define SFX_PICKUP_CROWBAR "pickup_crowbar"
+#define SFX_PICKUP_DEVICE "pickup_device"
+#define SFX_PICKUP_DISK "pickup_disk"
+#define SFX_PICKUP_DRINKGLASS "pickup_drinkglass"
+#define SFX_PICKUP_FLESH "pickup_flesh"
+#define SFX_PICKUP_FOOD "pickup_food"
+#define SFX_PICKUP_GASCAN "pickup_gascan"
+#define SFX_PICKUP_GLASS "pickup_glass"
+#define SFX_PICKUP_GLASSSMALL "pickup_glasssmall"
+#define SFX_PICKUP_GLOVES "pickup_gloves"
+#define SFX_PICKUP_GUN "pickup_gun"
+#define SFX_PICKUP_HAT "pickup_hat"
+#define SFX_PICKUP_HELMET "pickup_helmet"
+#define SFX_PICKUP_HERB "pickup_herb"
+#define SFX_PICKUP_KNIFE "pickup_knife"
+#define SFX_PICKUP_LEATHER "pickup_leather"
+#define SFX_PICKUP_MATCHBOX "pickup_matchbox"
+#define SFX_PICKUP_METALPOT "pickup_metalpot"
+#define SFX_PICKUP_METALWEAPON "pickup_metalweapon"
+#define SFX_PICKUP_MULTITOOL "pickup_multitool"
+#define SFX_PICKUP_PAPER "pickup_paper"
+#define SFX_PICKUP_PAPERCUP "pickup_papercup"
+#define SFX_PICKUP_PILLBOTTLE "pickup_pillbottle"
+#define SFX_PICKUP_PLUSHIE "pickup_plushie"
+#define SFX_PICKUP_RING "pickup_ring"
+#define SFX_PICKUP_RUBBER "pickup_rubber"
+#define SFX_PICKUP_SCREWDRIVER "pickup_screwdriver"
+#define SFX_PICKUP_SHEL "pickup_shelldrop"
+#define SFX_PICKUP_SHOES "pickup_shoes"
+#define SFX_PICKUP_SHOVEL "pickup_shovel"
+#define SFX_PICKUP_SODACAN "pickup_sodacan"
+#define SFX_PICKUP_SWORD "pickup_sword"
+#define SFX_PICKUP_TOOLBELT "pickup_toolbelt"
+#define SFX_PICKUP_TOOLBOX "pickup_toolbox"
+#define SFX_PICKUP_WELDINGTOOL "pickup_weldingtool"
+#define SFX_PICKUP_WIRECUTTER "pickup_wirecutter"
+#define SFX_PICKUP_WOODEN "pickup_wooden"
+#define SFX_PICKUP_WRAPPER "pickup_wrapper"
+#define SFX_PICKUP_WRENCH "pickup_wrench"
+
+// DROP
+#define SFX_DROP_GENERIC "drop_generic"
+#define SFX_DROP_ACCESSORY "drop_accessory"
+#define SFX_DROP_AMMOBOX "drop_ammobox"
+#define SFX_DROP_AXE "drop_axe"
+#define SFX_DROP_BACKPACK "drop_backpack"
+#define SFX_DROP_BALL "drop_ball"
+#define SFX_DROP_BOOK "drop_book"
+#define SFX_DROP_BOOTS "drop_boots"
+#define SFX_DROP_BOTTLE "drop_bottle"
+#define SFX_DROP_GLASSBOTTLE "drop_glassbottle"
+#define SFX_DROP_CARD "drop_card"
+#define SFX_DROP_CARDBOARD "drop_cardboard"
+#define SFX_DROP_CLOTH "drop_cloth"
+#define SFX_DROP_COMPONENT "drop_component"
+#define SFX_DROP_CROWBAR "drop_crowbar"
+#define SFX_DROP_DEVICE "drop_device"
+#define SFX_DROP_DISK "drop_disk"
+#define SFX_DROP_DRINKGLASS "drop_drinkglass"
+#define SFX_DROP_FLESH "drop_flesh"
+#define SFX_DROP_FOOD "drop_food"
+#define SFX_DROP_GASCAN "drop_gascan"
+#define SFX_DROP_GLASS "drop_glass"
+#define SFX_DROP_GLASSSMALL "drop_glasssmall"
+#define SFX_DROP_GLOVES "drop_gloves"
+#define SFX_DROP_GUN "drop_gun"
+#define SFX_DROP_HAT "drop_hat"
+#define SFX_DROP_HELMET "drop_helmet"
+#define SFX_DROP_HERB "drop_herb"
+#define SFX_DROP_KNIFE "drop_knife"
+#define SFX_DROP_LEATHER "drop_leather"
+#define SFX_DROP_MATCHBOX "drop_matchbox"
+#define SFX_DROP_METALPOT "drop_metalpot"
+#define SFX_DROP_METALWEAPON "drop_metalweapon"
+#define SFX_DROP_MULTITOOL "drop_multitool"
+#define SFX_DROP_PAPER "drop_paper"
+#define SFX_DROP_PAPERCUP "drop_papercup"
+#define SFX_DROP_PILLBOTTLE "drop_pillbottle"
+#define SFX_DROP_PLUSHIE "drop_plushie"
+#define SFX_DROP_RING "drop_ring"
+#define SFX_DROP_RUBBER "drop_rubber"
+#define SFX_DROP_SCREWDRIVER "drop_screwdriver"
+#define SFX_DROP_SHELL "drop_shelldrop"
+#define SFX_DROP_SHOES "drop_shoes"
+#define SFX_DROP_SHOVEL "drop_shovel"
+#define SFX_DROP_SODACAN "drop_sodacan"
+#define SFX_DROP_SWORD "drop_sword"
+#define SFX_DROP_TOOLBELT "drop_toolbelt"
+#define SFX_DROP_TOOLBOX "drop_toolbox"
+#define SFX_DROP_WELDINGTOOL "drop_weldingtool"
+#define SFX_DROP_WIRECUTTER "drop_wirecutter"
+#define SFX_DROP_WOODEN "drop_wooden"
+#define SFX_DROP_WRAPPER "drop_wrapper"
+#define SFX_DROP_WRENCH "drop_wrench"
+
+// HOLSTER & SHEATH
+#define SFX_HOLSTERIN "holster_in"
+#define SFX_HOLSTEROUT "holster_out"
+#define SFX_SHEATHIN "sheath_in"
+#define SFX_SHEATHOUT "sheath_out"
+#define SFX_TACHOLSTERIN "tacholster_in"
+#define SFX_TACHOLSTEROUT "tacholster_out"
// DRINK & EAT
#define SFX_DRINK "drink"
@@ -172,6 +293,11 @@
#define SFX_SPARK_MEDIUM "spark_medium"
#define SFX_SPARK_HEAVY "spark_heavy"
+// TURRETS
+#define SFX_TURRET_DEPLOY "turret_deploy"
+#define SFX_TURRET_RETRACT "turret_retract"
+#define SFX_TURRET_ROTATE "turret_rotate"
+
// EXPLOSION
#define SFX_EXPLOSION "explosion"
#define SFX_EXPLOSION_ELECTRIC "explosion_electric"
@@ -230,4 +356,10 @@
#define SFX_FOOTSTEP_ROBOT_LEGS "footstep_robot_legs"
#define SFX_FOOTSTEP_ROBOT_SPIDER "footstep_robot_spider"
+// VENDING
+#define SFX_VENDING_CANS "vending_cans"
+#define SFX_VENDING_COFFEE "vending_coffee"
+#define SFX_VENDING_DROP "vending_drop"
+#define SFX_VENDING_GENERIC "vending_generic"
+
#define GET_SFX(name) pick(GLOB.sfx_list[name])
diff --git a/code/_global_vars/sfx.dm b/code/_global_vars/sfx.dm
index e9e6b2700bd..236b04462bb 100644
--- a/code/_global_vars/sfx.dm
+++ b/code/_global_vars/sfx.dm
@@ -907,10 +907,352 @@ GLOBAL_LIST_INIT(sfx_list, list(
'sound/effects/pull/pull_wood37.ogg'
),
// PICKUP
+ SFX_PICKUP_GENERIC = list(
+ 'sound/effects/pickup/generic1.ogg',
+ 'sound/effects/pickup/generic2.ogg',
+ 'sound/effects/pickup/generic3.ogg'
+ ),
+ SFX_PICKUP_ACCESSORY = list(
+ 'sound/effects/pickup/accessory.ogg'
+ ),
+ SFX_PICKUP_AMMOBOX = list(
+ 'sound/effects/pickup/ammobox.ogg'
+ ),
+ SFX_PICKUP_AXE = list(
+ 'sound/effects/pickup/axe.ogg'
+ ),
+ SFX_PICKUP_BACKPACK = list(
+ 'sound/effects/pickup/backpack.ogg'
+ ),
+ SFX_PICKUP_BALL = list(
+ 'sound/effects/pickup/ball.ogg'
+ ),
SFX_PICKUP_BOTTLE = list(
+ 'sound/effects/using/bottles/pickup1.ogg',
+ 'sound/effects/using/bottles/pickup2.ogg',
+ ),
+ SFX_PICKUP_GLASSBOTTLE = list(
+ 'sound/effects/using/bottles/pickup3.ogg',
+ ),
+ SFX_PICKUP_BOOK = list(
+ 'sound/effects/pickup/book.ogg'
+ ),
+ SFX_PICKUP_BOOTS = list(
+ 'sound/effects/pickup/boots.ogg'
+ ),
+ SFX_PICKUP_CARD = list(
+ 'sound/effects/pickup/card.ogg'
+ ),
+ SFX_PICKUP_CARDBOARD = list(
+ 'sound/effects/pickup/cardboardbox.ogg'
+ ),
+ SFX_PICKUP_CLOTH = list(
+ 'sound/effects/pickup/cloth.ogg'
+ ),
+ SFX_PICKUP_COMPONENT = list(
+ 'sound/effects/pickup/component.ogg'
+ ),
+ SFX_PICKUP_CROWBAR = list(
+ 'sound/effects/pickup/crowbar.ogg'
+ ),
+ SFX_PICKUP_DEVICE = list(
+ 'sound/effects/pickup/device.ogg'
+ ),
+ SFX_PICKUP_DISK = list(
+ 'sound/effects/pickup/disk.ogg'
+ ),
+ SFX_PICKUP_DRINKGLASS = list(
+ 'sound/effects/pickup/drinkglass.ogg'
+ ),
+ SFX_PICKUP_FLESH = list(
+ 'sound/effects/pickup/flesh.ogg'
+ ),
+ SFX_PICKUP_FOOD = list(
+ 'sound/effects/pickup/food.ogg'
+ ),
+ SFX_PICKUP_GASCAN = list(
+ 'sound/effects/pickup/gascan.ogg'
+ ),
+ SFX_PICKUP_GLASS = list(
+ 'sound/effects/pickup/glass.ogg'
+ ),
+ SFX_PICKUP_GLASSSMALL = list(
+ 'sound/effects/pickup/glass_small.ogg'
+ ),
+ SFX_PICKUP_GLOVES = list(
+ 'sound/effects/pickup/gloves.ogg'
+ ),
+ SFX_PICKUP_GUN = list(
+ 'sound/effects/pickup/gun.ogg'
+ ),
+ SFX_PICKUP_HAT = list(
+ 'sound/effects/pickup/hat.ogg'
+ ),
+ SFX_PICKUP_HELMET = list(
+ 'sound/effects/pickup/helm.ogg'
+ ),
+ SFX_PICKUP_HERB = list(
+ 'sound/effects/pickup/herb.ogg'
+ ),
+ SFX_PICKUP_KNIFE = list(
+ 'sound/effects/pickup/knife.ogg'
+ ),
+ SFX_PICKUP_LEATHER = list(
+ 'sound/effects/pickup/leather.ogg'
+ ),
+ SFX_PICKUP_MATCHBOX = list(
+ 'sound/effects/pickup/matchbox.ogg'
+ ),
+ SFX_PICKUP_METALPOT = list(
+ 'sound/effects/pickup/metal_pot.ogg'
+ ),
+ SFX_PICKUP_METALWEAPON = list(
+ 'sound/effects/pickup/metalweapon.ogg'
+ ),
+ SFX_PICKUP_MULTITOOL = list(
+ 'sound/effects/pickup/multitool.ogg'
+ ),
+ SFX_PICKUP_PAPER = list(
+ 'sound/effects/pickup/paper.ogg'
+ ),
+ SFX_PICKUP_PAPERCUP = list(
+ 'sound/effects/pickup/papercup.ogg'
+ ),
+ SFX_PICKUP_PILLBOTTLE = list(
+ 'sound/effects/pickup/pillbottle.ogg'
+ ),
+ SFX_PICKUP_PLUSHIE = list(
+ 'sound/effects/pickup/plushie.ogg'
+ ),
+ SFX_PICKUP_RING = list(
+ 'sound/effects/pickup/ring.ogg'
+ ),
+ SFX_PICKUP_RUBBER = list(
+ 'sound/effects/pickup/rubber.ogg'
+ ),
+ SFX_PICKUP_SCREWDRIVER = list(
+ 'sound/effects/pickup/screwdriver.ogg'
+ ),
+ SFX_PICKUP_SHELL = list(
+ 'sound/effects/drop/shell_drop.ogg'
+ ),
+ SFX_PICKUP_SHOES = list(
+ 'sound/effects/pickup/shoes.ogg'
+ ),
+ SFX_PICKUP_SHOVEL = list(
+ 'sound/effects/pickup/shovel.ogg'
+ ),
+ SFX_PICKUP_SODACAN = list(
+ 'sound/effects/pickup/soda.ogg'
+ ),
+ SFX_PICKUP_SWORD = list(
+ 'sound/effects/pickup/sword1.ogg',
+ 'sound/effects/pickup/sword2.ogg',
+ 'sound/effects/pickup/sword3.ogg'
+ ),
+ SFX_PICKUP_TOOLBELT = list(
+ 'sound/effects/pickup/toolbelt.ogg'
+ ),
+ SFX_PICKUP_TOOLBOX = list(
+ 'sound/effects/pickup/toolbox.ogg'
+ ),
+ SFX_PICKUP_WELDINGTOOL = list(
+ 'sound/effects/pickup/weldingtool.ogg'
+ ),
+ SFX_PICKUP_WIRECUTTER = list(
+ 'sound/effects/pickup/wirecutter.ogg'
+ ),
+ SFX_PICKUP_WOODEN = list(
+ 'sound/effects/pickup/wooden.ogg'
+ ),
+ SFX_PICKUP_WRAPPER = list(
+ 'sound/effects/pickup/wrapper.ogg'
+ ),
+ SFX_PICKUP_WRENCH = list(
+ 'sound/effects/pickup/wrench.ogg'
+ ),
+ //DROP
+ SFX_DROP_GENERIC = list(
+ 'sound/effects/drop/generic1.ogg',
+ 'sound/effects/drop/generic2.ogg'
+ ),
+ SFX_DROP_ACCESSORY = list(
+ 'sound/effects/pickup/accessory.ogg'
+ ),
+ SFX_DROP_AMMOBOX = list(
+ 'sound/effects/drop/ammobox.ogg'
+ ),
+ SFX_DROP_AXE = list(
+ 'sound/effects/drop/axe.ogg'
+ ),
+ SFX_DROP_BACKPACK = list(
+ 'sound/effects/drop/backpack.ogg'
+ ),
+ SFX_DROP_BALL = list(
+ 'sound/effects/drop/ball.ogg'
+ ),
+ SFX_DROP_BOTTLE = list(
'sound/effects/using/bottles/pickup1.ogg',
'sound/effects/using/bottles/pickup2.ogg'
),
+ SFX_DROP_GLASSBOTTLE = list(
+ 'sound/effects/using/bottles/pickup3.ogg',
+ 'sound/effects/drop/bottle.ogg'
+ ),
+ SFX_DROP_BOOK = list(
+ 'sound/effects/drop/book.ogg'
+ ),
+ SFX_DROP_BOOTS = list(
+ 'sound/effects/drop/boots.ogg'
+ ),
+ SFX_DROP_CARD = list(
+ 'sound/effects/drop/card.ogg'
+ ),
+ SFX_DROP_CARDBOARD = list(
+ 'sound/effects/drop/cardboardbox.ogg'
+ ),
+ SFX_DROP_CLOTH = list(
+ 'sound/effects/drop/cloth.ogg'
+ ),
+ SFX_DROP_COMPONENT = list(
+ 'sound/effects/drop/component.ogg'
+ ),
+ SFX_DROP_CROWBAR = list(
+ 'sound/effects/drop/crowbar.ogg'
+ ),
+ SFX_DROP_DEVICE = list(
+ 'sound/effects/drop/device.ogg'
+ ),
+ SFX_DROP_DISK = list(
+ 'sound/effects/drop/disk.ogg'
+ ),
+ SFX_DROP_DRINKGLASS = list(
+ 'sound/effects/drop/drinkglass.ogg'
+ ),
+ SFX_DROP_FLESH = list(
+ 'sound/effects/drop/flesh.ogg'
+ ),
+ SFX_DROP_FOOD = list(
+ 'sound/effects/drop/food.ogg'
+ ),
+ SFX_DROP_GASCAN = list(
+ 'sound/effects/drop/gascan.ogg'
+ ),
+ SFX_DROP_GLASS = list(
+ 'sound/effects/drop/glass.ogg'
+ ),
+ SFX_DROP_GLASSSMALL = list(
+ 'sound/effects/drop/glass_small.ogg'
+ ),
+ SFX_DROP_GLOVES = list(
+ 'sound/effects/drop/gloves.ogg'
+ ),
+ SFX_DROP_GUN = list(
+ 'sound/effects/drop/gun.ogg'
+ ),
+ SFX_DROP_HAT = list(
+ 'sound/effects/drop/hat.ogg'
+ ),
+ SFX_DROP_HELMET = list(
+ 'sound/effects/drop/helm.ogg'
+ ),
+ SFX_DROP_HERB = list(
+ 'sound/effects/drop/herb.ogg'
+ ),
+ SFX_DROP_KNIFE = list(
+ 'sound/effects/drop/knife.ogg'
+ ),
+ SFX_DROP_LEATHER = list(
+ 'sound/effects/drop/leather.ogg'
+ ),
+ SFX_DROP_MATCHBOX = list(
+ 'sound/effects/drop/matchbox.ogg'
+ ),
+ SFX_DROP_METALPOT = list(
+ 'sound/effects/drop/metal_pot.ogg'
+ ),
+ SFX_DROP_METALWEAPON = list(
+ 'sound/effects/drop/metalweapon.ogg'
+ ),
+ SFX_DROP_MULTITOOL = list(
+ 'sound/effects/drop/multitool.ogg'
+ ),
+ SFX_DROP_PAPER = list(
+ 'sound/effects/drop/paper.ogg'
+ ),
+ SFX_DROP_PAPERCUP = list(
+ 'sound/effects/drop/papercup.ogg'
+ ),
+ SFX_DROP_PILLBOTTLE = list(
+ 'sound/effects/drop/pillbottle.ogg'
+ ),
+ SFX_DROP_PLUSHIE = list(
+ 'sound/effects/drop/plushie.ogg'
+ ),
+ SFX_DROP_RING = list(
+ 'sound/effects/drop/ring.ogg'
+ ),
+ SFX_DROP_RUBBER = list(
+ 'sound/effects/drop/rubber.ogg'
+ ),
+ SFX_DROP_SCREWDRIVER = list(
+ 'sound/effects/drop/screwdriver.ogg'
+ ),
+ SFX_DROP_SHELL = list(
+ 'sound/effects/drop/shell_drop.ogg'
+ ),
+ SFX_DROP_SHOES = list(
+ 'sound/effects/drop/shoes.ogg'
+ ),
+ SFX_DROP_SHOVEL = list(
+ 'sound/effects/drop/shovel.ogg'
+ ),
+ SFX_DROP_SODACAN = list(
+ 'sound/effects/drop/soda.ogg'
+ ),
+ SFX_DROP_SWORD = list(
+ 'sound/effects/drop/sword.ogg'
+ ),
+ SFX_DROP_TOOLBELT = list(
+ 'sound/effects/drop/toolbelt.ogg'
+ ),
+ SFX_DROP_TOOLBOX = list(
+ 'sound/effects/drop/toolbox.ogg'
+ ),
+ SFX_DROP_WELDINGTOOL = list(
+ 'sound/effects/drop/weldingtool.ogg'
+ ),
+ SFX_DROP_WIRECUTTER = list(
+ 'sound/effects/drop/wirecutter.ogg'
+ ),
+ SFX_DROP_WOODEN = list(
+ 'sound/effects/drop/wooden.ogg'
+ ),
+ SFX_DROP_WRAPPER = list(
+ 'sound/effects/drop/wrapper.ogg'
+ ),
+ SFX_DROP_WRENCH = list(
+ 'sound/effects/drop/wrench.ogg'
+ ),
+ // HOLSTER & SHEATH
+ SFX_HOLSTERIN = list(
+ 'sound/effects/holster/holsterin.ogg'
+ ),
+ SFX_HOLSTEROUT = list(
+ 'sound/effects/holster/holsterout.ogg'
+ ),
+ SFX_SHEATHIN = list(
+ 'sound/effects/holster/sheathin.ogg'
+ ),
+ SFX_SHEATHOUT = list(
+ 'sound/effects/holster/sheathout.ogg'
+ ),
+ SFX_TACHOLSTERIN = list(
+ 'sound/effects/holster/tactiholsterin.ogg'
+ ),
+ SFX_TACHOLSTEROUT = list(
+ 'sound/effects/holster/tactiholsterout.ogg'
+ ),
// DRINK & EAT
SFX_DRINK = list(
'sound/effects/eating/drink1.ogg'
@@ -1005,6 +1347,16 @@ GLOBAL_LIST_INIT(sfx_list, list(
'sound/effects/electric/heavy_spark3.ogg',
'sound/effects/electric/heavy_spark4.ogg'
),
+ // TURRETS
+ SFX_TURRET_DEPLOY = list(
+ 'sound/machines/turrets/turret_deploy.ogg'
+ ),
+ SFX_TURRET_RETRACT = list(
+ 'sound/machines/turrets/turret_retract.ogg'
+ ),
+ SFX_TURRET_ROTATE = list(
+ 'sound/machines/turrets/turret_rotate.ogg'
+ ),
// EXPLOSION
SFX_EXPLOSION = list(
'sound/effects/explosions/explosion1.ogg',
@@ -1465,5 +1817,17 @@ GLOBAL_LIST_INIT(sfx_list, list(
'sound/machines/keyboard/keypress2.ogg',
'sound/machines/keyboard/keypress3.ogg',
'sound/machines/keyboard/keypress4.ogg'
+ ),
+ SFX_VENDING_CANS = list(
+ 'sound/machines/vending/vending_cans.ogg'
+ ),
+ SFX_VENDING_COFFEE = list(
+ 'sound/machines/vending/vending_coffee.ogg'
+ ),
+ SFX_VENDING_DROP = list(
+ 'sound/machines/vending/vending_drop.ogg'
+ ),
+ SFX_VENDING_GENERIC = list(
+ 'sound/effects/using/disposal/drop2.ogg'
)
))
diff --git a/code/game/gamemodes/nuclear/pinpointer.dm b/code/game/gamemodes/nuclear/pinpointer.dm
index af5160c045a..71e28a00acf 100644
--- a/code/game/gamemodes/nuclear/pinpointer.dm
+++ b/code/game/gamemodes/nuclear/pinpointer.dm
@@ -11,6 +11,9 @@
var/active = 0
var/beeping = 2
+ drop_sound = SFX_DROP_DEVICE
+ pickup_sound = SFX_PICKUP_DEVICE
+
/obj/item/pinpointer/Destroy()
target = null
. = ..()
diff --git a/code/game/machinery/kitchen/cooking_machines/_cooker.dm b/code/game/machinery/kitchen/cooking_machines/_cooker.dm
index c6777e61214..d4f1053e41a 100644
--- a/code/game/machinery/kitchen/cooking_machines/_cooker.dm
+++ b/code/game/machinery/kitchen/cooking_machines/_cooker.dm
@@ -7,6 +7,8 @@
// Tracks precooked food to stop deep fried baked grilled grilled grilled diona nymph cereal.
/obj/item/reagent_containers/food
+ drop_sound = SFX_DROP_FOOD
+ pickup_sound = SFX_PICKUP_FOOD
var/list/cooked_types = list()
// Root type for cooking machines. See following files for specific implementations.
@@ -39,6 +41,7 @@
var/next_burn_time
var/cooking_is_done = FALSE
+
/obj/machinery/cooker/Destroy()
if(thing_inside)
qdel(thing_inside)
diff --git a/code/game/machinery/nuclear_bomb.dm b/code/game/machinery/nuclear_bomb.dm
index ce178b91d75..29ef36933d1 100644
--- a/code/game/machinery/nuclear_bomb.dm
+++ b/code/game/machinery/nuclear_bomb.dm
@@ -375,6 +375,9 @@ var/bomb_set
item_state = "card-id"
w_class = ITEM_SIZE_TINY
+ drop_sound = SFX_DROP_DISK
+ pickup_sound = SFX_PICKUP_DISK
+
/obj/item/disk/nuclear/Initialize()
. = ..()
// Can never be quite sure that a game mode has been properly initiated or not at this point, so always register
diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm
index 9be8a70c371..1193059dbb1 100644
--- a/code/game/machinery/portable_turret.dm
+++ b/code/game/machinery/portable_turret.dm
@@ -456,6 +456,9 @@ var/list/turret_icons
var/list/targets = list() //list of primary targets
var/list/secondarytargets = list() //targets that are least important
+ if(density && prob(25))
+ playsound(src, SFX_TURRET_ROTATE, 80, TRUE)
+
for(var/mob/M in mobs_in_view(world.view, src))
assess_and_assign(M, targets, secondarytargets)
@@ -559,6 +562,7 @@ var/list/turret_icons
var/atom/flick_holder = new /atom/movable/porta_turret_cover(loc)
flick_holder.layer = layer + 0.1
flick("popup", flick_holder)
+ playsound(src, SFX_TURRET_DEPLOY, 80, TRUE)
sleep(10)
qdel(flick_holder)
@@ -579,6 +583,7 @@ var/list/turret_icons
var/atom/flick_holder = new /atom/movable/porta_turret_cover(loc)
flick_holder.layer = layer + 0.1
flick("popdown", flick_holder)
+ playsound(src, SFX_TURRET_RETRACT, 80, TRUE)
sleep(10)
qdel(flick_holder)
diff --git a/code/game/machinery/vending/BODA.dm b/code/game/machinery/vending/BODA.dm
index 5144d4caa03..52ace33e477 100644
--- a/code/game/machinery/vending/BODA.dm
+++ b/code/game/machinery/vending/BODA.dm
@@ -5,6 +5,8 @@
icon_state = "sovietsoda"
+ vending_sound = SFX_VENDING_GENERIC
+
use_vend_state = TRUE
product_ads = "For Tsar and Country.;Have you fulfilled your nutrition quota today?;Very nice!;We are simple people, for this is all we eat.;If there is a person, there is a problem. If there is no person, then there is no problem."
idle_power_usage = 211 WATTS //refrigerator - believe it or not, this is actually the average power consumption of a refrigerated vending machine according to NRCan.
diff --git a/code/game/machinery/vending/_vending.dm b/code/game/machinery/vending/_vending.dm
index 69a827b8565..0f6a0914ac6 100644
--- a/code/game/machinery/vending/_vending.dm
+++ b/code/game/machinery/vending/_vending.dm
@@ -71,6 +71,8 @@
var/list/prices = list()
var/gen_rand_amount = FALSE // If we want to generate random amount of items in our cartridge.
+ var/vending_sound = SFX_VENDING_DROP
+
/obj/machinery/vending/on_update_icon()
ClearOverlays()
if(stat & BROKEN)
@@ -591,7 +593,7 @@
stuck()
return
- playsound(src, 'sound/effects/using/disposal/drop2.ogg', 40, TRUE)
+ playsound(src, vending_sound, 70, TRUE)
if(prob(diona_spawn_chance)) //Hehehe
var/turf/T = get_turf(src)
diff --git a/code/game/machinery/vending/actors.dm b/code/game/machinery/vending/actors.dm
index 899dca92707..52d57948a1e 100644
--- a/code/game/machinery/vending/actors.dm
+++ b/code/game/machinery/vending/actors.dm
@@ -5,6 +5,8 @@
icon_state = "Theater"
+ vending_sound = SFX_VENDING_DROP
+
component_types = list(
/obj/item/vending_cartridge/props
)
diff --git a/code/game/machinery/vending/assist.dm b/code/game/machinery/vending/assist.dm
index fa9d7494188..e2e308f96af 100644
--- a/code/game/machinery/vending/assist.dm
+++ b/code/game/machinery/vending/assist.dm
@@ -2,6 +2,8 @@
/obj/machinery/vending/assist
product_ads = "Only the finest!;Have some tools.;The most robust equipment.;The finest gear in space!"
+ vending_sound = SFX_VENDING_GENERIC
+
component_types = list(
/obj/item/vending_cartridge/assist
)
diff --git a/code/game/machinery/vending/boozeomat.dm b/code/game/machinery/vending/boozeomat.dm
index 13bc4f7aa83..7fe26202554 100644
--- a/code/game/machinery/vending/boozeomat.dm
+++ b/code/game/machinery/vending/boozeomat.dm
@@ -14,6 +14,8 @@
product_slogans = "I hope nobody asks me for a bloody cup o' tea...;Alcohol is humanity's friend. Would you abandon a friend?;Quite delighted to serve you!;Is nobody thirsty on this station?"
product_ads = "Drink up!;Booze is good for you!;Alcohol is humanity's best friend.;Quite delighted to serve you!;Care for a nice, cold beer?;Nothing cures you like booze!;Have a sip!;Have a drink!;Have a beer!;Beer is good for you!;Only the finest alcohol!;Best quality booze since 2053!;Award-winning wine!;Maximum alcohol!;Man loves beer.;A toast for progress!"
+ vending_sound = SFX_VENDING_GENERIC
+
component_types = list(
/obj/item/vending_cartridge/boozeomat
)
diff --git a/code/game/machinery/vending/cigarette.dm b/code/game/machinery/vending/cigarette.dm
index f0f7e0636d3..c890db818de 100644
--- a/code/game/machinery/vending/cigarette.dm
+++ b/code/game/machinery/vending/cigarette.dm
@@ -28,6 +28,8 @@
Professionals. Better cigarettes for better people. Yes, better people.;\
StarLing - look cool 'till you drool!"
+ vending_sound = SFX_VENDING_DROP
+
component_types = list(
/obj/item/vending_cartridge/cigarette
)
diff --git a/code/game/machinery/vending/coat.dm b/code/game/machinery/vending/coat.dm
index 0480289edf5..1aaf75dba9a 100644
--- a/code/game/machinery/vending/coat.dm
+++ b/code/game/machinery/vending/coat.dm
@@ -8,6 +8,8 @@
use_vend_state = TRUE
gen_rand_amount = FALSE
+ vending_sound = SFX_VENDING_DROP
+
component_types = list(
/obj/item/vending_cartridge/coat_dispenser
)
diff --git a/code/game/machinery/vending/coffee.dm b/code/game/machinery/vending/coffee.dm
index d83d96744dd..5d8b65c9277 100644
--- a/code/game/machinery/vending/coffee.dm
+++ b/code/game/machinery/vending/coffee.dm
@@ -15,6 +15,8 @@
use_vend_state = TRUE
product_ads = "Have a drink!;Drink up!;It's good for you!;Would you like a hot joe?;I'd kill for some coffee!;The best beans in the galaxy.;Only the finest brew for you.;Mmmm. Nothing like a coffee.;I like coffee, don't you?;Coffee helps you work!;Try some tea.;We hope you like the best!;Try our new chocolate!;Admin conspiracies"
+ vending_sound = SFX_VENDING_COFFEE
+
component_types = list(
/obj/item/vending_cartridge/coffee
)
diff --git a/code/game/machinery/vending/cola.dm b/code/game/machinery/vending/cola.dm
index 09b4d1d52a2..ff17ddc18b6 100644
--- a/code/game/machinery/vending/cola.dm
+++ b/code/game/machinery/vending/cola.dm
@@ -12,6 +12,8 @@
product_slogans = "Robust Softdrinks: More robust than a toolbox to the head!"
product_ads = "Refreshing!;Hope you're thirsty!;Over 1 million drinks sold!;Thirsty? Why not cola?;Please, have a drink!;Drink up!;The best drinks in space."
+ vending_sound = SFX_VENDING_CANS
+
component_types = list(
/obj/item/vending_cartridge/cola
)
diff --git a/code/game/machinery/vending/engineering.dm b/code/game/machinery/vending/engineering.dm
index c130ae95361..84fce0b6e40 100644
--- a/code/game/machinery/vending/engineering.dm
+++ b/code/game/machinery/vending/engineering.dm
@@ -21,6 +21,8 @@
/obj/item/clothing/gloves/insulated/cheap = 2)
premium = list(/obj/item/clothing/gloves/insulated = 1)
+ vending_sound = SFX_VENDING_GENERIC
+
/obj/item/vending_cartridge/tool
name = "youtool"
build_path = /obj/machinery/vending/tool
diff --git a/code/game/machinery/vending/fashion.dm b/code/game/machinery/vending/fashion.dm
index 4231bff4840..97fe66d0b8f 100644
--- a/code/game/machinery/vending/fashion.dm
+++ b/code/game/machinery/vending/fashion.dm
@@ -10,6 +10,8 @@
product_slogans = "Look smashing for your darling!;Be rich! Dress rich!"
product_ads = "Impress the love of your life!;Don't look poor, look rich!;100% authentic designers!;All sales are final!;Lowest prices guaranteed!"
+ vending_sound = SFX_VENDING_DROP
+
component_types = list(
/obj/item/vending_cartridge/fashionvend
)
diff --git a/code/game/machinery/vending/fitness.dm b/code/game/machinery/vending/fitness.dm
index 223b55f86b6..5ed8c69b267 100644
--- a/code/game/machinery/vending/fitness.dm
+++ b/code/game/machinery/vending/fitness.dm
@@ -10,6 +10,8 @@
product_slogans = "SweatMAX, get robust!"
product_ads = "Pain is just weakness leaving the body!;Run! Your fat is catching up to you;Never forget leg day!;Push out!;This is the only break you get today.;Don't cry, sweat!;Healthy is an outfit that looks good on everybody."
+ vending_sound = SFX_VENDING_DROP
+
component_types = list(
/obj/item/vending_cartridge/fitness
)
diff --git a/code/game/machinery/vending/games.dm b/code/game/machinery/vending/games.dm
index f7b2174d521..f9869d9234c 100644
--- a/code/game/machinery/vending/games.dm
+++ b/code/game/machinery/vending/games.dm
@@ -9,6 +9,8 @@
product_slogans = "Escape to a fantasy world!;Fuel your gambling addiction!;Ruin your friendships!"
product_ads = "Elves and dwarves!;Totally not satanic!;Fun times forever!"
+ vending_sound = SFX_VENDING_GENERIC
+
component_types = list(
/obj/item/vending_cartridge/games
)
diff --git a/code/game/machinery/vending/hydro.dm b/code/game/machinery/vending/hydro.dm
index 434ffb24148..8a728a2e34c 100644
--- a/code/game/machinery/vending/hydro.dm
+++ b/code/game/machinery/vending/hydro.dm
@@ -20,6 +20,8 @@
premium = list( /obj/item/reagent_containers/vessel/bottle/chemical/ammonia = 10,
/obj/item/reagent_containers/vessel/bottle/chemical/diethylamine = 5)
+ vending_sound = SFX_VENDING_DROP
+
/obj/item/vending_cartridge/hydronutrients
icon_state = "refill_plant"
build_path = /obj/machinery/vending/hydronutrients
diff --git a/code/game/machinery/vending/kitchen.dm b/code/game/machinery/vending/kitchen.dm
index 90a9179ab0a..bd6c67e42e8 100644
--- a/code/game/machinery/vending/kitchen.dm
+++ b/code/game/machinery/vending/kitchen.dm
@@ -8,6 +8,8 @@
use_vend_state = TRUE
product_ads = "Mm, food stuffs!;Food and food accessories.;Get your plates!;You like forks?;I like forks.;Woo, utensils.;You don't really need these..."
+ vending_sound = SFX_VENDING_DROP
+
component_types = list(
/obj/item/vending_cartridge/dinnerware
)
diff --git a/code/game/machinery/vending/medical.dm b/code/game/machinery/vending/medical.dm
index ab1ce45cc7c..44d08e71eed 100644
--- a/code/game/machinery/vending/medical.dm
+++ b/code/game/machinery/vending/medical.dm
@@ -12,6 +12,8 @@
use_vend_state = TRUE
product_ads = "Go save some lives!;The best stuff for your medbay.;Only the finest tools.;Natural chemicals!;This stuff saves lives.;Don't you want some?;Ping!"
+ vending_sound = SFX_VENDING_DROP
+
component_types = list(
/obj/item/vending_cartridge/medical
)
diff --git a/code/game/machinery/vending/plasmaresearch.dm b/code/game/machinery/vending/plasmaresearch.dm
index 34bbec3ee39..036b296d54f 100644
--- a/code/game/machinery/vending/plasmaresearch.dm
+++ b/code/game/machinery/vending/plasmaresearch.dm
@@ -3,6 +3,8 @@
name = "Toximate 3000"
desc = "All the fine parts you need in one vending machine!"
+ vending_sound = SFX_VENDING_GENERIC
+
component_types = list(
/obj/item/vending_cartridge/plasmaresearch
)
diff --git a/code/game/machinery/vending/robotics.dm b/code/game/machinery/vending/robotics.dm
index 5748a01d351..991589aa025 100644
--- a/code/game/machinery/vending/robotics.dm
+++ b/code/game/machinery/vending/robotics.dm
@@ -8,6 +8,8 @@
req_access = list(access_robotics)
+ vending_sound = SFX_VENDING_GENERIC
+
component_types = list(
/obj/item/vending_cartridge/robotics
)
diff --git a/code/game/machinery/vending/security.dm b/code/game/machinery/vending/security.dm
index 81991c74be7..d67bf206b5e 100644
--- a/code/game/machinery/vending/security.dm
+++ b/code/game/machinery/vending/security.dm
@@ -15,6 +15,8 @@
product_ads = "Crack capitalist skulls!;Beat some heads in!;Don't forget - harm is good!;Your weapons are right here.;Handcuffs!;Freeze, scumbag!;Don't tase me bro!;Tase them, bro.;Why not have a donut?"
+ vending_sound = SFX_VENDING_DROP
+
component_types = list(
/obj/item/vending_cartridge/security
)
diff --git a/code/game/machinery/vending/snack.dm b/code/game/machinery/vending/snack.dm
index c84ffd130b4..67c6d9261eb 100644
--- a/code/game/machinery/vending/snack.dm
+++ b/code/game/machinery/vending/snack.dm
@@ -10,6 +10,8 @@
product_slogans = "Try our new nougat bar!;Twice the calories for half the price!"
product_ads = "The healthiest!;Award-winning chocolate bars!;Mmm! So good!;Oh my god it's so juicy!;Have a snack.;Snacks are good for you!;Have some more Getmore!;Best quality snacks straight from mars.;We love chocolate!;Try our new jerky!"
+ vending_sound = SFX_VENDING_DROP
+
component_types = list(
/obj/item/vending_cartridge/snack
)
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index 7fa8f22fcc9..182c4cbebb4 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -90,7 +90,11 @@
// Species-specific sprite sheets for inventory sprites. Used in clothing/refit_for_species() proc.
var/list/sprite_sheets_obj = list()
- var/pickup_sound = null
+ /// Played when the item is picked up
+ var/pickup_sound = SFX_PICKUP_GENERIC
+
+ /// Played when the item is dropped or thrown
+ var/drop_sound = SFX_DROP_GENERIC
var/ear_protection = 0
@@ -124,6 +128,9 @@
/obj/item/device
icon = 'icons/obj/device.dmi'
+ pickup_sound = SFX_PICKUP_DEVICE
+ drop_sound = SFX_DROP_DEVICE
+
//Checks if the item is being held by a mob, and if so, updates the held icons
/obj/item/proc/update_twohanding()
update_held_icon()
@@ -267,13 +274,17 @@
var/old_loc = loc
+ var/changing_slots = FALSE
// Removing from a storage
if(istype(loc, /obj/item/storage))
var/obj/item/storage/S = loc
S.remove_from_storage(src)
// Unequipping from self
- else if(loc == user && !user.drop(src))
- return
+ else if(loc == user)
+ changing_slots = TRUE
+ if(!user.drop(src, changing_slots = changing_slots))
+ return
+
// Doing some unintended shit that may cause catastrophical events, aborting
// If you'll ever want to implement something that intentionally allows direct clicking on an item while it's inside
// an atom's contents - just go and smack yourself with a brick, it shall not work like this.
@@ -285,7 +296,7 @@
if(QDELETED(src)) // Unequipping may change src gc_destroyed, so must check here
return
- pickup(user)
+ pickup(user, changing_slots)
if(user.put_in_active_hand(src))
if(isturf(old_loc))
@@ -326,7 +337,7 @@
return
// apparently called whenever an item is removed from a slot, container, or anything else.
-/obj/item/proc/dropped(mob/user)
+/obj/item/proc/dropped(mob/user, changing_slots = FALSE)
if(randpixel)
pixel_z = randpixel //an idea borrowed from some of the older pixel_y randomizations. Intended to make items appear to drop at a character
@@ -337,6 +348,9 @@
if(user.r_hand)
user.r_hand.update_twohanding()
+ if(!changing_slots && !istype(loc, /obj/item/clothing/accessory))
+ play_drop_sound()
+
SEND_SIGNAL(src, SIGNAL_ITEM_UNEQUIPPED, src, user)
// called just as an item is picked up (loc is not yet changed)
@@ -374,6 +388,8 @@
if(M.r_hand)
M.r_hand.update_twohanding()
+ play_handling_sound(slot)
+
SEND_SIGNAL(src, SIGNAL_ITEM_EQUIPPED, src, user, slot)
//Defines which slots correspond to which slot flags
@@ -956,3 +972,19 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out.
spawn()
..()
return
+
+/obj/item/proc/play_drop_sound()
+ if(!drop_sound)
+ return
+
+ var/volume = clamp(rand(12, 16) * w_class, DROP_SOUND_VOLUME_MIN, DROP_SOUND_VOLUME_MAX)
+
+ playsound(src, drop_sound, volume, TRUE)
+
+/obj/item/proc/play_handling_sound(slot)
+ if(!pickup_sound)
+ return
+
+ if(slot == slot_l_hand || slot == slot_r_hand)
+ var/volume = clamp(rand(5, 15) * w_class, PICKUP_SOUND_VOLUME_MIN, PICKUP_SOUND_VOLUME_MAX)
+ playsound(src, pickup_sound, volume, TRUE)
diff --git a/code/game/objects/items/balloons.dm b/code/game/objects/items/balloons.dm
index 03b2916b084..76ca036c270 100644
--- a/code/game/objects/items/balloons.dm
+++ b/code/game/objects/items/balloons.dm
@@ -129,6 +129,9 @@
var/base_item_state
var/balloon_type = BALLOON_FORBIDDEN
+ drop_sound = SFX_DROP_RUBBER
+ pickup_sound = SFX_PICKUP_RUBBER
+
/obj/item/balloon/Initialize()
. = ..()
base_item_state = item_state
diff --git a/code/game/objects/items/devices/PDA/cart.dm b/code/game/objects/items/devices/PDA/cart.dm
index b478d9b5b12..1fafa6096c7 100644
--- a/code/game/objects/items/devices/PDA/cart.dm
+++ b/code/game/objects/items/devices/PDA/cart.dm
@@ -33,6 +33,9 @@
var/message2
var/list/stored_data = list()
+ drop_sound = SFX_DROP_COMPONENT
+ pickup_sound = SFX_PICKUP_COMPONENT
+
/obj/item/cartridge/Destroy()
QDEL_NULL(radio)
return ..()
diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm
index a7f749f39c3..c117cc61651 100644
--- a/code/game/objects/items/devices/flashlight.dm
+++ b/code/game/objects/items/devices/flashlight.dm
@@ -22,6 +22,9 @@
var/brightness_color = "#fff3b2" // color of light when on
var/light_overlay = TRUE
+ drop_sound = SFX_DROP_ACCESSORY
+ pickup_sound = SFX_PICKUP_ACCESSORY
+
/obj/item/device/flashlight/Initialize()
. = ..()
if(on)
diff --git a/code/game/objects/items/devices/multitool.dm b/code/game/objects/items/devices/multitool.dm
index a36468dfc99..fe602a375a1 100644
--- a/code/game/objects/items/devices/multitool.dm
+++ b/code/game/objects/items/devices/multitool.dm
@@ -27,6 +27,9 @@
var/buffer_name
var/atom/buffer_object
+ drop_sound = SFX_DROP_MULTITOOL
+ pickup_sound = SFX_PICKUP_MULTITOOL
+
/obj/item/device/multitool/Destroy()
unregister_buffer(buffer_object)
return ..()
diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm
index 063e2f1c371..fb0723e0685 100644
--- a/code/game/objects/items/devices/radio/headset.dm
+++ b/code/game/objects/items/devices/radio/headset.dm
@@ -17,6 +17,9 @@
var/ks1type = /obj/item/device/encryptionkey
var/ks2type = null
+ drop_sound = SFX_DROP_COMPONENT
+ pickup_sound = SFX_PICKUP_COMPONENT
+
/obj/item/device/radio/headset/Initialize()
. = ..()
internal_channels.Cut()
diff --git a/code/game/objects/items/glassjar.dm b/code/game/objects/items/glassjar.dm
index beb0ce38193..4d7965021d3 100644
--- a/code/game/objects/items/glassjar.dm
+++ b/code/game/objects/items/glassjar.dm
@@ -9,6 +9,9 @@
var/list/accept_mobs = list(/mob/living/simple_animal/lizard, /mob/living/simple_animal/mouse)
var/contains = 0 // 0 = nothing, 1 = money, 2 = animal, 3 = spiderling
+ drop_sound = SFX_DROP_GLASS
+ pickup_sound = SFX_PICKUP_GLASS
+
/obj/item/glass_jar/Initialize()
. = ..()
update_icon()
diff --git a/code/game/objects/items/material/coins.dm b/code/game/objects/items/material/coins.dm
index 1c2a6722c8a..b132777a40c 100644
--- a/code/game/objects/items/material/coins.dm
+++ b/code/game/objects/items/material/coins.dm
@@ -20,6 +20,9 @@
var/string_color = COLOR_RED
var/sides = 2
+ drop_sound = SFX_DROP_RING
+ pickup_sound = SFX_PICKUP_RING
+
/obj/item/material/coin/set_material(new_material)
. = ..()
if(material.name in icon_states(icon))
diff --git a/code/game/objects/items/material/knives.dm b/code/game/objects/items/material/knives.dm
index a12bd500997..f185dd1f8fe 100644
--- a/code/game/objects/items/material/knives.dm
+++ b/code/game/objects/items/material/knives.dm
@@ -75,6 +75,9 @@
unbreakable = 1
material_amount = 2
+ drop_sound = SFX_DROP_KNIFE
+ pickup_sound = SFX_PICKUP_KNIFE
+
/obj/item/material/knife/hook
name = "meat hook"
desc = "A sharp, metal hook what sticks into things."
diff --git a/code/game/objects/items/material/misc.dm b/code/game/objects/items/material/misc.dm
index 726c4febb57..c51e39f8da0 100644
--- a/code/game/objects/items/material/misc.dm
+++ b/code/game/objects/items/material/misc.dm
@@ -9,6 +9,9 @@
attack_verb = list("jabbed","stabbed","ripped")
material_amount = 3
+ drop_sound = SFX_DROP_SWORD
+ pickup_sound = SFX_PICKUP_SWORD
+
/obj/item/material/hatchet
name = "hatchet"
desc = "A very sharp axe blade upon a short fibremetal handle. It has a long history of chopping things, but now it is used for chopping wood."
@@ -30,6 +33,9 @@
hitsound = SFX_CHOP
material_amount = 3
+ pickup_sound = SFX_PICKUP_KNIFE
+ drop_sound = SFX_DROP_KNIFE
+
/obj/item/material/hatchet/tacknife
name = "tactical knife"
desc = "You'd be killing loads of people if this was Medal of Valor: Heroes of Space."
@@ -104,4 +110,5 @@
attack_verb = list("chopped", "sliced", "cut", "reaped")
material_amount = 5
-
+ drop_sound = SFX_DROP_SWORD
+ pickup_sound = SFX_PICKUP_SWORD
diff --git a/code/game/objects/items/material/shards.dm b/code/game/objects/items/material/shards.dm
index 3f3ec741001..a773b5d8e00 100644
--- a/code/game/objects/items/material/shards.dm
+++ b/code/game/objects/items/material/shards.dm
@@ -25,6 +25,9 @@
var/handcutter = FALSE
var/noisystepper = FALSE
+ drop_sound = SFX_DROP_GLASS
+ pickup_sound = SFX_PICKUP_GLASS
+
/obj/item/material/shard/set_material(new_material)
..(new_material)
if(!istype(material))
diff --git a/code/game/objects/items/material/swords.dm b/code/game/objects/items/material/swords.dm
index 8c010ff5ebb..8d4cdbe82a9 100644
--- a/code/game/objects/items/material/swords.dm
+++ b/code/game/objects/items/material/swords.dm
@@ -18,6 +18,9 @@
hitsound = 'sound/weapons/bladeslice.ogg'
material_amount = 5
+ drop_sound = SFX_DROP_SWORD
+ pickup_sound = SFX_PICKUP_SWORD
+
/obj/item/material/sword/replica
desc = "What are you standing around staring at this for? Get to looking cringy!"
edge = 0
diff --git a/code/game/objects/items/material/twohanded.dm b/code/game/objects/items/material/twohanded.dm
index 4ce036b80a2..9f489f18fb0 100644
--- a/code/game/objects/items/material/twohanded.dm
+++ b/code/game/objects/items/material/twohanded.dm
@@ -241,6 +241,9 @@
unbreakable = 1 // Because why should it break at all
material_amount = 8
+ drop_sound = SFX_DROP_AXE
+ pickup_sound = SFX_PICKUP_AXE
+
/obj/item/material/twohanded/fireaxe/afterattack(atom/A, mob/user, proximity)
if(!proximity) return
..()
diff --git a/code/game/objects/items/melee/classic_baton.dm b/code/game/objects/items/melee/classic_baton.dm
index d42d0302bda..5b7cdf861ad 100644
--- a/code/game/objects/items/melee/classic_baton.dm
+++ b/code/game/objects/items/melee/classic_baton.dm
@@ -10,6 +10,8 @@
mod_weight = 1.25
mod_reach = 1.25
mod_handy = 1.5
+ drop_sound = SFX_DROP_CROWBAR
+ pickup_sound = SFX_PICKUP_CROWBAR
/obj/item/melee/classic_baton/attack(mob/M as mob, mob/living/user as mob)
if(is_pacifist(user))
diff --git a/code/game/objects/items/melee/energy.dm b/code/game/objects/items/melee/energy.dm
index 27bd54efd43..0b68d30c145 100644
--- a/code/game/objects/items/melee/energy.dm
+++ b/code/game/objects/items/melee/energy.dm
@@ -18,6 +18,9 @@
var/activate_sound = 'sound/weapons/saberon.ogg'
var/deactivate_sound = 'sound/weapons/saberon.ogg'
+ drop_sound = SFX_DROP_WELDINGTOOL
+ pickup_sound = SFX_PICKUP_WELDINGTOOL
+
/obj/item/melee/energy/proc/activate(mob/living/user)
if(active)
return
@@ -194,6 +197,9 @@
hitsound = 'sound/effects/fighting/energy1.ogg'
var/blade_color
+ drop_sound = SFX_DROP_DEVICE
+ pickup_sound = SFX_PICKUP_DEVICE
+
/obj/item/melee/energy/sword/activate(mob/living/user)
if(!active)
to_chat(user, SPAN("notice", "\The [src] is now energised."))
diff --git a/code/game/objects/items/melee/telescopic_baton.dm b/code/game/objects/items/melee/telescopic_baton.dm
index 48615bfa76a..9f148141935 100644
--- a/code/game/objects/items/melee/telescopic_baton.dm
+++ b/code/game/objects/items/melee/telescopic_baton.dm
@@ -12,6 +12,8 @@
mod_reach = 0.5
mod_handy = 1.0
var/on = FALSE
+ drop_sound = SFX_DROP_CROWBAR
+ pickup_sound = SFX_PICKUP_CROWBAR
/obj/item/melee/telebaton/attack_self(mob/user as mob)
on = !on
diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm
index d6c99aa647d..38d24d43114 100644
--- a/code/game/objects/items/stacks/medical.dm
+++ b/code/game/objects/items/stacks/medical.dm
@@ -14,6 +14,9 @@
var/stack_full = 0 // 1 - stack looks different if it's never been used
var/stack_empty = 0 // 0 - stack disappears, 1 - stack can be empty, 2 - stack is already empty
+ drop_sound = SFX_DROP_CARDBOARD
+ pickup_sound = SFX_PICKUP_CARDBOARD
+
/obj/item/stack/medical/on_update_icon()
if(stack_full && amount == max_amount)
icon_state = "[icon_state_default]_full"
@@ -174,6 +177,9 @@
stack_empty = 1
splittable = 0
+ drop_sound = SFX_DROP_HERB
+ pickup_sound = SFX_PICKUP_HERB
+
/obj/item/stack/medical/ointment/attack(mob/living/carbon/M as mob, mob/user as mob)
if(..())
return 1
diff --git a/code/game/objects/items/stacks/rods.dm b/code/game/objects/items/stacks/rods.dm
index 8ed036c125d..fcc5eca2f1a 100644
--- a/code/game/objects/items/stacks/rods.dm
+++ b/code/game/objects/items/stacks/rods.dm
@@ -17,6 +17,9 @@
attack_verb = list("hit", "bludgeoned", "whacked")
lock_picking_level = 3
+ drop_sound = SFX_DROP_METALWEAPON
+ pickup_sound = SFX_PICKUP_METALWEAPON
+
/obj/item/stack/rods/ten
amount = 10
diff --git a/code/game/objects/items/stacks/sheets/leather.dm b/code/game/objects/items/stacks/sheets/leather.dm
index 895be1d3c47..4703948050d 100644
--- a/code/game/objects/items/stacks/sheets/leather.dm
+++ b/code/game/objects/items/stacks/sheets/leather.dm
@@ -1,3 +1,7 @@
+/obj/item/stack/material/animalhide
+ drop_sound = SFX_DROP_CLOTH
+ pickup_sound = SFX_PICKUP_CLOTH
+
/obj/item/stack/material/animalhide/human
name = "human skin"
desc = "The by-product of human farming."
diff --git a/code/game/objects/items/stacks/tiles/tile_types.dm b/code/game/objects/items/stacks/tiles/tile_types.dm
index 842baa095fa..bf94f6ff143 100644
--- a/code/game/objects/items/stacks/tiles/tile_types.dm
+++ b/code/game/objects/items/stacks/tiles/tile_types.dm
@@ -23,6 +23,9 @@
obj_flags = 0
var/image/stored_decals = null
+ drop_sound = SFX_DROP_AXE
+ pickup_sound = SFX_PICKUP_AXE
+
/*
* Grass
*/
@@ -33,6 +36,9 @@
icon_state = "tile_grass"
origin_tech = list(TECH_BIO = 1)
+ drop_sound = SFX_DROP_HERB
+ pickup_sound = SFX_PICKUP_HERB
+
/*
* Wood
*/
@@ -42,6 +48,9 @@
desc = "An easy to fit wooden floor tile."
icon_state = "tile-wood"
+ drop_sound = SFX_DROP_WOODEN
+ pickup_sound = SFX_PICKUP_WOODEN
+
/obj/item/stack/tile/wood/cyborg
name = "wood floor tile synthesizer"
desc = "A device that makes wood floor tiles."
diff --git a/code/game/objects/items/storage/backpack.dm b/code/game/objects/items/storage/backpack.dm
index 81bb7ff3360..5e5a669072c 100644
--- a/code/game/objects/items/storage/backpack.dm
+++ b/code/game/objects/items/storage/backpack.dm
@@ -20,6 +20,9 @@
use_sound = SFX_SEARCH_CLOTHES
var/worn_access = TRUE // Whether it can be opened while worn on back
+ drop_sound = SFX_DROP_BACKPACK
+ pickup_sound = SFX_PICKUP_BACKPACK
+
/obj/item/storage/backpack/Initialize()
. = ..()
diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm
index 5476c96ed27..cda00b49432 100644
--- a/code/game/objects/items/storage/belt.dm
+++ b/code/game/objects/items/storage/belt.dm
@@ -15,6 +15,9 @@
attack_verb = list("whipped", "lashed", "disciplined")
use_sound = SFX_SEARCH_CLOTHES
+ drop_sound = SFX_DROP_TOOLBELT
+ pickup_sound = SFX_PICKUP_TOOLBELT
+
/obj/item/storage/belt/verb/toggle_layer()
set name = "Switch Belt Layer"
set category = "Object"
diff --git a/code/game/objects/items/storage/boxes.dm b/code/game/objects/items/storage/boxes.dm
index 386985a97a7..14c285eea1a 100644
--- a/code/game/objects/items/storage/boxes.dm
+++ b/code/game/objects/items/storage/boxes.dm
@@ -29,6 +29,9 @@
var/obj/item/foldable = /obj/item/stack/material/cardboard // BubbleWrap - if set, can be folded (when empty) into a sheet of cardboard
use_sound = SFX_SEARCH_CLOTHES
+ drop_sound = SFX_DROP_CARDBOARD
+ pickup_sound = SFX_PICKUP_CARDBOARD
+
/obj/item/storage/box/large
name = "large box"
icon_state = "largebox"
@@ -157,6 +160,9 @@
desc = "It has a picture of a gun and several warning symbols on the front."
startswith = list(/obj/item/ammo_casing/shotgun/blank = 7)
+ drop_sound = SFX_DROP_AMMOBOX
+ pickup_sound = SFX_PICKUP_AMMOBOX
+
/obj/item/storage/box/flash
name = "box of illumination shells"
desc = "It has a picture of a gun and several warning symbols on the front.
WARNING: Live ammunition. Misuse may result in serious injury or death."
@@ -166,6 +172,8 @@
icon = 'icons/obj/shotgunshells.dmi'
storage_slots = 20
max_storage_space = 20
+ drop_sound = SFX_DROP_AMMOBOX
+ pickup_sound = SFX_PICKUP_AMMOBOX
/obj/item/storage/box/shotgun/on_update_icon()
. = ..()
@@ -209,11 +217,16 @@
name = "box of practice shells"
desc = "It has a picture of a gun and several warning symbols on the front.
WARNING: Live ammunition. Misuse may result in serious injury or death."
startswith = list(/obj/item/ammo_casing/shotgun/practice = 7)
+ drop_sound = SFX_DROP_AMMOBOX
+ pickup_sound = SFX_PICKUP_AMMOBOX
+
/obj/item/storage/box/sniperammo
name = "box of 14.5mm shells"
desc = "It has a picture of a gun and several warning symbols on the front.
WARNING: Live ammunition. Misuse may result in serious injury or death."
startswith = list(/obj/item/ammo_casing/a145 = 7)
+ drop_sound = SFX_DROP_AMMOBOX
+ pickup_sound = SFX_PICKUP_AMMOBOX
/obj/item/storage/box/sniperammo/apds
name = "box of 14.5mm APDS shells"
@@ -224,48 +237,64 @@
desc = "A box containing 7 antipersonnel flashbang grenades.
WARNING: These devices are extremely dangerous and can cause blindness or deafness from repeated use."
icon_state = "flashbang"
startswith = list(/obj/item/grenade/flashbang = 7)
+ drop_sound = SFX_DROP_AMMOBOX
+ pickup_sound = SFX_PICKUP_AMMOBOX
/obj/item/storage/box/teargas
name = "box of pepperspray grenades"
desc = "A box containing 7 tear gas grenades. A gas mask is printed on the label.
WARNING: Exposure carries risk of serious injury or death. Keep away from persons with lung conditions."
icon_state = "peppers"
startswith = list(/obj/item/grenade/chem_grenade/teargas = 7)
+ drop_sound = SFX_DROP_AMMOBOX
+ pickup_sound = SFX_PICKUP_AMMOBOX
/obj/item/storage/box/emps
name = "box of emp grenades"
desc = "A box containing 5 military grade EMP grenades.
WARNING: Do not use near unshielded electronics or biomechanical augmentations, death or permanent paralysis may occur."
icon_state = "EMPs"
startswith = list(/obj/item/grenade/empgrenade = 5)
+ drop_sound = SFX_DROP_AMMOBOX
+ pickup_sound = SFX_PICKUP_AMMOBOX
/obj/item/storage/box/frags
name = "box of frag grenades"
desc = "A box containing 5 military grade fragmentation grenades.
WARNING: Live explosives. Misuse may result in serious injury or death."
icon_state = "frags"
startswith = list(/obj/item/grenade/frag = 5)
+ drop_sound = SFX_DROP_AMMOBOX
+ pickup_sound = SFX_PICKUP_AMMOBOX
/obj/item/storage/box/fragshells
name = "box of frag shells"
desc = "A box containing 5 military grade fragmentation shells.
WARNING: Live explosive munitions. Misuse may result in serious injury or death."
icon_state = "fragshells"
startswith = list(/obj/item/grenade/frag/shell = 5)
+ drop_sound = SFX_DROP_AMMOBOX
+ pickup_sound = SFX_PICKUP_AMMOBOX
/obj/item/storage/box/smokes
name = "box of smoke bombs"
desc = "A box containing 5 smoke bombs."
icon_state = "smokebombs"
startswith = list(/obj/item/grenade/smokebomb = 5)
+ drop_sound = SFX_DROP_AMMOBOX
+ pickup_sound = SFX_PICKUP_AMMOBOX
/obj/item/storage/box/anti_photons
name = "box of anti-photon grenades"
desc = "A box containing 5 experimental photon disruption grenades."
icon_state = "antiphotons"
startswith = list(/obj/item/grenade/anti_photon = 5)
+ drop_sound = SFX_DROP_AMMOBOX
+ pickup_sound = SFX_PICKUP_AMMOBOX
/obj/item/storage/box/supermatters
name = "box of supermatter grenades"
desc = "A box containing 5 highly experimental supermatter grenades."
icon_state = "radbox"
startswith = list(/obj/item/grenade/supermatter = 5)
+ drop_sound = SFX_DROP_AMMOBOX
+ pickup_sound = SFX_PICKUP_AMMOBOX
/obj/item/storage/box/trackimp
name = "boxed tracking implant kit"
@@ -402,6 +431,9 @@
can_hold = list(/obj/item/flame/match)
startswith = list(/obj/item/flame/match = 10)
+ drop_sound = SFX_DROP_MATCHBOX
+ pickup_sound = SFX_PICKUP_MATCHBOX
+
attackby(obj/item/flame/match/W as obj, mob/user as mob)
if(istype(W) && !W.lit && !W.burnt)
W.lit = 1
diff --git a/code/game/objects/items/storage/firstaid.dm b/code/game/objects/items/storage/firstaid.dm
index 58a917fec06..486fda51142 100644
--- a/code/game/objects/items/storage/firstaid.dm
+++ b/code/game/objects/items/storage/firstaid.dm
@@ -178,3 +178,6 @@
/obj/item/organfixer/standard,
/obj/item/stack/medical/advanced/bruise_pack,
)
+
+ drop_sound = SFX_DROP_TOOLBOX
+ pickup_sound = SFX_PICKUP_TOOLBOX
diff --git a/code/game/objects/items/storage/internal.dm b/code/game/objects/items/storage/internal.dm
index cba5414d4b8..8797885a299 100644
--- a/code/game/objects/items/storage/internal.dm
+++ b/code/game/objects/items/storage/internal.dm
@@ -52,10 +52,10 @@
if (!( user.restrained() ) && !( user.stat ))
switch(over_object.name)
if(BP_R_HAND)
- if(user.drop(master_item))
+ if(user.drop(master_item, changing_slots = TRUE))
user.put_in_r_hand(master_item)
if(BP_L_HAND)
- if(user.drop(master_item))
+ if(user.drop(master_item, changing_slots = TRUE))
user.put_in_l_hand(master_item)
master_item.add_fingerprint(user)
return 0
diff --git a/code/game/objects/items/storage/misc.dm b/code/game/objects/items/storage/misc.dm
index bbaf457f490..fa10624206e 100644
--- a/code/game/objects/items/storage/misc.dm
+++ b/code/game/objects/items/storage/misc.dm
@@ -3,6 +3,8 @@
desc = "It's a small bag with dice inside."
icon = 'icons/obj/dice.dmi'
icon_state = "dicebag"
+ drop_sound = SFX_DROP_HAT
+ pickup_sound = SFX_PICKUP_HAT
/obj/item/storage/pill_bottle/dice/New()
..()
@@ -14,6 +16,8 @@
desc = "It's a small bag with gaming dice inside."
icon = 'icons/obj/dice.dmi'
icon_state = "magicdicebag"
+ drop_sound = SFX_DROP_HAT
+ pickup_sound = SFX_PICKUP_HAT
/obj/item/storage/pill_bottle/dice_nerd/New()
..()
diff --git a/code/game/objects/items/storage/pill_bottle.dm b/code/game/objects/items/storage/pill_bottle.dm
index 5551405dd6c..a783ff43f6c 100644
--- a/code/game/objects/items/storage/pill_bottle.dm
+++ b/code/game/objects/items/storage/pill_bottle.dm
@@ -20,6 +20,9 @@
var/starting_label = null
var/true_desc = "It's an airtight container for storing medication."
+ pickup_sound = SFX_PICKUP_PILLBOTTLE
+ drop_sound = SFX_DROP_PILLBOTTLE
+
/obj/item/storage/pill_bottle/Initialize()
. = ..()
update_icon()
diff --git a/code/game/objects/items/storage/toolbox.dm b/code/game/objects/items/storage/toolbox.dm
index d4783502397..1db8ac57ce6 100644
--- a/code/game/objects/items/storage/toolbox.dm
+++ b/code/game/objects/items/storage/toolbox.dm
@@ -19,6 +19,9 @@
origin_tech = list(TECH_COMBAT = 1)
attack_verb = list("robusted")
+ drop_sound = SFX_DROP_TOOLBOX
+ pickup_sound = SFX_PICKUP_TOOLBOX
+
/obj/item/storage/toolbox/emergency
name = "emergency toolbox"
icon_state = "red"
diff --git a/code/game/objects/items/storage/wallets.dm b/code/game/objects/items/storage/wallets.dm
index ee1daa077f0..b9f4ca840f9 100644
--- a/code/game/objects/items/storage/wallets.dm
+++ b/code/game/objects/items/storage/wallets.dm
@@ -42,6 +42,9 @@
var/obj/item/card/id/front_id = null
+ drop_sound = SFX_DROP_LEATHER
+ pickup_sound = SFX_PICKUP_LEATHER
+
/obj/item/storage/wallet/leather
color = COLOR_SEDONA
diff --git a/code/game/objects/items/tanks/tanks.dm b/code/game/objects/items/tanks/tanks.dm
index 4c02c3071fe..62099541bef 100644
--- a/code/game/objects/items/tanks/tanks.dm
+++ b/code/game/objects/items/tanks/tanks.dm
@@ -53,6 +53,8 @@ var/list/global/tank_gauge_cache = list()
Wired and assembled tanks may be disarmed with a set of wirecutters. Any exploding or rupturing tank will generate shrapnel, assuming their relief valves have been welded beforehand. Even if not, they can be incited to expel hot gas on ignition if pushed above 173�C. \
Relatively easy to make, the single tank bomb requries no tank transfer valve, and is still a fairly formidable weapon that can be manufactured from any tank."
+ drop_sound = SFX_DROP_GASCAN
+ pickup_sound = SFX_PICKUP_GASCAN
/obj/item/tank/Initialize()
. = ..()
diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm
index 11764d3198d..e687a2314c2 100644
--- a/code/game/objects/items/toys.dm
+++ b/code/game/objects/items/toys.dm
@@ -30,6 +30,8 @@
mod_weight = 0.25
mod_reach = 0.25
mod_handy = 0.25
+ drop_sound = SFX_DROP_GLOVES
+ pickup_sound = SFX_PICKUP_GLOVES
/obj/item/toy/proc/speak(message)
if (!message)
@@ -117,6 +119,9 @@
item_state = "syndballoon"
w_class = ITEM_SIZE_HUGE
+ drop_sound = SFX_DROP_RUBBER
+ pickup_sound = SFX_PICKUP_RUBBER
+
/obj/item/toy/balloon/New()
..()
desc = "Across the balloon is printed: \"[desc]\""
diff --git a/code/game/objects/items/weapons/beachball.dm b/code/game/objects/items/weapons/beachball.dm
index 1f6497e983d..6316073b60b 100644
--- a/code/game/objects/items/weapons/beachball.dm
+++ b/code/game/objects/items/weapons/beachball.dm
@@ -15,6 +15,9 @@
throw_range = 20
obj_flags = OBJ_FLAG_CONDUCTIBLE
+ drop_sound = SFX_DROP_BALL
+ pickup_sound = SFX_PICKUP_BALL
+
/obj/item/beach_ball/afterattack(atom/target, mob/user)
user.drop_active_hand()
throw_at(target, throw_range, throw_speed, user)
diff --git a/code/game/objects/items/weapons/cards_ids.dm b/code/game/objects/items/weapons/cards_ids.dm
index ca65f33b2b6..5ef5821cf47 100644
--- a/code/game/objects/items/weapons/cards_ids.dm
+++ b/code/game/objects/items/weapons/cards_ids.dm
@@ -24,6 +24,9 @@
var/list/files = list( )
+ drop_sound = SFX_DROP_DISK
+ pickup_sound = SFX_PICKUP_DISK
+
/obj/item/card/data
name = "data disk"
desc = "A disk of data."
diff --git a/code/game/objects/items/weapons/extinguisher.dm b/code/game/objects/items/weapons/extinguisher.dm
index 83b54842c1a..61132d35e04 100644
--- a/code/game/objects/items/weapons/extinguisher.dm
+++ b/code/game/objects/items/weapons/extinguisher.dm
@@ -25,6 +25,9 @@
var/ff_reagent = /datum/reagent/water/firefoam
var/external_source = FALSE
+ drop_sound = SFX_DROP_GASCAN
+ pickup_sound = SFX_PICKUP_GASCAN
+
/obj/item/extinguisher/mini
name = "fire extinguisher"
desc = "A light and compact fibreglass-framed model fire extinguisher."
diff --git a/code/game/objects/items/weapons/handcuffs.dm b/code/game/objects/items/weapons/handcuffs.dm
index 29646d24f50..91cb5018701 100644
--- a/code/game/objects/items/weapons/handcuffs.dm
+++ b/code/game/objects/items/weapons/handcuffs.dm
@@ -24,6 +24,9 @@
var/cuff_sound = "handcuffs"
var/cuff_type = "handcuffs"
+ drop_sound = SFX_DROP_ACCESSORY
+ pickup_sound = SFX_PICKUP_ACCESSORY
+
/obj/item/handcuffs/get_icon_state(slot)
if(slot == slot_handcuffed_str)
return "handcuff1"
diff --git a/code/game/objects/items/weapons/surgery_tools.dm b/code/game/objects/items/weapons/surgery_tools.dm
index 8d2e6115094..0415c0f8214 100644
--- a/code/game/objects/items/weapons/surgery_tools.dm
+++ b/code/game/objects/items/weapons/surgery_tools.dm
@@ -21,6 +21,8 @@
obj_flags = OBJ_FLAG_CONDUCTIBLE
w_class = ITEM_SIZE_SMALL
origin_tech = list(TECH_MATERIAL = 1, TECH_BIO = 1)
+ drop_sound = SFX_DROP_SCREWDRIVER
+ pickup_sound = SFX_PICKUP_SCREWDRIVER
/*
* Hemostat
@@ -35,6 +37,8 @@
w_class = ITEM_SIZE_SMALL
origin_tech = list(TECH_MATERIAL = 1, TECH_BIO = 1)
attack_verb = list("attacked", "pinched")
+ drop_sound = SFX_DROP_WELDINGTOOL
+ pickup_sound = SFX_PICKUP_WELDINGTOOL
/obj/item/hemostat/pico
name = "precision grasper"
@@ -55,6 +59,8 @@
w_class = ITEM_SIZE_SMALL
origin_tech = list(TECH_MATERIAL = 1, TECH_BIO = 1)
attack_verb = list("burnt")
+ drop_sound = SFX_DROP_SCREWDRIVER
+ pickup_sound = SFX_PICKUP_SCREWDRIVER
/*
* Surgical Drill
@@ -75,6 +81,8 @@
mod_handy = 0.9
origin_tech = list(TECH_MATERIAL = 1, TECH_BIO = 1)
attack_verb = list("drilled")
+ drop_sound = SFX_DROP_ACCESSORY
+ pickup_sound = SFX_PICKUP_ACCESSORY
/*
* Scalpel
@@ -99,6 +107,8 @@
matter = list(MATERIAL_STEEL = 10000, MATERIAL_GLASS = 5000)
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
hitsound = 'sound/weapons/bladeslice.ogg'
+ drop_sound = SFX_DROP_KNIFE
+ pickup_sound = SFX_PICKUP_KNIFE
/*
* Researchable Scalpels
@@ -166,6 +176,8 @@
edge = 1
var/improved = 0
var/craft_step = CHAINSAW_ADD_COIL // Using for creating the chainsaw
+ drop_sound = SFX_DROP_ACCESSORY
+ pickup_sound = SFX_PICKUP_ACCESSORY
/obj/item/circular_saw/attackby(obj/item/W, mob/user)
if(istype(W,/obj/item/material/wirerod) && improved == 0)
@@ -289,6 +301,8 @@
force = 0
w_class = ITEM_SIZE_SMALL
throwforce = 1.0
+ pickup_sound = SFX_PICKUP_BOTTLE
+ drop_sound = SFX_DROP_BOTTLE
/obj/item/FixOVein
name = "FixOVein"
@@ -299,6 +313,8 @@
origin_tech = list(TECH_MATERIAL = 1, TECH_BIO = 3)
w_class = ITEM_SIZE_SMALL
var/usage_amount = 10
+ pickup_sound = SFX_PICKUP_ACCESSORY
+ drop_sound = SFX_DROP_ACCESSORY
/obj/item/FixOVein/clot
name = "capillary laying operation tool" //C.L.O.T.
@@ -318,6 +334,8 @@
mod_reach = 0.5
mod_handy = 0.75
attack_verb = list("attacked", "hit", "bludgeoned")
+ drop_sound = SFX_DROP_WELDINGTOOL
+ pickup_sound = SFX_PICKUP_WELDINGTOOL
/obj/item/bonesetter/bone_mender
name = "bone mender"
diff --git a/code/game/objects/items/weapons/tape.dm b/code/game/objects/items/weapons/tape.dm
index 1ad44326b47..48f4b21ac82 100644
--- a/code/game/objects/items/weapons/tape.dm
+++ b/code/game/objects/items/weapons/tape.dm
@@ -5,6 +5,8 @@
icon_state = "taperoll"
var/tape_speed = 30
w_class = ITEM_SIZE_SMALL
+ drop_sound = SFX_DROP_CARDBOARD
+ pickup_sound = SFX_PICKUP_CARDBOARD
/obj/item/tape_roll/attack(mob/living/carbon/human/H, mob/user)
if(istype(H))
diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm
index f0ea8f33f72..6ee247f544b 100644
--- a/code/game/objects/items/weapons/tools.dm
+++ b/code/game/objects/items/weapons/tools.dm
@@ -38,6 +38,9 @@
tool_behaviour = TOOL_WRENCH
var/randicon = TRUE
+ drop_sound = SFX_DROP_WRENCH
+ pickup_sound = SFX_PICKUP_WRENCH
+
/obj/item/wrench/Initialize()
if(randicon)
icon_state = "wrench[pick("","_red","_black")]"
@@ -96,6 +99,9 @@
tool_behaviour = TOOL_SCREWDRIVER
var/randicon = TRUE
+ drop_sound = SFX_DROP_SCREWDRIVER
+ pickup_sound = SFX_PICKUP_SCREWDRIVER
+
/obj/item/screwdriver/Initialize()
if(randicon)
switch(pick("red", "blue", "purple", "brown", "green", "cyan", "yellow"))
@@ -203,6 +209,9 @@
tool_behaviour = TOOL_WIRECUTTER
var/randicon = TRUE
+ drop_sound = SFX_DROP_WIRECUTTER
+ pickup_sound = SFX_PICKUP_WIRECUTTER
+
/obj/item/wirecutters/Initialize()
if(randicon && prob(50))
icon_state = "cutters-y"
@@ -274,6 +283,9 @@
var/obj/item/welder_tank/tank = /obj/item/welder_tank // where the fuel is stored
+ drop_sound = SFX_DROP_WELDINGTOOL
+ pickup_sound = SFX_PICKUP_WELDINGTOOL
+
/obj/item/weldingtool/Initialize()
if(ispath(tank))
tank = new tank
@@ -726,6 +738,9 @@
attack_verb = list("attacked", "bashed", "battered", "bludgeoned", "whacked")
tool_behaviour = TOOL_CROWBAR
+ drop_sound = SFX_DROP_CROWBAR
+ pickup_sound = SFX_PICKUP_CROWBAR
+
/obj/item/crowbar/red
icon_state = "red_crowbar"
item_state = "crowbar_red"
diff --git a/code/game/objects/items/weapons/towels.dm b/code/game/objects/items/weapons/towels.dm
index 231f9bc6130..199715e4b4b 100644
--- a/code/game/objects/items/weapons/towels.dm
+++ b/code/game/objects/items/weapons/towels.dm
@@ -12,6 +12,8 @@
attack_verb = list("whipped")
hitsound = 'sound/weapons/towelwhip.ogg'
desc = "A soft cotton towel."
+ drop_sound = SFX_DROP_CLOTH
+ pickup_sound = SFX_PICKUP_CLOTH
/obj/item/towel/attack_self(mob/living/user as mob)
user.visible_message(text("[] uses [] to towel themselves off.", user, src))
diff --git a/code/game/objects/structures/bedsheet_bin.dm b/code/game/objects/structures/bedsheet_bin.dm
index f354c7d4c22..e02a745c046 100644
--- a/code/game/objects/structures/bedsheet_bin.dm
+++ b/code/game/objects/structures/bedsheet_bin.dm
@@ -18,6 +18,8 @@ LINEN BINS
throw_range = 2
w_class = ITEM_SIZE_SMALL
var/folded = 0
+ drop_sound = SFX_DROP_CLOTH
+ pickup_sound = SFX_PICKUP_CLOTH
/obj/item/bedsheet/attackby(obj/item/I, mob/user)
if(is_sharp(I))
diff --git a/code/game/objects/structures/stool_bed_chair_nest/bed.dm b/code/game/objects/structures/stool_bed_chair_nest/bed.dm
index ccc2956b236..58ea8691fc7 100644
--- a/code/game/objects/structures/stool_bed_chair_nest/bed.dm
+++ b/code/game/objects/structures/stool_bed_chair_nest/bed.dm
@@ -264,6 +264,8 @@
w_class = ITEM_SIZE_GARGANTUAN // Not sure if it's actually necessary, I can barely imagine this thing being bigger than a mecha part;
var/rollertype = /obj/item/roller
var/bedtype = /obj/structure/bed/roller
+ drop_sound = SFX_DROP_AXE
+ pickup_sound = SFX_PICKUP_AXE
/obj/item/roller/adv
name = "advanced roller bed"
diff --git a/code/modules/assembly/assembly.dm b/code/modules/assembly/assembly.dm
index 359ac37a625..de5dd9bfe43 100644
--- a/code/modules/assembly/assembly.dm
+++ b/code/modules/assembly/assembly.dm
@@ -22,6 +22,9 @@
var/const/WIRE_RADIO_RECEIVE = 8 //Allows Pulsed(1) to call Activate()
var/const/WIRE_RADIO_PULSE = 16 //Allows Pulse(1) to send a radio message
+ drop_sound = SFX_DROP_COMPONENT
+ pickup_sound = SFX_PICKUP_COMPONENT
+
/obj/item/device/assembly/Destroy()
holder = null
return ..()
diff --git a/code/modules/assembly/igniter.dm b/code/modules/assembly/igniter.dm
index 8d3d0bb2e0c..8fc293a4620 100644
--- a/code/modules/assembly/igniter.dm
+++ b/code/modules/assembly/igniter.dm
@@ -8,6 +8,9 @@
secured = 1
wires = WIRE_RECEIVE
+ drop_sound = SFX_DROP_COMPONENT
+ pickup_sound = SFX_PICKUP_COMPONENT
+
activate()
if(!..()) return 0//Cooldown check
diff --git a/code/modules/assembly/infrared.dm b/code/modules/assembly/infrared.dm
index a601fec6755..59f8a187d7e 100644
--- a/code/modules/assembly/infrared.dm
+++ b/code/modules/assembly/infrared.dm
@@ -18,6 +18,9 @@
var/list/seen_turfs
var/datum/proximity_trigger/line/transparent/proximity_trigger
+ drop_sound = SFX_DROP_COMPONENT
+ pickup_sound = SFX_PICKUP_COMPONENT
+
/obj/item/device/assembly/infra/New()
..()
beams = list()
diff --git a/code/modules/assembly/mousetrap.dm b/code/modules/assembly/mousetrap.dm
index 59e2ac68137..9f0c902510b 100644
--- a/code/modules/assembly/mousetrap.dm
+++ b/code/modules/assembly/mousetrap.dm
@@ -6,6 +6,8 @@
matter = list(MATERIAL_STEEL = 100, MATERIAL_WASTE = 10)
var/armed = 0
+ drop_sound = SFX_DROP_COMPONENT
+ pickup_sound = SFX_PICKUP_COMPONENT
_examine_text(mob/user)
. = ..(user)
diff --git a/code/modules/assembly/proximity.dm b/code/modules/assembly/proximity.dm
index eb32a0e2bff..63a1dbbf89a 100644
--- a/code/modules/assembly/proximity.dm
+++ b/code/modules/assembly/proximity.dm
@@ -14,6 +14,9 @@
var/range = 2
+ drop_sound = SFX_DROP_COMPONENT
+ pickup_sound = SFX_PICKUP_COMPONENT
+
/obj/item/device/assembly/prox_sensor/Initialize()
. = ..()
proximity_monitor = new(src, range, FALSE)
diff --git a/code/modules/assembly/signaler.dm b/code/modules/assembly/signaler.dm
index 75e489ae9f1..5b97dc0d02e 100644
--- a/code/modules/assembly/signaler.dm
+++ b/code/modules/assembly/signaler.dm
@@ -15,6 +15,9 @@
var/datum/frequency/radio_connection
var/deadman = FALSE
+ drop_sound = SFX_DROP_COMPONENT
+ pickup_sound = SFX_PICKUP_COMPONENT
+
/obj/item/device/assembly/signaler/New()
..()
addtimer(CALLBACK(src, nameof(.proc/set_frequency), frequency), 4 SECOND)
diff --git a/code/modules/assembly/timer.dm b/code/modules/assembly/timer.dm
index 70b2fd5e379..e091ec80941 100644
--- a/code/modules/assembly/timer.dm
+++ b/code/modules/assembly/timer.dm
@@ -12,6 +12,9 @@
var/timing = FALSE
var/time = 10
+ drop_sound = SFX_DROP_COMPONENT
+ pickup_sound = SFX_PICKUP_COMPONENT
+
/obj/item/device/assembly/timer/proc/timer_end()
if(!secured)
return 0
diff --git a/code/modules/assembly/voice.dm b/code/modules/assembly/voice.dm
index 9a9a4c48902..619b949d860 100644
--- a/code/modules/assembly/voice.dm
+++ b/code/modules/assembly/voice.dm
@@ -6,6 +6,8 @@
matter = list(MATERIAL_STEEL = 500, MATERIAL_GLASS = 50, MATERIAL_WASTE = 10)
var/listening = FALSE
var/recorded //the activation message
+ drop_sound = SFX_DROP_COMPONENT
+ pickup_sound = SFX_PICKUP_COMPONENT
/obj/item/device/assembly/voice/New()
..()
diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm
index 5dbee32ccc4..371761ad3b2 100644
--- a/code/modules/clothing/clothing.dm
+++ b/code/modules/clothing/clothing.dm
@@ -119,8 +119,7 @@ GLOBAL_LIST_EMPTY(clothing_blood_icons)
return 0
return 1
-/obj/item/clothing/equipped(mob/user)
- playsound(src, SFX_USE_OUTFIT, 75, 1)
+/obj/item/clothing/equipped(mob/user, slot)
SHOULD_CALL_PARENT(TRUE)
for(var/obj/item/clothing/accessory/accessory in accessories)
accessory.equipped(user)
@@ -128,6 +127,16 @@ GLOBAL_LIST_EMPTY(clothing_blood_icons)
update_vision()
return ..()
+/obj/item/clothing/play_handling_sound(slot)
+ if(!pickup_sound)
+ return
+
+ if(slot == slot_l_hand || slot == slot_r_hand)
+ var/volume = clamp(rand(5,15) * w_class, PICKUP_SOUND_VOLUME_MIN, PICKUP_SOUND_VOLUME_MAX)
+ playsound(src, pickup_sound, volume, TRUE)
+ else
+ playsound(src, SFX_USE_OUTFIT, 75, 1)
+
/obj/item/clothing/proc/refit_for_species(target_species)
if(!species_restricted)
return //this item doesn't use the species_restricted system
@@ -226,6 +235,9 @@ BLIND // can't see anything
var/light_protection = 0
blood_overlay_type = null // These are too small to bother, no need to waste CPU time
+ drop_sound = SFX_DROP_ACCESSORY
+ pickup_sound = SFX_PICKUP_ACCESSORY
+
/obj/item/clothing/glasses/update_clothing_icon()
if(ismob(src.loc))
var/mob/M = src.loc
@@ -253,6 +265,9 @@ BLIND // can't see anything
var/transfer_blood = 0
var/mob/living/carbon/human/bloody_hands_mob
+ drop_sound = SFX_DROP_GLOVES
+ pickup_sound = SFX_PICKUP_GLOVES
+
/obj/item/clothing/gloves/Initialize()
if(item_flags & ITEM_FLAG_PREMODIFIED)
cut_fingertops()
@@ -404,6 +419,9 @@ BLIND // can't see anything
blood_overlay_type = "helmetblood"
+ drop_sound = SFX_DROP_HAT
+ pickup_sound = SFX_PICKUP_HAT
+
/obj/item/clothing/head/get_mob_overlay(mob/user_mob, slot)
var/image/ret = ..()
var/species_name = "Default"
@@ -598,6 +616,9 @@ BLIND // can't see anything
armor = list(melee = 25, bullet = 25, laser = 25,energy = 15, bomb = 25, bio = 10)
+ drop_sound = SFX_DROP_SHOES
+ pickup_sound = SFX_PICKUP_SHOES
+
/obj/item/clothing/shoes/Destroy()
if(holding)
holding.forceMove(get_turf(src))
@@ -690,6 +711,8 @@ BLIND // can't see anything
blood_overlay_type = "suitblood"
siemens_coefficient = 0.9
w_class = ITEM_SIZE_NORMAL
+ drop_sound = SFX_DROP_CLOTH
+ pickup_sound = SFX_PICKUP_CLOTH
/obj/item/clothing/suit/update_clothing_icon()
if (ismob(src.loc))
@@ -743,6 +766,9 @@ BLIND // can't see anything
valid_accessory_slots = list(ACCESSORY_SLOT_UTILITY,ACCESSORY_SLOT_HOLSTER,ACCESSORY_SLOT_ARMBAND,ACCESSORY_SLOT_RANK,ACCESSORY_SLOT_DEPT,ACCESSORY_SLOT_DECOR,ACCESSORY_SLOT_MEDAL,ACCESSORY_SLOT_INSIGNIA)
restricted_accessory_slots = list(ACCESSORY_SLOT_UTILITY,ACCESSORY_SLOT_HOLSTER,ACCESSORY_SLOT_ARMBAND,ACCESSORY_SLOT_RANK,ACCESSORY_SLOT_DEPT)
+ drop_sound = SFX_DROP_CLOTH
+ pickup_sound = SFX_PICKUP_CLOTH
+
/obj/item/clothing/under/New()
..()
if(worn_state)
@@ -961,3 +987,6 @@ BLIND // can't see anything
species_restricted = list("exclude", SPECIES_DIONA)
var/undergloves = 1
blood_overlay_type = null
+
+ drop_sound = SFX_DROP_RING
+ pickup_sound = SFX_PICKUP_RING
diff --git a/code/modules/clothing/clothing_accessories.dm b/code/modules/clothing/clothing_accessories.dm
index 8c1e84349f4..9c1412ab86e 100644
--- a/code/modules/clothing/clothing_accessories.dm
+++ b/code/modules/clothing/clothing_accessories.dm
@@ -46,7 +46,7 @@
if(usr.incapacitated())
return
- if(!usr.drop(src))
+ if(!usr.drop(src, changing_slots = TRUE))
return
switch(over_object.name)
diff --git a/code/modules/clothing/glasses/glasses.dm b/code/modules/clothing/glasses/glasses.dm
index 677d6a0043e..64106cd3d08 100644
--- a/code/modules/clothing/glasses/glasses.dm
+++ b/code/modules/clothing/glasses/glasses.dm
@@ -171,6 +171,9 @@
tint = TINT_BLIND
flash_protection = FLASH_PROTECTION_MAJOR
+ drop_sound = SFX_DROP_GLOVES
+ pickup_sound = SFX_PICKUP_GLOVES
+
/obj/item/clothing/glasses/sunglasses/blindfold/tape
name = "length of tape"
desc = "It's a robust DIY blindfold!"
diff --git a/code/modules/clothing/gloves/miscellaneous.dm b/code/modules/clothing/gloves/miscellaneous.dm
index 99a26dec1d5..57d7c47099b 100644
--- a/code/modules/clothing/gloves/miscellaneous.dm
+++ b/code/modules/clothing/gloves/miscellaneous.dm
@@ -14,6 +14,9 @@
permeability_coefficient = 0.05
armor = list(melee = 10, bullet = 5, laser = 10, energy = 10, bomb = 0, bio = 30)
+ drop_sound = SFX_DROP_RUBBER
+ pickup_sound = SFX_PICKUP_RUBBER
+
/obj/item/clothing/gloves/insulated/cheap //Cheap Chinese Crap
desc = "These gloves are cheap copies of the coveted gloves, no way this can end badly."
name = "budget insulated gloves"
@@ -94,6 +97,9 @@
germ_level = 0
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 70)
+ drop_sound = SFX_DROP_RUBBER
+ pickup_sound = SFX_PICKUP_RUBBER
+
/obj/item/clothing/gloves/latex/modified
item_flags = ITEM_FLAG_PREMODIFIED
diff --git a/code/modules/clothing/head/hardhat.dm b/code/modules/clothing/head/hardhat.dm
index 691559559bb..520c0e89052 100644
--- a/code/modules/clothing/head/hardhat.dm
+++ b/code/modules/clothing/head/hardhat.dm
@@ -12,6 +12,9 @@
heat_protection = HEAD
max_heat_protection_temperature = FIRE_HELMET_MAX_HEAT_PROTECTION_TEMPERATURE
+ pickup_sound = SFX_PICKUP_HELMET
+ drop_sound = SFX_DROP_HELMET
+
/obj/item/clothing/head/hardhat/orange
icon_state = "hardhat0_orange"
diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm
index 1893bc04d4d..1c82acf7966 100644
--- a/code/modules/clothing/head/helmet.dm
+++ b/code/modules/clothing/head/helmet.dm
@@ -26,6 +26,9 @@
RADIATION_HAWKING = 1 ELECTRONVOLT
)
+ drop_sound = SFX_DROP_HELMET
+ pickup_sound = SFX_PICKUP_HELMET
+
/obj/item/clothing/head/helmet/attack_self(mob/user)
if(visor_body_parts_covered)
togglevisor(user)
diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm
index 6642b5388aa..2239de86e19 100644
--- a/code/modules/clothing/head/misc_special.dm
+++ b/code/modules/clothing/head/misc_special.dm
@@ -32,6 +32,9 @@
tint = TINT_HEAVY
var/obj/item/welding_cover/cover = null
+ pickup_sound = SFX_PICKUP_HELMET
+ drop_sound = SFX_DROP_HELMET
+
/obj/item/clothing/head/welding/_examine_text(mob/user)
. = ..()
if(cover)
diff --git a/code/modules/clothing/shoes/jobs.dm b/code/modules/clothing/shoes/jobs.dm
index a97138881d5..fe174a19d26 100644
--- a/code/modules/clothing/shoes/jobs.dm
+++ b/code/modules/clothing/shoes/jobs.dm
@@ -10,6 +10,9 @@
armor = list(melee = 35, bullet = 30, laser = 30,energy = 35, bomb = 25, bio = 35)
+ drop_sound = SFX_DROP_BOOTS
+ pickup_sound = SFX_PICKUP_BOOTS
+
/obj/item/clothing/shoes/galoshes/Initialize()
. = ..()
slowdown_per_slot[slot_shoes] = 1
@@ -25,6 +28,9 @@
cold_protection = FEET
min_cold_protection_temperature = HELMET_MIN_COLD_PROTECTION_TEMPERATURE
+ drop_sound = SFX_DROP_BOOTS
+ pickup_sound = SFX_PICKUP_BOOTS
+
/obj/item/clothing/shoes/jackboots/tactical
name = "tactical jackboots"
desc = "Tall synthleather boots with an artificial shine. These ones seem to be reinforced with some sort of plating."
@@ -46,6 +52,9 @@
siemens_coefficient = 0.4
can_hold_knife = 1
+ drop_sound = SFX_DROP_BOOTS
+ pickup_sound = SFX_PICKUP_BOOTS
+
/obj/item/clothing/shoes/workboots/toeless
name = "toe-less workboots"
desc = "A pair of toeless work boots designed for use in industrial settings. Modified for species whose toes have claws."
diff --git a/code/modules/clothing/shoes/magboots.dm b/code/modules/clothing/shoes/magboots.dm
index 86aa90dfbe8..59a057099cb 100644
--- a/code/modules/clothing/shoes/magboots.dm
+++ b/code/modules/clothing/shoes/magboots.dm
@@ -24,6 +24,9 @@
RADIATION_HAWKING = 1 ELECTRONVOLT
)
+ drop_sound = SFX_DROP_BOOTS
+ pickup_sound = SFX_PICKUP_BOOTS
+
/obj/item/clothing/shoes/magboots/proc/set_slowdown()
slowdown_per_slot[slot_shoes] = shoes? max(0, shoes.slowdown_per_slot[slot_shoes]): 0 //So you can't put on magboots to make you walk faster.
if (magpulse)
diff --git a/code/modules/clothing/under/accessories/accessory.dm b/code/modules/clothing/under/accessories/accessory.dm
index 4e12e2ba373..767cfc20aa4 100644
--- a/code/modules/clothing/under/accessories/accessory.dm
+++ b/code/modules/clothing/under/accessories/accessory.dm
@@ -15,6 +15,9 @@
var/high_visibility //if it should appear on examine without detailed view
var/slowdown //used when an accessory is meant to slow the wearer down when attached to clothing
+ drop_sound = SFX_DROP_ACCESSORY
+ pickup_sound = SFX_PICKUP_ACCESSORY
+
/obj/item/clothing/accessory/Destroy()
if(has_suit)
has_suit.remove_accessory(null, src)
diff --git a/code/modules/clothing/under/accessories/holster.dm b/code/modules/clothing/under/accessories/holster.dm
index 2d0e1c9ff96..72d83a97291 100644
--- a/code/modules/clothing/under/accessories/holster.dm
+++ b/code/modules/clothing/under/accessories/holster.dm
@@ -8,6 +8,9 @@
var/list/can_hold
var/datum/action/item_action/holster_action
+ var/sound_holster_in = SFX_HOLSTERIN
+ var/sound_holster_out = SFX_HOLSTEROUT
+
/datum/action/item_action/holster
name = "Holster"
check_flags = AB_CHECK_RESTRAINED|AB_CHECK_STUNNED|AB_CHECK_LYING|AB_CHECK_ALIVE
@@ -73,6 +76,8 @@
user.visible_message(SPAN("notice", "[user] holsters \the [holstered]."), SPAN("notice", "You holster \the [holstered]."))
name = "occupied [initial(name)]"
+ playsound(src, sound_holster_in, rand(40,60))
+
/obj/item/clothing/accessory/holster/proc/clear_holster()
holstered = null
SetName(initial(name))
@@ -98,6 +103,7 @@
holstered.add_fingerprint(user)
w_class = initial(w_class)
clear_holster()
+ playsound(src, sound_holster_out, rand(40,60))
/obj/item/clothing/accessory/holster/attackby(obj/item/W, mob/user)
holster(W, user)
@@ -177,14 +183,20 @@
name = "hip holster"
desc = "A handgun holster slung low on the hip, draw pardner!"
icon_state = "holster_hip"
+ sound_holster_in = SFX_TACHOLSTERIN
+ sound_holster_out = SFX_TACHOLSTEROUT
/obj/item/clothing/accessory/holster/thigh
name = "thigh holster"
desc = "A drop leg holster made of a durable synthetic fiber."
icon_state = "holster_thigh"
+ sound_holster_in = SFX_TACHOLSTERIN
+ sound_holster_out = SFX_TACHOLSTEROUT
/obj/item/clothing/accessory/holster/machete
name = "machete sheath"
desc = "A handsome synthetic leather sheath with matching belt."
icon_state = "holster_machete"
can_hold = list(/obj/item/material/hatchet/machete)
+ sound_holster_in = SFX_SHEATHIN
+ sound_holster_out = SFX_SHEATHOUT
diff --git a/code/modules/library/lib_items.dm b/code/modules/library/lib_items.dm
index 4cd367a8a09..c63e7ca5fea 100644
--- a/code/modules/library/lib_items.dm
+++ b/code/modules/library/lib_items.dm
@@ -207,6 +207,9 @@
var/window_width = 650
var/window_height = 650
+ drop_sound = SFX_DROP_BOOK
+ pickup_sound = SFX_PICKUP_BOOK
+
/obj/item/book/attack_self(mob/user)
if(carved)
if(store)
diff --git a/code/modules/lighting/lighting_atom.dm b/code/modules/lighting/lighting_atom.dm
index 2c85c341250..db412969853 100644
--- a/code/modules/lighting/lighting_atom.dm
+++ b/code/modules/lighting/lighting_atom.dm
@@ -105,9 +105,6 @@ if(loc != old_loc) {\
/obj/item/pickup()
. = ..()
- if (pickup_sound)
- playsound(src, pickup_sound, rand(50, 75), TRUE)
-
update_light()
/obj/item/dropped()
diff --git a/code/modules/materials/material_sheets.dm b/code/modules/materials/material_sheets.dm
index 03d02dd31be..e119e6dd46b 100644
--- a/code/modules/materials/material_sheets.dm
+++ b/code/modules/materials/material_sheets.dm
@@ -14,6 +14,9 @@
var/perunit = SHEET_MATERIAL_AMOUNT
var/apply_colour //temp pending icon rewrite
+ drop_sound = SFX_DROP_AXE
+ pickup_sound = SFX_PICKUP_AXE
+
/obj/item/stack/material/Initialize()
. = ..()
if(!default_type)
@@ -277,6 +280,8 @@
name = "wooden plank"
icon_state = "wood"
default_type = MATERIAL_WOOD
+ drop_sound = SFX_DROP_WOODEN
+ pickup_sound = SFX_PICKUP_WOODEN
/obj/item/stack/material/wood/ten
amount = 10
@@ -317,10 +322,15 @@
icon_state = "leather"
default_type = MATERIAL_LEATHER
+ drop_sound = SFX_DROP_LEATHER
+ pickup_sound = SFX_PICKUP_LEATHER
+
/obj/item/stack/material/glass
name = "glass"
icon_state = "glass"
default_type = MATERIAL_GLASS
+ drop_sound = SFX_DROP_GLASS
+ pickup_sound = SFX_PICKUP_GLASS
/obj/item/stack/material/glass/ten
amount = 10
diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm
index 05a6a405e79..fe2a08dbdf9 100644
--- a/code/modules/mining/mine_items.dm
+++ b/code/modules/mining/mine_items.dm
@@ -192,6 +192,9 @@
sharp = 0
edge = 1
+ drop_sound = SFX_DROP_SHOVEL
+ pickup_sound = SFX_PICKUP_SHOVEL
+
/obj/item/shovel/spade
name = "spade"
desc = "A small tool for digging and moving dirt."
diff --git a/code/modules/mob/inventory.dm b/code/modules/mob/inventory.dm
index 67c362ec384..34ed2c1f83f 100644
--- a/code/modules/mob/inventory.dm
+++ b/code/modules/mob/inventory.dm
@@ -185,7 +185,7 @@ var/list/slot_equipment_priority = list( \
// Removes an item from inventory and places it in the target atom.
// If canremove or other conditions must be ignored then use 'force = TRUE'.
// Returns TRUE if an item's removed from inventory AND still exists.
-/mob/proc/drop(obj/item/I, atom/target = null, force = FALSE)
+/mob/proc/drop(obj/item/I, atom/target = null, force = FALSE, changing_slots = FALSE)
if(!I)
return FALSE
@@ -204,7 +204,7 @@ var/list/slot_equipment_priority = list( \
I.forceMove(target)
else
I.dropInto(loc)
- I.dropped(src)
+ I.dropped(src, changing_slots)
if(!I?.loc)
return FALSE // self destroying objects (tk, grabs)
diff --git a/code/modules/mob/living/carbon/alien/diona/diona.dm b/code/modules/mob/living/carbon/alien/diona/diona.dm
index ac9b353226f..182f9e52de4 100644
--- a/code/modules/mob/living/carbon/alien/diona/diona.dm
+++ b/code/modules/mob/living/carbon/alien/diona/diona.dm
@@ -34,7 +34,7 @@
if(hat)
to_chat(user, SPAN("notice", "It is wearing \icon[hat] \a [hat]."))
-/mob/living/carbon/alien/diona/drop(obj/item/W, atom/Target = null, force = null)
+/mob/living/carbon/alien/diona/drop(obj/item/W, atom/Target = null, force = null, changing_slots)
. = ..()
if(W == hat)
hat = null
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index 8b3d9352148..2babd4f8740 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -1440,7 +1440,7 @@
to_chat(S, "[U] pops your [current_limb.joint] back in!")
current_limb.undislocate()
-/mob/living/carbon/human/drop(obj/item/W, atom/Target = null, force = null)
+/mob/living/carbon/human/drop(obj/item/W, atom/Target = null, force = null, changing_slots)
if(W in organs)
return
. = ..()
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index 500ff594cee..c0653edf156 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -769,7 +769,7 @@
/mob/living/proc/slip_on_obj(/obj/slipped_on, stun_duration = 8, slip_dist = 0)
return 0
-/mob/living/carbon/drop(obj/item/W, atom/Target = null, force = null)
+/mob/living/carbon/drop(obj/item/W, atom/Target = null, force = null, changing_slots)
if(W in internal_organs)
return
. = ..()
diff --git a/code/modules/mob/living/silicon/robot/inventory.dm b/code/modules/mob/living/silicon/robot/inventory.dm
index a26ac599d3e..90e9a484118 100644
--- a/code/modules/mob/living/silicon/robot/inventory.dm
+++ b/code/modules/mob/living/silicon/robot/inventory.dm
@@ -5,7 +5,7 @@
/mob/living/silicon/robot/get_active_hand()
return module_active
-/mob/living/silicon/robot/drop(obj/item/I, atom/target = null, force = FALSE)
+/mob/living/silicon/robot/drop(obj/item/I, atom/target = null, force = FALSE, changing_slots)
if(!can_unequip(I))
return FALSE
var/obj/item/gripper/G = module_active
diff --git a/code/modules/mob/organs/internal/man_machine_interface.dm b/code/modules/mob/organs/internal/man_machine_interface.dm
index 7652978b92c..f1570802189 100644
--- a/code/modules/mob/organs/internal/man_machine_interface.dm
+++ b/code/modules/mob/organs/internal/man_machine_interface.dm
@@ -26,6 +26,9 @@ GLOBAL_LIST_INIT(whitelisted_mmi_species, list(
var/obj/item/organ/internal/cerebrum/brain/brainobj = null
+ drop_sound = SFX_DROP_DEVICE
+ pickup_sound = SFX_PICKUP_DEVICE
+
/obj/item/organ/internal/cerebrum/mmi/New(newLoc, mob/living/carbon/human/old_shell)
robotize()
if(istype(old_shell)) _create_brain(old_shell)
diff --git a/code/modules/mob/organs/organ.dm b/code/modules/mob/organs/organ.dm
index 534a3c31972..152c74cfeee 100644
--- a/code/modules/mob/organs/organ.dm
+++ b/code/modules/mob/organs/organ.dm
@@ -32,6 +32,9 @@ var/list/organ_cache = list()
var/obj/item/reagent_containers/food/food_organ
var/disable_food_organ = FALSE // used to override food_organ's creation and using
+ drop_sound = SFX_DROP_FLESH
+ pickup_sound = SFX_PICKUP_FLESH
+
/obj/item/organ/return_item()
return food_organ
diff --git a/code/modules/paperwork/folders.dm b/code/modules/paperwork/folders.dm
index 6b2e106fda3..5412f69df98 100644
--- a/code/modules/paperwork/folders.dm
+++ b/code/modules/paperwork/folders.dm
@@ -5,6 +5,9 @@
icon_state = "folder"
w_class = ITEM_SIZE_SMALL
+ drop_sound = SFX_DROP_PAPER
+ pickup_sound = SFX_PICKUP_PAPER
+
/obj/item/folder/blue
desc = "A blue folder."
icon_state = "folder_blue"
diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm
index 0e4e932587c..8b0d39d6537 100644
--- a/code/modules/paperwork/paper.dm
+++ b/code/modules/paperwork/paper.dm
@@ -96,6 +96,9 @@
var/static/regex/field_regex = regex(@##, "g")
var/static/regex/field_link_regex = regex("write", "g")
+ drop_sound = SFX_DROP_PAPER
+ pickup_sound = SFX_PICKUP_PAPER
+
/obj/item/paper/Initialize(mapload, text, title, rawhtml = TRUE, noinit = FALSE)
. = ..()
diff --git a/code/modules/paperwork/paper_bundle.dm b/code/modules/paperwork/paper_bundle.dm
index 2e607b9c664..e265b3dea2d 100644
--- a/code/modules/paperwork/paper_bundle.dm
+++ b/code/modules/paperwork/paper_bundle.dm
@@ -14,6 +14,8 @@
var/page = 1 // current page
var/list/pages = list() // Ordered list of pages as they are to be displayed. Can be different order than src.contents.
+ drop_sound = SFX_DROP_PAPER
+ pickup_sound = SFX_PICKUP_PAPER
/obj/item/paper_bundle/attackby(obj/item/W, mob/user)
..()
diff --git a/code/modules/paperwork/paperbin.dm b/code/modules/paperwork/paperbin.dm
index ba93922ca87..488ce16ec2d 100644
--- a/code/modules/paperwork/paperbin.dm
+++ b/code/modules/paperwork/paperbin.dm
@@ -11,6 +11,8 @@
var/amount = 30 //How much paper is in the bin.
var/list/papers = new /list() //List of papers put in the bin for reference.
+ drop_sound = SFX_DROP_CARDBOARD
+ pickup_sound = SFX_PICKUP_CARDBOARD
/obj/item/paper_bin/MouseDrop(mob/user)
if((user == usr && (!( usr.restrained() ) && (!( usr.stat ) && (usr.contents.Find(src) || in_range(src, usr))))))
diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm
index b851971cde2..b9c10ccecee 100644
--- a/code/modules/projectiles/gun.dm
+++ b/code/modules/projectiles/gun.dm
@@ -93,6 +93,9 @@
var/mob/autofiring_by
var/autofiring_timer
+ drop_sound = SFX_DROP_GUN
+ pickup_sound = SFX_PICKUP_GUN
+
/obj/item/gun/Initialize()
. = ..()
for(var/i in 1 to firemodes.len)
diff --git a/code/modules/reagents/reagent_containers/blood_pack.dm b/code/modules/reagents/reagent_containers/blood_pack.dm
index e037373c43e..402e601d4f5 100644
--- a/code/modules/reagents/reagent_containers/blood_pack.dm
+++ b/code/modules/reagents/reagent_containers/blood_pack.dm
@@ -18,6 +18,9 @@
var/vampire_marks = null
var/mob/living/carbon/human/attached
+ drop_sound = SFX_DROP_FOOD
+ pickup_sound = SFX_PICKUP_FOOD
+
/obj/item/reagent_containers/ivbag/Destroy()
attached = null
. = ..()
diff --git a/code/modules/reagents/reagent_containers/dropper.dm b/code/modules/reagents/reagent_containers/dropper.dm
index 9cd68fea4bc..0af49d2110e 100644
--- a/code/modules/reagents/reagent_containers/dropper.dm
+++ b/code/modules/reagents/reagent_containers/dropper.dm
@@ -12,6 +12,9 @@
slot_flags = SLOT_EARS
volume = 5
+ drop_sound = SFX_DROP_GLASSSMALL
+ pickup_sound = SFX_PICKUP_GLASSSMALL
+
afterattack(obj/target, mob/user, proximity)
if(!target.reagents || !proximity) return
diff --git a/code/modules/reagents/reagent_containers/food/meat.dm b/code/modules/reagents/reagent_containers/food/meat.dm
index 087866f7718..5b5f69d3606 100644
--- a/code/modules/reagents/reagent_containers/food/meat.dm
+++ b/code/modules/reagents/reagent_containers/food/meat.dm
@@ -8,6 +8,9 @@
startswith = list(/datum/reagent/nutriment/protein = 9)
bitesize = 3
+ drop_sound = SFX_DROP_FLESH
+ pickup_sound = SFX_PICKUP_FLESH
+
/obj/item/reagent_containers/food/meat/attackby(obj/item/W, mob/user)
if(istype(W,/obj/item/material/knife))
new /obj/item/reagent_containers/food/rawcutlet(src)
diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm
index 739a6c4eb91..21a79ba9b71 100644
--- a/code/modules/reagents/reagent_containers/hypospray.dm
+++ b/code/modules/reagents/reagent_containers/hypospray.dm
@@ -16,6 +16,9 @@
atom_flags = ATOM_FLAG_OPEN_CONTAINER
slot_flags = SLOT_BELT
+ drop_sound = SFX_DROP_GUN
+ pickup_sound = SFX_PICKUP_GUN
+
/obj/item/reagent_containers/hypospray/do_surgery(mob/living/carbon/M, mob/living/user)
if(user.a_intent != I_HELP) //in case it is ever used as a surgery tool
return ..()
diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm
index 88363a2e357..a6efdb6c8b2 100644
--- a/code/modules/reagents/reagent_containers/pill.dm
+++ b/code/modules/reagents/reagent_containers/pill.dm
@@ -14,6 +14,9 @@
volume = 30
var/mimic_color = FALSE
+ drop_sound = SFX_DROP_FOOD
+ pickup_sound = SFX_PICKUP_FOOD
+
/obj/item/reagent_containers/pill/Initialize()
. = ..()
if(!icon_state)
diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm
index b02ae07a6ee..9a1983b3b7c 100644
--- a/code/modules/reagents/reagent_containers/spray.dm
+++ b/code/modules/reagents/reagent_containers/spray.dm
@@ -190,6 +190,9 @@
volume = 10
startswith = list(/datum/reagent/water)
+ drop_sound = SFX_DROP_HERB
+ pickup_sound = SFX_PICKUP_HERB
+
/obj/item/reagent_containers/spray/chemsprayer
name = "chem sprayer"
desc = "A utility used to spray large amounts of reagent in a given area."
diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm
index 898aba918c1..8ca572d3451 100644
--- a/code/modules/reagents/reagent_containers/syringes.dm
+++ b/code/modules/reagents/reagent_containers/syringes.dm
@@ -26,6 +26,9 @@
var/starting_label = null
var/package_state = "package"
+ drop_sound = SFX_DROP_DEVICE
+ pickup_sound = SFX_PICKUP_DEVICE
+
/obj/item/reagent_containers/syringe/Initialize()
. = ..()
if(mode != SYRINGE_PACKAGED && starting_label)
diff --git a/code/modules/reagents/reagent_containers/vessel/_vessel.dm b/code/modules/reagents/reagent_containers/vessel/_vessel.dm
index 24ec074d3f3..ae73e35fa8d 100644
--- a/code/modules/reagents/reagent_containers/vessel/_vessel.dm
+++ b/code/modules/reagents/reagent_containers/vessel/_vessel.dm
@@ -22,7 +22,8 @@
w_class = ITEM_SIZE_SMALL
atom_flags = ATOM_FLAG_OPEN_CONTAINER
unacidable = TRUE // Most of these are made of glass
- pickup_sound = 'sound/effects/using/bottles/pickup3.ogg'
+ pickup_sound = SFX_PICKUP_BOTTLE
+ drop_sound = SFX_DROP_BOTTLE
can_be_splashed = TRUE
var/brittle = FALSE
@@ -513,3 +514,6 @@
edge = 0
unacidable = 1
var/icon/broken_outline = icon('icons/obj/reagent_containers/vessels.dmi', "broken")
+
+ drop_sound = SFX_DROP_GLASSSMALL
+ pickup_sound = SFX_PICKUP_GLASSSMALL
diff --git a/code/modules/reagents/reagent_containers/vessel/beaker.dm b/code/modules/reagents/reagent_containers/vessel/beaker.dm
index 06150649bf5..d350fcf9697 100644
--- a/code/modules/reagents/reagent_containers/vessel/beaker.dm
+++ b/code/modules/reagents/reagent_containers/vessel/beaker.dm
@@ -23,6 +23,9 @@
RADIATION_HAWKING = 1 ELECTRONVOLT
)
+ drop_sound = SFX_DROP_HELMET
+ pickup_sound = SFX_PICKUP_HELMET
+
/obj/item/reagent_containers/vessel/beaker/large
name = "large beaker"
desc = "A large beaker."
diff --git a/code/modules/reagents/reagent_containers/vessel/bottle.dm b/code/modules/reagents/reagent_containers/vessel/bottle.dm
index 9e6efb5ab50..7636ce2fe47 100644
--- a/code/modules/reagents/reagent_containers/vessel/bottle.dm
+++ b/code/modules/reagents/reagent_containers/vessel/bottle.dm
@@ -28,6 +28,9 @@
var/obj/item/bottle_extra/pourer/pourer = null
var/pourer_overlay = "pourer_overlay"
+ drop_sound = SFX_DROP_GLASSBOTTLE
+ pickup_sound = SFX_PICKUP_GLASSBOTTLE
+
/obj/item/reagent_containers/vessel/bottle/Destroy()
if(rag)
rag.forceMove(get_turf(src))
@@ -147,6 +150,9 @@
lid_type = /datum/vessel_lid/cork
rag_underlay = "rag_medium"
+ drop_sound = SFX_DROP_BOTTLE
+ pickup_sound = SFX_PICKUP_BOTTLE
+
/obj/item/reagent_containers/vessel/bottle/chemical/small
name = "small bottle"
desc = "A small glass bottle."
diff --git a/code/modules/reagents/reagent_containers/vessel/can.dm b/code/modules/reagents/reagent_containers/vessel/can.dm
index cfc3588aca3..50d1ee7bc15 100644
--- a/code/modules/reagents/reagent_containers/vessel/can.dm
+++ b/code/modules/reagents/reagent_containers/vessel/can.dm
@@ -14,6 +14,8 @@
mod_handy = 0.5
unacidable = FALSE
var/trash = null
+ drop_sound = SFX_DROP_SODACAN
+ pickup_sound = SFX_PICKUP_SODACAN
/obj/item/reagent_containers/vessel/can/attack_self(mob/user)
if((!reagents || !reagents.total_volume) && trash && user.a_intent != I_HELP)
diff --git a/code/modules/reagents/reagent_containers/vessel/glass/_glass.dm b/code/modules/reagents/reagent_containers/vessel/glass/_glass.dm
index 183621af92c..e160170025f 100644
--- a/code/modules/reagents/reagent_containers/vessel/glass/_glass.dm
+++ b/code/modules/reagents/reagent_containers/vessel/glass/_glass.dm
@@ -26,6 +26,9 @@
var/list/extras = list() // List of extras. Two extras maximum
var/rim_pos // Position of the rim for fruit slices. list(y, x_left, x_right)
+ drop_sound = SFX_DROP_GLASS
+ pickup_sound = SFX_PICKUP_GLASS
+
/obj/item/reagent_containers/vessel/glass/_examine_text(mob/M)
. = ..()
diff --git a/code/modules/reagents/reagent_containers/vessel/unsorted.dm b/code/modules/reagents/reagent_containers/vessel/unsorted.dm
index 85d8b9d737e..38f613c9c72 100644
--- a/code/modules/reagents/reagent_containers/vessel/unsorted.dm
+++ b/code/modules/reagents/reagent_containers/vessel/unsorted.dm
@@ -34,6 +34,9 @@
unacidable = FALSE
lid_type = null
+ drop_sound = SFX_DROP_METALPOT
+ pickup_sound = SFX_PICKUP_METALPOT
+
/obj/item/reagent_containers/vessel/bucket/full
startswith = list(/datum/reagent/water)
@@ -173,6 +176,9 @@
lid_type = null
unacidable = FALSE
+ drop_sound = SFX_DROP_PAPERCUP
+ pickup_sound = SFX_PICKUP_PAPERCUP
+
/obj/item/reagent_containers/vessel/shaker
name = "shaker"
desc = "A metal shaker to mix drinks in."
diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm
index 50509a88011..529538d6986 100755
--- a/code/modules/recycling/sortingmachinery.dm
+++ b/code/modules/recycling/sortingmachinery.dm
@@ -144,6 +144,9 @@
var/nameset = 0
var/tag_x
+ drop_sound = SFX_DROP_CARDBOARD
+ pickup_sound = SFX_PICKUP_CARDBOARD
+
/obj/item/smallDelivery/proc/unwrap(mob/user)
if(!Adjacent(user))
return
@@ -269,6 +272,9 @@
w_class = ITEM_SIZE_NORMAL
var/amount = 25.0
+ drop_sound = SFX_DROP_WRAPPER
+ pickup_sound = SFX_PICKUP_WRAPPER
+
/obj/item/c_tube
name = "cardboard tube"
desc = "A tube... of cardboard."
diff --git a/code/modules/research/stock_parts.dm b/code/modules/research/stock_parts.dm
index d578f00bf11..4931ed8840f 100644
--- a/code/modules/research/stock_parts.dm
+++ b/code/modules/research/stock_parts.dm
@@ -24,6 +24,9 @@
w_class = ITEM_SIZE_SMALL
var/rating = 1
+ drop_sound = SFX_DROP_COMPONENT
+ pickup_sound = SFX_PICKUP_COMPONENT
+
//Rank 1
/obj/item/stock_parts/console_screen
@@ -33,6 +36,9 @@
origin_tech = list(TECH_MATERIAL = 1)
matter = list(MATERIAL_GLASS = 200)
+ drop_sound = SFX_DROP_GLASS
+ pickup_sound = SFX_PICKUP_GLASS
+
/obj/item/stock_parts/scanning_module
name = "scanning module"
desc = "A compact, high resolution scanning module used in the construction of certain devices."
diff --git a/sound/effects/drop/ammobox.ogg b/sound/effects/drop/ammobox.ogg
new file mode 100644
index 00000000000..13fce70fe3d
Binary files /dev/null and b/sound/effects/drop/ammobox.ogg differ
diff --git a/sound/effects/drop/axe.ogg b/sound/effects/drop/axe.ogg
new file mode 100644
index 00000000000..eae55a6fd50
Binary files /dev/null and b/sound/effects/drop/axe.ogg differ
diff --git a/sound/effects/drop/backpack.ogg b/sound/effects/drop/backpack.ogg
new file mode 100644
index 00000000000..ba0d90d9d6b
Binary files /dev/null and b/sound/effects/drop/backpack.ogg differ
diff --git a/sound/effects/drop/ball.ogg b/sound/effects/drop/ball.ogg
new file mode 100644
index 00000000000..6520c7a9066
Binary files /dev/null and b/sound/effects/drop/ball.ogg differ
diff --git a/sound/effects/drop/book.ogg b/sound/effects/drop/book.ogg
new file mode 100644
index 00000000000..b492b665f59
Binary files /dev/null and b/sound/effects/drop/book.ogg differ
diff --git a/sound/effects/drop/boots.ogg b/sound/effects/drop/boots.ogg
new file mode 100644
index 00000000000..87176cdca23
Binary files /dev/null and b/sound/effects/drop/boots.ogg differ
diff --git a/sound/effects/drop/bottle.ogg b/sound/effects/drop/bottle.ogg
new file mode 100644
index 00000000000..8df93e32b70
Binary files /dev/null and b/sound/effects/drop/bottle.ogg differ
diff --git a/sound/effects/drop/card.ogg b/sound/effects/drop/card.ogg
new file mode 100644
index 00000000000..7e2620d2b0b
Binary files /dev/null and b/sound/effects/drop/card.ogg differ
diff --git a/sound/effects/drop/cardboardbox.ogg b/sound/effects/drop/cardboardbox.ogg
new file mode 100644
index 00000000000..7070ba1c342
Binary files /dev/null and b/sound/effects/drop/cardboardbox.ogg differ
diff --git a/sound/effects/drop/cloth.ogg b/sound/effects/drop/cloth.ogg
new file mode 100644
index 00000000000..5bf734caba0
Binary files /dev/null and b/sound/effects/drop/cloth.ogg differ
diff --git a/sound/effects/drop/component.ogg b/sound/effects/drop/component.ogg
new file mode 100644
index 00000000000..093fde7c90c
Binary files /dev/null and b/sound/effects/drop/component.ogg differ
diff --git a/sound/effects/drop/crowbar.ogg b/sound/effects/drop/crowbar.ogg
new file mode 100644
index 00000000000..77464110661
Binary files /dev/null and b/sound/effects/drop/crowbar.ogg differ
diff --git a/sound/effects/drop/device.ogg b/sound/effects/drop/device.ogg
new file mode 100644
index 00000000000..8382db94b8a
Binary files /dev/null and b/sound/effects/drop/device.ogg differ
diff --git a/sound/effects/drop/disk.ogg b/sound/effects/drop/disk.ogg
new file mode 100644
index 00000000000..3174b88117f
Binary files /dev/null and b/sound/effects/drop/disk.ogg differ
diff --git a/sound/effects/drop/drinkglass.ogg b/sound/effects/drop/drinkglass.ogg
new file mode 100644
index 00000000000..43bb732db3d
Binary files /dev/null and b/sound/effects/drop/drinkglass.ogg differ
diff --git a/sound/effects/drop/flesh.ogg b/sound/effects/drop/flesh.ogg
new file mode 100644
index 00000000000..bb7af66a2ea
Binary files /dev/null and b/sound/effects/drop/flesh.ogg differ
diff --git a/sound/effects/drop/food.ogg b/sound/effects/drop/food.ogg
new file mode 100644
index 00000000000..ace68d4e997
Binary files /dev/null and b/sound/effects/drop/food.ogg differ
diff --git a/sound/effects/drop/gascan.ogg b/sound/effects/drop/gascan.ogg
new file mode 100644
index 00000000000..29d8b5230d7
Binary files /dev/null and b/sound/effects/drop/gascan.ogg differ
diff --git a/sound/effects/drop/generic1.ogg b/sound/effects/drop/generic1.ogg
new file mode 100644
index 00000000000..c2195b1e24a
Binary files /dev/null and b/sound/effects/drop/generic1.ogg differ
diff --git a/sound/effects/drop/generic2.ogg b/sound/effects/drop/generic2.ogg
new file mode 100644
index 00000000000..ac0bd3710fe
Binary files /dev/null and b/sound/effects/drop/generic2.ogg differ
diff --git a/sound/effects/drop/glass.ogg b/sound/effects/drop/glass.ogg
new file mode 100644
index 00000000000..fbcd2ac4fb7
Binary files /dev/null and b/sound/effects/drop/glass.ogg differ
diff --git a/sound/effects/drop/glass_small.ogg b/sound/effects/drop/glass_small.ogg
new file mode 100644
index 00000000000..2dbbb3a2301
Binary files /dev/null and b/sound/effects/drop/glass_small.ogg differ
diff --git a/sound/effects/drop/gloves.ogg b/sound/effects/drop/gloves.ogg
new file mode 100644
index 00000000000..b1cee65c52f
Binary files /dev/null and b/sound/effects/drop/gloves.ogg differ
diff --git a/sound/effects/drop/gun.ogg b/sound/effects/drop/gun.ogg
new file mode 100644
index 00000000000..3a489c72c0f
Binary files /dev/null and b/sound/effects/drop/gun.ogg differ
diff --git a/sound/effects/drop/hat.ogg b/sound/effects/drop/hat.ogg
new file mode 100644
index 00000000000..f13c656c031
Binary files /dev/null and b/sound/effects/drop/hat.ogg differ
diff --git a/sound/effects/drop/helm.ogg b/sound/effects/drop/helm.ogg
new file mode 100644
index 00000000000..bbca1b381e2
Binary files /dev/null and b/sound/effects/drop/helm.ogg differ
diff --git a/sound/effects/drop/herb.ogg b/sound/effects/drop/herb.ogg
new file mode 100644
index 00000000000..2f4afe17d22
Binary files /dev/null and b/sound/effects/drop/herb.ogg differ
diff --git a/sound/effects/drop/knife.ogg b/sound/effects/drop/knife.ogg
new file mode 100644
index 00000000000..954b611a97f
Binary files /dev/null and b/sound/effects/drop/knife.ogg differ
diff --git a/sound/effects/drop/leather.ogg b/sound/effects/drop/leather.ogg
new file mode 100644
index 00000000000..beb0f469166
Binary files /dev/null and b/sound/effects/drop/leather.ogg differ
diff --git a/sound/effects/drop/matchbox.ogg b/sound/effects/drop/matchbox.ogg
new file mode 100644
index 00000000000..8e4e276c9e1
Binary files /dev/null and b/sound/effects/drop/matchbox.ogg differ
diff --git a/sound/effects/drop/metal_pot.ogg b/sound/effects/drop/metal_pot.ogg
new file mode 100644
index 00000000000..f2f26195560
Binary files /dev/null and b/sound/effects/drop/metal_pot.ogg differ
diff --git a/sound/effects/drop/metalweapon.ogg b/sound/effects/drop/metalweapon.ogg
new file mode 100644
index 00000000000..4ac4f039b91
Binary files /dev/null and b/sound/effects/drop/metalweapon.ogg differ
diff --git a/sound/effects/drop/multitool.ogg b/sound/effects/drop/multitool.ogg
new file mode 100644
index 00000000000..67e0a41042c
Binary files /dev/null and b/sound/effects/drop/multitool.ogg differ
diff --git a/sound/effects/drop/paper.ogg b/sound/effects/drop/paper.ogg
new file mode 100644
index 00000000000..27ce2b3d1a7
Binary files /dev/null and b/sound/effects/drop/paper.ogg differ
diff --git a/sound/effects/drop/papercup.ogg b/sound/effects/drop/papercup.ogg
new file mode 100644
index 00000000000..6bea17488f5
Binary files /dev/null and b/sound/effects/drop/papercup.ogg differ
diff --git a/sound/effects/drop/pillbottle.ogg b/sound/effects/drop/pillbottle.ogg
new file mode 100644
index 00000000000..6c899370596
Binary files /dev/null and b/sound/effects/drop/pillbottle.ogg differ
diff --git a/sound/effects/drop/plushie.ogg b/sound/effects/drop/plushie.ogg
new file mode 100644
index 00000000000..a6d0f290b69
Binary files /dev/null and b/sound/effects/drop/plushie.ogg differ
diff --git a/sound/effects/drop/ring.ogg b/sound/effects/drop/ring.ogg
new file mode 100644
index 00000000000..e8949b877a5
Binary files /dev/null and b/sound/effects/drop/ring.ogg differ
diff --git a/sound/effects/drop/rubber.ogg b/sound/effects/drop/rubber.ogg
new file mode 100644
index 00000000000..a0b365020d2
Binary files /dev/null and b/sound/effects/drop/rubber.ogg differ
diff --git a/sound/effects/drop/screwdriver.ogg b/sound/effects/drop/screwdriver.ogg
new file mode 100644
index 00000000000..d460fd0aeda
Binary files /dev/null and b/sound/effects/drop/screwdriver.ogg differ
diff --git a/sound/effects/drop/shell_drop.ogg b/sound/effects/drop/shell_drop.ogg
new file mode 100644
index 00000000000..0d6556ef439
Binary files /dev/null and b/sound/effects/drop/shell_drop.ogg differ
diff --git a/sound/effects/drop/shoes.ogg b/sound/effects/drop/shoes.ogg
new file mode 100644
index 00000000000..5dbf0c41447
Binary files /dev/null and b/sound/effects/drop/shoes.ogg differ
diff --git a/sound/effects/drop/shovel.ogg b/sound/effects/drop/shovel.ogg
new file mode 100644
index 00000000000..72ceefffa12
Binary files /dev/null and b/sound/effects/drop/shovel.ogg differ
diff --git a/sound/effects/drop/soda.ogg b/sound/effects/drop/soda.ogg
new file mode 100644
index 00000000000..d968799e5ea
Binary files /dev/null and b/sound/effects/drop/soda.ogg differ
diff --git a/sound/effects/drop/sword.ogg b/sound/effects/drop/sword.ogg
new file mode 100644
index 00000000000..1287c171cb8
Binary files /dev/null and b/sound/effects/drop/sword.ogg differ
diff --git a/sound/effects/drop/toolbelt.ogg b/sound/effects/drop/toolbelt.ogg
new file mode 100644
index 00000000000..2a3c4655c49
Binary files /dev/null and b/sound/effects/drop/toolbelt.ogg differ
diff --git a/sound/effects/drop/toolbox.ogg b/sound/effects/drop/toolbox.ogg
new file mode 100644
index 00000000000..abf56946278
Binary files /dev/null and b/sound/effects/drop/toolbox.ogg differ
diff --git a/sound/effects/drop/weldingtool.ogg b/sound/effects/drop/weldingtool.ogg
new file mode 100644
index 00000000000..58b722ad7a7
Binary files /dev/null and b/sound/effects/drop/weldingtool.ogg differ
diff --git a/sound/effects/drop/weldingtool_drop.ogg b/sound/effects/drop/weldingtool_drop.ogg
new file mode 100644
index 00000000000..58b722ad7a7
Binary files /dev/null and b/sound/effects/drop/weldingtool_drop.ogg differ
diff --git a/sound/effects/drop/wirecutter.ogg b/sound/effects/drop/wirecutter.ogg
new file mode 100644
index 00000000000..e099870fc7d
Binary files /dev/null and b/sound/effects/drop/wirecutter.ogg differ
diff --git a/sound/effects/drop/wirecutter_drop.ogg b/sound/effects/drop/wirecutter_drop.ogg
new file mode 100644
index 00000000000..e099870fc7d
Binary files /dev/null and b/sound/effects/drop/wirecutter_drop.ogg differ
diff --git a/sound/effects/drop/wooden.ogg b/sound/effects/drop/wooden.ogg
new file mode 100644
index 00000000000..dd6c4e7c530
Binary files /dev/null and b/sound/effects/drop/wooden.ogg differ
diff --git a/sound/effects/drop/woodweapon.ogg b/sound/effects/drop/woodweapon.ogg
new file mode 100644
index 00000000000..517f9c015ac
Binary files /dev/null and b/sound/effects/drop/woodweapon.ogg differ
diff --git a/sound/effects/drop/wrapper.ogg b/sound/effects/drop/wrapper.ogg
new file mode 100644
index 00000000000..9f7927e6db3
Binary files /dev/null and b/sound/effects/drop/wrapper.ogg differ
diff --git a/sound/effects/drop/wrench.ogg b/sound/effects/drop/wrench.ogg
new file mode 100644
index 00000000000..86020bf822c
Binary files /dev/null and b/sound/effects/drop/wrench.ogg differ
diff --git a/sound/effects/holster/holsterin.ogg b/sound/effects/holster/holsterin.ogg
new file mode 100644
index 00000000000..a0f3c639db5
Binary files /dev/null and b/sound/effects/holster/holsterin.ogg differ
diff --git a/sound/effects/holster/holsterout.ogg b/sound/effects/holster/holsterout.ogg
new file mode 100644
index 00000000000..743280a40d5
Binary files /dev/null and b/sound/effects/holster/holsterout.ogg differ
diff --git a/sound/effects/holster/sheathin.ogg b/sound/effects/holster/sheathin.ogg
new file mode 100644
index 00000000000..10fcbdf4601
Binary files /dev/null and b/sound/effects/holster/sheathin.ogg differ
diff --git a/sound/effects/holster/sheathout.ogg b/sound/effects/holster/sheathout.ogg
new file mode 100644
index 00000000000..6b20f970a08
Binary files /dev/null and b/sound/effects/holster/sheathout.ogg differ
diff --git a/sound/effects/holster/tactiholsterin.ogg b/sound/effects/holster/tactiholsterin.ogg
new file mode 100644
index 00000000000..aaec847ebc5
Binary files /dev/null and b/sound/effects/holster/tactiholsterin.ogg differ
diff --git a/sound/effects/holster/tactiholsterout.ogg b/sound/effects/holster/tactiholsterout.ogg
new file mode 100644
index 00000000000..f1c44c45861
Binary files /dev/null and b/sound/effects/holster/tactiholsterout.ogg differ
diff --git a/sound/effects/pickup/accessory.ogg b/sound/effects/pickup/accessory.ogg
new file mode 100644
index 00000000000..b532e2d4026
Binary files /dev/null and b/sound/effects/pickup/accessory.ogg differ
diff --git a/sound/effects/pickup/ammobox.ogg b/sound/effects/pickup/ammobox.ogg
new file mode 100644
index 00000000000..9532a7697b9
Binary files /dev/null and b/sound/effects/pickup/ammobox.ogg differ
diff --git a/sound/effects/pickup/axe.ogg b/sound/effects/pickup/axe.ogg
new file mode 100644
index 00000000000..a77809ab577
Binary files /dev/null and b/sound/effects/pickup/axe.ogg differ
diff --git a/sound/effects/pickup/backpack.ogg b/sound/effects/pickup/backpack.ogg
new file mode 100644
index 00000000000..50965d71344
Binary files /dev/null and b/sound/effects/pickup/backpack.ogg differ
diff --git a/sound/effects/pickup/ball.ogg b/sound/effects/pickup/ball.ogg
new file mode 100644
index 00000000000..cae604b1fd9
Binary files /dev/null and b/sound/effects/pickup/ball.ogg differ
diff --git a/sound/effects/pickup/book.ogg b/sound/effects/pickup/book.ogg
new file mode 100644
index 00000000000..120a4e4721a
Binary files /dev/null and b/sound/effects/pickup/book.ogg differ
diff --git a/sound/effects/pickup/boots.ogg b/sound/effects/pickup/boots.ogg
new file mode 100644
index 00000000000..077801f6f53
Binary files /dev/null and b/sound/effects/pickup/boots.ogg differ
diff --git a/sound/effects/pickup/bottle.ogg b/sound/effects/pickup/bottle.ogg
new file mode 100644
index 00000000000..77e0b22187f
Binary files /dev/null and b/sound/effects/pickup/bottle.ogg differ
diff --git a/sound/effects/pickup/card.ogg b/sound/effects/pickup/card.ogg
new file mode 100644
index 00000000000..44df4b32605
Binary files /dev/null and b/sound/effects/pickup/card.ogg differ
diff --git a/sound/effects/pickup/cardboardbox.ogg b/sound/effects/pickup/cardboardbox.ogg
new file mode 100644
index 00000000000..aa4e72129b0
Binary files /dev/null and b/sound/effects/pickup/cardboardbox.ogg differ
diff --git a/sound/effects/pickup/cloth.ogg b/sound/effects/pickup/cloth.ogg
new file mode 100644
index 00000000000..f46988887d1
Binary files /dev/null and b/sound/effects/pickup/cloth.ogg differ
diff --git a/sound/effects/pickup/component.ogg b/sound/effects/pickup/component.ogg
new file mode 100644
index 00000000000..cfaba1dd193
Binary files /dev/null and b/sound/effects/pickup/component.ogg differ
diff --git a/sound/effects/pickup/crowbar.ogg b/sound/effects/pickup/crowbar.ogg
new file mode 100644
index 00000000000..79b276f8451
Binary files /dev/null and b/sound/effects/pickup/crowbar.ogg differ
diff --git a/sound/effects/pickup/device.ogg b/sound/effects/pickup/device.ogg
new file mode 100644
index 00000000000..ca2c4f1ab12
Binary files /dev/null and b/sound/effects/pickup/device.ogg differ
diff --git a/sound/effects/pickup/disk.ogg b/sound/effects/pickup/disk.ogg
new file mode 100644
index 00000000000..8f67406a5fb
Binary files /dev/null and b/sound/effects/pickup/disk.ogg differ
diff --git a/sound/effects/pickup/drinkglass.ogg b/sound/effects/pickup/drinkglass.ogg
new file mode 100644
index 00000000000..fcd1c7d3126
Binary files /dev/null and b/sound/effects/pickup/drinkglass.ogg differ
diff --git a/sound/effects/pickup/flesh.ogg b/sound/effects/pickup/flesh.ogg
new file mode 100644
index 00000000000..818ca54500f
Binary files /dev/null and b/sound/effects/pickup/flesh.ogg differ
diff --git a/sound/effects/pickup/food.ogg b/sound/effects/pickup/food.ogg
new file mode 100644
index 00000000000..1113a16a368
Binary files /dev/null and b/sound/effects/pickup/food.ogg differ
diff --git a/sound/effects/pickup/gascan.ogg b/sound/effects/pickup/gascan.ogg
new file mode 100644
index 00000000000..c2a51c39721
Binary files /dev/null and b/sound/effects/pickup/gascan.ogg differ
diff --git a/sound/effects/pickup/generic1.ogg b/sound/effects/pickup/generic1.ogg
new file mode 100644
index 00000000000..64f37c6dd9c
Binary files /dev/null and b/sound/effects/pickup/generic1.ogg differ
diff --git a/sound/effects/pickup/generic2.ogg b/sound/effects/pickup/generic2.ogg
new file mode 100644
index 00000000000..57092778f28
Binary files /dev/null and b/sound/effects/pickup/generic2.ogg differ
diff --git a/sound/effects/pickup/generic3.ogg b/sound/effects/pickup/generic3.ogg
new file mode 100644
index 00000000000..be46e772422
Binary files /dev/null and b/sound/effects/pickup/generic3.ogg differ
diff --git a/sound/effects/pickup/glass.ogg b/sound/effects/pickup/glass.ogg
new file mode 100644
index 00000000000..b248fbf5e60
Binary files /dev/null and b/sound/effects/pickup/glass.ogg differ
diff --git a/sound/effects/pickup/glass_small.ogg b/sound/effects/pickup/glass_small.ogg
new file mode 100644
index 00000000000..bf1e6dc0e6a
Binary files /dev/null and b/sound/effects/pickup/glass_small.ogg differ
diff --git a/sound/effects/pickup/gloves.ogg b/sound/effects/pickup/gloves.ogg
new file mode 100644
index 00000000000..1a7d263426c
Binary files /dev/null and b/sound/effects/pickup/gloves.ogg differ
diff --git a/sound/effects/pickup/gun.ogg b/sound/effects/pickup/gun.ogg
new file mode 100644
index 00000000000..4eeda50ca50
Binary files /dev/null and b/sound/effects/pickup/gun.ogg differ
diff --git a/sound/effects/pickup/hat.ogg b/sound/effects/pickup/hat.ogg
new file mode 100644
index 00000000000..d80b46f7f2d
Binary files /dev/null and b/sound/effects/pickup/hat.ogg differ
diff --git a/sound/effects/pickup/helm.ogg b/sound/effects/pickup/helm.ogg
new file mode 100644
index 00000000000..2d33f62a5dd
Binary files /dev/null and b/sound/effects/pickup/helm.ogg differ
diff --git a/sound/effects/pickup/herb.ogg b/sound/effects/pickup/herb.ogg
new file mode 100644
index 00000000000..bd250b5a137
Binary files /dev/null and b/sound/effects/pickup/herb.ogg differ
diff --git a/sound/effects/pickup/knife.ogg b/sound/effects/pickup/knife.ogg
new file mode 100644
index 00000000000..6f5ca73c246
Binary files /dev/null and b/sound/effects/pickup/knife.ogg differ
diff --git a/sound/effects/pickup/leather.ogg b/sound/effects/pickup/leather.ogg
new file mode 100644
index 00000000000..5895cd8f9f8
Binary files /dev/null and b/sound/effects/pickup/leather.ogg differ
diff --git a/sound/effects/pickup/matchbox.ogg b/sound/effects/pickup/matchbox.ogg
new file mode 100644
index 00000000000..82c23410e11
Binary files /dev/null and b/sound/effects/pickup/matchbox.ogg differ
diff --git a/sound/effects/pickup/metal_pot.ogg b/sound/effects/pickup/metal_pot.ogg
new file mode 100644
index 00000000000..3ddf6c66477
Binary files /dev/null and b/sound/effects/pickup/metal_pot.ogg differ
diff --git a/sound/effects/pickup/metalweapon.ogg b/sound/effects/pickup/metalweapon.ogg
new file mode 100644
index 00000000000..ac6e7387119
Binary files /dev/null and b/sound/effects/pickup/metalweapon.ogg differ
diff --git a/sound/effects/pickup/multitool.ogg b/sound/effects/pickup/multitool.ogg
new file mode 100644
index 00000000000..cbd598ce896
Binary files /dev/null and b/sound/effects/pickup/multitool.ogg differ
diff --git a/sound/effects/pickup/paper.ogg b/sound/effects/pickup/paper.ogg
new file mode 100644
index 00000000000..55ae2b3d2db
Binary files /dev/null and b/sound/effects/pickup/paper.ogg differ
diff --git a/sound/effects/pickup/papercup.ogg b/sound/effects/pickup/papercup.ogg
new file mode 100644
index 00000000000..f0c459a3536
Binary files /dev/null and b/sound/effects/pickup/papercup.ogg differ
diff --git a/sound/effects/pickup/pillbottle.ogg b/sound/effects/pickup/pillbottle.ogg
new file mode 100644
index 00000000000..b62ec0016e5
Binary files /dev/null and b/sound/effects/pickup/pillbottle.ogg differ
diff --git a/sound/effects/pickup/plushie.ogg b/sound/effects/pickup/plushie.ogg
new file mode 100644
index 00000000000..91299b09758
Binary files /dev/null and b/sound/effects/pickup/plushie.ogg differ
diff --git a/sound/effects/pickup/ring.ogg b/sound/effects/pickup/ring.ogg
new file mode 100644
index 00000000000..41c57a3175a
Binary files /dev/null and b/sound/effects/pickup/ring.ogg differ
diff --git a/sound/effects/pickup/rubber.ogg b/sound/effects/pickup/rubber.ogg
new file mode 100644
index 00000000000..874934ae459
Binary files /dev/null and b/sound/effects/pickup/rubber.ogg differ
diff --git a/sound/effects/pickup/screwdriver.ogg b/sound/effects/pickup/screwdriver.ogg
new file mode 100644
index 00000000000..987d9af7081
Binary files /dev/null and b/sound/effects/pickup/screwdriver.ogg differ
diff --git a/sound/effects/pickup/shoes.ogg b/sound/effects/pickup/shoes.ogg
new file mode 100644
index 00000000000..9200f325010
Binary files /dev/null and b/sound/effects/pickup/shoes.ogg differ
diff --git a/sound/effects/pickup/shovel.ogg b/sound/effects/pickup/shovel.ogg
new file mode 100644
index 00000000000..0d146824119
Binary files /dev/null and b/sound/effects/pickup/shovel.ogg differ
diff --git a/sound/effects/pickup/soda.ogg b/sound/effects/pickup/soda.ogg
new file mode 100644
index 00000000000..f19a06ec751
Binary files /dev/null and b/sound/effects/pickup/soda.ogg differ
diff --git a/sound/effects/pickup/sword1.ogg b/sound/effects/pickup/sword1.ogg
new file mode 100644
index 00000000000..96d8d00cf50
Binary files /dev/null and b/sound/effects/pickup/sword1.ogg differ
diff --git a/sound/effects/pickup/sword2.ogg b/sound/effects/pickup/sword2.ogg
new file mode 100644
index 00000000000..67e05cca760
Binary files /dev/null and b/sound/effects/pickup/sword2.ogg differ
diff --git a/sound/effects/pickup/sword3.ogg b/sound/effects/pickup/sword3.ogg
new file mode 100644
index 00000000000..d5149e39056
Binary files /dev/null and b/sound/effects/pickup/sword3.ogg differ
diff --git a/sound/effects/pickup/toolbelt.ogg b/sound/effects/pickup/toolbelt.ogg
new file mode 100644
index 00000000000..58e5d25979a
Binary files /dev/null and b/sound/effects/pickup/toolbelt.ogg differ
diff --git a/sound/effects/pickup/toolbox.ogg b/sound/effects/pickup/toolbox.ogg
new file mode 100644
index 00000000000..01a4ab4b3fa
Binary files /dev/null and b/sound/effects/pickup/toolbox.ogg differ
diff --git a/sound/effects/pickup/weldingtool.ogg b/sound/effects/pickup/weldingtool.ogg
new file mode 100644
index 00000000000..da78b06b848
Binary files /dev/null and b/sound/effects/pickup/weldingtool.ogg differ
diff --git a/sound/effects/pickup/wirecutter.ogg b/sound/effects/pickup/wirecutter.ogg
new file mode 100644
index 00000000000..078faaf4324
Binary files /dev/null and b/sound/effects/pickup/wirecutter.ogg differ
diff --git a/sound/effects/pickup/wooden.ogg b/sound/effects/pickup/wooden.ogg
new file mode 100644
index 00000000000..1a778074e9c
Binary files /dev/null and b/sound/effects/pickup/wooden.ogg differ
diff --git a/sound/effects/pickup/woodweapon.ogg b/sound/effects/pickup/woodweapon.ogg
new file mode 100644
index 00000000000..34e9c238eac
Binary files /dev/null and b/sound/effects/pickup/woodweapon.ogg differ
diff --git a/sound/effects/pickup/wrapper.ogg b/sound/effects/pickup/wrapper.ogg
new file mode 100644
index 00000000000..9270ade8db1
Binary files /dev/null and b/sound/effects/pickup/wrapper.ogg differ
diff --git a/sound/effects/pickup/wrench.ogg b/sound/effects/pickup/wrench.ogg
new file mode 100644
index 00000000000..860e0d70879
Binary files /dev/null and b/sound/effects/pickup/wrench.ogg differ
diff --git a/sound/machines/turrets/turret_deploy.ogg b/sound/machines/turrets/turret_deploy.ogg
new file mode 100644
index 00000000000..0b2376901b6
Binary files /dev/null and b/sound/machines/turrets/turret_deploy.ogg differ
diff --git a/sound/machines/turrets/turret_retract.ogg b/sound/machines/turrets/turret_retract.ogg
new file mode 100644
index 00000000000..11d1eecad8c
Binary files /dev/null and b/sound/machines/turrets/turret_retract.ogg differ
diff --git a/sound/machines/turrets/turret_rotate.ogg b/sound/machines/turrets/turret_rotate.ogg
new file mode 100644
index 00000000000..8699fa33168
Binary files /dev/null and b/sound/machines/turrets/turret_rotate.ogg differ
diff --git a/sound/machines/vending/vending_cans.ogg b/sound/machines/vending/vending_cans.ogg
new file mode 100644
index 00000000000..84b9d520b8e
Binary files /dev/null and b/sound/machines/vending/vending_cans.ogg differ
diff --git a/sound/machines/vending/vending_coffee.ogg b/sound/machines/vending/vending_coffee.ogg
new file mode 100644
index 00000000000..31edabc50ab
Binary files /dev/null and b/sound/machines/vending/vending_coffee.ogg differ
diff --git a/sound/machines/vending/vending_drop.ogg b/sound/machines/vending/vending_drop.ogg
new file mode 100644
index 00000000000..4e0ed7dd6d8
Binary files /dev/null and b/sound/machines/vending/vending_drop.ogg differ