diff --git a/code/__DEFINES/sound.dm b/code/__DEFINES/sound.dm
index 77964258..995449ea 100644
--- a/code/__DEFINES/sound.dm
+++ b/code/__DEFINES/sound.dm
@@ -10,6 +10,7 @@
#define CHANNEL_BUZZ 1018
#define CHANNEL_BICYCLE 1017
+
//CIT CHANNELS - TRY NOT TO REGRESS
#define CHANNEL_PRED 1010
#define CHANNEL_DIGEST 1009
@@ -126,4 +127,9 @@
#define SOUND_AREA_WOODFLOOR SOUND_ENVIRONMENT_CITY
#define INTERACTION_SOUND_RANGE_MODIFIER -3
-#define EQUIP_SOUND_VOLUME 30
\ No newline at end of file
+#define EQUIP_SOUND_VOLUME 30
+
+
+#define PICKUP_SOUND_VOLUME 40
+#define DROP_SOUND_VOLUME 50
+#define YEET_SOUND_VOLUME 90
\ No newline at end of file
diff --git a/code/datums/components/storage/concrete/_concrete.dm b/code/datums/components/storage/concrete/_concrete.dm
index ec22b6b7..eb900a18 100644
--- a/code/datums/components/storage/concrete/_concrete.dm
+++ b/code/datums/components/storage/concrete/_concrete.dm
@@ -134,7 +134,7 @@
if(ismob(parent.loc) && isitem(AM))
var/obj/item/I = AM
var/mob/M = parent.loc
- I.dropped(M)
+ I.dropped(M, TRUE)
if(new_location)
//Reset the items values
_removal_reset(AM)
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index 8cb1f333..3bc00c84 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -32,7 +32,13 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE)
var/hitsound
var/usesound
- var/throwhitsound
+
+ var/mob_throw_hit_sound
+
+ ///Sound uses when picking the item up (into your hands)
+ var/pickup_sound
+ ///Sound uses when dropping the item, or when its thrown.
+ var/drop_sound
///Sound used when equipping the item into a valid slot
var/equip_sound
@@ -376,7 +382,7 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE)
/obj/item/proc/talk_into(mob/M, input, channel, spans, datum/language/language)
return ITALICS | REDUCE_RANGE
-/obj/item/proc/dropped(mob/user)
+/obj/item/proc/dropped(mob/user, silent)
for(var/X in actions)
var/datum/action/A = X
A.Remove(user)
@@ -384,6 +390,8 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE)
qdel(src)
item_flags &= ~IN_INVENTORY
SEND_SIGNAL(src, COMSIG_ITEM_DROPPED,user)
+ if(!silent)
+ playsound(src, drop_sound, DROP_SOUND_VOLUME, ignore_walls = FALSE)
// called just as an item is picked up (loc is not yet changed)
/obj/item/proc/pickup(mob/user)
@@ -427,8 +435,10 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE)
A.Grant(user)
item_flags |= IN_INVENTORY
- if(equip_sound && (slot_flags & slotdefine2slotbit(slot)))
+ if(equip_sound &&(slot_flags & slotdefine2slotbit(slot)))
playsound(src, equip_sound, EQUIP_SOUND_VOLUME, TRUE, ignore_walls = FALSE)
+ else if(slot == SLOT_HANDS)
+ playsound(src, pickup_sound, PICKUP_SOUND_VOLUME, ignore_walls = FALSE)
//sometimes we only want to grant the item's action if it's equipped in a specific slot.
/obj/item/proc/item_action_slot_check(slot, mob/user)
@@ -582,6 +592,21 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE)
var/itempush = 1
if(w_class < 4)
itempush = 0 //too light to push anything
+
+ if(istype(hit_atom, /mob/living)) //Living mobs handle hit sounds differently.
+ var/volume = get_volume_by_throwforce_and_or_w_class()
+ if (throwforce > 0)
+ if (mob_throw_hit_sound)
+ playsound(hit_atom, mob_throw_hit_sound, volume, TRUE, -1)
+ else if(hitsound)
+ playsound(hit_atom, hitsound, volume, TRUE, -1)
+ else
+ playsound(hit_atom, 'sound/weapons/genhit.ogg',volume, TRUE, -1)
+ else
+ playsound(hit_atom, 'sound/weapons/throwtap.ogg', 1, volume, -1)
+
+ else
+ playsound(src, drop_sound, YEET_SOUND_VOLUME, ignore_walls = FALSE)
return hit_atom.hitby(src, 0, itempush, throwingdatum=throwingdatum)
/obj/item/throw_at(atom/target, range, speed, mob/thrower, spin=1, diagonals_first = 0, datum/callback/callback, force, messy_throw = TRUE)
@@ -853,7 +878,7 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE)
layer = initial(layer)
plane = initial(plane)
appearance_flags &= ~NO_CLIENT_COLOR
- dropped(M)
+ dropped(M, FALSE)
return ..()
/obj/item/throw_at(atom/target, range, speed, mob/thrower, spin=TRUE, diagonals_first = FALSE, var/datum/callback/callback)
diff --git a/code/game/objects/items/devices/multitool.dm b/code/game/objects/items/devices/multitool.dm
index 87d7b5e5..463bc809 100644
--- a/code/game/objects/items/devices/multitool.dm
+++ b/code/game/objects/items/devices/multitool.dm
@@ -32,6 +32,9 @@
var/datum/integrated_io/selected_io = null //functional for integrated circuits.
var/mode = 0
+ drop_sound = 'sound/items/handling/multitool_drop.ogg'
+ pickup_sound = 'sound/items/handling/multitool_pickup.ogg'
+
/obj/item/multitool/examine(mob/user)
. = ..()
if(selected_io)
diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm
index 4cfeb324..5da495f3 100644
--- a/code/game/objects/items/stacks/sheets/sheet_types.dm
+++ b/code/game/objects/items/stacks/sheets/sheet_types.dm
@@ -355,6 +355,9 @@ GLOBAL_LIST_INIT(cloth_recipes, list ( \
merge_type = /obj/item/stack/sheet/cloth
grind_results = list(/datum/reagent/cellulose = 4)
+ drop_sound = 'sound/items/handling/cloth_drop.ogg'
+ pickup_sound = 'sound/items/handling/cloth_pickup.ogg'
+
/obj/item/stack/sheet/cloth/Initialize(mapload, new_amount, merge = TRUE)
recipes = GLOB.cloth_recipes
return ..()
@@ -400,6 +403,11 @@ GLOBAL_LIST_INIT(durathread_recipes, list ( \
merge_type = /obj/item/stack/sheet/durathread
grind_results = list(/datum/reagent/cellulose = 10)
+ drop_sound = 'sound/items/handling/cloth_drop.ogg'
+ pickup_sound = 'sound/items/handling/cloth_pickup.ogg'
+
+
+
/obj/item/stack/sheet/durathread/Initialize(mapload, new_amount, merge = TRUE)
recipes = GLOB.durathread_recipes
return ..()
diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm
index 78d3d057..69ca79d2 100644
--- a/code/game/objects/items/storage/belt.dm
+++ b/code/game/objects/items/storage/belt.dm
@@ -12,6 +12,8 @@
var/content_overlays = FALSE //If this is true, the belt will gain overlays based on what it's holding
var/worn_overlays = FALSE //worn counterpart of the above.
equip_sound = 'sound/items/equip/toolbelt_equip.ogg'
+ drop_sound = 'sound/items/handling/toolbelt_drop.ogg'
+ pickup_sound = 'sound/items/handling/toolbelt_pickup.ogg'
/obj/item/storage/belt/suicide_act(mob/living/carbon/user)
user.visible_message("[user] begins belting [user.p_them()]self with \the [src]! It looks like [user.p_theyre()] trying to commit suicide!")
diff --git a/code/game/objects/items/storage/boxes.dm b/code/game/objects/items/storage/boxes.dm
index 4f00a15d..7298839c 100644
--- a/code/game/objects/items/storage/boxes.dm
+++ b/code/game/objects/items/storage/boxes.dm
@@ -35,6 +35,9 @@
var/illustration = "writing"
rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE //exploits ahoy
+ drop_sound = 'sound/items/handling/cardboardbox_drop.ogg'
+ pickup_sound = 'sound/items/handling/cardboardbox_pickup.ogg'
+
/obj/item/storage/box/Initialize(mapload)
. = ..()
update_icon()
@@ -643,6 +646,8 @@
w_class = WEIGHT_CLASS_TINY
slot_flags = ITEM_SLOT_BELT
price = 2
+ drop_sound = 'sound/items/handling/matchbox_drop.ogg'
+ pickup_sound = 'sound/items/handling/matchbox_pickup.ogg'
/obj/item/storage/box/matches/ComponentInitialize()
. = ..()
diff --git a/code/game/objects/items/storage/toolbox.dm b/code/game/objects/items/storage/toolbox.dm
index 13ad5cbb..c8fa3050 100644
--- a/code/game/objects/items/storage/toolbox.dm
+++ b/code/game/objects/items/storage/toolbox.dm
@@ -16,6 +16,8 @@ GLOBAL_LIST_EMPTY(rubber_toolbox_icons)
materials = list(MAT_METAL = 500)
attack_verb = list("robusted")
hitsound = 'sound/weapons/smash.ogg'
+ drop_sound = 'sound/items/handling/toolbox_drop.ogg'
+ pickup_sound = 'sound/items/handling/toolbox_pickup.ogg'
var/latches = "single_latch"
var/has_latches = TRUE
var/can_rubberify = TRUE
diff --git a/code/game/objects/items/tools/crowbar.dm b/code/game/objects/items/tools/crowbar.dm
index ae86295a..74327fca 100644
--- a/code/game/objects/items/tools/crowbar.dm
+++ b/code/game/objects/items/tools/crowbar.dm
@@ -13,6 +13,9 @@
w_class = WEIGHT_CLASS_SMALL
materials = list(MAT_METAL=50)
+ drop_sound = 'sound/items/handling/crowbar_drop.ogg'
+ pickup_sound = 'sound/items/handling/crowbar_pickup.ogg'
+
attack_verb = list("attacked", "bashed", "battered", "bludgeoned", "whacked")
tool_behaviour = TOOL_CROWBAR
toolspeed = 1
diff --git a/code/game/objects/items/tools/screwdriver.dm b/code/game/objects/items/tools/screwdriver.dm
index e0f31486..ceb0a804 100644
--- a/code/game/objects/items/tools/screwdriver.dm
+++ b/code/game/objects/items/tools/screwdriver.dm
@@ -19,6 +19,8 @@
usesound = list('sound/items/screwdriver.ogg', 'sound/items/screwdriver2.ogg')
tool_behaviour = TOOL_SCREWDRIVER
toolspeed = 1
+ drop_sound = 'sound/items/handling/screwdriver_drop.ogg'
+ pickup_sound = 'sound/items/handling/screwdriver_pickup.ogg'
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 30)
var/random_color = TRUE //if the screwdriver uses random coloring
var/static/list/screwdriver_colors = list(
diff --git a/code/game/objects/items/tools/weldingtool.dm b/code/game/objects/items/tools/weldingtool.dm
index f880a7c5..9b43af28 100644
--- a/code/game/objects/items/tools/weldingtool.dm
+++ b/code/game/objects/items/tools/weldingtool.dm
@@ -34,6 +34,9 @@
tool_behaviour = TOOL_WELDER
toolspeed = 1
+ drop_sound = 'sound/items/handling/weldingtool_drop.ogg'
+ pickup_sound = 'sound/items/handling/weldingtool_pickup.ogg'
+
/obj/item/weldingtool/Initialize()
. = ..()
create_reagents(max_fuel)
diff --git a/code/game/objects/items/tools/wirecutters.dm b/code/game/objects/items/tools/wirecutters.dm
index 8586fd47..f8cc2556 100644
--- a/code/game/objects/items/tools/wirecutters.dm
+++ b/code/game/objects/items/tools/wirecutters.dm
@@ -17,6 +17,9 @@
hitsound = 'sound/items/wirecutter.ogg'
usesound = 'sound/items/wirecutter.ogg'
+ drop_sound = 'sound/items/handling/wirecutter_drop.ogg'
+ pickup_sound = 'sound/items/handling/wirecutter_pickup.ogg'
+
tool_behaviour = TOOL_WIRECUTTER
toolspeed = 1
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 30)
diff --git a/code/game/objects/items/tools/wrench.dm b/code/game/objects/items/tools/wrench.dm
index 3e880edb..6ae950da 100644
--- a/code/game/objects/items/tools/wrench.dm
+++ b/code/game/objects/items/tools/wrench.dm
@@ -13,6 +13,9 @@
usesound = 'sound/items/ratchet.ogg'
materials = list(MAT_METAL=150)
+ drop_sound = 'sound/items/handling/wrench_drop.ogg'
+ pickup_sound = 'sound/items/handling/wrench_pickup.ogg'
+
attack_verb = list("bashed", "battered", "bludgeoned", "whacked")
tool_behaviour = TOOL_WRENCH
toolspeed = 1
diff --git a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm
index 0d815703..17611e2f 100644
--- a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm
+++ b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm
@@ -609,6 +609,8 @@ This is here to make the tiles around the station mininuke change when it's arme
lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi'
icon_state = "datadisk0"
+ drop_sound = 'sound/items/handling/disk_drop.ogg'
+ pickup_sound = 'sound/items/handling/disk_pickup.ogg'
/obj/item/disk/nuclear
name = "nuclear authentication disk"
diff --git a/code/modules/clothing/suits/_suits.dm b/code/modules/clothing/suits/_suits.dm
index 950074f3..35cac248 100644
--- a/code/modules/clothing/suits/_suits.dm
+++ b/code/modules/clothing/suits/_suits.dm
@@ -10,6 +10,8 @@
var/togglename = null
var/suittoggled = FALSE
+ drop_sound = 'sound/items/handling/cloth_drop.ogg'
+ pickup_sound = 'sound/items/handling/cloth_pickup.ogg'
var/adjusted = NORMAL_STYLE
mutantrace_variation = MUTANTRACE_VARIATION
var/tauric = FALSE //Citadel Add for tauric hardsuits
diff --git a/code/modules/clothing/under/_under.dm b/code/modules/clothing/under/_under.dm
index d581f8b2..3a570607 100644
--- a/code/modules/clothing/under/_under.dm
+++ b/code/modules/clothing/under/_under.dm
@@ -18,6 +18,9 @@
mutantrace_variation = MUTANTRACE_VARIATION //Are there special sprites for specific situations? Don't use this unless you need to.
equip_sound = 'sound/items/equip/jumpsuit_equip.ogg'
+ drop_sound = 'sound/items/handling/cloth_drop.ogg'
+ pickup_sound = 'sound/items/handling/cloth_pickup.ogg'
+
/obj/item/clothing/under/worn_overlays(isinhands = FALSE)
. = list()
if(!isinhands)
diff --git a/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm b/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm
index fcd4d57b..95b3e8db 100644
--- a/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm
+++ b/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm
@@ -12,6 +12,9 @@
resistance_flags = ACID_PROOF
obj_flags = UNIQUE_RENAME
+ drop_sound = 'sound/items/handling/drinkglass_drop.ogg'
+ pickup_sound = 'sound/items/handling/drinkglass_pickup.ogg'
+
/obj/item/reagent_containers/food/drinks/drinkingglass/on_reagent_change(changetype)
cut_overlays()
if(reagents.reagent_list.len)
diff --git a/code/modules/library/lib_items.dm b/code/modules/library/lib_items.dm
index 892bab04..aa7f87bf 100644
--- a/code/modules/library/lib_items.dm
+++ b/code/modules/library/lib_items.dm
@@ -193,6 +193,8 @@
var/unique = 0 //0 - Normal book, 1 - Should not be treated as normal book, unable to be copied, unable to be modified
var/title //The real name of the book.
var/window_size = null // Specific window size for the book, i.e: "1920x1080", Size x Width
+ drop_sound = 'sound/items/handling/book_drop.ogg'
+ pickup_sound = 'sound/items/handling/book_pickup.ogg'
/obj/item/book/attack_self(mob/user)
if(is_blind(user))
diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm
index 71fdf998..b869df35 100644
--- a/code/modules/mob/living/living_defense.dm
+++ b/code/modules/mob/living/living_defense.dm
@@ -105,7 +105,7 @@
return
/mob/living/proc/can_embed(obj/item/I)
- return FALSE
+ return FALSE
/mob/living/hitby(atom/movable/AM, skipcatch, hitpush = TRUE, blocked = FALSE, datum/thrownthing/throwingdatum)
var/obj/item/I
@@ -126,22 +126,10 @@
return TRUE
var/zone = ran_zone(BODY_ZONE_CHEST, 65)//Hits a random part of the body, geared towards the chest
var/dtype = BRUTE
- var/volume = I.get_volume_by_throwforce_and_or_w_class()
+
SEND_SIGNAL(I, COMSIG_MOVABLE_IMPACT_ZONE, src, zone)
dtype = I.damtype
- if (I.throwforce > 0) //If the weapon's throwforce is greater than zero...
- if (I.throwhitsound) //...and throwhitsound is defined...
- playsound(loc, I.throwhitsound, volume, 1, -1) //...play the weapon's throwhitsound.
- else if(I.hitsound) //Otherwise, if the weapon's hitsound is defined...
- playsound(loc, I.hitsound, volume, 1, -1) //...play the weapon's hitsound.
- else if(!I.throwhitsound) //Otherwise, if throwhitsound isn't defined...
- playsound(loc, 'sound/weapons/genhit.ogg',volume, 1, -1) //...play genhit.ogg.
-
- else if(!I.throwhitsound && I.throwforce > 0) //Otherwise, if the item doesn't have a throwhitsound and has a throwforce greater than zero...
- playsound(loc, 'sound/weapons/genhit.ogg', volume, 1, -1)//...play genhit.ogg
- if(!I.throwforce)// Otherwise, if the item's throwforce is 0...
- playsound(loc, 'sound/weapons/throwtap.ogg', 1, volume, -1)//...play throwtap.ogg.
if(!blocked)
visible_message("[src] has been hit by [I].", \
"[src] has been hit by [I].")
@@ -397,7 +385,7 @@
if (INTENT_GRAB)
grabbedby(M)
return FALSE
- if(INTENT_HARM)
+ if(INTENT_HARM)
if(HAS_TRAIT(M, TRAIT_PACIFISM))
to_chat(M, "You don't want to hurt anyone!")
return FALSE
diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm
index 7eb1d72b..f615e82d 100644
--- a/code/modules/paperwork/paper.dm
+++ b/code/modules/paperwork/paper.dm
@@ -23,6 +23,9 @@
dog_fashion = /datum/dog_fashion/head
grind_results = list(/datum/reagent/cellulose = 2)
+ drop_sound = 'sound/items/handling/paper_drop.ogg'
+ pickup_sound = 'sound/items/handling/paper_pickup.ogg'
+
var/info //What's actually written on the paper.
var/info_links //A different version of the paper which includes html links at fields and EOF
var/stamps //The (text for the) stamps on the paper.
@@ -143,6 +146,7 @@
var/locid = 0
var/laststart = 1
var/textindex = 1
+ playsound(src, 'sound/items/handling/writing.ogg', 50, 1, -1)
while(locid < 15) //hey whoever decided a while(1) was a good idea here, i hate you
var/istart = 0
if(links)
diff --git a/code/modules/surgery/tools.dm b/code/modules/surgery/tools.dm
index 9f670ecb..909ac3f0 100644
--- a/code/modules/surgery/tools.dm
+++ b/code/modules/surgery/tools.dm
@@ -238,7 +238,6 @@
lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
hitsound = 'sound/weapons/circsawhit.ogg'
- throwhitsound = 'sound/weapons/pierce.ogg'
item_flags = SURGICAL_TOOL
flags_1 = CONDUCT_1
force = 15
@@ -251,6 +250,7 @@
sharpness = IS_SHARP
tool_behaviour = TOOL_SAW
toolspeed = 1
+ mob_throw_hit_sound = 'sound/weapons/pierce.ogg'
/obj/item/circular_saw/Initialize()
. = ..()
@@ -263,7 +263,6 @@
icon = 'icons/obj/surgery.dmi'
icon_state = "saw"
hitsound = 'sound/weapons/circsawhit.ogg'
- throwhitsound = 'sound/weapons/pierce.ogg'
flags_1 = CONDUCT_1
force = 10
w_class = WEIGHT_CLASS_SMALL
diff --git a/sound/items/handling/ammobox_drop.ogg b/sound/items/handling/ammobox_drop.ogg
new file mode 100644
index 00000000..13fce70f
Binary files /dev/null and b/sound/items/handling/ammobox_drop.ogg differ
diff --git a/sound/items/handling/ammobox_pickup.ogg b/sound/items/handling/ammobox_pickup.ogg
new file mode 100644
index 00000000..9532a769
Binary files /dev/null and b/sound/items/handling/ammobox_pickup.ogg differ
diff --git a/sound/items/handling/book_drop.ogg b/sound/items/handling/book_drop.ogg
new file mode 100644
index 00000000..b492b665
Binary files /dev/null and b/sound/items/handling/book_drop.ogg differ
diff --git a/sound/items/handling/book_pickup.ogg b/sound/items/handling/book_pickup.ogg
new file mode 100644
index 00000000..120a4e47
Binary files /dev/null and b/sound/items/handling/book_pickup.ogg differ
diff --git a/sound/items/handling/cardboardbox_drop.ogg b/sound/items/handling/cardboardbox_drop.ogg
new file mode 100644
index 00000000..7070ba1c
Binary files /dev/null and b/sound/items/handling/cardboardbox_drop.ogg differ
diff --git a/sound/items/handling/cardboardbox_pickup.ogg b/sound/items/handling/cardboardbox_pickup.ogg
new file mode 100644
index 00000000..aa4e7212
Binary files /dev/null and b/sound/items/handling/cardboardbox_pickup.ogg differ
diff --git a/sound/items/handling/cloth_drop.ogg b/sound/items/handling/cloth_drop.ogg
new file mode 100644
index 00000000..5bf734ca
Binary files /dev/null and b/sound/items/handling/cloth_drop.ogg differ
diff --git a/sound/items/handling/cloth_pickup.ogg b/sound/items/handling/cloth_pickup.ogg
new file mode 100644
index 00000000..f4698888
Binary files /dev/null and b/sound/items/handling/cloth_pickup.ogg differ
diff --git a/sound/items/handling/component_drop.ogg b/sound/items/handling/component_drop.ogg
new file mode 100644
index 00000000..093fde7c
Binary files /dev/null and b/sound/items/handling/component_drop.ogg differ
diff --git a/sound/items/handling/component_pickup.ogg b/sound/items/handling/component_pickup.ogg
new file mode 100644
index 00000000..cfaba1dd
Binary files /dev/null and b/sound/items/handling/component_pickup.ogg differ
diff --git a/sound/items/handling/crowbar_drop.ogg b/sound/items/handling/crowbar_drop.ogg
new file mode 100644
index 00000000..77464110
Binary files /dev/null and b/sound/items/handling/crowbar_drop.ogg differ
diff --git a/sound/items/handling/crowbar_pickup.ogg b/sound/items/handling/crowbar_pickup.ogg
new file mode 100644
index 00000000..79b276f8
Binary files /dev/null and b/sound/items/handling/crowbar_pickup.ogg differ
diff --git a/sound/items/handling/disk_drop.ogg b/sound/items/handling/disk_drop.ogg
new file mode 100644
index 00000000..3174b881
Binary files /dev/null and b/sound/items/handling/disk_drop.ogg differ
diff --git a/sound/items/handling/disk_pickup.ogg b/sound/items/handling/disk_pickup.ogg
new file mode 100644
index 00000000..8f67406a
Binary files /dev/null and b/sound/items/handling/disk_pickup.ogg differ
diff --git a/sound/items/handling/drinkglass_drop.ogg b/sound/items/handling/drinkglass_drop.ogg
new file mode 100644
index 00000000..caf582e6
Binary files /dev/null and b/sound/items/handling/drinkglass_drop.ogg differ
diff --git a/sound/items/handling/drinkglass_pickup.ogg b/sound/items/handling/drinkglass_pickup.ogg
new file mode 100644
index 00000000..83f6cefc
Binary files /dev/null and b/sound/items/handling/drinkglass_pickup.ogg differ
diff --git a/sound/items/handling/matchbox_drop.ogg b/sound/items/handling/matchbox_drop.ogg
new file mode 100644
index 00000000..8e4e276c
Binary files /dev/null and b/sound/items/handling/matchbox_drop.ogg differ
diff --git a/sound/items/handling/matchbox_pickup.ogg b/sound/items/handling/matchbox_pickup.ogg
new file mode 100644
index 00000000..82c23410
Binary files /dev/null and b/sound/items/handling/matchbox_pickup.ogg differ
diff --git a/sound/items/handling/multitool_drop.ogg b/sound/items/handling/multitool_drop.ogg
new file mode 100644
index 00000000..67e0a410
Binary files /dev/null and b/sound/items/handling/multitool_drop.ogg differ
diff --git a/sound/items/handling/multitool_pickup.ogg b/sound/items/handling/multitool_pickup.ogg
new file mode 100644
index 00000000..cbd598ce
Binary files /dev/null and b/sound/items/handling/multitool_pickup.ogg differ
diff --git a/sound/items/handling/paper_drop.ogg b/sound/items/handling/paper_drop.ogg
new file mode 100644
index 00000000..27ce2b3d
Binary files /dev/null and b/sound/items/handling/paper_drop.ogg differ
diff --git a/sound/items/handling/paper_pickup.ogg b/sound/items/handling/paper_pickup.ogg
new file mode 100644
index 00000000..55ae2b3d
Binary files /dev/null and b/sound/items/handling/paper_pickup.ogg differ
diff --git a/sound/items/handling/screwdriver_drop.ogg b/sound/items/handling/screwdriver_drop.ogg
new file mode 100644
index 00000000..d460fd0a
Binary files /dev/null and b/sound/items/handling/screwdriver_drop.ogg differ
diff --git a/sound/items/handling/screwdriver_pickup.ogg b/sound/items/handling/screwdriver_pickup.ogg
new file mode 100644
index 00000000..368f1bfd
Binary files /dev/null and b/sound/items/handling/screwdriver_pickup.ogg differ
diff --git a/sound/items/handling/tape_drop.ogg b/sound/items/handling/tape_drop.ogg
new file mode 100644
index 00000000..5379a114
Binary files /dev/null and b/sound/items/handling/tape_drop.ogg differ
diff --git a/sound/items/handling/tape_pickup.ogg b/sound/items/handling/tape_pickup.ogg
new file mode 100644
index 00000000..77f74f19
Binary files /dev/null and b/sound/items/handling/tape_pickup.ogg differ
diff --git a/sound/items/handling/taperecorder_drop.ogg b/sound/items/handling/taperecorder_drop.ogg
new file mode 100644
index 00000000..6e3c1511
Binary files /dev/null and b/sound/items/handling/taperecorder_drop.ogg differ
diff --git a/sound/items/handling/taperecorder_pickup.ogg b/sound/items/handling/taperecorder_pickup.ogg
new file mode 100644
index 00000000..941640ae
Binary files /dev/null and b/sound/items/handling/taperecorder_pickup.ogg differ
diff --git a/sound/items/handling/toolbelt_drop.ogg b/sound/items/handling/toolbelt_drop.ogg
new file mode 100644
index 00000000..2a3c4655
Binary files /dev/null and b/sound/items/handling/toolbelt_drop.ogg differ
diff --git a/sound/items/handling/toolbelt_pickup.ogg b/sound/items/handling/toolbelt_pickup.ogg
new file mode 100644
index 00000000..58e5d259
Binary files /dev/null and b/sound/items/handling/toolbelt_pickup.ogg differ
diff --git a/sound/items/handling/toolbox_drop.ogg b/sound/items/handling/toolbox_drop.ogg
new file mode 100644
index 00000000..abf56946
Binary files /dev/null and b/sound/items/handling/toolbox_drop.ogg differ
diff --git a/sound/items/handling/toolbox_pickup.ogg b/sound/items/handling/toolbox_pickup.ogg
new file mode 100644
index 00000000..01a4ab4b
Binary files /dev/null and b/sound/items/handling/toolbox_pickup.ogg differ
diff --git a/sound/items/handling/weldingtool_drop.ogg b/sound/items/handling/weldingtool_drop.ogg
new file mode 100644
index 00000000..58b722ad
Binary files /dev/null and b/sound/items/handling/weldingtool_drop.ogg differ
diff --git a/sound/items/handling/weldingtool_pickup.ogg b/sound/items/handling/weldingtool_pickup.ogg
new file mode 100644
index 00000000..da78b06b
Binary files /dev/null and b/sound/items/handling/weldingtool_pickup.ogg differ
diff --git a/sound/items/handling/wirecutter_drop.ogg b/sound/items/handling/wirecutter_drop.ogg
new file mode 100644
index 00000000..e099870f
Binary files /dev/null and b/sound/items/handling/wirecutter_drop.ogg differ
diff --git a/sound/items/handling/wirecutter_pickup.ogg b/sound/items/handling/wirecutter_pickup.ogg
new file mode 100644
index 00000000..078faaf4
Binary files /dev/null and b/sound/items/handling/wirecutter_pickup.ogg differ
diff --git a/sound/items/handling/wrench_drop.ogg b/sound/items/handling/wrench_drop.ogg
new file mode 100644
index 00000000..86020bf8
Binary files /dev/null and b/sound/items/handling/wrench_drop.ogg differ
diff --git a/sound/items/handling/wrench_pickup.ogg b/sound/items/handling/wrench_pickup.ogg
new file mode 100644
index 00000000..860e0d70
Binary files /dev/null and b/sound/items/handling/wrench_pickup.ogg differ
diff --git a/sound/items/handling/writing.ogg b/sound/items/handling/writing.ogg
new file mode 100644
index 00000000..dba98b57
Binary files /dev/null and b/sound/items/handling/writing.ogg differ
diff --git a/sound/voice/radio.ogg b/sound/voice/radio.ogg
index 395980cf..f01198c1 100644
Binary files a/sound/voice/radio.ogg and b/sound/voice/radio.ogg differ