diff --git a/code/__defines/sound.dm b/code/__defines/sound.dm index a9b7ed75ce5..7866b21779f 100644 --- a/code/__defines/sound.dm +++ b/code/__defines/sound.dm @@ -35,3 +35,8 @@ #define SMALL_SOFTFLOOR ROOM #define ASTEROID CAVE #define SPACE UNDERWATER + +#define EQUIP_SOUND_VOLUME 30 +#define PICKUP_SOUND_VOLUME 15 +// Multiplied by item's weight class +#define INITIAL_THROW_IMPACT_SOUND_VOLUME 15 diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 59e4f9cfe5b..9e6668a97d9 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -219,7 +219,7 @@ L.source_atom.update_light() //called when src is thrown into hit_atom -/atom/movable/proc/throw_impact(atom/hit_atom, var/datum/thrownthing/TT) +/atom/movable/proc/throw_impact(atom/hit_atom, datum/thrownthing/TT) if(istype(hit_atom,/mob/living)) var/mob/living/M = hit_atom M.hitby(src,TT) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index ad86d6c6d95..52e3ee12d86 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -10,6 +10,14 @@ var/burn_point = null var/burning = null var/hitsound = "swing_hit" + /// Sound that is played on throw impact with a living mob + var/mob_throw_hit_sound = null + /// Sound that is played on throw impact with anything other than a living mob + var/throw_impact_sound = null + /// Sound that is played whenever the item is equipped in hands + var/pickup_sound = null + /// Sound that is played whenever the item is equipped in its defined slot + var/equip_sound = null var/slot_flags = 0 //This is used to determine on which slots an item can fit. var/no_attack_log = FALSE //If it's an item we don't want to log attack_logs with, set this to 1 pass_flags = PASS_FLAG_TABLE @@ -325,12 +333,14 @@ // slot uses the slot_X defines found in setup.dm // for items that can be placed in multiple slots // note this isn't called during the initial dressing of a player -/obj/item/proc/equipped(var/mob/user, var/slot) +/obj/item/proc/equipped(mob/user, slot) hud_layerise() - if(user.client) user.client.screen |= src - if(user.pulling == src) user.stop_pulling() + if(user.client) + user.client.screen |= src + if(user.pulling == src) + user.stop_pulling() - //Update two-handing status + // Update two-handing status var/mob/M = loc if(!istype(M)) return @@ -339,6 +349,14 @@ if(M.r_hand) M.r_hand.update_twohanding() + // Sounds + if(equip_sound && ("[slot]" in slot_flags_enumeration)) + var/req_flags = slot_flags_enumeration["[slot]"] + if((req_flags & slot_flags)) + playsound(src, equip_sound, EQUIP_SOUND_VOLUME, TRUE, ignore_walls = FALSE) + else if(slot == slot_l_hand || slot == slot_r_hand) + playsound(src, pickup_sound, PICKUP_SOUND_VOLUME, ignore_walls = FALSE) + //Defines which slots correspond to which slot flags var/list/global/slot_flags_enumeration = list( "[slot_wear_mask]" = SLOT_MASK, @@ -362,10 +380,13 @@ var/list/global/slot_flags_enumeration = list( //Should probably move the bulk of this into mob code some time, as most of it is related to the definition of slots and not item-specific //set force to ignore blocking overwear and occupied slots /obj/item/proc/mob_can_equip(M as mob, slot, disable_warning = 0, force = 0) - if(!slot) return 0 - if(!M) return 0 + if(!slot) + return FALSE + if(!M) + return FALSE - if(!ishuman(M)) return 0 + if(!ishuman(M)) + return FALSE var/mob/living/carbon/human/H = M var/list/mob_equip = list() @@ -373,13 +394,13 @@ var/list/global/slot_flags_enumeration = list( mob_equip = H.species.hud.equip_slots if(H.species && !(slot in mob_equip)) - return 0 + return FALSE //First check if the item can be equipped to the desired slot. if("[slot]" in slot_flags_enumeration) var/req_flags = slot_flags_enumeration["[slot]"] if(!(req_flags & slot_flags)) - return 0 + return FALSE if(!force) //Next check that the slot is free @@ -892,6 +913,30 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out. attack_self(user) return TRUE +/obj/item/throw_impact(atom/hit_atom, datum/thrownthing/TT) + if(QDELETED(hit_atom)) + return + + . = ..() + var/volume = GetThrownSoundVolume() + var/turf/sound_turf = get_turf(src) + //Living mobs handle thrown sounds differently. + if(istype(hit_atom, /mob/living)) + sound_turf = get_turf(hit_atom) + if(throwforce > 0) + if(mob_throw_hit_sound) + playsound(sound_turf, mob_throw_hit_sound, volume, FALSE, -1) + else if(hitsound) + playsound(sound_turf, hitsound, volume, FALSE, -1) + else if(throw_impact_sound) + playsound(sound_turf, throw_impact_sound, volume, FALSE, -1) + + else if(throw_impact_sound) + playsound(sound_turf, throw_impact_sound, volume, FALSE, -1) + +/obj/item/proc/GetThrownSoundVolume() + return min(INITIAL_THROW_IMPACT_SOUND_VOLUME * w_class, 100) + /obj/item/proc/inherit_custom_item_data(var/datum/custom_item/citem) . = src if(citem.item_name) diff --git a/code/game/objects/items/devices/flash.dm b/code/game/objects/items/devices/flash.dm index bbd95204ac4..5e70f0b848f 100644 --- a/code/game/objects/items/devices/flash.dm +++ b/code/game/objects/items/devices/flash.dm @@ -10,6 +10,9 @@ obj_flags = OBJ_FLAG_CONDUCTIBLE origin_tech = list(TECH_MAGNET = 2, TECH_COMBAT = 1) + pickup_sound = 'sound/items/handling/component_pickup.ogg' + throw_impact_sound = 'sound/items/handling/component_drop.ogg' + var/times_used = 0 //Number of times it's been used. var/broken = 0 //Is the flash burnt out? var/last_used = 0 //last world.time it was used. diff --git a/code/game/objects/items/devices/multitool.dm b/code/game/objects/items/devices/multitool.dm index a2b781e5e92..7549408fa3c 100644 --- a/code/game/objects/items/devices/multitool.dm +++ b/code/game/objects/items/devices/multitool.dm @@ -18,6 +18,9 @@ origin_tech = list(TECH_MAGNET = 1, TECH_ENGINEERING = 1) + pickup_sound = 'sound/items/handling/multitool_pickup.ogg' + throw_impact_sound = 'sound/items/handling/multitool_drop.ogg' + var/buffer_name var/atom/buffer_object diff --git a/code/game/objects/items/devices/scanners/_scanner.dm b/code/game/objects/items/devices/scanners/_scanner.dm index 7414fb8dc63..38067ad7ebb 100644 --- a/code/game/objects/items/devices/scanners/_scanner.dm +++ b/code/game/objects/items/devices/scanners/_scanner.dm @@ -8,6 +8,10 @@ slot_flags = SLOT_BELT item_flags = ITEM_FLAG_NO_BLUDGEON matter = list(MATERIAL_ALUMINIUM = 30,MATERIAL_GLASS = 20) + + pickup_sound = 'sound/items/handling/component_pickup.ogg' + throw_impact_sound = 'sound/items/handling/component_drop.ogg' + var/scan_title var/scan_data //For displaying scans diff --git a/code/game/objects/items/weapons/material/coins.dm b/code/game/objects/items/weapons/material/coins.dm index 712348cc3f0..ea6dfa245db 100644 --- a/code/game/objects/items/weapons/material/coins.dm +++ b/code/game/objects/items/weapons/material/coins.dm @@ -11,11 +11,11 @@ thrown_force_multiplier = 0.1 w_class = 1 slot_flags = SLOT_EARS + + throw_impact_sound = 'sound/effects/coin_flip2.ogg' var/string_colour // Sound played when used in hand to "flip" it var/flip_sound = 'sound/effects/coin_flip1.ogg' - // Sound played on thrown impact - var/fall_sound = 'sound/effects/coin_flip2.ogg' // How loud are the sounds produced by it var/sound_volume = 35 @@ -38,27 +38,22 @@ var/obj/item/stack/cable_coil/CC = W if(CC.use(1)) string_colour = CC.color - to_chat(user, "You attach a string to the coin.") + to_chat(user, SPAN_NOTICE("You attach a string to the coin.")) update_icon() return else if(isWirecutter(W) && !isnull(string_colour)) new /obj/item/stack/cable_coil/single(get_turf(user)) string_colour = null - to_chat(user, "You detach the string from the coin.") + to_chat(user, SPAN_NOTICE("You detach the string from the coin.")) update_icon() else ..() /obj/item/material/coin/attack_self(mob/user) - user.visible_message("\The [user] has thrown \the [src]. It lands on [rand(1, 2) == 1 ? "tails" : "heads"]!") + user.visible_message(SPAN_NOTICE("\The [user] has thrown \the [src]. It lands on [rand(1, 2) == 1 ? "tails" : "heads"]!")) playsound(user, flip_sound, sound_volume, TRUE) -/obj/item/material/coin/throw_impact(atom/hit_atom, datum/thrownthing/TT) - . = ..() - var/turf/T = get_turf(hit_atom) - if(!istype(T)) - return - - playsound(T, fall_sound, sound_volume, TRUE) +/obj/item/material/coin/GetThrownSoundVolume() + return sound_volume // Subtypes. /obj/item/material/coin/gold diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm index d63f2054f72..e05ae153ddf 100644 --- a/code/game/objects/items/weapons/storage/belt.dm +++ b/code/game/objects/items/weapons/storage/belt.dm @@ -13,6 +13,8 @@ slot_flags = SLOT_BELT var/overlay_flags attack_verb = list("whipped", "lashed", "disciplined") + equip_sound = 'sound/items/equip/toolbelt_equip.ogg' + throw_impact_sound = 'sound/items/handling/toolbelt_drop.ogg' /obj/item/storage/belt/verb/toggle_layer() set name = "Switch Belt Layer" @@ -131,8 +133,9 @@ /obj/item/clothing/gloves, /obj/item/tape_roll, /obj/item/clothing/head/beret, - /obj/item/material/knife/folding/ + /obj/item/material/knife/folding, ) + pickup_sound = 'sound/items/handling/toolbelt_pickup.ogg' /obj/item/storage/belt/utility/full/New() diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm index 7038cd2e7cd..c51e06b8641 100644 --- a/code/game/objects/items/weapons/storage/boxes.dm +++ b/code/game/objects/items/weapons/storage/boxes.dm @@ -26,6 +26,9 @@ item_state = "syringe_kit" max_storage_space = DEFAULT_BOX_STORAGE use_sound = 'sound/effects/storage/box.ogg' + pickup_sound = 'sound/items/handling/cardboardbox_pickup.ogg' + throw_impact_sound = 'sound/items/handling/cardboardbox_drop.ogg' + var/foldable = /obj/item/stack/material/cardboard // BubbleWrap - if set, can be folded (when empty) into a sheet of cardboard /obj/item/storage/box/large @@ -190,6 +193,8 @@ icon_state = "ammo" desc = "A sturdy metal box with several warning symbols on the front.
WARNING: Live ammunition. Misuse may result in serious injury or death." use_sound = 'sound/effects/closet_open.ogg' + pickup_sound = 'sound/items/handling/ammobox_pickup.ogg' + throw_impact_sound = 'sound/items/handling/ammobox_drop.ogg' /obj/item/storage/box/ammo/blanks name = "box of blank shells" diff --git a/code/game/objects/items/weapons/storage/toolbox.dm b/code/game/objects/items/weapons/storage/toolbox.dm index 34cefa29cd5..3929142f004 100644 --- a/code/game/objects/items/weapons/storage/toolbox.dm +++ b/code/game/objects/items/weapons/storage/toolbox.dm @@ -17,6 +17,8 @@ origin_tech = list(TECH_COMBAT = 1) attack_verb = list("robusted") use_sound = 'sound/effects/storage/toolbox.ogg' + throw_impact_sound = 'sound/items/handling/toolbox_drop.ogg' + pickup_sound = 'sound/items/handling/toolbox_pickup.ogg' matter = list(MATERIAL_STEEL = 5000) /obj/item/storage/toolbox/emergency diff --git a/code/game/objects/items/weapons/tools/crowbar.dm b/code/game/objects/items/weapons/tools/crowbar.dm index fc27ea63ac0..164b625b1f9 100644 --- a/code/game/objects/items/weapons/tools/crowbar.dm +++ b/code/game/objects/items/weapons/tools/crowbar.dm @@ -16,6 +16,8 @@ matter = list(MATERIAL_STEEL = 140) center_of_mass = "x=16;y=20" attack_verb = list("attacked", "bashed", "battered", "bludgeoned", "whacked") + throw_impact_sound = 'sound/items/handling/crowbar_drop.ogg' + pickup_sound = 'sound/items/handling/crowbar_pickup.ogg' /obj/item/crowbar/red icon_state = "red_crowbar" diff --git a/code/game/objects/items/weapons/tools/screwdriver.dm b/code/game/objects/items/weapons/tools/screwdriver.dm index 9a361a3f7db..c7be757a4fb 100644 --- a/code/game/objects/items/weapons/tools/screwdriver.dm +++ b/code/game/objects/items/weapons/tools/screwdriver.dm @@ -16,6 +16,8 @@ attack_verb = list("stabbed") lock_picking_level = 5 sharp = TRUE + throw_impact_sound = 'sound/items/handling/screwdriver_drop.ogg' + pickup_sound = 'sound/items/handling/screwdriver_pickup.ogg' var/build_from_parts = TRUE var/valid_colours = list(COLOR_RED, COLOR_CYAN_BLUE, COLOR_PURPLE, COLOR_CHESTNUT, COLOR_GREEN, COLOR_TEAL, COLOR_ASSEMBLY_YELLOW, COLOR_BOTTLE_GREEN, COLOR_VIOLET, COLOR_GRAY80, COLOR_GRAY20) diff --git a/code/game/objects/items/weapons/tools/weldingtool.dm b/code/game/objects/items/weapons/tools/weldingtool.dm index 192a562adb8..d7e436e7ae4 100644 --- a/code/game/objects/items/weapons/tools/weldingtool.dm +++ b/code/game/objects/items/weapons/tools/weldingtool.dm @@ -15,6 +15,8 @@ w_class = ITEM_SIZE_SMALL matter = list(MATERIAL_STEEL = 70, MATERIAL_GLASS = 30) origin_tech = list(TECH_ENGINEERING = 1) + throw_impact_sound = 'sound/items/handling/weldingtool_drop.ogg' + pickup_sound = 'sound/items/handling/weldingtool_pickup.ogg' var/welding = 0 //Whether or not the welding tool is off(0), on(1) or currently welding(2) var/status = 1 //Whether the welder is secured or unsecured (able to attach rods to it to make a flamethrower) diff --git a/code/game/objects/items/weapons/tools/wirecutter.dm b/code/game/objects/items/weapons/tools/wirecutter.dm index 0388fef02c3..f1d5122cfcc 100644 --- a/code/game/objects/items/weapons/tools/wirecutter.dm +++ b/code/game/objects/items/weapons/tools/wirecutter.dm @@ -16,6 +16,8 @@ attack_verb = list("pinched", "nipped") sharp = TRUE edge = TRUE + throw_impact_sound = 'sound/items/handling/wirecutter_drop.ogg' + pickup_sound = 'sound/items/handling/wirecutter_pickup.ogg' var/build_from_parts = TRUE var/handle_icon = "cutters_handle" diff --git a/code/game/objects/items/weapons/tools/wrench.dm b/code/game/objects/items/weapons/tools/wrench.dm index 30329152820..f550841e0d4 100644 --- a/code/game/objects/items/weapons/tools/wrench.dm +++ b/code/game/objects/items/weapons/tools/wrench.dm @@ -13,6 +13,8 @@ matter = list(MATERIAL_STEEL = 150) center_of_mass = "x=17;y=16" attack_verb = list("bashed", "battered", "bludgeoned", "whacked") + throw_impact_sound = 'sound/items/handling/wrench_drop.ogg' + pickup_sound = 'sound/items/handling/wrench_pickup.ogg' /obj/item/wrench/Initialize() icon_state = "wrench[pick("","_red","_black","_green","_blue")]" diff --git a/code/modules/assembly/assembly.dm b/code/modules/assembly/assembly.dm index bac28e99242..cbd12cb6a0b 100644 --- a/code/modules/assembly/assembly.dm +++ b/code/modules/assembly/assembly.dm @@ -11,6 +11,9 @@ throw_range = 10 origin_tech = list(TECH_MAGNET = 1) + pickup_sound = 'sound/items/handling/component_pickup.ogg' + throw_impact_sound = 'sound/items/handling/component_drop.ogg' + var/secured = 1 var/list/attached_overlays = null var/obj/item/device/assembly_holder/holder = null diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 1c5b91911f2..42532335b02 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -1,6 +1,7 @@ /obj/item/clothing name = "clothing" siemens_coefficient = 0.9 + var/flash_protection = FLASH_PROTECTION_NONE // Sets the item's level of flash protection. var/tint = TINT_NONE // Sets the item's level of visual impairment tint. var/list/species_restricted = list( @@ -801,6 +802,10 @@ BLIND // can't see anything slot_flags = SLOT_ICLOTHING w_class = ITEM_SIZE_NORMAL force = 0 + equip_sound = 'sound/items/equip/jumpsuit_equip.ogg' + pickup_sound = 'sound/items/handling/cloth_pickup.ogg' + throw_impact_sound = 'sound/items/handling/cloth_drop.ogg' + var/has_sensor = SUIT_HAS_SENSORS //For the crew computer 2 = unable to change mode var/sensor_mode = SUIT_SENSOR_OFF /* diff --git a/code/modules/library/lib_items.dm b/code/modules/library/lib_items.dm index 9bdde9ca726..feda89782a3 100644 --- a/code/modules/library/lib_items.dm +++ b/code/modules/library/lib_items.dm @@ -142,6 +142,9 @@ throw_range = 5 w_class = ITEM_SIZE_NORMAL //upped to three because books are, y'know, pretty big. (and you could hide them inside eachother recursively forever) attack_verb = list("bashed", "whacked", "educated") + pickup_sound = 'sound/items/handling/book_pickup.ogg' + throw_impact_sound = 'sound/items/handling/book_drop.ogg' + var/dat // Actual page content var/author // Who wrote the thing, can be changed by pen or PC. It is not automatically assigned var/unique = 0 // 0 - Normal book, 1 - Should not be treated as normal book, unable to be copied, unable to be modified diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 7a4d636dc77..a851c342a86 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -27,6 +27,8 @@ slot_flags = SLOT_HEAD body_parts_covered = HEAD attack_verb = list("bapped") + throw_impact_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 @@ -216,6 +218,8 @@ info = stars(info,85) user.visible_message("\The [user] crumples \the [src] into a ball!") icon_state = "scrap" + throw_range = 10 + throw_speed = 3 return user.examinate(src) diff --git a/code/modules/paperwork/photography.dm b/code/modules/paperwork/photography.dm index f848c25caad..7961612b41c 100644 --- a/code/modules/paperwork/photography.dm +++ b/code/modules/paperwork/photography.dm @@ -110,6 +110,8 @@ var/global/photo_count = 0 w_class = ITEM_SIZE_NORMAL //same as book storage_slots = DEFAULT_BOX_STORAGE //yes, that's storage_slots. Photos are w_class 1 so this has as many slots equal to the number of photos you could put in a box can_hold = list(/obj/item/photo) + pickup_sound = 'sound/items/handling/book_pickup.ogg' + throw_impact_sound = 'sound/items/handling/book_drop.ogg' /obj/item/storage/photo_album/MouseDrop(obj/over_object as obj) diff --git a/code/modules/projectiles/ammunition.dm b/code/modules/projectiles/ammunition.dm index a3808cbed19..3ca6e6904d7 100644 --- a/code/modules/projectiles/ammunition.dm +++ b/code/modules/projectiles/ammunition.dm @@ -121,6 +121,8 @@ /obj/item/ammo_magazine/box w_class = ITEM_SIZE_NORMAL + pickup_sound = 'sound/items/handling/ammobox_pickup.ogg' + throw_impact_sound = 'sound/items/handling/ammobox_drop.ogg' /obj/item/ammo_magazine/Initialize() . = ..() diff --git a/code/modules/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers.dm index 12f6ec229ad..55d1012f688 100644 --- a/code/modules/reagents/reagent_containers.dm +++ b/code/modules/reagents/reagent_containers.dm @@ -13,10 +13,10 @@ /obj/item/reagent_containers/proc/cannot_interact(mob/user) if(!CanPhysicallyInteract(user)) - to_chat(usr, "You're in no condition to do that!'") + to_chat(usr, SPAN_NOTICE("You're in no condition to do that!'")) return TRUE if(ismob(loc) && loc != user) - to_chat(usr, "You can't set transfer amounts while [src] is being held by someone else.") + to_chat(usr, SPAN_NOTICE("You can't set transfer amounts while [src] is being held by someone else.")) return TRUE return FALSE @@ -58,9 +58,9 @@ if(istype(W, /obj/item/pen) || istype(W, /obj/item/device/flashlight/pen)) var/tmp_label = sanitizeSafe(input(user, "Enter a label for [name]", "Label", label_text), MAX_NAME_LEN) if(length(tmp_label) > 10) - to_chat(user, "The label can be at most 10 characters long.") + to_chat(user, SPAN_NOTICE("The label can be at most 10 characters long.")) else - to_chat(user, "You set the label to \"[tmp_label]\".") + to_chat(user, SPAN_NOTICE("You set the label to \"[tmp_label]\".")) label_text = tmp_label update_name_label() else @@ -77,40 +77,41 @@ return 0 if(!target.reagents || !target.reagents.total_volume) - to_chat(user, "[target] is empty.") + to_chat(user, SPAN_NOTICE("[target] is empty.")) return 1 if(reagents && !reagents.get_free_space()) - to_chat(user, "[src] is full.") + to_chat(user, SPAN_NOTICE("[src] is full.")) return 1 var/trans = target.reagents.trans_to_obj(src, target:amount_per_transfer_from_this) - to_chat(user, "You fill [src] with [trans] units of the contents of [target].") + to_chat(user, SPAN_NOTICE("You fill [src] with [trans] units of the contents of [target].")) return 1 -/obj/item/reagent_containers/proc/standard_splash_mob(var/mob/user, var/mob/target) // This goes into afterattack +/obj/item/reagent_containers/proc/standard_splash_mob(mob/user, mob/target) // This goes into afterattack if(!istype(target)) - return + return FALSE if(user.a_intent == I_HELP) - to_chat(user, "You can't splash people on help intent.") - return 1 + to_chat(user, SPAN_NOTICE("You can't splash people on help intent.")) + return TRUE if(!reagents || !reagents.total_volume) - to_chat(user, "[src] is empty.") - return 1 + to_chat(user, SPAN_NOTICE("[src] is empty.")) + return TRUE if(target.reagents && !target.reagents.get_free_space()) - to_chat(user, "[target] is full.") - return 1 + to_chat(user, SPAN_NOTICE("[target] is full.")) + return TRUE var/contained = reagentlist() if (reagents.should_admin_log()) admin_attack_log(user, target, "Used \the [name] containing [contained] to splash the victim.", "Was splashed by \the [name] containing [contained].", "used \the [name] containing [contained] to splash") - user.visible_message("[target] has been splashed with something by [user]!", "You splash the solution onto [target].") + playsound(target, pick('sound/effects/splash1.ogg', 'sound/effects/splash2.ogg'), 50, TRUE) + user.visible_message(SPAN_DANGER("[target] has been splashed with something by [user]!"), SPAN_NOTICE("You splash the solution onto [target].")) reagents.splash(target, reagents.total_volume) - return 1 + return TRUE /obj/item/reagent_containers/proc/splashtarget(obj/target, mob/user) if (user.a_intent == I_HURT) @@ -126,13 +127,13 @@ return TRUE /obj/item/reagent_containers/proc/self_feed_message(var/mob/user) - to_chat(user, "You eat \the [src]") + to_chat(user, SPAN_NOTICE("You eat \the [src]")) /obj/item/reagent_containers/proc/other_feed_message_start(var/mob/user, var/mob/target) - user.visible_message("[user] is trying to feed [target] \the [src]!") + user.visible_message(SPAN_WARNING("[user] is trying to feed [target] \the [src]!")) /obj/item/reagent_containers/proc/other_feed_message_finish(var/mob/user, var/mob/target) - user.visible_message("[user] has fed [target] \the [src]!") + user.visible_message(SPAN_WARNING("[user] has fed [target] \the [src]!")) /obj/item/reagent_containers/proc/feed_sound(var/mob/user) return @@ -142,7 +143,7 @@ return 0 if(!reagents || !reagents.total_volume) - to_chat(user, "\The [src] is empty.") + to_chat(user, SPAN_NOTICE("\The [src] is empty.")) return 1 // only carbons can eat @@ -157,7 +158,7 @@ return var/obj/item/blocked = H.check_mouth_coverage() if (blocked) - to_chat(user, "\The [blocked] is in the way!") + to_chat(user, SPAN_WARNING("\The [blocked] is in the way!")) return user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN) //puts a limit on how fast people can eat/drink things @@ -177,7 +178,7 @@ return var/obj/item/blocked = H.check_mouth_coverage() if (blocked) - to_chat(user, "\The [blocked] is in the way!") + to_chat(user, SPAN_WARNING("\The [blocked] is in the way!")) return other_feed_message_start(user, target) @@ -204,23 +205,23 @@ // Ensure we don't splash beakers and similar containers. if(!target.is_open_container() && istype(target, /obj/item/reagent_containers)) - to_chat(user, "\The [target] is closed.") + to_chat(user, SPAN_NOTICE("\The [target] is closed.")) return 1 // Otherwise don't care about splashing. else if(!target.is_open_container()) return 0 if(!reagents || !reagents.total_volume) - to_chat(user, "[src] is empty.") + to_chat(user, SPAN_NOTICE("[src] is empty.")) return 1 if(!target.reagents.get_free_space()) - to_chat(user, "[target] is full.") + to_chat(user, SPAN_NOTICE("[target] is full.")) return 1 var/trans = reagents.trans_to(target, amount_per_transfer_from_this) playsound(src, 'sound/effects/pour.ogg', 25, 1) - to_chat(user, "You transfer [trans] unit\s of the solution to \the [target]. \The [src] now contains [src.reagents.total_volume] units.") + to_chat(user, SPAN_NOTICE("You transfer [trans] unit\s of the solution to \the [target]. \The [src] now contains [src.reagents.total_volume] units.")) return 1 /obj/item/reagent_containers/do_surgery(mob/living/carbon/M, mob/living/user) diff --git a/code/modules/spellbook/_spellbook.dm b/code/modules/spellbook/_spellbook.dm index ef960d7f3c9..e1a16ba2593 100644 --- a/code/modules/spellbook/_spellbook.dm +++ b/code/modules/spellbook/_spellbook.dm @@ -16,6 +16,9 @@ GLOBAL_LIST_EMPTY(spells_by_categories) throw_speed = 1 throw_range = 3 w_class = ITEM_SIZE_NORMAL + pickup_sound = 'sound/items/handling/book_pickup.ogg' + throw_impact_sound = 'sound/items/handling/book_drop.ogg' + var/temp = null var/book_flags = 0 /// Current owner of the book, none other than them can use it; Can be dispelled to remove that and other locks. diff --git a/sound/effects/splash1.ogg b/sound/effects/splash1.ogg new file mode 100644 index 00000000000..2b7b68cccbd Binary files /dev/null and b/sound/effects/splash1.ogg differ diff --git a/sound/effects/splash2.ogg b/sound/effects/splash2.ogg new file mode 100644 index 00000000000..1611c203f56 Binary files /dev/null and b/sound/effects/splash2.ogg differ diff --git a/sound/items/equip/jumpsuit_equip.ogg b/sound/items/equip/jumpsuit_equip.ogg new file mode 100644 index 00000000000..bdcc2bb3a65 Binary files /dev/null and b/sound/items/equip/jumpsuit_equip.ogg differ diff --git a/sound/items/equip/toolbelt_equip.ogg b/sound/items/equip/toolbelt_equip.ogg new file mode 100644 index 00000000000..0ef67a3fd6c Binary files /dev/null and b/sound/items/equip/toolbelt_equip.ogg differ diff --git a/sound/items/handling/ammobox_drop.ogg b/sound/items/handling/ammobox_drop.ogg new file mode 100644 index 00000000000..13fce70fe3d 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 00000000000..9532a7697b9 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 00000000000..b492b665f59 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 00000000000..120a4e4721a 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 00000000000..7070ba1c342 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 00000000000..aa4e72129b0 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 00000000000..5bf734caba0 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 00000000000..f46988887d1 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 00000000000..093fde7c90c 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 00000000000..cfaba1dd193 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 00000000000..77464110661 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 00000000000..79b276f8451 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 00000000000..3174b88117f 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 00000000000..8f67406a5fb Binary files /dev/null and b/sound/items/handling/disk_pickup.ogg differ diff --git a/sound/items/handling/multitool_drop.ogg b/sound/items/handling/multitool_drop.ogg new file mode 100644 index 00000000000..67e0a41042c 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 00000000000..cbd598ce896 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 00000000000..27ce2b3d1a7 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 00000000000..55ae2b3d2db 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 00000000000..d460fd0aeda 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 00000000000..368f1bfd275 Binary files /dev/null and b/sound/items/handling/screwdriver_pickup.ogg differ diff --git a/sound/items/handling/toolbelt_drop.ogg b/sound/items/handling/toolbelt_drop.ogg new file mode 100644 index 00000000000..2a3c4655c49 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 00000000000..58e5d25979a 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 00000000000..abf56946278 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 00000000000..01a4ab4b3fa 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 00000000000..58b722ad7a7 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 00000000000..da78b06b848 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 00000000000..e099870fc7d 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 00000000000..078faaf4324 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 00000000000..86020bf822c 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 00000000000..860e0d70879 Binary files /dev/null and b/sound/items/handling/wrench_pickup.ogg differ